zoukankan      html  css  js  c++  java
  • 如何判断两条线段的相似程度

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

    容易想到利用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)
    
  • 相关阅读:
    TP之Model(select(),add())
    TP之空操作及View模块
    ThinkPHP之初识
    smarty引擎之练习
    领先环境HTML
    php流程
    分页
    弹窗
    邮箱项目
    TP框架修改操作
  • 原文地址:https://www.cnblogs.com/azureology/p/13034487.html
Copyright © 2011-2022 走看看