2013-05-09 38 views
2

我有兩套線,設置A和B是已知的這兩套所有線路的起點和終點,我想找到旋轉而最適合集B到集A轉換沒有脫屑:最佳擬合算法,以適應一組線到多邊形

enter image description here

  • 沒有一個一對一的映射。我相信這排除了Kabsch算法,儘管我可以設想一個使用這個的蠻力算法。
  • 組B很可能包含在A.它可能包含一個相當稀疏數量的行線的部分片段。
  • 在B中的線將是錯誤的 - 有可能觀察到線中不存在A.
  • 有可能的,當然,是多於一個可能的「匹配」

對於一些背景,這是一個粗糙的基於圖像的機器人定位系統的一部分。

  • Set A是'map' - 數據是從導入的dxf文件導入的。
  • 組B是觀察到線一組一個。

我已經環顧四周,例如這裏:

How to align shapes together? (Geometrical Best-Fit Algorithm)

是這樣做的一個聰明的辦法?通過圖像處理文學形狀匹配輕彈似乎是更多的模式匹配的光柵圖像 - 可能是這個問題矯枉過正。

我可以在時刻感知的最好方法是使用Hough變換式的方法服用每行中沿乙所述的各條線和具有箱爲旋轉/轉換這些表示。我還沒有編碼,並嘗試過 - 有人想避免重新發明輪子。

任何想法和輸入大加讚賞。

回答

0

的一般解決方案是從集合A中提取的「特徵」,並與集B.比較特徵

一個例子:考慮所述組A的所有獨特的角度和計算的角度的不同的唯一對。在你的例子A中,只有三種可能的情況:(0,0),(0,90),(90,0)。例如:如果角度爲0,5,50,93,129,則角度爲(0,5),(0,93),( 5,93),(50,129)是匹配的候選人。一旦你有了候選人,你可以進一步過濾他們。

根據您集合A中有線條的類型,你可以提取相關特徵。例如:如果你所有的線都是垂直或平行的,你可以擁有線之間的距離等特徵。

+0

嗨。謝謝你的回答。我想我可以看到你來自哪裏,儘管我從一開始就陷入困境。我不知道你是如何獲得A組可以角度對?例如,(0,0)在你的例子中代表什麼?
然後,這是我接下來要做什麼的問題。這種方法是否有效地爲我提供了集合中各行之間的可能匹配,因此,如果您願意,我可以減少搜索空間,以便在該空間處拋出Kabsch算法(或類似算法)來解決我的平移和旋轉問題? – Jon 2013-05-10 01:22:43