图
图
直线的方程可以用 y=m*x+b 来表示, 其中 k 和 b 是参数, 分别是斜率 (m) 和截距 (b). 通过一点(x,y) 的所有直线的参数都会满足方程 y=mx+b. 即点 (x,y) 确定了一组直线.
图
通过图我们可以找到 m 和 b 区域, 如果直线通过这个区域就等于给这个区域进行投票.
图
在坐标系中存在问题, 就是如果我们直线如果与坐标轴并行, 这样斜率也就是 w 值趋近于无穷. 我们无法 hough space 通过点表示该直线.
图
在实际中, 有 y = c 这样情况, 或者是 x = c 这样方程为一个常数, 也就是斜率为无穷大. 所以在实际中采用极坐标 p = xcos(theta) + ysin(theta) 平面上点对应极坐标上的一条曲线.
图
我们看一看如何在极坐标根据 theta 和 p 确定一条直线, 从原点引一条垂直直线的线段, 线段距离就是 p .theta 和 p 带入 x = 5 y = 2
图
如果 theta 为 0 那么在极坐标上表示为 x 截距为 5 也就是 p = 5 值
图
如果 theta = 90 表示 p =2 在 y 轴上线段.
图
图
在极坐标中一点的直线集, 现在 hough 空间表示如右图, 这些点也会连接成一条曲线
图
在坐标系列点中, 在 hough 空间曲线如图, 这些点在 hough 空间所对应曲线交于一点, 这一点在坐标轴所对应的直线就是穿过这些点的直线, 也就是这些点的共线.
图
来源: http://www.jianshu.com/p/fa9d2d17d83d