您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 数字图像中的Hough变换应用-直线的检测
沈阳理工大学数字图像处理课程设计I摘要Hough变换是一种使用表决原理的参数估计技术。其原理是利用图像空间和Hough参数空间的点-线对偶性,把图像空间中的检测问题转换到参数空间。通过在参数空间里进行简单的累加统计,然后在Hough参数空间寻找累加器峰值的方法检测直线。Hough变换的实质是将图像空间内具有一定关系的像元进行聚类,寻找能把这些像元用某一解析形式联系起来的参数空间累积对应点。在参数空间不超过二维的情况下,这种变换有着理想的效果。理论与实践向来是形影不离,相辅相成,Hough变换之所以有如此长足的发展,主要原因还是在于实践应用上的广泛需求。而在实践中所暴露出的不足又进而促进了它的发展,循环往复,就如同生命的演化。Hought变换主要应用在生物医学、自动化、机器人视觉空间技术、军事防御办公自动化等方面。本文主要是根据所学的数字图象处理知识,在MATLAB环境下,通过系统编程的方式,实现用Hough变换检测直线的算法。关键词:Hough变换;对偶性;MATLAB沈阳理工大学数字图像处理课程设计II目录1课程设计目的与要求..............................................................................................11.1课程设计目的...................................................................................................11.2课程设计要求...................................................................................................12Hough直线检测的原理...........................................................................................23设计内容..................................................................................................................43.1读入图像..........................................................................................................43.2检测图像边缘..................................................................................................43.3实现Houg变换,检测出图像中的直线.......................................................44程序代码..................................................................................................................55仿真结果分析..........................................................................................................95.1仿真结果..........................................................................................................95.2分析.................................................................................................................11结束语..........................................................................................................................12参考文献......................................................................................................................13沈阳理工大学数字图像处理课程设计11课程设计目的与要求1.1课程设计目的(1)熟悉和掌握MATLAB程序设计方法;(2)学习和熟悉MATLAB图像处理工具箱;(3)学会运用MATLAB工具箱对图像进行处理和分析;(4)了解Hought变换的原理;(5)实现用Hough变换检测直线的算法。1.2课程设计要求利用Hough变换检测直线通常先进行边缘检测,得到只包含边缘的二值图像。再通过Hough变换,在参数空间检测图像共线点的数量得到直线参数,从而实现直线检测。具体步骤如下:(1)读入图像(图像需有直线或直线性边缘);(2)进行图像边缘,得到二值图像;(3)实现Hough变换,检测出图像中的直线方程;(4)得到检测出直线后的图像;沈阳理工大学数字图像处理课程设计22Hough直线检测的原理Hough变换是利用图像全局特性而将边缘像素连接起来组成区域封闭边界的一种方法。在预先知道区域形状的条件下,利用Hough变换可以方便的得到边界曲线而将不连续的像素边缘点连接起来。Hough变换的主要优点是受噪声和曲线间断的影响小。利用Hough变换可以直接检测某些已知形状的目标,如直线。Hough变换的基本思想是点线的对偶性。一方面,图像空间中共线的点对应在参数空间里相交的线;另一方面,在参数空间中相交于同一个点的所有直线在图像空间里都有共线的点与之对应。因此Hough变换把在图像空间中的直线检测问题转换到参数空间中对点的检测问题,通过在参数空间里进行简单的累加统计完成检测任务。如果参数空间中使用直线方程,当图像空间直线斜率为无穷大时,会使累加器尺寸和变很大,从而使计算复杂度过大。为解决这一问题,采用直线极坐标方程,变换方程如下:)Φ+sin(θy+x=ρ22(3-1)根据3-1公式,原图像空间中的点对应新参数空间中的一条正弦曲线,即点-正弦曲线对偶。检测直线的具体过程就是让θ取遍可能的值,然后计算ρ的值,再根据θ和ρ的值对累加数组累加,从而得到共线点的个数。下面介绍θ和ρ取值范围的确定。设被检测的直线在第一象限,右上角坐标为(m,n),则第一象限中直线的位置情况如图3.1所示。图3.1坐标位置沈阳理工大学数字图像处理课程设计3由图3.1可见,当直线从与x轴重合处逆时针旋转时,θ的值开始由0°增大,直到180°,所以θ的取值范围为0°~180°。由直线极坐标方程可知:)Φ+sin(θy+x=ρ22(3-1)221sΦyxxin(3-2)所以当且仅当x和y都达到最大且θ+Φ=±90°时(根据来调整θ的值)n+m=max|ρ=|ρ22(3-3)即ρ取值范围。由θ、ρ的取值范围和它们的分辨率就可以确定累加器的大小,从而检测直线。利用Hough变换检测图像中直线的一般步骤应该首先对图像进行二值化,然后进行边缘检测,接着对边缘检测的结果作Hough变换,最后得到直线检测结果。为了简便,算法主要针对图像的Hough变换,所以输入图像采用二值边缘图,具体算法步骤如下:(1)读入一幅256级灰度图(虽然是256级灰度,但实际上仅有0和255两个灰度等级)。(2)根据图像尺寸决定Hough变换累加器的大小并分配内存。(3)对图像作Hough变换,并将变换结果存入Hough变换累加器。(4)设定阈值,并根据阈值大小将Hough变换累加器中累加值小于阈值的点清零,即认为这些点并不对应图像域中的一条直线。(5)查找Hough变换累加器中累加值最大的点,记录该点并将其领域清零,继续查找并记录下一个累加值最大的点,直到累加器中所有的累加值都为零,记录的这些点即对应了检测到的图像中的直线。(6)根据检测到的点在图像域中绘出直线。沈阳理工大学数字图像处理课程设计43设计内容3.1读入图像选取有较多直线及部分曲线以作对比的图像作为实验素材,这里我们必须使用彩色图像(有些看似灰度图像的实际属性也是彩色图像),原因下面有详解。3.2检测图像边缘如果一个像素落在图像中某一个物体的边界上,那么它的邻域将成为一个灰度级变化的带。对这种变化最有用的两个特征是灰度的变化率和方向,他们分别用梯度向量的幅度和方向来表示。边缘检测算子检查每个像素的邻域并对灰度变化率进行量化,通常也包括方向的确定。有若干种算子可以使用,大多数是基于方向导数掩模求卷积的方法。如Roberts算子,Sobel算子,Prewitt算子,Log算子等。这里采用Log算子提取图像边缘,再用均值滤波去除边缘图像噪声。3.3实现Houg变换,检测出图像中的直线Hough变换是一种利用图像的全局特征将特定形状的边缘连接起来,形成连续平滑边缘的一种方法。它通过将源图像上的点影射到用于累加的参数空间,实现对已知解析式曲线的识别。这里先对边缘图像进行二值化处理,然后再用hough变换提取直线,最后用红色标记之。因为处理过程中需使用灰度图像,但最后无法给灰度图像赋颜色(会出错或效果不好),只能给彩色图像赋颜色,故最初输入时请使用彩色图像。沈阳理工大学数字图像处理课程设计54程序代码clc;clear;%%录入图像并显示f=imread('D:\000.jpg');%读入彩色图像,注意不能使用灰度图像o=f;%保留彩色原图f=rgb2gray(f);%将彩色图像转换为灰度图像f=im2double(f);figure();subplot(2,2,1);imshow(o);title('原图');%%提取图像边缘[m,n]=size(f);%得到图像矩阵行数m,列数nfori=3:m-2forj=3:n-2%处理领域较大,所以从图像(3,3)开始,在(m-2,n-2)结束l(i,j)=-f(i-2,j)-f(i-1,j-1)-2*f(i-1,j)-f(i-1,j+1)-f(i,j-2)-2*f(i,j-1)+16*f(i,j)-2*f(i,j+1)-f(i,j+2)-f(i+1,j-1)-2*f(i+1,j)-f(i+1,j+1)-f(i+2,j);%LoG算子endendsubplot(2,2,2);imshow(l);title('LoG算子提取图像边缘');%%滤波[m,n]=size(l);fori=2:m-1forj=2:n-1y(i,j)=l(i-1,j-1)+l(i-1,j)+l(i-1,j+1)+l(i,j-1)+l(i,j)+l(i,j+1)+l(i+1,j-1)+l(i+1,j)+l(i+1,j+1);y(i,j)=y(i,j)/9;%LoG算子提取边缘后,对结果进行均值滤波以去除噪声,为下一步hough变换提取直线作准备endendsubplot(2,2,3);imshow(y);title('均值滤波器处理后')%%二值化q=im2uint8(y);[m,n]=size(q);fori=1:mforj=1:n沈阳理工大学数字图像处理课程设计6ifq(i,j)80;%设置二值化的阈值为80q(i,j)=255;%对图像进行二值化处理,使图像边缘更加突出清晰elseq(i,j)=0;endendendsubplot(2,2,4);imshow(q);title('二值化处理后');%%检测直线%Hough
本文标题:数字图像中的Hough变换应用-直线的检测
链接地址:https://www.777doc.com/doc-5647758 .html