霍夫变换Hough

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

直线检测

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

        霍夫变换

即:

        霍夫变换

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

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

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

        霍夫变换

        霍夫变换

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

曲线检测

通过霍夫变换检测圆的方法参考[3]

霍夫变换的优点

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

霍夫变换

霍夫变换的实现方法

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

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)

【3】第三章 霍夫变换(Hough Transform)

相关文章:

猜你喜欢
  • 2021-08-19
  • 2021-06-05
  • 2021-12-31
相关资源
相似解决方案