我们在检测图像的边缘图时,有时需要检测出直线目标,hough变换检测出直线后怎么能更进一步的缩小区域呢?其中,可以根据距离来再做一判断,就涉及到了点与直线的距离问题。
点到直线距离代码如下:
//=================================排除干扰直线============================================
// 根据中心点与直线的距离 排除干扰直线
// 点(x0,y0)到直线Ax+By+C=0的距离为d = (A*x0+B*y0+C)/sqrt(A^2+B^2)
double A, B, C,dis;
// 化简两点式为一般式
// 两点式公式为(y - y1)/(x - x1) = (y2 - y1)/ (x2 - x1)
// 化简为一般式为(y2 - y1)x + (x1 - x2)y + (x2y1 - x1y2) = 0
// A = y2 - y1
// B = x1 - x2
// C = x2y1 - x1y2
A = pt2.y - pt1.y;
B = pt1.x - pt2.x;
C = pt2.x * pt1.y - pt1.x * pt2.y;
//中心点坐标(coreX,coreY)
double coreX,coreY;
coreX = RIO.cols/;
coreY = RIO.rows/;
// 距离公式为d = |A*x0 + B*y0 + C|/√(A^2 + B^2)
dis = abs(A * coreX + B * coreY + C) / sqrt(A * A + B * B);
//=========================================================================================