1、图像处理作业hough变换的边缘提取图像处理期末作业姓名: 学号:97院系:信自院通信系专业:信号与信息处理用Hough变换提取边界直线Hough变换是1962年山Paul Hough提出来的。它所实现的是一种从图像空 间到参数空间的映射关系。它具有一系列的优点。例如,山于根据局部度量来 计算全面描述参数,因而对于区域边界被噪声干扰或者其他LI标遮盖而引起边 界发生瞬间间断的情况,它具有很好的容错性和鲁棒性。原理Hough变换是图像处理中从图像中识别儿何形状的基本方法之一。Hough变换是一种利用表决原理的参数佔计技术。其基本原理在于利用图 像空间和Hough参数空间的点与线的对偶性,把图像空
2、间中的检测问题转换到 参数空间。通过在参数空间里进行简单的累加统计,然后在Hough参数空间寻 找累加器峰值的方法检测直线cHough变换的实质是将图像空间内具有一定关系 的像元进行聚类,寻找能把这些像元用某一解析形势联系起来的参数空间累讣 对应点。在参数空间不超过二维的情况下,这种变换效果理想。将原始图像空间的给定的曲线表达形式变为参数空间的一个点,这样就把 原始图像中给定曲线的检测问题转化为寻找参数空间的峰值问题,也即是把检 测整体特性转化为检测局部特性。比如直线、椭圆、圆、弧线等。简而言之, Hough变换思想是:在原始图像坐标系下的一个点对应了参数坐标系中的一条直 线,同样参数坐标系的
3、一条直线对应了原始坐标系下的一个点,然后,原始坐 标系下呈现直线的所有点,它们的斜率和截距是相同的,所以它们在参数坐标 系下对应于同一个点。这样在原始坐标系下的各个点的投影到参数坐标系下之 后,看参数坐标系下没有聚集点,这样的聚集点就对应了原始坐标系下的直线。如果参数空间中使用直线方程,当图像空间直线斜率为无穷大时,会使累 加器尺寸和变很大,从而是计算复杂程度过大,为解决这一问题,釆用极坐标 方程,变换方程如图1所示。p = xcos&+ ysinO根据这个方程,原图像空间中的点对应新参数空间中的一条正弦曲线,即 点-正弦曲线对偶。检测直线的具体过程就是让。取遍可能的值,然后计算。的值,再根据
4、。和P的值对累加数组累加,从而得到共线点的个数。下面介绍一下 关于8和。取值范圉的确定。设被检测的直线在笫一象限,右上角坐标为(”),则第一象限中直线的位置情况如图1所示图1检测位置图曲图可见,当直线从与X轴重合处逆时针旋转时,&的值开始山0增大,直 到180,所以&的取值范围为0-180。由直线极坐标方程可知 p = Jx,+于sin(& + 0),其中 = si_1 (x/+ y2),所以当且仅当x和y都达 到最大且8 + 0 = 90时(根据。来调整&的值),忧=血=硏刁,即。的 取值范围是(-/+,*用2+席)。由&和的取值范围和它们的分辨率可以确 定累加器的大小,从而检测直线。利用H
5、ough变换,不仅可以检测直线,也可以检测曲线,实际上,只要是 能够写得出方程的图像,都可以用Hough变换检测,以圆周的检测为例,圆的 一般方程是:(x-a)2 +(y-h)2 = r2式中有三个参数a, b和r,所以需要在参数空间建立一个三维累加数组A。 其元素可以写为让a和b依次变化而根据圆的一般方程计算r,并对A(aJr)累加,可见这个过程与检测直线上的点相同,只是空间多了一维,复杂性也随之增加。 Hough变换的实现流程利用Hough变换检测图像中直线的一般步骤应该首先对图像二值化,然后进 行边缘检测,接着对边缘检测的结果做Hough变换,最后得到直线检测的结 果。具体流程如下:图2
6、 Hough变换流程图实验结果腿 LoG算子提取團像边缰均值勰器外理后 二觥处理后 hough变贱竝界直线也鹼超腮后 二訛处理后 ho峥麴鞠边界戢图3图像的Hough变换提取边缘直线(同一副图像不同阈值对比)结果分析Hough变换是一种利用图像的全局特征将特定形状的边缘连接起来,形成 连接平滑边缘的一种方法,它将源于图像上的点映射到用于累加的参数空间, 实现对已知解析式曲线的识别。这里先对边缘图像进行二值化处理,然后用Hough变换提取直线,最后用 红色标记出来。因为处理过程中需要使用灰度图像,但最后无法给灰度图像赋 颜色,所以最初输入要求为彩色图像。山实验结果可知,Hough可提取图像的边缘
7、曲线。在这里需要说明的有三点: 1,二值化图像的细节多少可以通过对二值化的阈值调节来控制,阈值 越大,细节越少。2,最后提取直线的阈值越小,可被赋红色的直线越多,但更多无关的 细节也可能被提取出来,阈值越大,可被赋红色的直线越少,同时无关细节 也减少。3,通过对着两个参数的适当调节可使提取直线的效果更好。附录程序代码:clcclearfTmread(“);读入彩色图像,注意不能使用灰度图像o=f; %保留彩色原图f=rgb2gray(f);%将彩色图像转换为灰度图像,f=im2double(f);figure。;subplot(231 );imshow(o);title(,原图);m,n二si
8、ze(f);%得到图像矩阵行数m,列数nfor i=3:m-2forj=3:n-2%处理领域较大,所以从图像(3,3)开始,在(m-2,n-2)结束 l(i,j)=-f(i-2,j)-f(i-l ,j-l)-2*f(i-l ,j)-f(i-1 ,j+l)-f(i,j-2)-2*f(ij-1)+16*f(i,j)-2*f(i,j+1)-f(i,j+2)f(i+1 ,j-l)-2*f(i+1 ,j)-f(i+1 ,j+ l)-f(i+2,j);%LoG 算子endendsubplot(232);imshow(l);title(LoG算子提取图像边缘);%均值化滤波处理m,n=size(l);for
9、 i=2:m1for j=2:n 1y(i,j)=l(i-1 ,j-1 )+l(i-l ,j)+l(i-1 ,j+ l)+l(i,j-1 )+l(i,j)+l(i,j+ 1)+I(i+1 ,j-1 )+I(i+1 ,j)+l(i+1,j+l);y(i,j)=y(i,j)/9; %LoG算子提取边缘后,对结果进行均值滤波以去除噪声,为下一步hough变换提取直线作准备endendsubplot(233);imshow(y);title(均值滤波器处理后)%二值化处理q=im2uint8(y);m,n=size(q);for i=l:nifor j=l:nifq(i,j)80; %设置二值化的阈值
10、为80q(i,j)=255; %对图像进行二值化处理,使图像边缘更加突出清晰elseq(ij)=o;subplot(234) ;imsho w(q) ;title(* 值化处理后);%Hough变换检测直线,使用(a, p)参数空间,ae0,180,pe0,2d) a=180; %角度的值为0到180度d=round(sqrt(mA2+nA2); %图像对角线长度为p的最大值s=zeros(a,2*d); %存储每个(a,p)个数z=cell(a,2*d); %用元胞存储每个被检测的点的坐标for i=l:mforj=l:n%遍历图像每个点if(q(i,j)=255)%只检测图像边缘的白点,其
11、余点不检测for k=l:ap = round(i*cos(pi*k/180)+j*sin(pi*k/180);% 对每个点从 1到180度遍历一遍,取得经过该点的所有直线的卩值(取整)if(p 0)%若p大于0,则将点存储在(d, 2d)空间s(k,d+p)=s(k,d+p)+l;% (a, p)相应的累加器单元加1 zk,d+p=zk,d+p,i,j;% 存储点坐标elseap=abs(p)+l;%若p小于0,则将点存储在(0, d)空间 s(k,ap)二s(k,ap)+l;%(a, p)相应的累加器单元加一 zk,ap=zk,ap),i,j;% 存储点坐标for i=l:aforj=l:d*2 %检查每个累加器单元中存储数量if(s(i,j) 35) %将提取直线的阈值设为35lp=zi,j);%提取对应点坐标fork=l:s(i,j)%对满足阈值条件的累加器单元中(a, p)对应的所 有点进行操作o(lp(l,k),lp(2,k),1)=255; %每个点 R 分量=255, G 分量=0,B分量=0o(lp(l,k),lp(2,k),2)=0;o(lp(l,k)Jp(2,k),3)=0; %结果为在原图上对满足阈值要求的直线上的点赋红色subplot(235)imshow(o);title(*hough变换提取边界直线);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1