霍夫变换

霍夫变换Hough

"        霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法。主要用来从图像中分离出具有某种相同特征的几何形状(如,直线,圆等)。最基本的霍夫变换是从黑白图像中检测直线(线段)。        "[1]

直线检测

对于图像的直角坐标空间的某一个点(x0, y0),经过该点的所有直线参数必须满足

        

即:

        

对应m, b参数直角坐标空间(霍夫空间)中的一条直线。

因此对于原图像中的每一个点,都可以在相应的霍夫空间中画出这样的一条直线。当我们对图像中获取的边缘点进行拟合时,即可以对图像中的每个边缘点,在霍夫空间中做出一条对应的直线。在霍夫空间中,有更多直线通过的点对应的m,d值更有可能拟合更多的边缘点。

当图像的边缘在直角坐标空间中为一条垂直于x轴的直线时,由于直线的斜率为正无穷,无法在直角霍夫空间中通过m表示出来,因此我们引入极坐标霍夫空间。直线在极坐标系中可以表示为:

        

        

由此,图像的竖直边缘即可以表示为  = 0 , d = a (a为常数)的形式了。其余做法和直角霍夫空间类似。

曲线检测

曲线检测和直线检测类似,即先做出曲线模型,带入图像中所有边缘点,在参数空间(可能多维)中画出对应的曲线,所通过直线最多的点所对应的参数拟合效果更好。

霍夫变换的优点

霍夫变换可以同时检测出图像中的多条边缘,比如在参数空间中,有两个点所对应的曲线条数都很多,那么这两个点对应参数的模型可能都是图像中边缘,如下图以直线为例:


霍夫变换的实现方法

以上所有讨论都是在连续的坐标空间内,但是在具体实现时可以将参数空间视为离散的。这里以直线检测的极坐标霍夫空间为例, 实现思路如下:

1. For all d,  , Initialize H[d][]

2. for each edge point I[x,y] in the image

        for  = 0 : 180

        d = x * cos   + y * sin   

        H[d][] += 1

3. Find the value(s) of ( d,  )for max H[d][]

参考资料

【1】百度百科:霍夫变换

【2】 霍夫变换(Hough)

猜你喜欢

转载自blog.csdn.net/qq_38131594/article/details/80777244