Hough变换就是对于图象中某些符合参数模型的主导特征,如直线、圆、椭圆等,可以通过对其参数进行聚类的方法,抽取相应的特征。
例如,直线在极坐标系下具有如下的参数方程形式:
首先将参数空间量化为等间隔的小区域,然后针对超过给定阈值的所有边缘点,对于每个边缘点将其映射到的参数空间中的小区域
中,记数落到每个小区域的点数。最后,取具有最大频度的若干小区域的参数作为线条特征的参数,得到图象中主导性的线条特征。
中(a)左图为图像空间的直线的极坐标表示,右图为参数空间表示;(b)对直线上每个点进行都变换到参数空间进行投票。
算法流程如下:
1) 构建量化的参数空间,横轴为原点到直线的距离d,纵轴为直线的倾角,一般取d
的量化间隔为1 个像素, 的量化间隔为1度。
2) 对输入图像首先进行边缘提取,实验中使用的是Canny 算子。
3)对边缘上的每一个点,在参数空间,对每一个计算对应的
然后绘制出相应的曲线,这就相当于对相应的参数空间的参数对进行投票。
4)选择票数最多的那个参数对作为该直线的参数,这里需要确定一个阈值, 参数空间中大于该阈值的元素才被考虑为可行直线参数, 同时需要在参数空间计算 局部的极大值。总的说来,参数空间满足如下两个条件的点才能够做为直线参数输出:
i. 该点为局部极大值
ii. 该点的值大于阈值。
Hough变换检测的结果如下: