霍夫变换就是利用参数空间中的(ρ,θ)来表示一条直线,其中ρ是原点到直线的垂直距离,θ是原点到直线的一条垂线段与θ的夹角。通过几何的方法(添加辅助线,相似三角形来做),我们可以证明对于直线上的任何一点都有ρ=xcosθ +ysinθ(网上很多资料并没有说这一步,因此会有想不通的时候)。
知道这个原理之后我们就可以通过便利ρ和θ的值域来对每个点进行试验,即把每个点的坐标,θ带入xcosθ +ysinθ判断是否等于ρ即可。若等于则说明这个点在这条直线上。通过遍历所有的点来对我们的直线(ρ,θ)进行投票。设定一个阈值就可以得到比较明显的(点数较多的)直线。
原文地址:http://blog.csdn.net/lampqiu/article/details/38758309