1.如何检测图像上直线。
假设图像中现有3个点A,B,C,要检测这三点是否在一条直线上。
首先,图像中如何表示一条直线呢。用(R,theta)坐标系。R是直线过原点的法线的长度。theta是法线和x轴的夹角。如下图:
回到问题。假设图像中现有3个点A,B,C,要检测这三点是否在一条直线上。首先用(R,theta)坐标系表示分别经过三个点的所有直线。La,Lb,Lc。theta取值可以是(1,2,3,,,180)所以La是180条线的集合,用180个(r,theta)表示。在这180*3个点中假如发现当theta=60时,A,B,C点的r 非常接近。那么(r,60)就是这三点确定的直线。用几何来解释就是,(r,theta)所表示的曲线的交点。
如何检测圆?
类似于直线的思想。用(a,b,r)表示经过(x,y)的所有圆。当r固定时,(a,b)的轨迹是一个半径为r的圆。当r变化时,经过(x,y)的所有圆(a,b,r)就是一个锥面。
三个锥面的交点就是过三点的圆。