Hough变换
Hough变换是利用图像全局特性有可能把边缘象素连接起来组成区域封闭边界的一种方法。在预先知道区域形状的条件下,利用Hough变换可以方便地得到边界曲线,把不连续的边缘象素点连接起来,还可以直接检测某些已知形状的目标,并有可能确定边界到亚象元精度。其主要优点是受噪声和曲线间断的影响小。为了便于理解Hough变换这种功能,先举一个简单例子。设给定图像中的n个点,要从中确定连在同一直线上的点的子集。这可看作已检测出的若干点,去求出它们所在的直线。一种直接解决办法是先确定所有由任意两点决定的直线(约需n2次运算以确定n(n-1)/2 条直线),再找出接近具体直线的点的集合(约需n2次运算以比较n个点中的每一个与n(n-1)/2条直线中的每一条)。这么大的计算量实际上不易实现。如果用Hough变换:的方法就可用较少的计算量来解决这个问题。这种变换的基本思想是点一线的对偶性,Duality在图像空间XY中,所有过点(x,y)的直线都满足方程:Y=px + q (5-15)式中P为斜率,q为截距,式(5-15)也可以写成:q=- px + Y (5-16)式(5-16)可以认为是代表参数空间PQ中过点(p,q)的一条直线。现在来看图5-9a表示图像空间,(b)表示参数空间。在图像空间XY中,过点(xi,yi)的通用直线方程按式(5-15)可写为yi=pxi+q,也可以按式(5-16)写为q=-pxi+yi;它表示在参数空间PQ里的另一条直线。设这两条直线在参数空间PQ里相交于点(p′,q′),这里点(p′,q′)对应图像空间XY中一条过点(xi,yi)和(xi,yi)的直线,因此在图像空间XY中过点(xi,yi)和(xj,yj)的直线上的每个点都对应在参数空间PQ里的一条直线,这条直线相交于点(p′,q′)。由此可知,在图像空间中共线的点对应在参数空间里相交的线。反过来在参数空间中相交于同一个点的所有直线在图像空间里都有共线的点与之对应。这就是点线对偶性。Hough变换就是根据这些关系把在图像空间中的检测问题转换到参数空间里,通过较简单的累加统计完成检测任务。在具体计算时需要在参数空间PQ里建立一个二维累加数组。设这个累加数组为A(p,q),如图5-10所示。其中[Pmin,Pmax]和[qmin,qmax]分别为预期的斜率和截距的取值范围。开始时置数组A为零,然后对每一个图像空间中的给定点,让p取遍p轴上所有可能的值,并根据式(5-16)算出对应的q,再根据p和q的值(设都已经取整)对A累加:A(p,q)=A(p,q)+1,累加结束后,根据A(p,q)的值就可知道有多少点是共线的,即A(p,q)的值就是在(p,q)处共线点的个数。同时(p,q)值也给出了直线方程的参数,于是我们得到了点所在的线。图5-9 图像空间和参数空间中点和线的对偶性图5-10 参数空间里的累加数组示意图假设我们把P轴分成K份,即P取K个值,那么对每一个点(xk,yk)由式(5-16)可得到q的K个值。因为图中有n个点,所以这里就需要nK次运算。可见运算量是n的线性函数。如果K比n小,则总计算量必小于n2,这就是Hough变换的优势所在。Hough变换不仅可用来检测直线和连接处在同一条直线上的点,也可以用来检测满足解析式f(x,c)=0形式的各类曲线并把曲线上的点连接起来。这里x是一个坐标矢量,在二维图像中是一个二维矢量,c是一个系数矢量,它可以根据曲线的不同,从二维、三维到四维等,凡能写出方程的图形,都可以利用Hough变换来检测。自然界有许多要素有一定的形状、分布与伸展方向,但可能受其他因素遮蔽而显现得不清晰或断断续续,例如,地质体的线性构造、环形构造等,在地质探矿、地质稳定性分析等方面都有重要意义,可是在遥感图像上有时反映得不太清楚,如果借鉴Hough变换的基本思想来处理图像,可能有助于构造信息的提取。
霍夫变换的详细内容
我们先看这样一个问题:设已知一黑白图像上画了一条直线,要求出这条直线所在的位置。我们知道,直线的方程可以用y=k*x+b 来表示,其中k和b是参数,分别是斜率和截距。过某一点(x0,y0)的所有直线的参数都会满足方程y0=kx0+b。即点(x0,y0)确定了一组直线。方程y0=kx0+b在参数k--b平面上是一条直线,(你也可以是方程b=-x0*k+y0对应的直线)。这样,图像x--y平面上的一个前景像素点就对应到参数平面上的一条直线。我们举个例子说明解决前面那个问题的原理。设图像上的直线是y=x, 我们先取上面的三个点:A(0,0), B(1,1), C(2,2)。可以求出,过A点的直线的参数要满足方程b=0, 过B点的直线的参数要满足方程1=k+b, 过C点的直线的参数要满足方程2=2k+b, 这三个方程就对应着参数平面上的三条直线,而这三条直线会相交于一点(k=1,b=0)。 同理,原图像上直线y=x上的其它点(如(3,3),(4,4)等) 对应参数平面上的直线也会通过点(k=1,b=0)。

