2012-01-30 46 views
5

我有一個非常好的&棘手的問題給你。 我需要使用非常快的算法對齊兩個網格。給定mesh1和mesh2我想找到我需要如何traslate並旋轉mesh1到mesh2的相同位置。 首先,我使用兩個網格的慣性矩做了這個,但是如果第二個網格與第一個網格相似,但是有一些缺失部分,則該算法不起作用。換句話說,採取兩個相同的網格,並從其中一個切斷相同的部分。如何對齊兩個網格

我想用C編寫代碼,因爲我需要在多平臺機器上執行該操作(linux/win),並以非常快的方式執行該操作:它必須放入GA算法中。

這兩個網格採用STL(stereolitography)格式(二進制或ascii),但也許可以使用另一種文件格式。

你有什麼想法如何執行這個東西?

問題更新:

首先,我要感謝你們非常爲您的所有建議。我已經在我的機器上下載了安裝PCL併成功編譯了ICP(教程)算法,取自PCL網站。 但現在我對此有一些疑問,也許是因爲對我而言是一件全新的事情。 4x4矩陣輸出對健身有什麼意義?我應該期待一個旋轉矩陣和一個traslational向量..

我希望你們中的一些人能幫助我。 如果您需要其他信息,請詢問。

+0

所以基本上你想要一個算法來計算在mesh2上儘可能接近地轉換mesh1的transformationmatrix?另外:編輯一個網格的唯一方法是刪除零件或者可以移動和添加頂點? – Nobody 2012-01-30 14:15:43

+0

@我沒有人計算轉換矩陣來比較兩個物體的慣性矩,但是將mesh1放在mesh2上的其他任何東西都可以。總之,我需要找到mesh1方向上最接近的位置,它給出兩者之間的最小距離值。 – Nicholas 2012-01-30 14:19:40

+1

對於任何一個像我這樣稍後偶然發現的人來說,當相關性高而差異很小時,ICP是最有效的,因爲如果ICP需要移動一個雲/網格太遠,ICP傾向於解決不適當的解決方案去正確的一個。這就是爲什麼某種粗略的特徵匹配步驟通常首先執行,以便在正確的附近進行變換。從這一點來看,ICP在完善註冊方面非常出色。 – Matt 2015-01-02 03:00:20

回答

4

Point Cloud Library有幾個資源,您可能會發現有用。正如@ Throwback1986所說,ICP是一種用於對齊幾何的優秀算法。 Pcl還具有其他通常更快的對齊算法,其基礎是識別和匹配兩個幾何體中感興趣的特徵。該圖書館在機器人社區中發現了很多用途,與您一樣,這些社區非常注重性能。

Pcl是用C++編寫的。雖然不像直C那樣便攜,但它們提供了windows,幾種* nix風格和mac os的安裝說明。我已經看到它在ios和android上運行。檢查出tutorials

+0

謝謝你給我這個鏈接。這是一個非常有趣的圖書館。我一直在嘗試使用一些教程,但不幸的是它沒有實現我期望的奇蹟:)。它只適用於小的差異,我希望我可以將這些代碼與我慣性慣性的方法合併。任何其他好的建議? – Nicholas 2012-02-10 16:45:42

+0

嘗試搜索pcl郵件列表,如果您沒有找到任何內容,請發送問題!開發人員相當敏感。 其中一個想法是根據你的慣性矩技術爲ICP建立最佳猜測,然後從那裏迭代以進行精確對準。 4x4變換矩陣將您的旋轉矩陣嵌入其中,如左上角。第四列包含翻譯矩陣。 (注意最下面一行有三個0) – yurbles 2012-02-10 18:02:41

3

迭代最近點(ICP)是一種通過剛性變換來記錄(對齊)3D點雲的方法。 (它也可以應用到網格。)

這裏是一個很好的介紹:http://www.cs.duke.edu/courses/spring07/cps296.2/scribe_notes/lecture24.pdf

這是一個合理的總結: students.asl.ethz.ch/upl_pdf/314-report.pdf

這裏是一個matlab實現: http://www.mathworks.com/matlabcentral/fileexchange/12627-iterative-closest-point-method

這裏有一些潛在的優化: http://www.cs.princeton.edu/~smr/papers/fasticp/

+1

我一直在做一些關於這個話題的研究。我發現matlab代碼非常有用,儘管我認爲這個[鏈接](http://www.mathworks.com/matlabcentral/fileexchange/16766)比你的更好,因爲它也有cpp源代碼!我會盡快告訴你任何新的發展,我想我會在這裏發佈我會得到的解決方案。 – Nicholas 2012-02-02 10:29:05