三角剖分淺析

三角剖分技術在圖形領域,尤其是在三維重建領域是非常非常重要的技術,就拿我現在正在從事的3D打印行業來說吧,如果複雜曲面的三角剖分能夠得以解決,那麼我們這個行當絕大部分看似複雜的軟件問題,都能輕易解決,因爲對於提取點雲,不管是硬件還是軟件,成本是低廉的。要說三角剖分,首先要從Delaunay說起,它是目前三角剖分理論的基礎,很多三維的剖分優化準則實際上是對它的擴展。

Delaunay三角網法則

Delaunay三角網爲相互鄰接而互不重疊的三角形的集合,每一個三角形的外接圓內不包含其他點,三角形的最小角最大。

按最小內角最大化原則形成的剖分也就是著名的Delaunay三角剖分(DTDelaunayTriangulation)DT是許多領域實際應用中最受關注的一類,應用十分廣泛,該剖分可追溯到GVoronoi圖,是於1907年提出的,後來Delaunay1932年提出瞭解決該剖分完整而實用的方,近幾十年來該算法不斷得到改進,以適應不同的應用.DT也就是最近點意義下的Voronoi(DirichletThiessen)圖的直線對偶圖,Voronoi圖由許多胞元組成,每一個胞元包含點集中的一個點(每兩點的垂直平分線將平面分成兩部分,與某點對應的胞元實際是該點與點集中每個點垂直平分線在平面內所形成的交集),連接相鄰胞元中兩個點(直線段)便形成點集的DTDT具有很多性質,剖分中常用的性質有最小內角最大和最大空圓原則.最小內角最大原則:對於一個凸四邊形的兩種剖分,DT獲得的兩個三角形中的最小內角最大.最大空圓原則:剖分中任一三角形的外接圓(維爲外接球面,高維爲超球面)內不含有點集中的任何其他點.最小內角最大原則又稱爲局部最優準則,這樣獲得的剖分稱爲局部最優(或局部等角)關於DT的算法實現有很多,大致分爲以下兩大類,一類是增量算法,該法從點集的某一點開始,逐步進行,每一步增加一點,直至點集爲空,常用的有GreenSibson算法Bowyer算法、Lawson算法、ClineRenka算法等.另外,還有LS算法、Watson算法、以及FP算法等;另一類爲分治算法,該法基於分而治之的思想,每次將點集分爲規模相當的兩個子集,分別進行遞歸實現,最後拼合,目前較好的有DeWall算法.二維三角剖分可以嚴格按照Delaunay三角網法則,目前這方面的理論已經非常成熟。

爲了構造Delaunay三角網,Lawson提出的局部優化過程LOP(Local Optimization Procedure),一般三角網經過LOP處理,即可確保成爲Delaunay三角網,其基本做法如下所示:
1.將兩個具有共同邊的三角形合成一個多邊形。
2.以最大空圓準則作檢查,看其第四個頂點是否在三角形的外接圓之內。

3.如果在,修正對角線即將對角線對調,即完成局部優化過程的處理。

LOP處理過程如下圖所示:

 一,L-S算 法

Lawson算法,即從任意的一個剖分開始,對出現的凸四邊形施加最小內角最大原則進行對角線交換,直至完成.Lawson算法雖然能完全、正確地進行剖分,但計算量大,真正實現較爲困難.LeeSchachter繼承了Lawson算法的邊交換方法,具體實現作了改進,這種算法與Nelson法相似,主要步驟如下:

(1)確定一個矩形區域,使所有的點位於該矩形內;
(2)將矩形分成大約n^1/2個箱(更小的矩形域)
(3)從一個箱開始記錄點序,即對點重排序;
(4)置第一點於矩形中並連接此點與矩形的頂點,形成初始DT

(5)加一新點於已有的DT中,必有一個三角形包圍該點,連接新點與該三角形的頂點;

(6)若上一步形成凸四邊形(最多4),則依最小內角最大原則進行優化;

(7)每個點都被用過則轉第8步,否則轉第4步;

(8)最後刪去所有與初始矩形頂點有一個公共頂點的三角形,餘下的即爲點集的三角剖分.與Lawson算法不同的是由於有前3步的預處理,搜索包圍新點的三角形時的時間複雜度由原來的O(n)減少爲O(n^1/2),總體複雜度大約爲O(n)

這一算法的關鍵的第2步圖示如下:

 

 

二,分而治之算法(由Shmaos和Hoey提出)

其基本思路是使問題簡化,把點集劃分到足夠小,使其易於生成三角網,然後把子集中的三角網合併生成最終的三角網,用局部優化(LOP,即Local Optimiza—tion Procedure)算法保證其成爲Delaunay三角網,它的優點是時間效率高,但需要大量遞歸運算,因此佔用內存空間較多,如果計算機沒有足夠的內存,這一方法就無法使用;

三,三角網生長算法。

這類方法通常首先從點雲數據中選定一個初始三角片(Seed Triangle),並作爲網格曲面的種子面加入三角曲面集,三條邊分別加入邊界集。然後按照一定的規則從邊界處向三角
曲面集中添加新的三角片元素,並實時刷新邊界集,通過曲面網格由局部到整體的動態增長最終生成一張完整的三角網格曲面。

二維三角剖分技術已經非常成熟,而且網上現成的實現代碼也很多;先說到這裏,下面說一下三維曲面的三角剖分:

曲面剖分通常有兩種方法,其一是將點投影到某一平面,運用平面的三角剖分算法完成剖分,而三維點問連接關係不變,這種方法將三維問題轉化爲平面問題,可稱爲平面投影法;其二是直接由三維點來構造剖分,稱爲直接剖分法.三角剖分通常有兩種類型,第一類是三角剖分的頂點就是所給點集P,不改變原點集的拓撲結構,實質是對P的線性插
值;另外一類是在一定的誤差範圍內用剖分來逼近曲面,這時的頂點在數量和位置上均不同於原點集。

 1,平面投影法

平面投影法就是將三維點投影到某平面,如xy平面,然後對投影點集作平面域的三角剖分,最終形成的曲面三角剖分的點間連接關係與相應的投影點間的連接關係相同,這種方法的實質是平面域的三角剖分.近幾年來在剖分研究方向、具體算法等方面有了很大的進展.當平面4點形成凸四邊形時將有兩種剖分,對採用哪一種三角剖分可以提出不同的選擇原則,最常用的有最小內角最大化、邊的總長度最小化即最小權等.

2,直接剖分算法

與平面投影法不同,直接剖分算法是直接根據三維散亂點構造三角剖分.實用的直接剖分算法很少,1988Choi提出的一種增量算法[3是較好的一種方法,得到廣泛的應用.Choi算法有下述幾個重要概念:

(1)頂點、邊、三角形、法矢散亂點集中的每一點在剖分中爲三角形的頂點;3個頂點V1、V2、V3,如果滿足det(V1V2V3)≠0 則這3點形成一個三角形;從原點看去,按逆 時針方向依次連接三角形頂點,相鄰兩點形成的有向邊稱爲剖分的邊;由上述有向邊按右手準則來確定三角形的單位法矢.

(2)可見邊

對於邊AB,任一頂點P與它的關係有如下3種:

如果det(ABP)<0,則PRightAB

如果det(ABP)=0,則POnAB

如果det(ABP)>0,則PLeftAB

若頂點(PRightAB),則稱邊AB相對點P可見,頂點A、B稱爲P的可見點.

(3)凸頂點、凸多邊形

若一系列三維點形成的邊封閉,三角形不相交,則這些點形成一個多邊形.PQR是按逆時針方向依次連接的3個點,若det(QRP)>=0,則稱Q是一個凸點;若det(QRP)>0,則稱Q爲嚴格凸點.若多邊形所有點都是嚴格凸點,則該多邊形爲嚴格凸多邊形.

(4)軌跡生成

在工程應用中,曲面內部某些散亂點可能屬於特定的軌跡線,如截面線、特徵線等,爲了準確地反映曲面形狀,剖分中必須將這些點相互連接,以得到相應的軌跡線.

如下圖所示,V1、V2爲軌跡線上的點,按照軌跡生成算法,V1、V2必須連接,同時去掉與其相交的邊.方法是首先判斷、是否已經相連,若已相連則停止,否則搜索與相交的邊e,對包含e四邊形交換對角線即去掉了邊e

(5)邊界剪裁

邊界剪裁就是要從剖分中刪去外邊界環之外和內邊界環之內“不合法”的三角形,對下圖中的例子,

首先用軌跡生成算法獲得滿足要求的剖分,如下圖中(a)所示,然後進行邊界剪裁,去掉下圖(a)中標號1233個三角形,最終獲得正確的剖分如下圖(b)所示.

Choi算法的簡要步驟如下:

1步預處理

①找到一個點Pc,使得從Pc點能夠看到所有的散亂點,並作一過Pc的軸U

②對所有的點做變換Pi—>Vi,Vi=Pi-Pc

③按Vi與U的夾角大小,將Vi升序排列.

2步三角剖分

①初始三角剖分

最初的剖分是從V1、V2開始,首先得到邊V1V2,接着從V3開始逐點搜索,若共面則繼續搜索,直至一不與前面點共面的頂點,連接此點與前面所有點從而構成初始剖分.如下圖所示:

②剖分主過程

(a)下一個新N插入時,搜索N的所有可見,並確定最左可見點LVN(V3)和最右可見點RVN(V4)

(b)構造一個三角形,它的頂點是N、LVN和LVN的下一點

(c)若此時邊界非凸,則繼續從此非凸點開始與其下一點N構造三角形,並TBL中刪去該非凸點,直至邊界爲凸

(d)處理完一個點,則將此點從點集中刪除,若點集爲空,則停止,否則轉步驟(a)

3步 軌跡生成.

4步 邊界剪裁.

Choi算法實際上僅僅是二維三角剖分的一種擴展,它要求以點雲中的一點爲原點的極座標系,所有點對角度變量爲一一映射,這樣就極大的限制了它的使用範圍。

 

曲面剖分優化準則

優化準則的選取直接影響到剖分結果.當剖分的兩個三角形形成一個凸四邊形時,存在兩種剖分形式,這時須依據一定的準則來確定.曲面剖分常用的優化準則有外接曲面擬圓準則、標量積最大、空間形狀優化準則以及光順準則等,其中外接曲面擬圓準則是單側性準則和模擬圓準則的廣義形式,它和標量積最大準則只單純考慮形成凸四邊形的兩個三角形之間的關係,而空間形狀優化準則以及光順準則則考慮兩個三角形周圍的4個三角形對剖分的影響.

1,外接曲面擬圓準則

外接曲面擬圓準則是二維剖分中的外接圓準(Delaunay)和三維的外接球準則在曲面剖分中的推廣形式,也是單側性準則和模擬圓準則的廣義形式.

單側性準則稱:曲面剖分的三角形的一側不含有點集中的任一點,則稱該三角形爲局部最優;

模擬圓準則稱:若三角形的一側沒有滿足如下條件的點:在點集中且向三角形平面的投影落在該三角形的外接圓內,則稱該三角形爲局部最優.

由於這兩個準則與外接圓準則(Delaunay)和三維的外接球準則不能統一描述,且在避免病態三角形方面尚有不足,因此資料1提出了外接曲面擬圓準則.

外接曲面擬圓:給定曲面 E上不共線的3 點P1、P2 、P3 , 它們確定的平面的單位法矢爲n,以三角形△P1P2P3的外接圓圓心爲起點沿n方向可以確定一射線,該射線與E的交點爲C ( 若有多個交點則取最遠處的點) ,以C 爲中心,以C P1爲半徑的球與E的交稱爲△P1P2P3關於 E的外接曲面擬圓.
外接曲面擬圓準則:曲面上3 點組成三角形,若外接曲面擬圓區域內沒有內環且不含有點集中任意點,則稱該三角形局部最優 .
資料1同時還證明了以下兩個結論:
( 1 ) 滿足外接曲面擬圓準則必滿足模擬圓準則;
( 2 ) 外接曲面擬圓準則等價於單側性準則.

 

2,標量積最大準則

標量積最大準則是指對剖分形成的凸四邊形,存在的兩種剖分,計算每一剖分兩個三角形單位法矢的標量積,取最大的一個剖分.標量積最大也就是形成剖分的兩個三角形平面夾角最大,更趨於平坦.

 

3,空間形狀優化準則

空間形狀優化準則是指剖分形成的兩個三角形有5條棱邊,根據周圍4個相鄰的三角形判斷各棱邊的凹凸性,凸者邊值爲1,凹者邊值爲一1,共面時邊值爲0,計算兩種情形下的5條邊邊值之和的絕對值K,取K值大的一種爲最優剖分.具體下圖所示,圖中lij表示三角形i與三角形j的公共棱邊的凹凸,公共棱邊爲凸時,其邊值爲1;公共棱邊爲凹時,其值爲一1;兩個三角形共面時,其值爲0.接着分別計算K

Ka=abs(zl2+z25+z26+z14+z13)

Kb=abs(zl2+z25+z26+zl4+zl3)

比較它們的大小,取K 值較大的那種剖分

線性插值的保凸性和光順性會直接影響插值曲面保凸和光順的程度,空間形狀優化準則的出發點就是由剖分生成各類連續曲面時,生成的曲面比較光順.

 

4,光順準則

光順準則Choi算法中採用的剖分準則,剖分中兩個三角形形成的凸四邊形的每條邊爲兩個三角形所共有,分別計算這兩個三角形單位法矢標量積,這樣對應每一種剖分就有4個標量積值,計算4個標量積的最小值,取最小值最大的一種剖分作爲最優剖分.

 

另外,三維剖分的難點還有對邊界的處理,包括邊界閉合的情況。

目前有幾篇論文是針對這類課題的,主要描述如下:

先需要幾個基本概念:

定義1. 邊界邊.在三角劃分過程中,位於已劃分區域和未劃分區域之間的三角形邊稱爲邊界邊(如下圖所示,邊1~11爲邊界邊).
定義2. 邊界環.在三角劃分過程中,由邊界邊按逆時針或順時針方向依次首尾相連構成的環稱爲邊界環(如下圖所示,邊1~11按逆時針方向構成邊界環).


定義3. 最優頂點.設點P爲未劃分區域離散點集中的任意一點,若點P與某邊界邊AB構成的三角形最接
近正三角形,則稱點P爲邊界邊AB的最優頂點.
定義4. 可見頂點.設點P爲未劃分區域對應測量點集中的任意一點,且點P爲某邊界邊AB的最優頂點.若點P與另一邊界邊BC構成的三角形不與已劃分區域摺疊,並且最大內角不超過θ,則稱點P爲邊界邊BC的可見頂點.如下圖所示,P爲邊AJ和邊BC的可見頂點,而不是邊CD,DE,EF等的可見頂點

下面則是針對邊界問題的重點:

邊界環的裂變與融合

在3D 空間對離散數據進行三角劃分的基本思想是:由初始三角形開始,從已劃分區域邊界向未劃分區域逐步擴展形成新的三角形,直至三角網格覆蓋整張曲面.三角網格在3D 空間隨着離散數據點的分佈而擴展,不需要將數據點向二維平面投影,複雜曲面也不需要分片投影.在算法實現的過程中,發現三角網格並不是簡單地擴展,還會出現已劃分區域隔離和相遇的情況.因此,在基本算法的基礎上,又提出了邊界環裂變和邊界環融合的新概念,以使算法能夠適應各種形態的曲面.下面我們通過對非封閉曲面、封閉曲面和多連通封閉曲面劃分情況的分析來引出這兩個概念

1,非封閉曲面

從非封閉曲面的離散點集中取出3個點,構成初始三角形,此時的邊界邊爲初始三角形的三條邊.由初始三角形開始,爲每一條邊界邊尋找最優頂點,向未劃分區域擴展生成新的三角形,直到已劃分區域覆蓋整張曲面.由於曲面是非封閉的,在三角網格向未劃分區域擴展的過程中,一個已劃分區域與另一個已劃分區域不會相遇.

2,簡單封閉曲面

封閉曲面由於沒有邊界,在三角網格向未劃分區域擴展的過程中,會出現已劃分區域相遇的情形,需要將相遇的已劃分區域縫合起來,使得三角網格也是封閉的.如下圖所示,三角劃分最終形成邊界環L0.

 

(1)  若 L0 的邊界邊數記爲bedge_num)>4,則爲邊界環L0 中的每一條邊界邊尋找最優頂點.當爲邊界環L0 中的一條邊界邊E1尋找最優頂點時,首先遍歷L0中的每一個結點V1Vn,發現有結點Vi 與邊界邊E1能構成較優三角形,則連接ViE1的兩端,構成三角形T.此時三角形T將邊界環L0分裂成兩個邊界環L1L2,再對邊界環L1L2分別處理.L0中未發現有任何結點能與邊界邊E1構成較優三角形,則在未劃分區域的離散數據點中爲邊界邊E1尋找最優頂點.這種因爲三角網格縫合而產生的一個邊界環分裂成兩個邊界環的過程就稱爲邊界環的裂變

(2) 若L0的bedge_num=4(如圖3中的邊界環L1),則連接四邊形的對角線生成兩個三角形,邊界環封閉;
(3)  若L0的bedge_num=3,就由此3條邊界邊構成一個三角形,邊界環封閉.所有的邊界環最終都會收縮爲bedge_num=4或bedge_num=3的情形.當所有的邊界環處理完畢時,封閉曲面的三角劃分結束,從而得到一張封閉的三角網格.

3,多連通封閉曲面

與簡單封閉的曲面三角化過程一樣,在三角網格向未劃分區域擴展的過程中,多連通封閉曲面(如圖6中的零件表面)的邊界環也會發生裂變,且由於多連通封閉曲面的法矢變化複雜,在三角劃分過程中還會發生兩個邊界環融合形成一個邊界環的情況,如圖4所示.在三角劃分過程中,有兩個邊界環L1,L2.當爲邊界環L1中的某一條邊界邊E1尋找最優頂點時,遍歷L2中的每一個結點V1…Vn,發現有結點Vi 與邊界邊E1能構成較優三角形,則連接Vi 與E1的兩端點,構成三角形T.此時三角形T將邊界環L1,L2連接成一個邊界環L,再對邊界環L進行處理,繼續向未劃分區域擴展.這種因爲三角網格縫合而產生的兩個邊界環合併成一個邊界環的過程稱爲邊界環的融合.

 

以上藍字部分皆引用自參考資料2,文中的算法或許僅僅對邊界有用,對稍微複雜點的曲面以及不太均勻的點雲分佈則是無能爲力的!

綠字皆引用自參考資料3,資料3分析現有的研究成果非常細膩,是很好的參考文獻。

但是目前爲止,複雜的三維三角剖分還是一個未解決的問題,也就是說,目前的已有算法只能針對相對規則的圖形(接近嚴格凸集),以及點雲均勻分佈的情況。

我嘗試用函數擬合去處理點雲分佈不太均勻的情況,剖分出來的模型可以在形狀上趨近於真實圖形,可是會發生大量的三角面片相交的情況。見下圖(遠處的爲點雲,近處的是用線性函數擬合剖分的結果):

主要是因爲嚴格的三角拋分是需要回溯的(類似於動態規劃),也就是經常需要對已經拋分的面片重新調整 ,針對三維的這個回溯過程我暫時還沒有實現,希望能有老師爲我指點迷津。

已經有不少文獻提出將點雲進行分層,然後再三維重建來間接的進行三角剖分。 針對這樣的思路我將做一些工作,希望能有比較好的結果吧。

 

參考資料:

1,孔德慧,陳其明,汪叔淳.一種新的曲面剖分優化準則 [ J ] .工程圖學學報,1995 ,16 (1):28 ~34 .

2,肖雙九,邱澤陽,張樹生,楊海成.多連通曲面離散點集的3D三角劃分算法研究 .軟件學報,2002,13(4).

3,張永春 ,達飛鵬, 宋文忠.三維散亂點集的曲面三角剖分.中國圖象圖形學報,2013年12月

發佈了31 篇原創文章 · 獲贊 57 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章