項目中需要判斷兩條線段的相似程度並給出得分
容易想到利用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)
