- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
hough变换找直线 matlab下能直接运行
hough变换找直线 matlab下能直接运行
先看效果,左上角为原图,左下角为找到的直线,右图为hough变换后的图
clc;
clear;
i=imread(test.bmp);
imshow(i)
figure
i=rgb2gray(i);
i_hight=size(i,1);
i_width=size(i,2);
% i_edge=edge(i,robert);
i_hough=zeros(600,360);
for y=1:i_hight
for x=1:i_width
if i(y,x)==0 %坐标系转换
for l=1:360
r=x*cos(l*pi/180)+y*sin(l*pi/180);
w=fix(r)+300; %修正为正整数
i_hough(w,l)=i_hough(w,l)+1;
end
end
end
end
m=max(max(i_hough));
i_hough=(i_hough./m); %亮度调整
threshold=0.75; %设置直线亮度阈值
ih_hight=size(i_hough,1);
ih_width=size(i_hough,2);
temp=zeros(20,20);
count=0;
for y=1:ih_hight %找那些亮度高的直线
for x=1:ih_width/2
if i_hough(y,x)threshold
count = count+1;
temp(count,1) = x;
temp(count,2) = y;
end
end
end
imshow(i)
hold on
for i=1:count %画呀话
% y=kx+b
k = tan(temp(i,1)*pi/180);
b = (temp(i,2)-300)/sin(temp(i,1)*pi/180);
for j=1:360
x(j)=j;
y(j)=-x(j)/k+b;
end
plot(x,y)
hold on
end
axis equal
figure
imshow(i_hough)
下面的是理论
Hough变换用来在图象中查找直线。它的原理很简单:
直线上的每一点都满足法线方程p=x*Cosθ+y*Sinθ (1),
p是直线坐标系的原点到直线的距离,θ是直线L的垂线与X轴的夹角。
图象X-Y空间的一条直线和极坐标空间O-pθ中的一点有着一一对应的关系。
注意这个一一对应,即X-Y空间中的一点也对应这极坐标空间中的一条曲线(可以看作XY空间中的特征参数来表示一条直线)
利用这个事实,我们可以找出某条直线来。
经典Hough变换的方法是根据要求的精度将O-pθ空间量化为许多小格,每个小格是一个累加器。
对于图象空间X-Y中的每一点,按照法向方程在O-pθ平面中得到它所对应的曲线,凡是这条曲线经过的小格,其累加器加1.即投票。
由于通过同一小格的曲线所对应的点近乎共线,于是小格的累加器数值等于共线的点数。当完成全部变换后,对所有累加器的数值进行校验,
票数多的小格对应与参数空间(p,θ)的共线点,其(p,θ)是图象空间的直线拟合参数。得票小的小格反映着非共线点,丢弃不用。这种体制体现了Hough变换康干扰的鲁棒性。
从以上过程可以看出,若(p,θ)网格量化过小,虽然拟合直线的参数可以准确求出,但计算量明显加大,且各组共线点可能变少;
反之,参数空间的集聚效果差,找不到准确描述图象空间的(p,θ)参数,因此要适当选取网格大小。---这就是θ选用2度为一个步长
由此可见,Hough变换的基本策略是:由图像空间中的边缘数据点去计算参数空间中的参数点的可能轨迹,并在一个累加器中给计算出的参考点计数,最后选出峰值。
Hough变换法主要优点是受共线点的间隙和噪声影响较小。
对于激光测距仪采集的一帧数据进行哈夫变换处理可将数据点集按线段分成若干簇。
直线的方程可以用y=k*x+b 来表示,其中k和b是参数,分别是斜率和截距。过某一点(x0,y0)的
所有直线的参数都会满足方程y0=kx0+b。即点(x0,y0)确定了一族直线。方程y0=kx0+b在参数k--b平
面
文档评论(0)