关于Hough变换的公式证明与Matlab展示

核心关系:两条相互垂直直线斜率乘积为-1

关于Hough变换的公式证明与Matlab展示

关于Hough变换的公式证明与Matlab展示

关于Hough变换的公式证明与Matlab展示

关于Hough变换的公式证明与Matlab展示

关于Hough变换的公式证明与Matlab展示

关于Hough变换的公式证明与Matlab展示

关于Hough变换的公式证明与Matlab展示

关于Hough变换的公式证明与Matlab展示

关于Hough变换的公式证明与Matlab展示

关于Hough变换的公式证明与Matlab展示

关于Hough变换的公式证明与Matlab展示

这个公式的含义:

关于Hough变换的公式证明与Matlab展示

关于Hough变换的公式证明与Matlab展示

==========================分割线=======================================

close all;
clear;
clc;

plotRowNum = 2;
plotClmNum = 2;

%构建笛卡尔坐标系下面的一个直线
%直线的斜率k:2,截距:3
k = 5;
b = 1;
x = 0:0.1:5;
y = k.*x + b + rand(1,size(x,2));

figure;
subplot(plotRowNum,plotClmNum,1);
plot(x,y,”r+”);
xlim([0 5]);
ylim([0 27]);
xlabel(“x”);
ylabel(“y”);
title(“图像空间:y=2x+3”);

%变换到hough极坐标空间
%将原来笛卡尔空间中直线上的每一个点,都变换到Hough极坐标空间下面
%在Hough空间下面,自变量和因变量都已经发生了改变
%y = kx+b ==> b = -kx + y ==> q = px + y
%Hough空间下,自变量是p,因变量是q
%原始笛卡尔坐标系下的一个点对应在Hough空间下是一条直线;那么笛卡尔坐标系下面的很多个点,在Hough空间下就是很多根线…

%在原始笛卡尔坐标系下有多少个点,在Hough空间下就有多少根线
%而这些线的自变量和因变量变成了p和q;生成的是一系列的线簇
Hough_p = -10:0.01:5;
%Hough_q中行数表示笛卡尔坐标中的点个数;列数表示Hough空间中每一条直线的点个数
Hough_q = zeros(size(x,2),size(Hough_p,2));

%在原始笛卡尔坐标系下有多少个点,在Hough空间下就有多少根线,所以Hough_q是一个矩阵,
for outLoopIndex = 1:1:size(x,2)
curr_q = x(outLoopIndex).*Hough_p + y(outLoopIndex);
Hough_q(outLoopIndex,:) = curr_q;
end

subplot(plotRowNum,plotClmNum,2);
plot(Hough_p,Hough_q);
xlabel(“Hough_p”);
ylabel(“Hough_q”);
title(“Hough空间:直角空间 Hough_q = Hough_p*x + y”);

%Hough空间的一条直线在极坐标空间下rho = L(theta)下的展示
%ρ= xcosθ + ysinθ 证明详见文档
Hough_theta = 0:0.01:2pi;
Hough_rhoSP = zeros(1,size(Hough_p,2));
Hough_rhoSP = x(1).
cos(Hough_theta) + y(1).*sin(Hough_theta);
subplot(plotRowNum,plotClmNum,3);
plot(Hough_theta,Hough_rhoSP);
xlabel(“θ”);
ylabel(“ρ”);
title(“Hough空间中过单点的可能直线的极坐标参数对(θ,ρ)”);

%Hough空间中过所有边缘点的可能直线的参数对(θ,ρ)
%由上面的显示可以知道,每一个点都有一个系列的参数对;有多少个点就有多少个系列的参数对
%行数表示图片上边缘点的个数
%列数表示单系列的参数对个数,列数也就是每行元素的个数
Hough_rho = zeros(size(x,2),size(Hough_theta,2));
for outLoopIndex = 1:1:size(x,2)
Hough_rho(outLoopIndex,:) = x(outLoopIndex).cos(Hough_theta) + y(outLoopIndex).sin(Hough_theta);
end

subplot(plotRowNum,plotClmNum,4);
plot(Hough_theta,Hough_rho);
xlabel(“θ”);
ylabel(“ρ”);
title(“Hough空间中过所有边缘点的可能直线的极坐标参数对(θ,ρ)”);

运行效果图

关于Hough变换的公式证明与Matlab展示

Original: https://blog.csdn.net/wanshouwujiang11/article/details/124165457
Author: bryce_liang
Title: 关于Hough变换的公式证明与Matlab展示

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/642070/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球