霍夫变换运用两个坐标空间之间的变换将在一个空间中具有相同形状的曲线或直线映射到另一个坐标空间的一个点上形成峰值,从而把检测任意形状的问题转化为统计峰值问题,本文介绍hough变换检测直线、圆的原理。
霍夫变换于1962年由Paul Hough 首次提出,后于1972年由Richard Duda和Peter Hart推广使用,经典霍夫变换用来检测图像中的直线,后来霍夫变换扩展到任意形状物体的识别,多为圆和椭圆。
hough线检测原理
在笛卡尔坐标系中有 y = kx +b,确定一条直线只需要确定k,b的值。对于过点(x0,y0)的直线有以下满足以下表达式的k,b 值。b=-kx0+y0。如果某一组(b,k)满足多个点(x0,y0),(x1,y1),(x2,y2),则说明这几个点都在直线y=kx+b上,所以可以确定一条直线。下图演示了这个情况:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s2Ek2vHP-1574154843803)(https://chenandongtime.github.io/img/1565954684619.png)]
紫色线即为所求直线。
在笛卡尔坐标系下,特殊直线方程不好表达.(b,k)的可视化效果也不好,将直线方程转移到极坐标系。
row = y0 * sin(theta)+x0*cos(theta)可以化简为:row = r * sin(theta + fa)。不同的(x0,y0)的坐标对应的r 和fa 不同 ,但是如果共线则有一组(row,theta)相同,即表现为图像相交。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CZSueg7p-1574154843804)(https://chenandongtime.github.io/img/1565955367220.png)]
从统计学上交点的的频率更高,也即是峰值。
hough圆检测原理
从线检测原理可以总结出,hough变化就是把解析几何的几个参数值确定,如何确定?就是转化到参数坐标系,观察参数的频率峰值,确定合适的参数值。
在圆中有三个参数 (x-a)^2 + (y-b)^2 = C^2。可以先确定一个C值,这样(a,b)集合就组成了一个以(x0,y0)为集合中心的圆,改变C值获得不同大小的圆,这时就可以把C值当作Z坐标,参数集合就变成一个倒圆锥的形状。多个不同的(x,y)坐标形成多个不同的倒圆锥,其交点及时参数值。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oLOd3VP4-1574154843805)(https://chenandongtime.github.io/img/1565956078452.png)]
更多参数的几何形状也可以如此推理,但是要注意计算复杂度。
参考文献:https://blog.csdn.net/shenziheng1/article/details/75307410