一、原理
参考霍夫变换,如果有课本的话参考冈萨雷斯的图像处理课本及matlab版本的课本最好,如果没有就看下这节的原理描述。
直角坐标系中对于直线方程有如下等式:
ρ=x∗cosθ+y∗sinθ(ρ≥0)
其中 ρ 为坐标原点到直线的距离, θ 为 ρ 与x轴正方向的夹角,x、y为直线上的点:
对于直线上任意一个已知的点 (x0,y0) 有: ρ=x0∗cosθ+y0∗sinθ ,则该函数是关于 ρ 和 θ 的方程。
所以,对于图像上的任意一个像素点都有上述方程成立,亦即对于图像上的任意一个点,在霍夫变换后的参数空间内 (θ,ρ) 都可以找到一条三角函数曲线与其对应。图像上的任意两个点,即对应两条曲线,那么这两条曲线必然会产生一个交点 (θ0,ρ0) ,这个交点再放到直线方程中,即可确定一条直线(也正是图像上这两个点所确立的直线)。
由此推断,图像上在同一条直线(图像上应该是一个线段)上的点所产生的曲线都会在参数空间相交于一个点 (θ0,ρ0) ,直线的长度越长(点越多),那么交于该点的曲线也越多。
所以,在图像上找直线可以演变成在霍夫变化后参数空间(霍夫图像)中找曲线相交次数最多的点。
代码
平台:Ti的DSP系列
语言:C