我有一個非常好的&棘手的問題給你。 我需要使用非常快的算法對齊兩個網格。給定mesh1和mesh2我想找到我需要如何traslate並旋轉mesh1到mesh2的相同位置。 首先,我使用兩個網格的慣性矩做了這個,但是如果第二個網格與第一個網格相似,但是有一些缺失部分,則該算法不起作用。換句話說,採取兩個相同的網格,並從其中一個切斷相同的部分。如何對齊兩個網格
我想用C編寫代碼,因爲我需要在多平臺機器上執行該操作(linux/win),並以非常快的方式執行該操作:它必須放入GA算法中。
這兩個網格採用STL(stereolitography)格式(二進制或ascii),但也許可以使用另一種文件格式。
你有什麼想法如何執行這個東西?
問題更新:
首先,我要感謝你們非常爲您的所有建議。我已經在我的機器上下載了安裝PCL併成功編譯了ICP(教程)算法,取自PCL網站。 但現在我對此有一些疑問,也許是因爲對我而言是一件全新的事情。 4x4矩陣輸出對健身有什麼意義?我應該期待一個旋轉矩陣和一個traslational向量..
我希望你們中的一些人能幫助我。 如果您需要其他信息,請詢問。
所以基本上你想要一個算法來計算在mesh2上儘可能接近地轉換mesh1的transformationmatrix?另外:編輯一個網格的唯一方法是刪除零件或者可以移動和添加頂點? – Nobody 2012-01-30 14:15:43
@我沒有人計算轉換矩陣來比較兩個物體的慣性矩,但是將mesh1放在mesh2上的其他任何東西都可以。總之,我需要找到mesh1方向上最接近的位置,它給出兩者之間的最小距離值。 – Nicholas 2012-01-30 14:19:40
對於任何一個像我這樣稍後偶然發現的人來說,當相關性高而差異很小時,ICP是最有效的,因爲如果ICP需要移動一個雲/網格太遠,ICP傾向於解決不適當的解決方案去正確的一個。這就是爲什麼某種粗略的特徵匹配步驟通常首先執行,以便在正確的附近進行變換。從這一點來看,ICP在完善註冊方面非常出色。 – Matt 2015-01-02 03:00:20