Hough变换边界连接 原理
Hough变换是图像处理中从图像中识别几何形状的基本方法之一。Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的一个点。这样就把原始图像中给定曲线的检测问题转化为寻找参数空间中的峰值问题。也即把检测整体特性转化为检测局部特性。比如直线、椭圆、圆、弧线等。
设已知一黑白图像上画了一条直线,要求出这条直线所在的位置。
对于直线的方程可以用:
y=k*x+b 来表示
其中k和b是参数,分别是斜率和截距。
过某一点(x0,y0)的所有直线的参数都会满足方程y0=kx0+b。即点(x0,y0)确定了一族直线。方程y0=kx0+b在参数k–b平面上是一条直线
转换到极坐标系空间ρ=xcosθ+ysinθρ=xcosθ+ysinθ,
ρ表示直线到原点的距离,θ限定了直线的斜率
在进行hough变换前,先需要将图像的边缘图像提取出来,在边缘图像的基础上进行hough变换。经过边缘图像每一个点的直线有很多
经过某一点的直线在参数空间的表示像一条正弦曲线。
在边缘图像中,只有表示边缘的像素点才有可能构成直线。现在回到参数空间,在参数空间H(ρ,θ)H(ρ,θ)中,将经过边缘图像中每一个有效像素点(边缘像素点)的所有直线信息都加到H(ρ,θ)H(ρ,θ)上。比如,像素点(x,y)(x,y)代表构成边缘的一个像素点,遍历θθ,根据公式ρ=xcosθ+ysinθρ=xcosθ+ysinθ我们可以计算出所有经过点(x,y)(x,y)的直线信息。
这儿三个点在一条直线上,不同颜色的线代表经过不通点的直线,图下面的表显示了直线的参数。将直线参数表示在参数空间的曲线上
每一条曲线都是由经过一个点的所有直线参数构成的。我们发现三条曲线在(60,81)附近交叉了,这表明θ=60,ρ=81θ=60,ρ=81这条直线上有三个点。这就表明了我们如何从参数空间H(ρ,θ)H(ρ,θ)上寻找直线信息。将HH看作为一个累加器,一个表示直线信息的累加器。设置某一阈值,超过阈值的参数点所代表的直线表明图像中存在这一直线。
简而言之,Hough变换思想为:在原始图像坐标系下的一个点对应了参数坐标系中的一条直线,同样参数坐标系的一条直线对应了原始坐标系下的一个点,然后,原始坐标系下呈现直线的所有点,它们的斜率和截距是相同的,所以它们在参数坐标系下对应于同一个点。这样在将原始坐标系下的各个点投影到参数坐标系下之后,看参数坐标系下有没有聚集点,这样的聚集点就对应了原始坐标系下的直线。
在实际应用中,y=kx+b形式的直线方程没有办法表示x=c形式的直线(这时候,直线的斜率为无穷大)。所以实际应用中,是采用参数方程p=xcos(theta)+y*sin(theta)。这样,图像平面上的一个点就对应到参数p—theta平面上的一条曲线上,其它的还是一样。