2015-07-13 51 views
3

我有三維點雲並希望重建曲面。我在Meshlab中嘗試了各種技術來找到最適合我的特定類型的雲的算法。通過保留點位置實現三維曲面重建

泊松曲面重建是非常有前景的,但它不保留原始的點位置。在雲中的特定位置進行重建和測量後發現,測量結果與真實世界中物體的測量結果相比超過了1.5倍。

球樞轉算法更好。它保留了點的位置,測量值也在預期範圍內。然而,這種算法在美國獲得專利,所以我不能將其用於商業項目。

經過研究其他算法,我沒有發現任何可以在商業環境中使用的像點球旋轉那樣的點位置。你知道滿足這兩個標準的算法嗎?我可以用我的點雲來試驗它們,看它們在實施它們之前是否運行良好?

任何幫助,將不勝感激。

+0

使用Alpha-shapes https://en.wikipedia.org/wiki/Alpha_shape。它們是在專利之前公佈的,這並不是什麼新鮮事。 –

+0

我嘗試了Meshlab中的alpha形狀,它似乎並不壞。但經過與球機的比較後,有一些嚴重的缺陷。三角形的數量太高。現在沒有一個網格顯示錶面,而是有許多相互重疊的三角形。我嘗試了網格的簡化,但它無法與球軸相比。 實施例阿爾法形狀的線框和目: http://abload.de/img/alphawireframe69qyf.png http://abload.de/img/alphameshefrbt.png 實例球樞軸線框和目: HTTP:// abload.de/img/ballpivotwireframe1lqpp.png http://abload.de/img/ballpivotmesh6qrfw.png – RBS

+0

Alpha形狀和球形支點實際上是相同的方法。你是否正確調整了半徑? –

回答

3

對於插值表面重構(保持數據點),兩個算法執行得相當好(地殼和共圓錐)。

地殼算法:

的想法是首先計算點集的Voronoi圖,然後從沃羅諾伊選擇頂點是中軸(稱爲極)的良好近似的操作,然後計算輸入點+極點的3D Delaunay三角剖分,最後提取連接四面體中三個輸入點的三角形,其中第四個頂點是極點。

更多的參考資料:

http://web.cs.ucdavis.edu/~amenta/pubs/crust.pdf

http://web.mit.edu/manoli/crust/www/crust.html

  • 加:很簡單的實現,一些理論保證,如果輸入的數據是一個很好的採樣

  • 減:要求計算兩個Delaunay三角剖分

共同錐體算法:

的想法是計算點集的Voronoi圖,然後在每個Voronoi單元計算所述正常的良好近似的表面(作爲向量連接極點,即距離數據點最遠的兩個Voronoi頂點)。然後在每個Voronoi單元中考慮一個以數據點爲中心並以法線爲軸的圓錐體(共圓錐體)的補充。如果三個錐體與Voronoi邊緣具有非空的交點,則三個數據點用三角形連接。請注意,共圓錐體對象不需要明確構造(只需要比較角度以測試是否存在交叉點)。

更多的參考資料:

http://web.cse.ohio-state.edu/~tamaldey/surfrecon.htm

  • 加:需要一個單一的Delaunay三角剖分(相比於2地殼),一些理論保證如果輸入數據是 「好採樣」

  • 減號:比地殼稍微複雜一點(但值得我的努力)

一些最後的詞:

這些算法構建好(即如果點集實現了良好的採樣(即,與厚度和曲率成比例的密度,稱爲「局部特徵尺寸」=到中軸的距離),則可以確定流形。在實踐中,輸入數據不滿足這個條件,因此該方法的輸出將是一個「三角湯」,大部分都是OK,但這需要一些後處理來修復一些局部缺陷。

編輯16年3月21日你也可以嘗試我自己的算法(Co3Ne),在我的軟件庫Geogram(http://alice.loria.fr/software/geogram/doc/html/index.html)和我的軟件石墨(http://alice.loria.fr/software/graphite/doc/html/)來實現。 Graphite可以在那裏下載:http://gforge.inria.fr/frs/?group_id=1465(便攜式源代碼和Windows64可執行文件)。它是一種具有各種優化和並行實現的共同錐體形式。