孔洞修補研究總結


本人最近需要研究三維模型的孔洞修補算法,故上網看了一些大神寫的資料,現匯總如下:

 

重建骨骼比較典型的方法有:用徑向基函數從不完整的掃描數據生成連續網格;基於CT等值面數據生成曲面;用傅里葉級數擬合CT圖像提取邊緣輪廓曲線;基於形狀的利用數學形態學算子進行骨架提取的插值算法。

 

所謂網格曲面孔洞修補問題指的是:尋找一個合理的算法在現有的不完整幾何與拓撲信息的情況下,利用網格孔洞周邊已有三角網格,創建一個盡可能忠實於原物體或場景的局部網格模型,由此達到對網格曲面孔洞的修補.

 

常用的孔洞修補算法可以分為體素方法、基於三角剖分的方法、基於隱式曲面擬合的方法,在基於體素的方法中,首先將一個網格模型變換成由離散體積(即體素)表示的模型,然后在體積空間中應用不同的方法修補空洞.采用的方法有有向距離函數差分或體素濾波,以及在此基礎上使用多種偏微分方程進行優化的方法,消除重建三維結構中因采樣問題產生的孔洞。基於體素方法存在兩方面的問題,首先,它針對的是點雲數據,不能直接應用於Mesh模型;其次它是一種物理方法,通常只能夠修復重建物體表面的小孔洞,並容易帶來幾何形變。在基於三角剖分的方法中,首先對孔洞直接進行三角剖分得到初始網格,然后對初始網格進行優化.基於隱式曲面擬合的方法是網格孔洞修補算法中最為常見的方法,該方法首先孔洞邊界周圍的點信息,采用隱式曲面擬合的方法擬合一曲面片光滑的覆蓋孔洞,然后通過在曲面上重采樣實現網格孔洞修補.常見的曲面擬合有:二次曲面擬合、B-樣條曲面擬合、三角Bézier曲面擬合及基於徑向基函數的曲面擬合等。

 

點集的三角剖分指的是:給定一組散亂數據點,如何將各數據點之間以三角形或四面體相互連接,形成三角網格,並使網格質量較優.該問題的解即是散亂點集的一個三角剖分,其實質是以三角網格反映各個數據點與其鄰近點之間的拓撲連接關系,從而揭示數據點之間的內在本質聯系.

 

基本概念:

如果兩個三角形擁有一個公共邊,則這條公共邊在兩個不同的三角形中是反向的,此時我們稱這兩個三角形是鄰接三角形

邊界邊:如果一條邊只屬於一個三角形,則這條邊稱為邊界邊.

邊界頂點:邊界邊上的頂點稱為邊界頂點.

邊界三角形:擁有一個或兩個邊界頂點的三角形稱為邊界三角形.

二環點:與邊界頂點相鄰接的非邊界頂點.

頂點鄰接三角形:擁有某一頂點的所有三角形稱為這個頂點的頂點鄰接三角形.

三角形的法向量:指的是三角形所在平面的法向量,它與三角形邊的走向滿足右手螺旋法則.

頂點密度:頂點v的頂點密度指的是頂點v的頂點鄰接三角形邊長的平均值。

 

 

對於模型的孔洞修補算法主要采用以下幾種策略:

1、直接三角剖分:早期的孔洞修補算法主要考慮如何對孔洞區域進行三角化。三角剖分本質上是一個非線性優化問題,為了獲得該問題的最優解,可以使用動態規划算法、遺傳算法、模擬退火算法等對孔洞區域進行剖分,以獲得最優的三角化結果。已有方法:孔洞多邊形的頂點構造新的三角片;各向異性孔洞修補算法。

2、新增采樣點:已有方法:分段處理思想,根據孔洞的復雜性將孔洞分為若干個簡單的子孔洞;三角片自然增長。

3、采樣點調整:已有方法:根據曲率來調整新增點的位置;基於移動最小二乘法的補點方法;基於體素擴散方法來調整新增點的位置;基於徑向基函數的調整方法;神經網絡的方法。

4、點雲數據三角化。

 

Delaunay三角剖分具有三角剖分最小內角為最大的性質,能夠進行任意多連通域有限網格的自動生成可最大限度的保證網中三角形滿足近似等邊性,避免了過於狹長和尖銳的三角形的出現,是公認的最優三角網。其主流算法有三種:分割-歸並法,逐點插入法,三角網生長法。

 

