阅读背景:

图像处理基本算法 Hough变换

来源:互联网 

 
 

霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改 进算法。最基本的霍夫变换是从黑白图像中检测直线(线段)。广义的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(22)。可以求出,过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) 。这个性质就为我们解决问题提供了方法:首先,我们初始化一块缓冲区,对应于参数平面,将其所有数据置为0.对于图像上每一前景点,求出参数平面对应的直线,把这直线上的所有点的值都加1。最后,找到参数平面上最大点的位置,这个位置就是原图像上直线的参数。上面就是霍夫变换的基本思想。就是把图像平面上的点对应到参数平面上的线,最后通过 统计特性来解决问题。假如图像平面上有两条直线,那么最终在参数平面上就会看到两个峰值点, 依此类推。在实际应用中,y=k*x+b形式的直线方程没有办法表示x=c形式的直线(这时候,直线的斜 率为无穷大)。所以实际应用中,是采用参数方程p=x*cos(theta)+y*sin(theta)。这样,图像平面 上的一个点就对应到参数p—theta平面上的一条曲线上。其它的还是一样。Hough变换求取直线的源码:霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应




你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: