4.霍夫变换直线检测

定义:

霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,可以识别图像中的几何形状。它将图像空间中的特征点映射到参数空间进行投票,通过检测累计结果的局部极值点得到一个符合某特定形状的点的集合。经典霍夫变换用来检测图像中的直线,后来霍夫变换扩展到任意形状物体的识别,多为圆和椭圆。它的抗噪声、抗形变能力较强。另一种直线提取的方法是对图像边缘点进行链码追踪,在得到的链码串中提取直线。

霍夫变换将在一个空间中具有相同形状的曲线或直线映射到另一个坐标空间的一个点上形成峰值,从而把检测任意形状的问题转化为统计峰值问题。

标准霍夫变换:

考虑点和线的对应关系,过一点(x1,y1)的直线可表示为:y1=kx1+b,将变量和参数互换,已知一个点(x1,y1),经过这一点的直线簇可以表示为b=(-x1)k+y1。位于同一条直线上的点具有相同的斜率和截距,反映到参数空间上就是这些直线会交于同一点(k,b)。

举个例子:图像空间有三个点(1,1),(2,2),(3,3),他们在直线y=1*x+0上,如下图所示

互换参数,在参数空间里这三个点对应三条直线:1=k+b,2=2*k+b,3=3*k+b,交于同一点(1,0),这一点即图像空间中直线的斜率和截距,如果我们能得到这些点,也就得到了图像空间的直线:

由于上面的变换不能表示斜率为无穷大的情况,因此,采用极坐标的方式:Rho = X * Cos(Theta) + Y * Sin(Theta):

在实际操作时,步骤如下:

1、得到图像的边缘信息;
2、对边缘图像中的每一个点,在k-b空间中画出一条直线(实际是在极坐标中画出一条曲线)
3、对各直线上的点,我们采取“投票”(vote)的方法,即累加:有直线经过这一点,这一点的值加1;
4、遍历k-b空间,找出局部极大值点,这些点的坐标(k,b)就是原图像中可能的直线的斜率和截距。

霍夫变换的计算量和存储都是很大的。

同样的原理,我们可以用来检测圆,等式变为:(x –a ) ^2 + (y-b) ^ 2 = r^2,这样霍夫的参数空间就变成一个三维参数空间。若给定圆的半径则简化为二维霍夫参数空间。
 

猜你喜欢

转载自blog.csdn.net/chenlufei_i/article/details/88258805