一個理想的孔洞修補算法具有如下性質:

(1)、自動性。用戶如果選擇了孔洞,交互應該盡可能簡單。

(2)、效率性。合理的運行時間,良好的交互速度。

(3)、准確性。用修補網格來填補孔洞,應該盡可能得和周圍網格相融合,網格密度和形狀應該和原孔洞邊界相匹配。

(4)、魯棒性。能夠處理任意網格的任意孔洞。這是很難被滿足的。

 

《三維顱骨模型的孔洞修補算法研究》中提出一種算法,主要分為五個步驟:

(1)孔洞檢測。對輸入的顱骨三角網格模型進行孔洞分析,並對檢測出的孔洞進行標記。

 孔洞檢測室通過自動搜索模型邊界點來完成的。

1)模型邊界點的提取:判斷邊界點的過程就是判斷該點是否是邊界邊上的點的過程。

//在一般情況下,空間曲面上點的存儲是隨機的,所以得到的所有邊界點是無序的,對曲面上的點進行邊界點判斷的時候,可得到與當前邊界點的鄰接邊界點,基於此,即可對所有邊界點排序,得到完整的邊界曲線。

2)模型邊界點的分類和排序

(2)孔洞區域離散點的生成和三角剖分。用戶選擇需要修補的孔洞,在其中插入離散點,然后對插入的離散點進行三角剖分。

1)孔洞區域離散點插入:對較小的孔洞,直接進行三角剖分;對較大的孔洞,先在孔洞多邊形內插入離散點,然后再進行三角化。

2)離散點的三角剖分

(3)網格細分。對三角剖分后的網格進行網格細分。

基本思想:對於每一個三角形,連接各邊的中點生成四個新的三角形。

(4)孔洞隱式曲面的建立。利用RBF建立孔洞區域的隱式曲面,調整插入點的位置。

(5)網格平滑。用傘狀算子對隱式曲面進行平滑處理。

 

《面向顱骨損傷修補的缺損重建算法》

以包含缺損結構的三維重建Mesh模型為操作對象,根據交互輸入的引導點,通過三角面片的邊特征及目標點位置搜索並向外擴展出孔洞上邊界環,得到目標問題區域邊界,其中內環為孔洞邊界,此區域內的所有三角面片為目標問題區域;通過雙環采樣,投影構建代理面,結合代理面對內環的三角化細化,三角面進行基於代理曲線的 Freeform 變形, 然后在微分域進行保持邊緣細節特征的平滑操作, 得到缺失實體孔洞的上縫合面; 通過向顱骨厚度方向擴展, 得到孔洞下邊界輪廓, 並搜索出上下邊界環之間的三角網格區域; 通過上縫合面的構建方法, 得到缺失實體孔洞的下縫合面; 最后, 連接上下縫合面以及兩個邊界輪廓環之間的三角網格區域, 獲取修復實體。

《A robust hole-filling algorithm for triangular mesh》

主要步驟:

(1)確定三角網格中的孔洞;

(2)對每一個網格模型中的孔洞

1)利用AFM技術生成初始修補網格;

2)基於柏松等式來改善補丁網格:利用諧波等式或者測地線插值來計算法向量;利用局部旋轉旋轉三角片;解柏松等式得到每一頂點的新坐標;更新坐標得到平滑的補丁網格。

 

《A piecewise hole-filling algorithm in reverse engineering》

它將一個復雜的孔洞分成幾個簡單的子洞,子洞連續地進行填補。

結構:

步驟:

(1)對於每一個孔洞確定一個投射曲面或者孔洞向量

(2)投射邊界邊到曲面上,計算交點

(3)根據交點將孔洞分成幾個子孔洞

(4)重復:對每個子孔洞應用平面三角測量算法;將計算的交點參數應用於原始邊;細分

 

通用網格模型的孔洞修補算法BHRA能夠較好地處理對不規則區域復雜孔洞的修補,但是不能通用與各種復雜孔洞。

對於大區域復雜孔洞的修補,利用IRS(向內遞歸求解法)

(1)內部控制輔助點插入

(2)隱式曲面建立

(3)輔助插入點調整到隱式曲面

(4)逐層插入輔助點並重新計算隱式曲面

對於特征區域復雜孔洞的修補,采用TMA(特征模型匹配法)

(1)特征模型匹配

(2)網格融合

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM