3D幾何處理 | 點雲補洞算法+代碼分享
導讀 : 今天介紹的是2017年發表在the virtual computer上的點雲補洞算法,針對點雲的補全和補洞算法是比較少見的,大多數算法都只是針對網格的補洞。而針對點雲的補洞在三維重建中能夠很有效的應用,特別是如泊松重建中因遮擋導致的點雲稀疏或缺失的區域,但點雲補洞能夠很有效的解決該區域的重建問題。點雲補洞本質上是個病態問題,所有的補洞方式只能根據洞周圍點的特徵來補全,但在幾何結構相對簡單區域,點雲補洞能有很好的表現。
算法論文地址:yanqingan.github.io/docs/tvc16_shape.pdf
代碼獲取 : 獲取代碼請微信掃文章末尾二維碼關注公衆號 什錦加,回覆 CloudHole 獲取
摘要
這篇文章提出了一種全新的點雲補洞方法,能夠在平滑和尖銳的地方都有較好的補洞表現,該方法模仿物理上的擴散模型,將一次洞的邊緣收縮分解爲法向傳播和頂點位置傳播,並根據其相應的約束來保持其平滑或尖銳的特性。通過迭代上述過程直到沒有新的邊緣生成,即完成點雲補全。
1.簡介
點雲模型在過去20多年中有很廣泛的應用。直到現在,儘管掃描儀等獲取設備的性能有很大的提升,但是或多或少在其掃描的模型上存在有不同的空洞區域。此外,因爲物體表面磨損和損壞,也會形成空洞區域。針對點雲補洞這個病態問題,現有的大部分工作基於網格步面片的方式。而直接在點雲上補洞的相對較少,而且大多隻能生成平滑的補洞結果。本文模仿物理中能量擴散的方式進行點雲補全,能夠有效的生成平滑和尖銳的補洞結果,如下圖1所示:
2.算法
本文將洞邊緣收縮主要分爲兩步:
-
法向傳播:用於控制填充點的方向和恢復的表面的形狀。
-
位置傳播:在一次邊緣收束中生成新的邊界點。
這兩個步驟在補洞算法中交替執行,且能夠相互優化。這種交替傳播方式能夠將法相約束插入到法向傳播步驟中,以恢復空洞的尖銳特徵。
2.1 算法總覽
給定帶法向的點雲作爲輸入,本文算法首先對輸入點雲進行預處理去噪,然後提取空洞的邊界點,並通過迭代傳播的方式縮小空洞區域,直到沒有新點生成。
2.2 預處理
爲了得到有效的洞的邊界,本文采用了二階段的處理去噪,同時對點雲位置和其法向進行雙邊濾波 [1]操作,從而獲得去噪的後的帶法向的點雲。
2.3 洞邊界確定
本文采用分而治之的策略進行邊界提取,首先在邊界上手動順序選擇少量特徵點$f_i’ (i = 1,…,m)B’$中。 因此任意兩相鄰點間可以看作時局部線性的。
對於相鄰點構成的線段,計算其中點, 並選擇距離最近的邊界上的點,如果該點是新的點,則將該店插入到點集中和之間。通過迭代直到所有相鄰點間距離小於閾值,則獲得最終的邊界點集,以此作爲空洞邊界。
2.4 法向傳播
爲了計算收縮後的空洞邊界,本文在採樣的邊界點集上構建法向傳播。新填充的點的法向計算方式爲:
表示附近半徑爲r以內的鄰近點。和分別是標準差爲和的高斯權重。爲距離最近的上一輪邊界上的點的法向。
2.5 頂點位置採樣
以傳播的法向作爲指導,一輪邊界收束的採樣點需滿足兩個目標:
- 新生成的邊界與周圍區域的表面相匹配
- 新填充的點應該保持合理的分佈,保持連續實際的收縮,使得空洞區域變小
爲此,文章定義用來度量填充點和周圍表面的差異。同時引入彈力來填充點的位置,一個好的候選點應該在受力平衡點附近且受到最小的合力。結合兩者,建立了以此邊界收縮的目標函數:
3. 生成新的孔洞邊界
雖然上述算法給除了頂點採樣的目標函數,但是直接求解是非常困難的,因爲空間中有無數的位置能滿足該函數最小化。因此文章提出了間接的採樣方法。
首先,通過上一輪生成的邊界點,生成新的邊界點的控制曲線。在控制曲線約束下,本輪採樣變爲沿着控制曲線的1-D採樣。 採樣到的新的頂點是目標函數(3)的近似解。
然後,對每個採樣點根據其鄰域和(1)中計算的法向進行位置優化,直到收斂。
3.1 計算洞邊緣控制曲線
定義彈力:文章利用高斯函數來對彈力進行仿真並控制鄰近點間距離的權重。表示新的候選點沿着上一輪邊界點沿着該點傳播方向的平衡點,在位置受到的鄰域其他點的彈力如下式(4):
其中是鄰近點沿着 的平衡點,如圖Fig.3所示。
事實上,一旦給定鄰域點,則從點受到的彈力僅與到的符號距離有關,其正向爲斥力,負向爲引力,因而可簡化爲式 (5),而平衡點的計算公式爲式 (6)
邊界控制曲線: 邊界控制曲線有上一輪生成的邊界點計算得到的平衡位置得到。對於邊界點 其收縮方向爲該點法向與邊界方向的叉乘。從而根據式(5)(6)可計算出所有新的平衡點以及該點收到的彈力,並刪除受到鄰域斥力的平衡點,剩下的作爲新一輪的邊界曲線採樣點。
3.2 位置優化
爲保證生成的採樣點與局部表面形狀匹配,本文提出了位置優化方法,如式(7)
所有的邊界點受到鄰域點的沿着其法向的引力作用,到新的平衡點,其中和是和式(1)類似的高斯權重,則優化後的頂點位置爲:
注意到位置優化後的點的法向與表面不匹配,而重新計算後的法向也會導致優化位置的偏離。因此,理論上可進行交替優化的方式,使之達到收斂。而在實際上收斂速度會比較快,因而採用兩輪交替優化即可。
3.4 保持特徵一致
在尖銳的洞區域,採用上述方法容易因其區域交疊的問題,如Fig.7所示,可通過設置相應的閾值,在出現位置偏移反向的時候,將其進行剔除,即可剔除該區域多餘的頂點。
算法結果
文章在不同的模型上進行了測試,如圖Fig.1 所示,不同半徑的鄰域取值對補洞表面的收斂速度不同。FIg.8 則展示了不同的同算法相對本文算法的補洞結果。本文算法在尖銳和平滑區域都有很好的表現。
特別是在泊松重建之前,本文算法通過提前對點雲進行空洞填充,再進行播送重建後能夠很好的降低模型空洞粘連的問題,提高模型質量。
代碼獲取
獲取本文源碼請微信下列二維碼關注本人公衆號,並回復 cloudhole 自行獲取。
本文爲原創,轉載請著明出處。
參考文獻
[1] Fleishman S, Drori I, Cohen-Or D (2003) Bilateral mesh denoising. In: ACM Transactions on Graphics (TOG), ACM, vol 22, pp 950–953