專利名稱:三維掃描系統(tǒng)中三維散亂點集的三角剖分構造方法
技術領域:
本發(fā)明涉及一種用于圖像三維重構的三維掃描系統(tǒng)中三維散亂點集的三角剖分。
背景技術:
逆向工程(Reverse Engineering,RE)技術是20世紀80年代后期出現(xiàn)在先進制造領域里的新技術,其一般包括四個基本環(huán)節(jié)三維形體檢測與轉換(物理數(shù)據(jù)的獲得)、數(shù)據(jù)預處理(點云處理、識別、多視拼接),CAD模型的建立(曲面重構)、CAM制件成型,其基本流程圖如圖2所示。在三維形體檢測與轉換的過程中,通過三維數(shù)字化掃描儀對實物模型表面進行三維快速掃描測量,在滿足離散采樣速度和數(shù)據(jù)質量的前提下,獲取產(chǎn)品的三維離散數(shù)據(jù),對數(shù)據(jù)進行三角剖分是逆向工程中曲面重建中的非常關鍵的承上啟下的一環(huán),直接影響重構成功與否和CAD模型的質量,對其后續(xù)環(huán)節(jié)起著非常關鍵的制約作用。
CAD/CAGD等工程應用中要處理的曲面大多為單值曲面,本發(fā)明主要針對這種曲面提出曲率最小三角剖分算法。曲面三角剖分算法中重要的是數(shù)據(jù)結構和優(yōu)化準則,剖分的具體實現(xiàn)依賴于一定的數(shù)據(jù)結構,合理的數(shù)據(jù)結構可以減少時空復雜度。本發(fā)明從曲面曲率估計入手,提出曲率最小優(yōu)化準則,整個算法耗時主要是優(yōu)化過程的時間,因此本發(fā)明主要改進優(yōu)化過程的時間復雜度。
發(fā)明內容
本發(fā)明提供一種能夠降低了優(yōu)化過程的時間復雜度并能提高了網(wǎng)格的生成速度的三維散亂點集的曲面三角剖分構造方法。
本發(fā)明主要是涉及到逆向工程(圖1)中,用三維掃描系統(tǒng)(圖2)對產(chǎn)品建立點云模型過程中由離散點重構曲面的一種方法。(對三維掃描系統(tǒng)中散亂點集的三角剖分,它主要涉及計算機圖形學、空間視覺、數(shù)學、計算機輔助設計以及計算幾何等多個領域,由于散亂點集的不規(guī)則性和復雜性,三角剖分一直是逆向工程中的難點問題。本發(fā)明涉及對“基于一種曲率最小優(yōu)化準則的散亂點三角剖分。張永春,達飛鵬,宋文忠。東南大學學報(自然科學版),2004,34(6)851-856”的改進,并在VC++6.0開發(fā)平臺上,以OpenGL作為圖形繪制接口實現(xiàn)的空間散亂點的三角剖分,試驗結果驗證了本發(fā)明的優(yōu)越性。本發(fā)明的出發(fā)點是完全不考慮三角形的優(yōu)化性,只考慮連接而成的三角網(wǎng)的所有三角形的合理性,然后對形成的基本網(wǎng)格進行優(yōu)化。降低了Choi的算法時間復雜度,極大的提高了網(wǎng)格的生成速度和三角剖分的質量。
首先簡要的說明一下本發(fā)明算法涉及的一些基本定義定義1 對于空間3點Vi(xi,yi,zi)(i=1,2,3)記它們在X-Y平面形成的三角形的帶符號面積為det(V1,V2,V3)即det(V1,V2,V3)=x1y11x2y21x3y31.]]>定義2 點集中的每一點稱為頂點;若從Z軸正向向原點看去,三個鄰接的按逆時針順序連接的頂點V1,V2,V3滿足det(V1,V2,V3)≠0,則形成三角形ΔV1V2V3;一個三角形的任兩點形成的線段為一條邊,每一條邊均為由起點和終點決定的有向邊;每一個三角形由右手規(guī)則決定其單位法矢。如圖3所示。
定義3 對于有向邊AB和空間一點P,如果滿足關系det(A,B,P)<0,則認為P點對于有向邊AB時可見的,此時P在有向邊AB的右側;反之,則點P在有向邊AB的左側;若det(A,B,P)=0,則點P在有向邊AB所在的直線上。
定義4 將有向邊與前進方向左側的點構成的三角形稱為左三角形;將有向邊與前進方向右側的點構成的三角形稱為右三角形;左右三角形都存在的邊稱為內邊;只有左三角形或右三角形存在的邊稱為邊界邊。
定義5 一列空間點構成的多邊形,每一多邊形的邊都以逆時針順序相連,若鄰接的3點P、Q、R滿足det(Q,R,P)≥0,則稱點Q為一個凸的頂點;如果上述多邊形上所有頂點都是凸的,則稱該多邊形為一個凸多邊形;這個凸多邊形邊界邊組成的封閉環(huán)稱為這個點集的臨時邊界環(huán),凸多邊形的邊界邊稱為臨時邊界邊,并且規(guī)定組成臨時邊界環(huán)的所有有向邊必須是首尾相連的,本發(fā)明討論的臨時邊界環(huán)有都是逆時針的。
定義6 設V1、V2、V3、及V4是按逆時針方向排列的4個頂點,如果det(V1,V3,V2)*det(V1,V3,V4)<0與det(V2,V4,V1)*det(V2,V4,V3)<0同時成立,則稱此四邊形為凸四邊形。如果任意三點在一個平面上且剩下的一點在前面三點所成的平面上,則稱該四點共面。
定義7對于凸四邊形,同時使用最小內角最大優(yōu)化準則和最小權優(yōu)化準則。如果一個凸四邊的四點共圓,則對其采用最小權優(yōu)化準則優(yōu)化,否則采用最小內角最大化優(yōu)化準則。
本發(fā)明采用如下技術方案一種用于圖像三維重構的三維散亂點集的曲面三角剖分構造方法,第一步點云預處理對三維散亂點進行預處理采用將散亂點集P中所有點Pi(xi,yi,zi)(i=1,2,...,m)投影到X-Y平面上,得到散亂點集P中所有點Pi(xi,yi,zi)(i=1,2,...,m)的投影點,以各投影點的X坐標值的平均值作為X-Y平面上的中心Pc在X-Y平面上X坐標值,以各投影點的Y坐標值的平均值作為X-Y平面上的中心Pc在X-Y平面上Y坐標值,在根據(jù)散亂點集P中所有各點Pi(xi,yi,zi)(i=1,2,...,m)至中心Pc的遠近,對散亂點集P中所有各點Pi(xi,yi,zi)(i=1,2,...,m)以升序方式進行重新排序,存儲在鏈表m_TaxisDotList中,第二步生成基本三角形網(wǎng)格a)從m_TaxisDotList中取出第1、第2個點,作為頭和尾,存入鏈表m_TBList,再從m_TaxisDotList中按序逐一取點,直至所取點位于第1、第2個點的連線之外。
b)比較第一個與作為原始頭、原始尾的第1、第2個點共線的點至原始頭、原始尾的距離,將至原始頭較原始尾距離小的第一個共線點作為鏈表m_TBList的新頭,排列在原始頭之前,或者將至原始尾較原始頭距離小的第一個共線點作為鏈表m_TBList的新尾,排列在原始尾之后,依此步驟,對后續(xù)共線點進行排列。
c)根據(jù)位于第1、第2個點的連線之外的點與第1、第2個點的連線的左、右關系,當該點在第1、第2個點的連線右側時,將鏈表m_TBList進行逆向排列,并以該點作為新頭排列在鏈表m_TBList最前位置;當該點在第1、第2個點的連線左側時,以該點作為新頭排列在鏈表m_TBList最前位置,由此得到初始鏈表m_TBList。
d)根據(jù)初始鏈表m_TBList,得到初始三角網(wǎng)格,將三角形信息放入初始三角形數(shù)組m_TriArray,將三角形邊的信息放入初始邊鏈表m_EdgeList,并將作為網(wǎng)格內邊的三角形邊的信息放入初始內邊鏈表m_ElistInner,再將初始邊鏈表m_EdgeList中三角形邊的編號存至鏈表m_TBList的相應位置。
第三步在基本三角形網(wǎng)格基礎上,擴充三角形網(wǎng)格,直至散亂點處理完畢。
第四步優(yōu)化基本網(wǎng)格先在初始內邊鏈表m_ElistInner中找出產(chǎn)生凸四邊形的網(wǎng)格內邊,對該內邊進行如下優(yōu)化處理對于凸四邊形,同時使用最小內角最大優(yōu)化準則和最小權優(yōu)化準則。如果一個凸四邊的四點共圓,則對其采用最小權優(yōu)化準則優(yōu)化,否則采用最小內角最大化優(yōu)化準則;再用曲率最小優(yōu)化準則優(yōu)化初始邊鏈表m_EdgeList中三角形邊。
為更真實地反映三維物體的表面信息,本發(fā)明還采用了以下技術措施從由初始邊鏈表m_EdgeList內的邊組成的三角形中,選擇出其中至少有一條邊為三角形網(wǎng)格的邊界邊且其任一內角大于120°的三角形,刪除作為三角形網(wǎng)格邊界邊的邊,并將初始邊鏈表m_EdgeList中的作為三角形網(wǎng)格邊界邊的相關邊信息予以刪除。
由于空間曲率最小優(yōu)化準則是針對凸四邊形,因此散亂點集的數(shù)量很大時,無疑增大了優(yōu)化過程的時間復雜度。本發(fā)明的設計方案是先優(yōu)化狹長三角形的邊,根據(jù)定義7進行優(yōu)化(從圖形的邊界向中心優(yōu)化),最后用曲率最小進行優(yōu)化(按內邊的生成順序進行優(yōu)化)。優(yōu)化是在三維空間中完成的。改進的算法只需要較少的優(yōu)化次數(shù)就可完成對基本三角網(wǎng)格的優(yōu)化,加快了三角形網(wǎng)格的構建速度,提高了剖分質量。總體算法流程見圖4。
本發(fā)明主要涉及到三方面的內容1)數(shù)據(jù)結構本算法充分利用VC++6.0這種開發(fā)工具中MFC的豐富資源,能夠方便地實現(xiàn)數(shù)據(jù)的連接。MFC提供的CObList類和CObArray類,可以直接調用其成員函數(shù)來管理和處理數(shù)據(jù),簡化了程序的復雜性,實現(xiàn)了數(shù)據(jù)管理的高效性,加快了三角形和邊的搜尋速度,可以縮短編程時間,減少錯誤,提高網(wǎng)格生成效率。
為便于對剖分的點集和形成的三角形的管理,本發(fā)明設計了5個類點類(CDot),點云類(CCloud),臨時邊界表類(CNodeTBL,其成員變量為有向邊的起點及該邊的索引值),邊類(CNodeEL,其成員變量有該邊的起點、始點、左右三角形及索引值),三角形類(CNodeTL,其成員變量為其按逆時針方向存儲的三個頂點);7條指針鏈表排序前點云鏈表m_DotList,排序后點云鏈表m_TaxisDotList,m_DotList和m_TaxisDotList中的元素均為指向CDot類的指針;臨時邊界環(huán)的邊的鏈表m_TBList(其元素為指向CNodeTBL的指針);暫存邊鏈表m_EdgeListTmp(每次插入不同頂點形成的邊之前,將該鏈表清空),基本網(wǎng)格中凹多邊形的邊界邊及其內邊的鏈表m_EListInner,邊鏈表m_EdgeList,邊界邊鏈表m_EdgeBorder,m_EdgeListTmp、m_EListInner、m_EdgeList和m_EdgeBorder中的元素均為指向CNodeEL的指針;1個指針數(shù)組三角形數(shù)組(m_TriArray,其元素為指向CNodeTL的指針)。
2)改進了最小曲率優(yōu)化準則的算法時間復雜度先形成點集的基本網(wǎng)格,即優(yōu)化前的三角剖分,對形成的基本三角形網(wǎng)格先根據(jù)定義7優(yōu)化m_EListInner中的邊,然后用最小曲率優(yōu)化準則對于基本網(wǎng)格中四個頂點不共面的凸四邊形(A,B,C,D),分別進行凸四邊形(A,B,C,D)所存在的兩種三角形剖分T1、T2,根據(jù)公式||κ(Q)||≈||n1-n2||||C1-C2||]]>(位于一曲面∑上的凸四邊形Q=(V1,V2,V3,V4),對角線為V2V4,(V2,V3,V4)和(V1,V2,V4)的重心C1、C2及法矢n1、n2),進行曲率κ1、κ2的估算,當||κi||=minj=1,2(||κj||)]]>時,則以該三角形剖分Ti作為該四邊形的最優(yōu)剖分;對于基本網(wǎng)格中四個頂點共面的凸四邊形(A,B,C,D),按Lawson邊交換準則來確定該四邊形的最優(yōu)剖分。(04年發(fā)表的文獻)優(yōu)化m_EdgeList中的邊(優(yōu)化過程是在三維空間中進行的),最后修正(刪除銳角三角形)三角網(wǎng)邊界,從而得到了三維散亂點集的最終三角剖分。
3)改進了邊界三角形的修正方法在優(yōu)化后的網(wǎng)格的邊界處可能還存在狹長三角形,這些三角形并不能真實地反映三維物體的形狀,因此必須對優(yōu)化后的三角網(wǎng)的邊界進行修正,即刪除不必要的狹長三角形,以保證三角剖分所形成的每個三角形都盡量合理均勻,形成更理想的三角剖分。本發(fā)明采用了直接刪除邊界上狹長(鈍角)三角形方法,減少了計算機時間,從而降低了三角網(wǎng)格形成的時間復雜度。
與現(xiàn)有技術相比,本發(fā)明具有如下優(yōu)點本發(fā)明主要用于三維掃描系統(tǒng)中的單值開曲面的曲面重建。利用本發(fā)明的算法,能極大的提高三角網(wǎng)格的質量和構網(wǎng)速度。該方法具體有以下優(yōu)點(1)數(shù)據(jù)結構是曲面三角剖分中的重要方而之一,本發(fā)明改進和修改了部分數(shù)據(jù)結構,降低了算法空間復雜度。
(2)算法具有較好的時空復雜度與Choi算法相比,本算法改剖分的數(shù)據(jù)結構LTL為TL,將其由六維變成了三維,大大降低了空間復雜度。同時修改了TBL,得以方便地在剖分中即時更新TL和EL,簡化了剖分過程的搜索。采用這種數(shù)據(jù)結構降低了算法的時間復雜度(3)“基于一種曲率最小優(yōu)化準則的散亂點三角剖分。張永春,達飛鵬,宋文忠。東南大學學報(自然科學版),2004,34(6)851-856”雖提供了更好的數(shù)據(jù)結構和優(yōu)化準則,但為了減少算法的時間復雜度,還可以對其再做一些簡化。因為該文獻的優(yōu)化過程是影響程序運行的重要因素,在優(yōu)化時是按內邊的順序優(yōu)化網(wǎng)格的,對曲率變化劇烈的曲面優(yōu)化多次才能完成。當邊的數(shù)量很大時,優(yōu)化過程非常耗時,因此本發(fā)明改進其優(yōu)化準則,降低了優(yōu)化過程的時間復雜度,提高了網(wǎng)格的生成速度;在優(yōu)化時同時使用最小內角最大化方法和最小權方法,比單獨使用最大內角最小優(yōu)化準則更合理,提高了三角剖分的網(wǎng)格質量。同時對改進算法的時間復雜度做了簡單分析。最后通過舉例驗證了本算法。
(4)剖分結果較好由于采用了曲率最小優(yōu)化準則,其出發(fā)點是曲面的內在特性即曲率,因而得到的3D曲面上散亂點集的三角剖分保形性好,可以滿足重構的要求。剖分中凸四邊形的曲率最小保證原曲面光順處有很好的光順度。
(5)適用面廣本算法點集預處理簡單可靠,對任意的單值曲面部可實施。雖然預處理是投影到二維平面上進行的,但優(yōu)化是直接在3D空間進行的,故本算法依然是一種直接剖分算法。
(6)本算法充分利用VC++6.0這種開發(fā)工具中MFC的豐富資源,能夠方便地實現(xiàn)數(shù)據(jù)的連接。充分利用了MFC中CObList類和CObArray類,可以直接調用其成員函數(shù)來管理和處理數(shù)據(jù),簡化了程序的復雜性,加快了計算速度,實現(xiàn)了數(shù)據(jù)管理的高效性,可以極大的縮短編程時間,減少錯誤,提高網(wǎng)格生成效率。
圖1是逆向工程流程圖。
圖2是光柵式三維掃描系統(tǒng)組成圖。
圖3是頂點、邊、三角形及其法矢、點與邊的關系圖。
圖4本發(fā)明算法總的流程圖。
圖5加入Ps后臨時邊界環(huán)。
圖6對三維散亂點集三角剖分投影到平面形成的基本三角形網(wǎng)格(曲率變化均勻,采樣與球面部分的53個點)。
圖7改進前算法對圖6改進優(yōu)化準則前的優(yōu)化結果。
圖8本發(fā)明對圖6的優(yōu)化結果。
圖9對三維散亂點集三角剖分投影到平面形成的基本三角形網(wǎng)格(曲率變化比較均勻,采樣與球面部分的165個點)。
圖10改進算法前對圖9的優(yōu)化結果。
圖11本發(fā)明對圖9的優(yōu)化結果。
圖12對三維散亂點集三角剖分投影到平面形成的基本三角形網(wǎng)格(曲率變化叫劇烈,采樣與球面部分的549個點)。
圖13改進算法前對圖11的優(yōu)化結果。
圖14本發(fā)明對曲率變化劇烈點集的基本三角網(wǎng)格優(yōu)化結果。
具體實施例方式
一種三維掃描系統(tǒng)中三維散亂點集的曲面三角剖分構造方法,用三維掃描系統(tǒng)獲取海量數(shù)據(jù)點云,然后對這些點云數(shù)據(jù)進行過濾處理和無縫拼接,并對拼接后的點云進行三角剖分,上述對拼接后的點云進行三角剖分的步驟如下a)點云預處理對三維散亂點進行預處理采用將散亂點集P中所有點Pi(xi,yi,zi)(i=1,2,...,m)投影到X-Y平面上,得到散亂點集P中所有點Pi(xi,yi,zi)(i=1,2,...,m)的投影點,以各投影點的X坐標值的平均值作為X-Y平面上的中心Pc在X-Y平面上X坐標值,以各投影點的Y坐標值的平均值作為X-Y平面上的中心Pc在X-Y平面上Y坐標值,在根據(jù)散亂點集P中所有各點Pi(xi,yi,zi)(i=1,2,...,m)至中心Pc的遠近,對散亂點集P中所有各點Pi(xi,yi,zi)(i=1,2,...,m)從近到遠排序(排序),存儲在鏈表m_TaxisDotList中,以后的處理都是對排序后的鏈表m_TaxisDotList進行的。
b)生成基本三角形網(wǎng)格setp1初始臨時(三角網(wǎng)格)邊界環(huán)從m_TaxisDotList中取出前2個點(第1、第2個點),存入m_TBList。當m_TBList中增加一點(從m_TaxisDotList中按序逐一取點),判斷該點與前兩點所成邊的關系。若三點共線,則距m_TBList的首點較近,插入頭部,否則插入尾部;若該點在前兩點所成邊的右側,則將m_TBList逆向排列,再將該點插入m_TBList頭部;若該點在前兩點所成邊的左側,則直接將該點插入m_TBList頭部。若三點共線,再取m_TaxisDotList的下一點加入m_TBList中,否則就形成了初始m_TBList。
由初始m_TBList可以確定初始m_TriArray和m_EdgeList。將各三角形的頂點存入指向CNodeTL的指針中,然后將該指針依次存入m_TriArray;同時將所有有向邊存入指向CNodeEL的指針中,將該指針依序存入m_EdgeList。如果m_TBList中的元素個數(shù)大于3,則依序將有向邊存入m_EdgeListTmp,然后同時取出m_EdgeListTmp的首、尾兩個元素,依次存入m_EListInner尾部,再將m_EdgeListTmp的首、尾元素分別向前向后迭代各取出其下一個元素,將這兩個元素插入m_EListInner上次新增的兩個元素前,重復上述過程,直到遍歷m_EdgeListTmp,即完成了m_EListInner的更新。最后再結合m_TBList中點的順序將邊界邊的索引值填入相應節(jié)點。
通過上述步驟形成了初始臨時邊界環(huán)m_TBList。
Setp2擴展臨時邊界環(huán)從初始臨時邊界環(huán)開始,不斷插入預處理后的點到已形成的三角剖分中,不斷形成新的三角剖分,直至點集處理完畢,這個過程稱為三角剖分,經(jīng)過三角剖分處理得到的點集的剖分即是優(yōu)化前的剖分。次步驟的關鍵是三角網(wǎng)邊的增長(即點是如何插入)。
當把新點PS加入到已形成的三角剖分時,首先從m_TBList中找到PS的最左可視點PL和最右可視點PR,然后更新所有的數(shù)據(jù)結構。一般地,由s-1個點所形成的三角剖分中有k個三角形,有1條邊,假設已形成的臨時邊界環(huán)有12個頂點(m_TBList的表頭為外環(huán)起點P1,表尾為終點P12,如圖5)。加入第s個點PS(xs,ys,zs)的方法是首先尋找PL和PR。取出m_TBList中的相鄰3個點Pm-1、Pm、Pm+1,若Pj(j=m,m-1,m+1)是m_TBList的最后一個元素,則Pj+1從m_TBList的表頭開始向表尾取值。如果det(Pm-1,Pm,Pi)>0且det(Pm,Pm+1,Pi)<0,則Pm是PS的PL,如果det(Pm-1,Pm,Pi)<0且det(Pm,Pm+1、Pi)>0,則Pm是PS的PR。找到PL和PR后即停止搜索。圖5中PS為PL,P11為PR。
然后更新所有的數(shù)據(jù)結構。附圖5中PL和PR之間有2個點,由于新點的插入,將生成3個三角形,4條邊,產(chǎn)生2條新的臨時邊界邊(介于PL與PR之間的臨時邊界邊從m_TBList中刪除,從而被刪除的臨時邊界邊成為內邊),更新m_TriArray、m_EdgeList、m_ELisInner以及m_TBList。下面是加入第s個點Ps(xs,ys,zs),圖5中增加的三角形和邊m_TriArray m_EdgeList索引號 三角形 索引號 邊s+1 [P8,Ps,P9]l+1 [P8,Ps,s+1,0]
l+2[Ps,P9,s+1,s+2]s+2[P9,Ps,P10] l+3[Ps,P10,s+2,s+3]s+3[P10,Ps,P11]l+4[Ps,P11,s+3,s+4]首先將新增的三角形和新增邊依序分別存入m_TriArray和m_EdgeList,若PL的下一個點不是PR,則按Step1中更新m_EListInner的方法更新該鏈表。然后刪除m_TBList中介于PL與PR之間的點,將Ps插入到PL之后,同時將m_TBList中的分別以PL與Ps為起點的相應邊的索引值分別更新為l+1和l+4,則完成了對m_TBList的更新。
重復上述插入新點的過程,直到全部點集處理完畢,就形成了基本三角形網(wǎng)格,即優(yōu)化前的三角網(wǎng)格。見圖6。
c)用改進的最小曲率優(yōu)化準則優(yōu)化基本網(wǎng)格(1)上述已生成的基本網(wǎng)格中,還存在狹長三角形,狹長三角形在三角參數(shù)曲面片插值時會引起較大的誤差,這將影響到插值曲面的品質,因此對局部狹長三角形的改善是非常重要的[7]。從三角形優(yōu)化的總體概念出發(fā),要求形成的三角形盡量均勻,避免狹長三角形出現(xiàn),以減小誤差。對于三角剖分中,如某三角單元的一條邊是邊界邊,則認為該邊是局部優(yōu)化的;如共享該邊的兩個三角形不是凸的,則認為該邊是局部優(yōu)化的;對于凸多邊形,除了保證其在二維剖分中最優(yōu)之外,還要討論它的三維優(yōu)化標準;因此需要對形成的網(wǎng)格中的凸多邊形的邊進行空間優(yōu)化。由于實際中很難直接實現(xiàn)三維三角網(wǎng)格的全局優(yōu)化,因此本發(fā)明采用改進的曲率最小優(yōu)化標準實施局部優(yōu)化。當邊的數(shù)量很大時,優(yōu)化過程非常費時,因此本發(fā)明先優(yōu)化m_EListInner中的邊,然后優(yōu)化m_EdgeList中的邊,改進優(yōu)化準則前后的優(yōu)化結果如圖7和圖8。
(2)對m_EListInner中的邊的優(yōu)化順序是采取與每次插入新點相反的順序進行的,即從基本網(wǎng)格的邊界向中心開始,完成三角網(wǎng)格中的狹長三角形的優(yōu)化;然后對m_EgdeList中的邊優(yōu)化。具體的優(yōu)化算法實現(xiàn)如下1)優(yōu)化m_EListInnerI)取出m_EListInner尾部的元素,向其頭部優(yōu)化。若為邊界邊,然后將其向前迭代一個元素,直到其不為邊界邊,則轉II)。
II)根據(jù)待優(yōu)化邊左右三角形的索引值,找到左右三角形的不在待優(yōu)化邊上的另一頂點。如果為凸四邊形,則根據(jù)定義7來優(yōu)化,若要交換對角線,則相應地更新對角線、對角線的左右三角形以及相關的4條邊,更新完后轉I),否則直接轉I);若不是凸四邊形,轉I)。
2)優(yōu)化m_EgdeList按“基于一種曲率最小優(yōu)化準則的散亂點三角剖分。張永春,達飛鵬,宋文忠。東南大學學報(自然科學版),2004,34(6)851-856”中的曲率最小優(yōu)化準則對于基本網(wǎng)格中四個頂點不共面的凸四邊形(A,B,C,D),分別進行凸四邊形(A,B,C,D)所存在的兩種三角形剖分T1、T2,根據(jù)公式||κ(Q)||≈||n1-n2||||C1-C2||]]>(位于一曲面∑上的凸四邊形Q=(V1,V2,V3,V4),對角線為V2V4,(V2,V3,V4)和(V1,V2,V4)的重心C1、C2及法矢n1、n2),進行曲率κ1、κ2的估算,當||κi||=minj=1,2(||κj||)]]>時,則以該三角形剖分Ti作為該四邊形的最優(yōu)剖分;對于基本網(wǎng)格中四個頂點共面的凸四邊形(A,B,C,D),按Lawson邊交換準則來確定該四邊形的最優(yōu)剖分。優(yōu)化m_EgdeList中的邊,在使用最小內角最大化優(yōu)化準則的地方改為根據(jù)定義7來優(yōu)化,遍歷m_EgdeList中的邊,即完成該三角網(wǎng)格的優(yōu)化過程。
d)三角網(wǎng)的邊界修正以上討論的三角剖分的全過程是圍繞著凸的臨時邊界環(huán)完成的,在優(yōu)化過程中,邊界邊不參與,因此在優(yōu)化后三角網(wǎng)格的邊界之外,也不可避免的形成了一些不合法的三角形,這些三角形并不能真實地反映三維物體的形狀,因此必須對優(yōu)化后的三角網(wǎng)的邊界進行修正,即刪除不合法的三角形,以保證三角剖分所形成的每個三角形都盡量合理均勻,形成更理想的三角剖分。為了減少計算量,本發(fā)明采用了直接刪除邊界上狹長三角形的方法。具體實現(xiàn)如下首先將m_EgdeList中的邊界邊存入m_EdgeBorder;然后取出m_EdgeBorder的第一個元素,如其索引值不為0的三角形的最小內角小于一定角度(即形成的是狹長三角形),就刪除該邊,同時其三角形的索引值置為0,并更新該三角形的另外兩條邊,如果更新后的兩條邊其左右三角形的索引值均為0,則刪除該邊,否則存入m_EdgeBorder尾部。遍歷m_EdgeBorder中的所有元素后,就消除了邊界處的狹長三角形,從而得到了三維散亂點集的最終三角剖分。
e)改進的時間復雜度分析我們以圖5為例,先作一個具體的分析。此圖中m_TBList中有12個元素,我們以最先插入的Ps點為例說明改進曲率最小前的優(yōu)化情況。優(yōu)化時是按內邊的順序優(yōu)化的,所以在第一次優(yōu)化時,先優(yōu)化S+1,而S+2,S+3在本次中不能優(yōu)化,最后優(yōu)化S+4,這樣對加入的Ps點形成的新邊要進行兩次優(yōu)化才能完成;當此種情況的多邊形很多時,無疑會增大優(yōu)化過程中的時間復雜度。因此本發(fā)明改進優(yōu)化準則,使其對m_EgdeList中的邊進行一次優(yōu)化就能完成優(yōu)化過程,改進算法后,對插入Ps點形成的新邊,則從最外兩條邊逐步向最內的邊優(yōu)化,即優(yōu)化S+1,再優(yōu)化S+4,邊S+2,S+3的優(yōu)化就能在本次優(yōu)化中完成。
由于在改進最小曲率優(yōu)化準則的前后,每次邊的交換復雜度和需要交換邊的次數(shù)是基本上是相同的,所以我們只需要考慮減少對邊的循環(huán)次數(shù)即可。設m_EdgeList中的邊有n條,要完成基本網(wǎng)格中邊的全部優(yōu)化,改進前至少要遍歷m_EdgeList兩次以上;而改進后只需要遍歷m_EListInner和m_EdgeList各一次,m_ElistInner的元素比m_EdgeList少很多,最壞的情況就是不改進優(yōu)化的時間復雜度。但是當點集的數(shù)量很大,曲率變化劇烈時,改進的曲率優(yōu)化方法能明顯的提高三角形網(wǎng)格的構建速度和剖分質量。
用改進前的曲率最小優(yōu)化準則,對于圖9曲率變化不是很劇烈,經(jīng)過幾次優(yōu)化就完成優(yōu)化過程,在曲率變化不均勻的地方,圖10中優(yōu)化明顯不如圖11。而對于圖12存在曲率變化劇烈的地方,圖13經(jīng)過則經(jīng)過多次優(yōu)化,還沒有完成優(yōu)化過程,尤其時曲率變化劇烈的地方,還要優(yōu)化多次才能完成對點集的優(yōu)化,優(yōu)化過程很耗時;而改進后的算法最多經(jīng)過較少次數(shù)的優(yōu)化即可完成優(yōu)化過程,優(yōu)化結果如圖14,在左半部分曲率變化劇烈的地方可以在重新采樣,以保證得到更理想的三角剖分。試驗結果表明了對于點集比較多且曲率變化劇烈的,本發(fā)明的優(yōu)越性更為明顯,其優(yōu)化結果分別是圖12和圖14。
試驗表明,采用本發(fā)明改進的優(yōu)化準則提高了網(wǎng)格的構建速度,同時保證了生成的三角形網(wǎng)格的合理性,降低了曲率最小優(yōu)化準則算法的時間復雜度,尤其是對曲率變化劇烈的點了點集時,效果更為明顯。
權利要求
1.一種用于圖像三維重構的三維散亂點集的曲面三角剖分構造方法,第一步點云預處理對三維散亂點進行預處理采用將散亂點集P中所有點Pi(xi,yi,zi)(i=1,2,...,m)投影到X-Y平面上,得到散亂點集P中所有點Pi(xi,yi,zi)(i=1,2,...,m)的投影點,以各投影點的X坐標值的平均值作為X-Y平面上的中心Pc在X-Y平面上X坐標值,以各投影點的Y坐標值的平均值作為X-Y平面上的中心Pc在X-Y平面上Y坐標值,在根據(jù)散亂點集P中所有各點Pi(xi,yi,zi)(i=1,2,...,m)至中心Pc的遠近,對散亂點集P中所有各點Pi(xi,yi,zi)(i=1,2,...,m),按從近到遠排序,存儲在鏈表m_TaxisDotList中。第二步生成基本三角形網(wǎng)格a)從m_TaxisDotList中取出第1、第2個點,作為頭和尾,存入鏈表m_TBList,再從m_TaxisDotList中按序逐一取點,直至所取點位于第1、第2個點的連線之外。b)比較第一個與作為原始頭、原始尾的第1、第2個點共線的點至原始頭、原始尾的距離,將至原始頭較原始尾距離小的第一個共線點作為鏈表m_TBList的新頭,排列在原始頭之前,或者將至原始尾較原始頭距離小的第一個共線點作為鏈表m_TBList的新尾,排列在原始尾之后,依此步驟,對后續(xù)共線點進行排列。c)根據(jù)位于第1、第2個點的連線之外的點與第1、第2個點的連線的左、右關系,當該點在第1、第2個點的連線右側時,將鏈表m_TBList進行逆向排列,并以該點作為新頭排列在鏈表m_TBList最前位置;當該點在第1、第2個點的連線左側時,以該點作為新頭排列在鏈表m_TBList最前位置,由此得到初始鏈表m_TBList。d)根據(jù)初始鏈表m_TBList,得到初始三角網(wǎng)格,將三角形信息放入初始三角形數(shù)組m_TriArray,將三角形邊的信息放入初始邊鏈表m_EdgeList,并將作為網(wǎng)格內邊的三角形邊的信息放入初始內邊鏈表m_ElistInner,再將初始邊鏈表m_EdgeList-中三角形邊的編號存至鏈表m_TBList的相應位置。第三步在基本三角形網(wǎng)格基礎上,擴充三角形網(wǎng)格,直至散亂點處理完畢。其特征在于第四步優(yōu)化基本網(wǎng)格先在初始內邊鏈表m_ElistInner中找出產(chǎn)生凸四邊形的網(wǎng)格內邊,對該內邊進行如下優(yōu)化處理對于凸四邊形,同時使用最小內角最大優(yōu)化準則和最小權優(yōu)化準則,如果一個凸四邊的四點共圓,則對其采用最小權優(yōu)化準則優(yōu)化,否則采用最小內角最大化優(yōu)化準則;再用曲率最小優(yōu)化準則優(yōu)化初始邊鏈表m_EdgeList中三角形邊。
2.根據(jù)權利要求1所述的三維散亂點集的曲面三角剖分構造方法,其特征在于從由初始邊鏈表m_EdgeList內的邊組成的三角形中,選擇出其中至少有一條邊為三角形網(wǎng)格的邊界邊且其任一內角大于120°的三角形,刪除作為三角形網(wǎng)格邊界邊的邊,并將初始邊鏈表m_EdgeList中的作為三角形網(wǎng)格邊界邊的相關邊信息予以刪除。
全文摘要
本發(fā)明提出了一種用于圖像三維重構的三維散亂點集的曲面三角剖分構造方法,針對快速測量系統(tǒng)獲取海量數(shù)據(jù)點云,對經(jīng)過過濾處理和拼接后的點云進行三角剖分,三角剖分步驟首先對三維散亂點進行預處理采用將散亂點集P中所有點排序,形成一個初始三角剖分,再此基礎上逐點加入新點,形成新剖分,至散亂點集處理完畢,生成基本三角形網(wǎng)格。上述對基本網(wǎng)格運用曲率最小優(yōu)化準則優(yōu)化采用如下方法先在初始內邊鏈表m_ElistInner中找出產(chǎn)生凸四邊形的網(wǎng)格內邊,對該內邊的優(yōu)化處理采用最小權優(yōu)化準則和最小內角最大化優(yōu)化準則相結合;再用曲率最小優(yōu)化準則優(yōu)化初始邊鏈表m_EdgeList中三角形邊。
文檔編號G01B11/00GK1967596SQ200610041319
公開日2007年5月23日 申請日期2006年8月14日 優(yōu)先權日2006年8月14日
發(fā)明者達飛鵬, 唐琦, 張永春 申請人:東南大學