图像分割——Hough变换检测法
一 Hough变换的基本思想
二 算法实现:
使用交点累加器,找出参数空间相交线段最多的点,然后根据该点参数给出对应的xy平面直线方程。
算法步骤:
1.在ρ、θ的极值范围内对其分别进行m、n等分,并设一个二维数组A(m,n),用来统计交点计数值
2.对图像上的所有边缘点作Hough变换,求每个点在θj(j=0,1,…,n-1)Hough变换后的ρi ,判断(ρi、θj)与哪个数组元素对应,则让该数组元素值加1;
3.比较数组元素值的大小,最大值所对应的(ρi、θj)就是这些共线点对应的直线方程的参数。
算法特点:
对ρ、θ量化过粗,直线参数就不精确,过细则计算量增加。因此,对ρ、θ量化要兼顾参数量化精度和计算量。Hough变换检测直线的抗噪性能强,能将断开的边缘连接起来。此外Hough变换也可用来检测曲线。
三 Hough变换的扩展
Hough变换不只对直线,也可以用于圆:
这时需要三个参数(a,b,R)的参数空间。如像找直线那样直接计算,计算量增大,不合适。
1 解决途径
若已知圆的边缘元(当然图中还有其它非圆的边沿点混在一起),而且边缘方向已知,则可减少一维处理,把上式对x取导数,有
这表示参数a和b不独立,只需用二个参数(例如a和R)组成参数空间,计算量就缩减很多。
2 对于椭圆
设椭圆方程为
取导数有
已知椭圆上一点,则只有三个独立参数。只需要从(a , b , x0 , y0)中选择三个参数进行检测。
3 对于任意曲线
对已知形状建立了R表格后,开辟一个二维存储区,对未知图像各点都来查已建立的R表,然后计算(xc , yc),若未知图像各点计算出的(xc , yc)很集中,就表示已找到该形状的边界。集中的程度就是找最大值。
4 具体步骤如下:
(1)对将要找寻的某物边界建立一R表,这是一个二维表,以φi的步进值求r和α;
(2)在需要判断被测图像中有无已知某物时,也可对该图某物各点在内存中建立一存储区,存储内容是累加的。把xc , yc从最小到最大用步进表示,并作为地址,记作A(xcmin~max, ycmin~max),存储阵列内容初始化为零;
(3)对图像边界上每一点(xi , yi),计算φ(x),查原来的R计算(xc , yc),;
(4)使相应的存储阵列A(xc , yc)加1,即
(5)在阵列中找一最大值,就找出了图像中符合要找的某物体边界。