如何判断两条线段的相似程度(计算点到直线的距离)


项目中需要判断两条线段的相似程度并给出得分

容易想到利用OpenCV中的Hough变换将直线变为Hough空间中的点

再求参考点与观测点在Hough空间中的距离

上述方法理论可行,实际操作中存在偏差

例如直线y = kx + b变换为(k,b)后很容易受到斜率k的影响而离群,实则b差别较小

上图,因为受到k值惩罚Line_0会比Line_1更离群,尝试加权或取对数效果都不理想

采用ro和theta的Hough变换效果依旧,受ro影响较大存在误判

痛定思痛,重新思考如何评估描述线段相似的代价函数,两条线段越接近看作越相似

因此问题转化为计算待测线段中点向参考线的投影距离,即向量e的模长

用Python很容易实现,将向量标示为np.array([x,y])形式可直接进行向量运算

最后结果需要用到np.linalg.norm(x)该函数默认求二范数,即模长

代码实现

a = np.array([1,2])
b = np.array([3,4])
c = (a.dot(b) / np.linalg.norm(b)**2) * b
dist = np.linalg.norm(a - c)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM