收藏 分享(赏)

实现用Hough变换检测直线的算法.docx

上传人:rav7596 文档编号:7195064 上传时间:2019-05-09 格式:DOCX 页数:16 大小:656.31KB
下载 相关 举报
实现用Hough变换检测直线的算法.docx_第1页
第1页 / 共16页
实现用Hough变换检测直线的算法.docx_第2页
第2页 / 共16页
实现用Hough变换检测直线的算法.docx_第3页
第3页 / 共16页
实现用Hough变换检测直线的算法.docx_第4页
第4页 / 共16页
实现用Hough变换检测直线的算法.docx_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、沈阳理工大学数字图像处理课设11 设计目的1) 了解Hought变换的原理;2) 实现用Hough变换检测直线的算法。2 设计要求3) 找一幅或多幅(两幅以上)包含直线形状的图像,检测出图像中的多条直线; 4) 分析并显示各直线的角度、长度。 3 设计原理Hough 变换是利用图像全局特性而将边缘像素连接起来组成区域封闭边界的一种方法。在预先知道区域形状的条件下,利用 Hough 变换可以方便的得到边界曲线而将不连续的像素边缘点连接起来。Hough 变换的主要优点是受噪声和曲线间断的影响小。利用 Hough 变换可以直接检测某些已知形状的目标,如直线。Hough 变换的基本思想是点线的对偶性。

2、一方面,图像空间中共线的点对应在参数空间里相交的线;另一方面,在参数空间中相交于同一个点的所有直线在图像空间里都有共线的点与之对应。因此 Hough 变换把在图像空间中的直线检测问题转换到参数空间中对点的检测问题,通过在参数空间里进行简单的累加统计完成检测任务。如果参数空间中使用直线方程,当图像空间直线斜率为无穷大时,会使累加器尺寸和变很大,从而使计算复杂度过大。为解决这一问题,采用直线极坐标方程,变换方程如下:(3-1 )= +根据 3-1 公式,原图像空间中的点对应新参数空间中的一条正弦曲线,即点- 正弦曲线对偶。检测直线的具体过程就是让 取遍可能的值,然后计算 的值,再根据 和 的值对累

