hough变换原理.docx
- 文档编号:7850150
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:12
- 大小:608.09KB
hough变换原理.docx
《hough变换原理.docx》由会员分享,可在线阅读,更多相关《hough变换原理.docx(12页珍藏版)》请在冰豆网上搜索。
hough变换原理
Hough变换原理
霍夫变换(HoughTransform)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体。
该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果。
霍夫变换于1962年由PaulHough首次提,后于1972年由RichardDuda和PeterHart推广使用,经典霍夫变换用来检测图像中的直线,后来霍夫变换扩展到任意形状物体的识别,多为圆和椭圆。
霍夫变换运用两个坐标空间之间的变换将在一个空间中具有相同形状的曲线或直线映射到另一个坐标空间的一个点上形成峰值,从而把检测任意形状的问题转化为统计峰值问题,上一节中已经介绍了车道的直线特征,本节中介绍hough变换检测直线的原理和检测结果。
我们知道,一条直线在直角坐标系下可以用y=kx+b表示,霍夫变换的主要思想是将该方程的参数和变量交换,即用x,y作为已知量k,b作为变量坐标,所以直角坐标系下的直线y=kx+b在参数空间表示为点(k,b),而一个点(x1,y1)在直角坐标系下表示为一条直线y1=x1·k+b,其中(k,b)是该直线上的任意点。
为了计算方便,我们将参数空间的坐标表示为极坐标下的γ和θ。
因为同一条直线上的点对应的(γ,θ)是相同的,因此可以先将图片进行边缘检测,然后对图像上每一个非零像素点,在参数坐标下变换为一条直线,那么在直角坐标下属于同一条直线的点便在参数空间形成多条直线并内交于一点。
因此可用该原理进行直线检测:
4-13参数空间变换结果
如图413.所示,对于原图内任一点(x,y)都可以在参数空间形成一条直线,以图中一条直线为例有参数(γ,θ)=,30°),所有属于同一条直线上的点会在参数空间交于一点,该点即为对应直线的参数。
由该图中所有直线所得到的(γ,θ)在参数空间中得到一系列对应曲线见图414霍夫统计变换结果。
由霍夫变换检测结果见图415(c)所示。
一、简单介绍
Hough变换是图像处理中从图像中识别几何形状的基本方法之一。
Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的一个点。
这样就把原始图像中给定曲线的检测问题转化为寻找参数空间中的峰值问题。
也即把检测整体特性转化为检测局部特性。
比如直线、椭圆、圆、弧线等。
二、Hough变换的基本思想
设已知一黑白图像上画了一条直线,要求出这条直线所在的位置。
我们知道,直线的方程可以用y=k*x+b来表示,其中k和b是参数,分别是斜率和截距。
过某一点(x0,y0)的所有直线的参数都会满足方程y0=kx0+b。
即点(x0,y0)确定了一族直线。
方程y0=kx0+b在参数k--b平面上是一条直线,(你也可以是方程b=-x0*k+y0对应的直线)。
这样,图像x--y平面上的一个前景像素点就对应到参数平面上的一条直线。
我们举个例子说明解决前面那个问题的原理。
设图像上的直线是y=x,我们先取上面的三个点:
A(0,0),B(1,1),C(22)。
可以求出,过A点的直线的参数要满足方程b=0,过B点的直线的参数要满足方程1=k+b,过C点的直线的参数要满足方程2=2k+b,这三个方程就对应着参数平面上的三条直线,而这三条直线会相交于一点(k=1,b=0)。
同理,原图像上直线y=x上的其它点(如(3,3),(4,4)等) 对应参数平面上的直线也会通过点(k=1,b=0)。
这个性质就为我们解决问题提供了方法,就是把图像平面上的点对应到参数平面上的线,最后通过统计特性来解决问题。
假如图像平面上有两条直线,那么最终在参数平面上就会看到两个峰值点,依此类推。
简而言之,Hough变换思想为:
在原始图像坐标系下的一个点对应了参数坐标系中的一条直线,同样参数坐标系的一条直线对应了原始坐标系下的一个点,然后,原始坐标系下呈现直线的所有点,它们的斜率和截距是相同的,所以它们在参数坐标系下对应于同一个点。
这样在将原始坐标系下的各个点投影到参数坐标系下之后,看参数坐标系下有没有聚集点,这样的聚集点就对应了原始坐标系下的直线。
在实际应用中,y=k*x+b形式的直线方程没有办法表示x=c形式的直线(这时候,直线的斜率为无穷大)。
所以实际应用中,是采用参数方程p=x*cos(theta)+y*sin(theta)。
这样,图像平面上的一个点就对应到参数p---theta平面上的一条曲线上,其它的还是一样。
三、Hough变换推广
1、已知半径的圆
其实Hough变换可以检测任意的已知表达形式的曲线,关键是看其参数空间的选择,参数空间的选择可以根据它的表达形式而定。
比如圆的表达形式为,所以当检测某一半径的圆的时候,可以选择与原图像空间同样的空间作为参数空间。
那么圆图像空间中的一个圆对应了参数空间中的一个点,参数空间中的一个点对应了图像空间中的一个圆,圆图像空间中在同一个圆上的点,它们的参数相同即a,b相同,那么它们在参数空间中的对应的圆就会过同一个点(a,b),所以,将原图像空间中的所有点变换到参数空间后,根据参数空间中点的聚集程度就可以判断出图像空间中有没有近似于圆的图形。
如果有的话,这个参数就是圆的参数。
2、未知半径的圆
对于圆的半径未知的情况下,可以看作是有三个参数的圆的检测,中心和半径。
这个时候原理仍然相同,只是参数空间的维数升高,计算量增大。
图像空间中的任意一个点都对应了参数空间中的一簇圆曲线。
,其实是一个圆锥型。
参数空间中的任意一个点对应了图像空间中的一个圆。
3、椭圆
椭圆有5个自由参数,所以它的参数空间是5维的,因此他的计算量非常大,所以提出了许多的改进算法。
四、总结
图像空间中的在同一个圆,直线,椭圆上的点,每一个点都对应了参数空间中的一个图形,在图像空间中这些点都满足它们的方程这一个条件,所以这些点,每个投影后得到的图像都会经过这个参数空间中的点。
也就是在参数空间中它们会相交于一点。
所以,当参数空间中的这个相交点的越大的话,那么说明元图像空间中满足这个参数的图形越饱满。
越象我们要检测的东西。
Hough变换能够查找任意的曲线,只要你给定它的方程。
Hough变换在检验已知形状的目标方面具有受曲线间断影响小和不受图形旋转的影响的优点,即使目标有稍许缺损或污染也能被正确识别。
(I)直线篇
1直线是如何表示的?
对于平面中的一条直线,在笛卡尔坐标系中,常见的有点斜式,两点式两种表示方法。
然而在hough变换中,考虑的是另外一种表示方式:
使用(r,theta)来表示一条直线。
其中r为该直线到原点的距离,theta为该直线的垂线与x轴的夹角。
如下图所示。
2如果坐标系中有多个点,又怎样识别出哪些点在一条直线上呢?
使用hough变换来检测直线的思想就是:
为每一个点假设n个方向的直线,通常n=180,此时检测的直线的角度精度为1°,分别计算这n条直线的(r,theta)坐标,得到n个坐标点。
如果要判断的点共有N个,最终得到的(r,theta)坐标有N*n个。
有关这N*n个(r,theta)坐标,其中theta是离散的角度,共有180个取值。
最重要的地方来了,如果多个点在一条直线上,那么必有这多个点在theta=某个值theta_i时,这多个点的r近似相等于r_i。
也就是说这多个点都在直线(r_i,theta_i)上。
3下面拿个例子说明:
如果空间中有3个点,如何判断这三个点在不在一条直线上,如果在,这条直线的位置为
这个例子中,对于每个点均求过该点的6条直线的(r,theta)坐标,共求了3*6个(r,theta)坐标。
可以发现在theta=60时,三个点的r都近似为,由此可判定这三个点都在直线(,60)上。
通过r—theta坐标系可以更直观表示这种关系,如下图:
图中三个点的(r,theta)曲线汇集在一起,该交点就是同时经过这三个点的直线。
在实际的直线检测情况中,如果超过一定数目的点拥有相同的(r,theta)坐标,那么就可以判定此处有一条直线。
在r—theta坐标系图中,明显的交汇点就标示一条检测出的直线。
如下图,可以判定出平面上的点共构成了两条直线,即检测出两条直线。
4代码:
在matlab中提供了hough变换的代码,有hough,houghlines,houghpeaks,具体的使用可以在help中查到。
(II)圆篇
继使用hough变换检测出直线之后,顺着坐标变换的思路,提出了一种检测圆的方法。
1如何表示一个圆?
与使用(r,theta)来表示一条直线相似,使用(a,b,r)来确定一个圆心为(a,b)半径为r的圆。
2如何表示过某个点的所有圆?
某个圆过点(x1,y1),则有:
(x1-a1)^2+(y1-b1)^2=r1^2。
那么过点(x1,y1)的所有圆可以表示为(a1(i),b1(i),r1(i)),其中r1∈(0,无穷),每一个i值都对应一个不同的圆,(a1(i),b1(i),r1(i))表示了无穷多个过点(x1,y1)的圆。
3如何确定多个点在同一个圆上?
如
(2)中说明,过点(x1,y1)的所有圆可以表示为(a1(i),b1(i),r1(i)),过点(x2,y2)的所有圆可以表示为(a2(i),b2(i),r2(i)),过点(x3,y3)的所有圆可以表示为(a3(i),b3(i),r3(i)),如果这三个点在同一个圆上,那么存在一个值(a0,b0,r0),使得a0=a1(k)=a2(k)=a3(k)且b0=b1(k)=b2(k)=b3(k)且r0=r1(k)=r2(k)=r3(k),即这三个点同时在圆(a0,b0,r0)上。
从下图可以形象的看出:
首先,分析过点(x1,y1)的所有圆(a1(i),b1(i),r1(i)),当确定r1(i)时,(a1(i),b1(i))的轨迹是一个以(x1,y1,r1(i))为中心半径为r1(i)的圆。
那么,所有圆(a1(i),b1(i),r1(i))的组成了一个以(x1,y1,0)为顶点,锥角为90度的圆锥面。
三个圆锥面的交点A既是同时过这三个点的圆。
4怎样用代码实现检测圆的过程?
上面的分析虽然很简单,但是用代码实现起来就麻烦了,首先过每一个点的(a(i),b(i),r(i))都有无穷多个,若是要检测的点很多,要两两比较所有的(a,b,r)值是否相等实在是一个巨大的运算量。
1引言图像最基本的特征是边缘,边缘是图像性区域和另一个属性区域的交接处,是区域属性发生突变的地方,是图像中不确定性最大的地方,也是图像信息最集中的地方,图像的边缘包含着丰富的信息。
因此,图像的边缘提取在计算机视觉系统的初级处理中具有关键作用,但目前仍是“瓶颈”问题。
边缘检测技术对于数字图像是非常重要的,提取出边缘才能将目标和背景区分开来。
现有的图像边缘提取方法可以分为三大类:
一类是基于某种固定的局部运算方法,如:
微分法,拟合法等,它们属于经典的边缘提取方法;第二类则是以能量最小化为准则的全局提取方法,其特征是运用严格的数学方法对此问题进行分析,给出一维值代价函数作为最优提取依据,从全局最优的观点提取边缘,如松驰法,神经网络分析法等;第三类是以小波变换、数学形态学、分形理论等近年来发展起来的高新技术为代表的图像边缘提取方法,尤其是基于多尺度特性的小波变换提取图像边缘的方法是目前研究较多的课题。
该文将较为详细地对各种图像边缘提取算法的原理进行阐述,对几种最常用的图像边缘提取算法给出实验结果,并进行结果对比与分析。
2经典的图像边缘提取方法微分算子法边缘的检测可借助空域微分算子通过卷积完成,导数算子具有突出灰度变化的作用,对图像运用导数算子,灰度变化较大的点处算得的值较高,因此可将这些导数值作为相应点的边界强度,通过设置门限的方法,提取边界点集。
一阶导数!
f!
x与!
f
!
y是最简单的导数算子,一个连续函数f(x,y)在位置(x,y)处方向导数的最大值是IGI=(!
f
!
x)2+(!
f
!
y)2[I
12,称为梯度模,相应地,取得最大值的方向为"=tan-1!
f
!
y!
f
!
xTIILTIIJ。
利用梯度模算子来检测边缘是一种很好的方法,它不仅具有位移不变性,还具有各向同性。
在实际中,对于一幅数字图像采用了梯度模的近似形式,如常用的罗伯特交叉算子(RobertsCross)和索贝尔算子(SobeI)的表达式分别为:
Roberts算子表达式为:
\G\=maX(If(i,J)-f(i+1,J+1)I,If(i+1,J)-f(i,J+1)I)SobeI算子表达式为:
TIILTIIJTIILTIIJ1x方向卷积核y
方向卷积核图像边缘提取方法及展望季虎孙即祥邵晓芳毛玲(国防科技大学电子科学与工程学院,长沙410073)E-maiI摘要该文对现有代表性的各种图像边缘提取方法进行了介绍,对比、分析了各自的优缺点,重点对以小波变换为代表的现代信号处理技术提取图像边缘的方法进行了分析和阐述,为了更清楚地看出各种算法的效果,给出了一些常用算法对同一幅标准测试图像Lena进行边缘提取的实验结果。
最后,对图像边缘提取技术所面临的问题和发展方向阐述了自己的观点。
关键词边缘提取小波变换多尺度分析图像边缘检测文章编号1002-8331-(2004)14-0070-04文献标识码a中图分类号TP391TheAlgorithmforImageEdgeDetectionandProspectJiHuSunJixiangShaoXiaofangMaoLing(SchooIofEIectronicandEngineering,NationaIUniversityofDefenseTechnoIogy,Changsha410073)Abstract:
,wepIaceanemphasisonanaIyzingandiIIuminatingwaveIettransform,,,:
edgedetection,waveIettransform,muItiscaIeanaIysis,imageedgedetection作者简介:
季虎(1972-),男,工程师,博士研究生,主要研究方向为计算机视觉、图像处理、模式识别。
孙即祥(1946-),男,教授,博士生导师,现已出版专著三部,并正在撰写另外一部专著,已发表论文十数篇。
主要感兴趣的研究方向为计算机视觉、图像处理、模式识别等。
70
undefined
计算机工程与应用
和使用SObeI算子的方法一样,类似地也可以得到Prewitt算子和Krisch算子卷积核形式,只不过这里Prewitt算子是使用了另两个不同的卷积核,而Krisch算子则是使用8个卷积核,分别代表8个特定的边缘方向。
由于边缘的图像灰度变化并不十分陡峭,图像中存在噪声,直接利用微分算子提取边界后,还需作某些处理(如连接及细化)才能形成一条有意义的边界。
拉普拉斯高斯算子法拉普拉斯高斯(LOG)算法是一种二阶微分边缘检测方法。
它通过寻找图像灰度值中二阶微分中的过零点来检测边缘点。
其原理是:
灰度缓变形成的边缘经过微分算子形成一个单峰函数,峰值位置对应边缘点;对单峰函数进行微分,则峰值处的微分值为0,峰值两侧符号相反,而原先的极值点对应二阶微分中的过零点,通过检测过零点即可将图像的边缘提取出来。
在实际中,为了去除噪声影响,首先要用高斯函数对图像进行滤波,然后对滤波后的图像求二阶导数。
!
2[G(x,y)*f(x,y)]=!
2G(x,y)*f(x,y)式中!
2G(x,y)为拉普拉斯高斯算子,即!
2G(x,y)=l2!
"
4x2+y2"
2-!
"2exp-x2+y22"
2!
"。
边缘检测就是要寻找!
2G(x,y)的过零点。
LOG算法被认为是微分法中利用平滑二阶微分检测图像边缘最成功的一种算子。
算子边缘提取的基本问题是解决增强边缘与抗噪能力间的矛盾,由于图像边缘和噪声在频率域中同是高频分量,简单的微分提取运算同样会增加图像中的噪声,所以一般在微分运算之前应采取适当的平滑滤波,减少噪声的影响。
Canny运用严格的数学方法对此问题进行了分析,推导出由4个指数函数线性组合形式的最佳边缘提取算子网,其算法的实质是用一个准高斯函数作平滑运算,然后以带方向的一阶微分定位导数最大值,Canny算子边缘检测是一种比较实用的边缘检测算子,具有很好的边缘检测性能。
Canny边缘检测法利用高斯函数的一阶微分,它能在噪声抑制和边缘检测之间取得较好的平衡。
拟合法拟合法就是首先对图像进行某种形式的拟合,从而根据拟合参数求得边缘。
Prewitt首先提出用曲面拟合方法作图像边缘提取,他用关于坐标的n阶多项式对原始图像作最小二乘方意义下的最佳拟合,多项式的m个参数由图像nxn个邻域灰度确定,从拟合的最佳曲面函数即可确定灰度梯度等参数。
这种方法与传统的梯度法相比具有更高的抗噪声能力。
HarrIick提出用离散正交多项式对原始图像每一象素的邻域作最佳曲面拟合,在拟合曲面上求H阶方向导数的零交叉,从而提取图像边缘。
另外一种形式的拟合算法是拟合图像边缘。
尽管实际景物的边缘是千姿百态各不相同的,但是在某一局部窗口内,对图像边缘可以用直线、曲线来拟合。
拟合法的实质是利用了图像的统计特性来提取边缘,因而其计算量很大,只在一些大的视觉系统中,拟合法才常常被采用。
经典边缘提取算子提取图像边缘的结果对比分析作者分别采用上述几种最常用的经典图像边缘提取算子对标准的Lena图像进行边缘特征提取,其结果如图l所示。
(a)原始的Lena图像(b)ROberts算子提取边缘图像(c)SObeI算子提取边缘图像(c)Prewitt算子提取边缘图像(e)LOG算子提取边缘图像(f)Canny算子提取边缘图像图l经典的边缘提取算子对Lena图像提取边缘的结果图l(a)为256x256x8bit原始Lena灰度图像,图l(b)~(f)是分别对应于ROberts、SObeI、Prewitt、LOG、Canny算子的图像边缘提取结果。
从图l可以看出,ROberts算子提取边缘的结果边缘较粗,边缘定位不很准确,SObeI算子和Prewitt算子对边缘的定位就准确了一些,而采用拉普拉斯高斯算子进行边缘提取的结果要明显优于前三种算子,特别是边缘比较完整,位置比较准确。
相比而言,Canny算子提取的边缘最为完整,而且边缘的连续性很好,效果优于以上其他算子,这主要是因为它进行了“非极大值抑制”和形态学连接操作的结果。
上面几种基于微分的经典边缘提取算子,它们共同的优点是计算简单、速度较快,缺点是对噪声的干扰都比较敏感。
在实际应用中,由于图像噪声的影响,总要将经典的算法进行改善或结合其他一些算法对一幅含噪声的图像进行处理,然后再采用经典的边缘提取算子提取图像边缘。
3基于能量最小化为准则的全局提取图像边缘方法松弛法以全局最优的观点提取边缘的思想是近代边缘提取技术的主要特点,而基于松弛技术的边缘提取方法是这类方法的一个典型代表。
该方法首先利用某种简单的边缘提取算子对图像作初始边缘提取,然后再利用边缘间的空间分布关系来协调和增强初始提取结果,从而以全局最优的观点提取边缘。
边缘提取问题实质上是确定图像中边缘点和非边缘点的两类别模式分类问题,由于噪声、畸变等因素的影响,单纯的基7l
计算机工程与应用于局部灰度信息的边缘分类方法存在很大模糊性。
利用景物边缘的空间分布信息,用各种方法包括人工智能关于知识表达、自学习和推理等手段作进一步调整的思想己日益引起人们的重视。
神经网络法这种方法实质上也是将边缘提取过程视为边缘模式的识别过程,只是在算法实现上利用了神经网络。
虽然目前己有的许多算法都可转化为神经网络实现,如当判决函数为二次型时,其方程是一阶微分方程组,可用阻容网络求解,但他们并未反映出神经网络系统的本质(如文献[4][5]运用神经网络法提取图像边缘),真正构造模仿生物视觉系统的特征提取方法还有待进一步研究。
4现代信号处理技术提取图像边缘方法基于小波变换多尺度分析的图像边缘提取方法小波变换提取图像边缘的原理小波变换是近年来兴起的一种热门信号处理方法,它良好的时-频局部特性非常适合于图像处理。
小波变换对不同的频率成分在时域上的取样步长具有调节性,高频者小,低频者大的特点。
因此,小波变换能够把信号或图像分解成交织在一起的多种尺度成分,并对大小不同的尺度成分采用相应粗细的时域或空域取样步长,从而能够不断地聚焦到对象的任意微小细节。
小波变换天生具有的多尺度特性,正好可以用于图像的边缘提取。
多尺度边缘提取思想最初是RoSenfeIc提出的,以后经过MarSHiIcreth和Within等人的逐步完善,形成了一整套理论。
近年来,随着对小波理论研究的不断深入,它的应用也日趋广泛。
通常小波函数和一维小波变换,可定义如下:
定义1:
若!
!
L1"L2,且它的傅立叶变换
(w)满足允许性条件:
C!
=R
}!
^(w)w2dw<+,则称!
为基小波,而
!
s(x)
\!
s(x)=1s!
(xs),x!
R,s!
R-0称为小波族,若f!
L2(R),则小波变换为:
Wfs(x)=f*!
s(x)
=1sR}f(t)!
(x-ts)dt。
当s=2J,J!
Z时,Wf=W2f(x)为f(x)的二进小波变换。
若"(x,y)满足条件:
"(x,y)>0,且}R2}"(x,y)dxdy=常数,则称"(x,y)为光滑函数。
令二维小波函数!
1(x,y)和!
2(x,y)分别是光滑函数"(x,y)在x和y方向上的偏导数,即:
!
1
(x,y)=#"(x,y)#x!
2
(x,y)=#"(x,y)#y二维小波变换可定义为:
定义2:
若f!
L2(R2),令W12f(x,y)=f*!
12f(x,y),W22f(x,y)=f*!
22f(x,y),则Wf=W12f(x,y),W22f(x,y)J!
Z称为f(x,y)二维二进小波变换。
二维小波变换其实质就是f(x,y)经"(x,y)光滑后的梯度:
W12f(x,y)W22f
(x,y[])=2J##x
(f*"2)(x,y)##y(f*"2)(x,y\\LT\\J)=2J(f*"2)(x,y)固定尺度2J,梯度向量的模为:
M2f(x,
y)=W12f(x,y
)
2+
W22f(x,y)\相角为:
A2f(x,y)=argtan
(M22f(x,y)W12f(x,y))因此二维信号的梯度矢量可由小波变换的两个成分W1sf(x,y)和W2Sf(x,y)来确定。
这里W1Sf(x,y)和W2Sf(x,y)是f(x,y)的一个多尺度描述,他们分别表示在s级分辨率下的近似图像沿x,y方向的偏导,沿梯度方向提取模值的极大值点可得到边缘点。
改变s值,可获得在不同尺度下的边缘。
利用小波变换天生的多尺度特性,提取不同精度、不同奇异度的图像边缘,可以获得良好的效果。
基于这种思想,MaIIat首先提出小波变换极大值方法,并用于分析信号的奇异性和图像的边缘检测,使其成为图像边缘检测的重要工具[6,7]。
应用小波变换提取图像边缘的结果分析通过小波变换多尺度提取图像边缘是一种非常有效的方法。
由于小波变换具有的多尺度特性,图像的每个尺度的小波变换都提供了一定的边缘信息。
当尺度小时,图像的边缘细节信息较为丰富,边缘定位精度较高,但易受到噪声的干扰;大尺度时,图像的边缘稳定,抗噪性好,但定位精度差。
将各尺度的边缘图像的结果综合起来,发挥大小尺度的优势,就能得到精确的边缘图像。
(a)Lena原始图像(b)MaIIat算法(c)双正交小波变换一次分解(c)矩形自适应法确定阈值图2利用小波变换提取图像边缘的结果小波变换在实际
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- hough 变换 原理