计算机视觉讨论群162501053
收入囊中
- Hough变换
- 概率Hough变换
- 自己实现Hough变换直线检测
葵花宝典
先看一下我实现的效果图
下面,我们进入Hough变换的原理讲解。
看上图,我们知道,经过一点(x0,y0)的直线可以表示成y0 = mox + b0
反过来看方程,b = –x0m + y0 ,于是我们从原来的坐标系转移到了Hough空间,m是横坐标,b是纵坐标
刚才提到,经过(x0,y0)的直线具有的特征是b = –x0m + y0,在Hough空间下也是一条直线,
那么经过(x1,y1)的直线具有的特征是b = -x1m + y1,在Hough空间下是另一条直线。
两条直线的相交点的(m,b)就是经过(x0,y0)(x1,y1)的直线,这个应该可以理解吧。
于是就有了一个简单的想法,对于每一个点,在Hough空间中都画出一条直线,对于每条直线经过的点,都填充在如下的 Hough空间中,看哪交点多,就能确定。我们用一个二维数组表示Hough空间,如下。最后就变成数哪些格子的值比较高。
但是,用m和b有局限性。因为m是可以取到无穷大的,所以这个特征只在理论上可行...实际上我们不可能申请一个无限大的二维数组。
自然而然,我们想到了极坐标,在极坐标下,就没有这个限制了。
在极坐标下,我们的直线可以写成:
也就是ÿ