3、加数组累加,从而得到共线点的个数。下面介绍 和 沈阳理工大学数字图像处理课设2取值范围的确定。设被检测的直线在第一象限,右上角坐标为( m, n) ,则第一象限中直线的位置情况如图 3.1 所示。图 3.1 坐标位置由图 3.1 可见,当直线从与 x 轴重合处逆时针旋转时, 的值开始由 0增大,直到 180,所以 的取值范围为 0180。由直线极坐标方程可知:(3-1)=2+2(+)(3-2)=1( 2+2)所以当且仅当 x 和 y 都达到最大且 +=90时(根据80; %设置二值化的阈值为 80 q(i,j)=255; %对图像进行二值化处理,使图像边缘更加突出清晰else q(i,j)=0

4、; end end end subplot(2,2,4);imshow(q);title(二值化处理后); % 检测直线%Hough 变换检测直线,使用(a,p)参数空间,a0,180,p0,2d a=180; %角度的值为 0 到 180 度d=round(sqrt(m2+n2); %图像对角线长度为 p 的最大值s=zeros(a,2*d); %存储每个(a,p)个数z=cell(a,2*d); %用元胞存储每个被检测的点的坐标for i=1:m for j=1:n %遍历图像每个点if(q(i,j)=255)%只检测图像边缘的白点,其余点不检测for k=1:a p = round(i*

5、cos(pi*k/180)+j*sin(pi*k/180);%对每个点 1 到 180 度遍历一遍,取得经过该点的所有直线的 p 值(取整)if(p 0) %若 p 大于 0,则将点存储在(d,2d)空间s(k,d+p)=s(k,d+p)+1;%(a,p)相应的累加器单元加一zk,d+p=zk,d+p,i,j;%存储点坐标else ap=abs(p)+1;%若 p 小于 0,则将点存储在(0,d)空间沈阳理工大学数字图像处理课设7s(k,ap)=s(k,ap)+1;%(a,p)相应的累加器单元加一zk,ap=zk,ap,i,j;%存储点坐标end end end end end % 显示效果f

6、or i=1:a for j=1:d*2 %检查每个累加器单元中存储数量if(s(i,j) 70) %将提取直线的阈值设为 70 lp=zi,j;%提取对应点坐标for k=1:s(i,j)%对满足阈值条件的累加器单元中(a,p)对应的所有点进行操作o(lp(1,k),lp(2,k),1)=255; %每个点 R 分量=255,G 分量=0,B 分量=0 o(lp(1,k),lp(2,k),2)=0; o(lp(1,k),lp(2,k),3)=0; %结果为在原图上对满足阈值要求的直线上的点赋红色end end end end figure,imshow(o);title(hough 变换提取

7、直线);rotf = imrotate(f,33,crop);%BW = edge(rotf,canny);H,T,R = hough(BW);imshow(H,XData,T,YData,R,InitialMagnification,fit);xlabel(theta), ylabel(rho);axis on, axis normal, hold on;P = houghpeaks(H,7,threshold,ceil(0.3*max(H(:);x = T(P(:,2); y = R(P(:,1);plot(x,y,s,color,white);沈阳理工大学数字图像处理课设8% Find

8、lines and plot themlines = houghlines(BW,T,R,P,FillGap,5,MinLength,7);figure, imshow(rotf), hold onmax_len = 0;for k = 1:length(lines)xy = lines(k).point1; lines(k).point2;plot(xy(:,1),xy(:,2),LineWidth,2,Color,green);% plot beginnings and ends of linesplot(xy(1,1),xy(1,2),x,LineWidth,2,Color,yellow

9、);plot(xy(2,1),xy(2,2),x,LineWidth,2,Color,red);% determine the endpoints of the longest line segment len = norm(lines(k).point1 - lines(k).point2);if ( len max_len)max_len = len;xy_long = xy;endend% highlight the longest line segmentplot(xy_long(:,1),xy_long(:,2),LineWidth,2,Color,cyan);沈阳理工大学数字图像处

10、理课设96.仿真结果分析6.1 第一组:读入图像,使用彩色图像,边缘检测并提取边缘图像,均值滤波后对结果进行二值化处理,生成如图 6.1 的仿真图。图 6.1 仿真结果沈阳理工大学数字图像处理课设10由 Hought 变换生成检测结果如图 6.2图 6.2 检测直线图图片点的标记是原图片中检测后直线的位置和大小。沈阳理工大学数字图像处理课设11变换结果在原图像灰度变化上的标志情况如下图 6.3 所示图 6.3 灰度图像直接标记沈阳理工大学数字图像处理课设12由于第一组的原图像中直接部分太少,仿真出来的结果不是太明显,下面对一幅直线多并比较明显的图像进行 Hough 变化。6.2 第二组:和第一

11、组一样读入图像,使用彩色图像,边缘检测并提取边缘图像,均值滤波后对结果进行二值化处理,生成如图 6.4 的仿真图。图 6.4 仿真结果沈阳理工大学数字图像处理课设13由 Hought 变换生成检测结果如图 6.5图 6.5 检测直线图图片点的标记是原图片中检测后直线的位置和大小。沈阳理工大学数字图像处理课设14变换结果在原图像灰度变化上的标志情况如下图 6.6 所示图 6。3 灰度图像直接标记6.3 分析由第一组和第二组对比可以看出,对于直接明显的图像,仿真结果比较清晰。利用 Hough 变换检测图像中直线的首先对图像进行二值化,然后进行边缘检测,接着对边缘检测的结果作 Hough 变换,最后

12、得到直线检测结果。沈阳理工大学数字图像处理课设157.结论通过这次 MATLAB 的学习,我对 MATLAB 有了一个基础的认识, MATLAB 是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程的特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂程序(M 文件)后再一起运行。在这短短的一周内从开始的一头雾水,到自己看书学习,到同学讨论,再进行整个题目的理论分析和计算,参考课程上的代码,写出自己的代码。常规 Hough 变换虽然具有显著的优势,但其不足也不容忽视,例如检测速度太慢,无法做到实时控制;精度不够高,期望的信息检测不到反

13、而做出错误判断,进而产生大量的冗余数据。虽然 Hough 变换还存在一些技术上的问题,但随着数学领域的不断发展,Hough 变换在一些领域上已经有了很好的使用。例如:在生物医学领域,Hough 变换已被成功应用于基于人工智能的专家诊断系统;X 射线人体照片和 CT 图像的处理和判读;光学显微镜和电子显微镜中的细胞核自动分析系统;从超声波诊断中提取三维动脉特征;在自动化、机器人视觉领域,Hough 变换已被用于运动目标轨迹的检测与识别,高空侦察机、间谍卫星和军事雷达等目标自动识别系统的特征提取。例如应用 Hough 变换对战斗机的外形特征进行提取和自动识别;应用 Hough 变换辅以信号检测理论

14、解决并行多运动目标的跟踪问题等等。总之,由以上分析可见,Hough 变换有着广泛的关注程度以及良好的应用前景。在计算机视觉和自动目标识别系统中,Hough 变换是一个用于边缘线条特征提取的强有力工具,是值得我不断学习和完善工具。沈阳理工大学数字图像处理课设168.参考文献(1)薛定宇,陈阳泉,基于 MATLAB/Simulnk 的系统仿真技术与应用,北京:清华大学出版社,2011 (2)赵广元,MATLAB 与控制系统仿真实践,北京:北京航空航天大学出版社,2009 (3)黄永安,马路,刘慧敏.MATLAB 7.0/Simulnk 6.0 建模仿真开发与高级工程应用,北京:清华大学出版社,2005 (4)张家祥,方凌江,毛全胜基于 MATLAB 6.X 的系统分析与设计虚拟现实,西安电子科技大学出版社,2002 (5)http:/ 语言及系统仿真”课程网站

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报