專利名稱:基于視覺特征度量的三維模型簡化方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種三維模型簡化方法,特別是一種基于視覺特征度量的三維模型簡化方法。
背景技術(shù):
三維模型簡化是伴隨著建模技術(shù)的發(fā)展而產(chǎn)生的一項技術(shù)。建模技術(shù)主要研究如何去表示一個三維幾何模型。近年來,一方面隨著三維掃描儀等設(shè)備的出現(xiàn),三維網(wǎng)格模型的獲取越來越簡單,使得模型也越來越復(fù)雜,其規(guī)模已經(jīng)超出了計算機(jī)的處理能力;另一方面,網(wǎng)絡(luò)的發(fā)展使得三維模型的網(wǎng)絡(luò)傳輸成為一個必然的趨勢。因此為了加速虛擬場景的繪制以及以更快的響應(yīng)時間將模型通過網(wǎng)絡(luò)傳輸給用戶,模型簡化技術(shù)逐漸發(fā)展為一項獨立的技術(shù)。
三維模型簡化的宗旨是在盡可能保持原始模型特征的情況下,最大限度的減少模型中的細(xì)節(jié)信息,即減少模型中的幾何信息和拓?fù)湫畔?。使用一個近似模型來表示原始模型,近似模型基本保持了原始模型的可視特征,但頂點和面的數(shù)量少于原始模型中頂點和面的數(shù)量。通常的做法是把一些不重要的圖元(頂點、邊或三角形)從三角網(wǎng)格中刪除,在這個過程中,為了更好的保持形體本來的形狀,在每一個刪除步驟中都需要選擇一個圖元,使得該圖元的刪除對模型的可視特征影響最小,即所帶來的誤差影響最小,所謂誤差,是指簡化模型和原始模型之間的差異,這種差異可以是距離、曲率等。因此問題的關(guān)鍵之處就在于每一步中如何選擇這個最小誤差。計算誤差的方法稱為誤差度量準(zhǔn)則。
目前常用的誤差度量準(zhǔn)則有以下幾種(1)點到面的距離計算當(dāng)前頂點與周圍相連的頂點所組成的平均平面之間的距離,如果該距離小于用戶指定的閾值,則該頂點可以被刪除。(2)點到線的距離計算當(dāng)前頂點與其左右相鄰的兩個頂點組成的直線之間的距離,這種方法主要用于邊界頂點的處理。(3)二次誤差計算當(dāng)前點到所有與其相鄰的三角面的距離的平方和,并且當(dāng)兩個點折疊為一個點的時候,該誤差可以相加。(4)特征角度量特征角定義為頂點處任意兩個相鄰三角形的法向量之間的夾角中的最大者,越小者則可以進(jìn)行刪除。(5)Hausdorff距離Hausdorff距離是用來衡量一個點集到另一個點集之間最大距離的最小值。從點集A到點集B的Hausdorff距離可以定義為h(A,B)=maxa∈A{minb∈B{d(a,b)}},]]>其中d(a,b)是a、b兩點之間的歐拉距離。該式定義的Hausdorff距離具有方向性,即h(A,B)和h(B,A)是不相等的。另一種更一般的Hausdorff距離定義為H(A,B)=max{h(A,B),h(B,A)},其中h(A,B)如上式定義。(6)能量函數(shù)將一個點集的能量表示為距離能量、表示能量和彈性能量,是一種全局的誤差測度準(zhǔn)則。
基于以上的各種誤差度量準(zhǔn)則,目前已經(jīng)有很多網(wǎng)格的簡化方法,如頂點刪除的簡化方法、重新劃分網(wǎng)格的簡化方法、三角形折疊的簡化方法、小波分解的簡化方法、頂點聚類的簡化方法、包絡(luò)網(wǎng)格的簡化方法、邊折疊的簡化方法等等。一般說來,折疊算法比同類的刪除算法效率要高,因為它不需要對刪除后形成的空洞進(jìn)行三角化,只需要使用一些原有的網(wǎng)格元素去代替刪除掉的網(wǎng)格元素。另外,邊折疊方法是一種適用于任意二維流形的三角網(wǎng)格模型的優(yōu)化方法。這使得它已經(jīng)成為非常重要的一類簡化方法,并且,最近兩年對網(wǎng)格簡化方法的研究也多是基于邊折疊展開的。
但是從目前來看,這類方法的一個缺點就是使模型各部分的簡化力度趨于均勻。這使得人的視覺系統(tǒng)比較敏感的邊界、輪廓以及曲率大的尖銳區(qū)域的網(wǎng)格沒法得到優(yōu)先保留,從而導(dǎo)致了視覺上的退化。特別是在分辨率較低的情況下模型一些重要視覺特征的損失會更為嚴(yán)重,使得簡化模型與原模型的視覺誤差過大,不能滿足更廣泛的應(yīng)用需求。
發(fā)明內(nèi)容
本發(fā)明的技術(shù)解決問題是克服現(xiàn)有技術(shù)的不足,提供一種基于視覺特征度量的模型簡化方法,它在誤差計算方法中引入了對視覺特征的度量,能夠改變邊折疊的次序,從優(yōu)先保留模型中視覺系統(tǒng)敏感的幾何特征,在保證算法效率的同時降低了簡化結(jié)果與原模型在視覺上的誤差。
本發(fā)明的技術(shù)解決方案基于視覺特征度量的三維模型簡化方法,其特點在于包括下列步驟(1)頂點類型分析,對載入的三維模型的頂點進(jìn)行連接性分析,將頂點分為普通頂點、邊界頂點、特殊頂點和孤立頂點四類;(2)基于視覺特征度量的誤差計算,根據(jù)頂點類型計算頂點誤差,并保存在相應(yīng)的頂點中;(3)根據(jù)步驟(2)計算出的頂點誤差,構(gòu)建最小堆;(4)邊折疊,通過選擇最小誤差點,即選擇最小誤差邊進(jìn)行邊折疊,并且折疊后要改變鄰接頂點的連接性,重新計算受影響頂點的誤差;(5)更新最小堆;(6)重復(fù)步驟(4),直到達(dá)到簡化力度的要求。
所述的頂點類型分析的方法如下用點表和面表的形式來表示的模型網(wǎng)格,對于某一個頂點或三角面片來說其連接性是難以直觀的判斷的,因此首先需要進(jìn)行頂點的連接性分析。頂點的連接性需要記錄每一個頂點的鄰接頂點信息、鄰接面信息,根據(jù)鄰接頂點和鄰接面的信息進(jìn)行頂點類型判斷,頂點類型分為普通頂點、邊界頂點、特殊頂點和孤立頂點四類(如圖1所示)。
(1)普通頂點就是指三角形的內(nèi)部頂點,并且這類頂點不包含特殊頂點,在拓?fù)潢P(guān)系上表現(xiàn)為其鄰接頂點的數(shù)量和鄰接三角形面片的數(shù)量是相同的,并且不是特殊頂點。
(2)邊界頂點就是指三角形的邊界上的點,對于封閉的圖形來說,這類頂點幾乎不存在。在拓?fù)潢P(guān)系上表現(xiàn)為其鄰接三角形面片的數(shù)量比鄰接頂點少一。
(3)特殊頂點是一類特殊的內(nèi)部頂點,它與其中某一個鄰接頂點具有超過兩個相同的鄰接頂點。它的刪除可能會導(dǎo)致三角網(wǎng)格性質(zhì)的變化。
(4)孤立頂點是一種無效的頂點,它不與任何頂點組成三角面片,在模型中不起任何作用,是在建模過程中引入的不必要頂點,可以直接刪除。
所述的基于視覺特征度量的誤差計算的方法如下基于視覺特征度量的誤差計算公式可表示為Verror=BaseError+weightdetail×Vdetail+weightoutline×Voutline;(1)BaseError稱為基本誤差成分,它根據(jù)頂點類型的不同,采用不同的方式進(jìn)行計算,對于普通頂點,采用計算點到面距離的平均值,其中面是指在該點的所有鄰接頂點中選三個組成一個面,計算該頂點到每個面的距,如圖2所示,然后相加,并求其平均值。即BaseError=1nΣi=1nDisi;]]>其中n=CM3]]>(M為該點的鄰接點數(shù)目),Disi為該點到第i個面的距離。對于邊界頂點,采用點到兩個鄰接的邊界頂點所組成的線的距離(如圖3所示),其中V0點的誤差計算根據(jù)點V0到直線V1V2的距離。
(2)Vdetail為頂點曲率變化程度的對誤差的貢獻(xiàn)值,曲率變化越大該值越大。其中Vdetail的計算公式如下Vdetail=Max(Acos(Vnormal·Fnormali));Vnormal表示某一點的標(biāo)準(zhǔn)化后的法向量值,F(xiàn)normali表示與該點相相連接的第k個三角面片的標(biāo)準(zhǔn)化后的法向量值(如圖4所示);Vnormal=1nΣk=1nfnormalk]]>(n為該點鄰接的三角面片的數(shù)量)。因此某點的細(xì)致度就是其所鄰接的所有三角面片的法向量與他們的均值(三角面片的法向量的平均值)所構(gòu)成的夾角中最大的那一個夾角的弧度值。
(3)Voutline為模型輪廓特征對誤差的貢獻(xiàn)值,Vdetail的計算公式如下Voutline=Acos(Vnormal·Viewdirection);Vnormal表示某一點的標(biāo)準(zhǔn)化后的法向量值,Viewdirection表示當(dāng)前的視點觀察方向,如圖5所示。
(4)Weightdetail,Weightoutline均為誤差項的系數(shù),計算公式如下 其中percent為模型的簡化力度(百分比),并且若模型簡化后的三角面片數(shù)少于1000則Weightdetail=0;當(dāng)Voutline∉[80180Π,12Π]]]>時,Voutline=0。
所述的根據(jù)頂點誤差大小構(gòu)建最小堆的方法如下堆是一個幾乎完全的二叉樹,它的每個頂點都滿足堆的特性如果v和p(v)分別是節(jié)點和它的父節(jié)點,那么存儲在p(v)中的數(shù)據(jù)項的鍵值小于(或大于)存儲在v中的數(shù)據(jù)項的鍵值。如果父節(jié)點中數(shù)據(jù)項的鍵值小于子節(jié)點中數(shù)據(jù)項的鍵值,那么則稱這個堆為最小堆,如果父節(jié)點中數(shù)據(jù)項的鍵值大于子節(jié)點中數(shù)據(jù)項的鍵值,那么則稱這個堆為最大堆。按照最小堆的定義,在最小堆中鍵值最小的點應(yīng)該在根節(jié)點。將頂點誤差作為鍵值構(gòu)建的最小堆,其基本操作有三個創(chuàng)建、Sift-up(向上移)、Sift-down(向下移)。
(1)創(chuàng)建由于完全二叉樹具有這樣的性質(zhì)如果用連續(xù)的數(shù)組來表示二叉樹中的節(jié)點,那么對于數(shù)組中任一位置i上的元素,其左子節(jié)點在位置2i上,其右子節(jié)點在(2i+1)中,其父節(jié)點在i/2。因此采用一個一維數(shù)組來表示堆數(shù)據(jù)結(jié)構(gòu)。對于給定的頂點數(shù)組,從最后一個節(jié)點開始到根節(jié)點,逐個掃描所有的節(jié)點,根據(jù)需要每一次將以當(dāng)前節(jié)點為根節(jié)點的子樹轉(zhuǎn)換成堆。
(2)Sift-up操作堆的定義中規(guī)定了父節(jié)點中的鍵值和子節(jié)點之間鍵值的關(guān)系,因此當(dāng)一個節(jié)點中的鍵值發(fā)生變化而破壞堆的這個性質(zhì)的時候,需要對堆中的數(shù)據(jù)進(jìn)行重新排列,使之重新達(dá)到上述性質(zhì)。對于最小堆來說,當(dāng)子節(jié)點的值小于父節(jié)點中的值的時候,那么這個節(jié)點需要和其父節(jié)點互換,即向上移動,稱之為Sift-up操作。例如,對于圖6中左邊的堆,如果節(jié)點32的值變成了10,此時需要不斷將節(jié)點10上移,直到移到根節(jié)點位置,重新保持最小堆性質(zhì)。
在這一過程中,最壞情況是堆中的最后一層元素中的一個變成最小的,此時需要將這個元素從最低層一直移動到最高層,此時需要移動的次數(shù)為logn,因此上述過程的最壞情況算法復(fù)雜度為O(logn)。
(3)Sift-down操作同理,如果處于父節(jié)點中的鍵值大于任何一個子節(jié)點中的鍵值,此時需要將該節(jié)點向下(即向孩子節(jié)點方向)移動,最終保持最小堆性質(zhì),稱之為Sift-down操作。該過程的最壞情況算法復(fù)雜度也為O(logn)。
所述的邊折疊的方法如下通過上面的誤差計算準(zhǔn)則計算出每一個頂點的誤差之后,可以選擇一個最小的誤差點進(jìn)行刪除,該點刪除的同時需要刪除所有與之相連的線和面,于是就形成了一個空洞,對于這個空洞需要重新進(jìn)行三角剖分,如圖7所示,當(dāng)A圖中頂點v0刪除后,形成圖B中的空洞,然后對其三角化形成圖C。從圖中不難看出,這一過程相當(dāng)于將邊v0v1進(jìn)行折疊(即點v0合并到點v1),但是從計算復(fù)雜度上來說,邊折疊的計算量比先刪除然后三角化要少。
折疊邊的選擇采取距離最小的原則,即選擇一條與最小點相連的并且長度最小的邊,將該邊進(jìn)行折疊產(chǎn)生新的拓?fù)浣Y(jié)構(gòu)。
對于特殊頂點來說,并不是其所有的邊都可以進(jìn)行折疊,如圖8所示的拓?fù)浣Y(jié)構(gòu)中,當(dāng)邊(V1,V2)進(jìn)行折疊時,形成右圖所示的拓?fù)浣Y(jié)構(gòu),此時原來的三角形面A(V1,V3,V4)的頂點V1應(yīng)該替換為V2,從而形成新的平面A′(V2,V3,V4),此平面和三角平面B(V3,V2,V4)相同,雖然從繪制的角度看,這兩個三角形一個為正面(面A,頂點順序為順時針),一個為反面(面B,頂點順序為逆時針),但從外觀看,這破壞了三角網(wǎng)格模型的流行性質(zhì),形成了一個獨立的三角形面片。
因此,規(guī)定邊(V1,V2)不能進(jìn)行折疊。一般來說,如果一條邊能夠折疊,那么這條邊的兩個頂點的鄰接頂點至多只能有兩個是相同的。具體解決方法為判斷這條邊的兩個頂點的鄰接頂點中相同頂點的數(shù)目是否超過2。對于上圖,邊(V1,V2)不能折疊,其中頂點V1的鄰接頂點為V2、V3、V4、V5、V6,頂點V2的鄰接頂點為V3、V4、V1、V6,二者相同的鄰接頂點為V3、V4、V6,超過2,所以不能進(jìn)行折疊。
本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點在于(1)本發(fā)明在誤差度量準(zhǔn)則中引入了對人的視覺系統(tǒng)敏感的重要幾何特征的度量,能夠根通過調(diào)整這些重要頂點的誤差值來改變邊折疊的次序,優(yōu)先保留細(xì)節(jié)特征和輪廓特征。在同等簡化力度下能夠突出模型的細(xì)節(jié)特征、邊界以及輪廓特征。簡化效果相對其他方法具有明顯優(yōu)勢。
(2)本發(fā)明作為一種自動的網(wǎng)格簡化算法,能夠在沒有用戶交互的前提下,自動保留模型中人的視覺系統(tǒng)比較敏感的幾何特征。同時本發(fā)明能夠根據(jù)模型簡化力度(百分比)的不同自動調(diào)整頂點誤差各組成部分的權(quán)重,從而避免了在在模型分辨率較低的狀態(tài)下因過于注重保留邊界、輪廓、尖銳點等幾何特征而導(dǎo)致簡化結(jié)果誤差過大的情況。
(3)本發(fā)明采用基于點到面距離平均值的方法來計算基本的誤差項,計算量小,效率高。采用邊折疊的模型簡化方法對模型要求低,它適用于任意二維流形的三角網(wǎng)格模型。同時,邊折疊的簡化方法在計算復(fù)雜度計算量比先刪除然后三角化要少;而且它屬于局部算法,算法簡單、穩(wěn)定,易于實現(xiàn),能夠應(yīng)用于較大的模型。
(4)本發(fā)明的計算復(fù)雜度相對較低。模型化簡的關(guān)鍵是采用何種方式計算幾何元素誤差。對于局部算法來說,這種計算所消耗的時間相對于整個過程來說是非常小的,大部分時間消耗在查找最小誤差元素上;而由于本發(fā)明采用了最小堆這種數(shù)據(jù)結(jié)構(gòu),從而將這一比較耗時的查找操作的時間復(fù)雜度降到了O(nlognh)。同時這也是整個三維模型簡化算法的時間復(fù)雜度。
圖1為本發(fā)明的頂點類型分析示意圖;
圖2為本發(fā)明的普通頂點的基本誤差計算示意圖;圖3為本發(fā)明的邊界頂點的基本誤差計算示意圖;圖4為本發(fā)明的誤差計算公式中頂點曲率變化項的計算示意圖;圖5為本發(fā)明的誤差計算公式中輪廓特征度量項的計算示意圖;圖6為本發(fā)明的堆的Sift-up操作示意圖;圖7本發(fā)明中的某個頂點刪除后所形成的空洞示意圖;圖8為本發(fā)明中的特殊頂點折疊過程示意圖;圖9Happy Buddha模型的簡化結(jié)果圖。
具體實施例方式
下面結(jié)合實施例對本發(fā)明進(jìn)一詳細(xì)說明本發(fā)明的三維模型原始數(shù)據(jù)采用斯坦福大學(xué)的PLY格式的三維模型Happy Buddha,原始模型含108,770個三角面片,其簡化模型的步驟如下1.頂點類型分析,首先載入Happy Buddha三維模型,然后對該模型的頂點進(jìn)行連接性分析,將頂點分為普通頂點、邊界頂點、特殊頂點和孤立頂點四類。頂點類實現(xiàn)的數(shù)據(jù)結(jié)構(gòu)見表1。
表1頂點類關(guān)鍵數(shù)據(jù)
2.基于視覺特征度量的誤差計算,根據(jù)1中的頂點分類,采用相應(yīng)的方式計算各個頂點的誤差,并保存在相應(yīng)的頂點中。對模型頂點列表中的每一個頂點的誤差其計算步驟如下(1)基本誤差計算
A.普通頂點的基本誤差計算,以圖二中的頂點V0為例,首先根據(jù)頂點V0的所有鄰接頂點V1、V2、V3、V4所組成的平面S123、S134、S124、S234計算頂點V0到這四個面的距離,然后求其平均值作為頂點V0的基本誤差值。
B.邊界頂點的基本誤差計算,以圖三中的頂點V0為例,V0點到其兩個鄰接的邊界頂點所組成的直線V1V2的距離作為該點的基本誤差。
C.特殊頂點的基本誤差計算,以圖一中的特殊頂點V為例,因為這類頂點不能刪除,所以直接給它的基本誤差項賦一無窮大的值,以保證該類頂點不會被刪除。
D.孤立頂點的基本誤差計算,以圖一中孤立頂點V為例,因為這類頂點可以直接刪除,所以直接給頂點V的基本誤差賦一無窮小的值,以保證這類頂點能夠被優(yōu)先刪除。
(2)頂點曲率變化程度的對誤差的貢獻(xiàn)值的計算Vdetail為頂點曲率變化程度的對誤差的貢獻(xiàn)值,曲率變化越大該值越大。其中Vdetail的計算公式如下Vdetail=Max(Acos(Vnormal·Fnormali));如圖四所示,Vnormal表示某一點的標(biāo)準(zhǔn)化后的法向量值,F(xiàn)normali表示與該點相相連接的第k個三角面片的標(biāo)準(zhǔn)化后的法向量值;Vnormal=1nΣk=1nfnormalk]]>(n為該點鄰接的三角面片的數(shù)量)。該誤差項的系數(shù)計算公式為 其中percent為模型的簡化力度(百分比),并且規(guī)定若模型簡化后的三角面片數(shù)少于1000則Weightdetail=0,以防止在模型分辨率較低的情況下由于過分保留模型尖銳特征而引起簡化誤差反而增大的情況。
(3)模型輪廓特征對誤差的貢獻(xiàn)值的計算Voutline為模型輪廓特征對誤差的貢獻(xiàn)值,Vdetail的計算公式如下Voutline=Acos(Vnormal·Viewdirection);如圖5所示,Vnormal表示某一點的標(biāo)準(zhǔn)化后的法向量值,Viewdirection表示當(dāng)前的視點觀察方向。該誤差項的系數(shù)計算公式為 其中percent為模型的簡化力度(百分比),并且規(guī)定當(dāng)Voutline∉[80180Π,12Π]]]>時,Voutline=0,以防止在模型分辨率較低的情況下由于過分保留模型輪廓特征而引起簡化誤差反而增大的情況。
3、構(gòu)建最小堆;在第2步已經(jīng)計算完的所有頂點的誤差基礎(chǔ)上,構(gòu)建頂點誤差的最小堆。
由于完全二叉樹具有這樣的性質(zhì)如果用連續(xù)的數(shù)組來表示二叉樹中的節(jié)點,那么對于數(shù)組中任一位置i上的元素,其左子節(jié)點在位置2i上,其右子節(jié)點在(2i+1)中,其父節(jié)點在i/2」。因此我們可以使用一個一維數(shù)組來表示堆數(shù)據(jù)結(jié)構(gòu)。對于給定的頂點數(shù)組,從最后一個節(jié)點開始到根節(jié)點,逐個掃描所有的節(jié)點,根據(jù)需要每一次將以當(dāng)前節(jié)點為根節(jié)點的子樹轉(zhuǎn)換成堆。
4、邊折疊,其步驟為(1)在模型的頂點誤差的最小堆建立之后,可以選擇一個最小的誤差點進(jìn)行刪除。
(2)對于折疊邊的選擇采取距離最小的原則,即選擇一條與最小點相連的并且長度最小的邊,將該邊進(jìn)行折疊產(chǎn)生新的拓?fù)浣Y(jié)構(gòu)。從圖7中不難看出,這一過程相當(dāng)于將邊v0v1進(jìn)行折疊(即點v0合并到點v1)。
對于特殊頂點來說,并不是其所有的邊都可以進(jìn)行折疊,如圖8所示的拓?fù)浣Y(jié)構(gòu)中,當(dāng)邊(V1,V2)進(jìn)行折疊時,形成右圖所示的拓?fù)浣Y(jié)構(gòu),此時原來的三角形面A(V1,V3,V4)的頂點V1應(yīng)該替換為V2,從而形成新的平面A′(V2,V3,V4),此平面和三角平面B(V3,V2,V4)相同,雖然從繪制的角度看,這兩個三角形一個為正面(面A,頂點順序為順時針),一個為反面(面B,頂點順序為逆時針),但從外觀看,這破壞了三角網(wǎng)格模型的流行性質(zhì),形成了一個獨立的三角形面片。因此,規(guī)定邊(V1,V2)不能進(jìn)行折疊。一般來說,如果一條邊能夠折疊,那么這條邊的兩個頂點的鄰接頂點至多只能有兩個是相同的。具體解決方法為判斷這條邊的兩個頂點的鄰接頂點中相同頂點的數(shù)目是否超過2。對于上圖,邊(V1,V2)不能折疊,其中頂點V1的鄰接頂點為V2、V3、V4、V5、V6,頂點V2的鄰接頂點為V3、V4、V1、V6,二者相同的鄰接頂點為V3、V4、V6,超過2,所以不能進(jìn)行折疊。
(3)折疊后要改變鄰接頂點的連接性,該點刪除的同時需要刪除所有與之相連的線和面并重新計算受影響頂點的誤差;5、根據(jù)第4步更新后的頂誤差更新最小堆。
更新最小堆可能會涉及堆的兩個操作Sift-up操作和Sift-down操作。對于,Sift-up操作,如圖6中左邊的堆,如果節(jié)點32的值變成了10,此時需要不斷將節(jié)點10上移,直到移到根節(jié)點位置,重新保持最小堆性質(zhì)。同理如果處于父節(jié)點中的鍵值大于任何一個子節(jié)點中的鍵值,此時需要將該節(jié)點向下(即向孩子節(jié)點方向)移動進(jìn)行Sift-down操作,最終保持最小堆性質(zhì)。
6、重復(fù)第4步,直到達(dá)到簡化力度(簡化百分比)的要求。
Happy Buddha模型的簡化結(jié)果請參考圖9,其中A為模型原圖(1,087,716個面片);B為簡化到原模型10%的結(jié)果(108,770個面片);C為簡化到原模型5%的結(jié)果(54,384個面片);D為簡化到原模型3%的結(jié)果(32,630個面片);E為簡化到原模型1%的結(jié)果(10,876個面片)。
權(quán)利要求
1.基于視覺特征度量的三維模型簡化方法,其特征在于包括下列步驟(1)頂點類型分析,對載入的三維模型的頂點進(jìn)行連接性分析,將頂點分為普通頂點、邊界頂點、特殊頂點和孤立頂點四類;(2)基于視覺特征度量的誤差計算,根據(jù)頂點類型計算頂點誤差,并保存在相應(yīng)的頂點中;(3)根據(jù)步驟(2)計算出的頂點誤差,構(gòu)建最小堆;(4)邊折疊,通過選擇最小誤差點,即選擇最小誤差邊進(jìn)行邊折疊,并且折疊后要改變鄰接頂點的連接性,重新計算受影響頂點的誤差;(5)更新最小堆;(6)重復(fù)步驟(4),直到達(dá)到簡化力度的要求。
2.根據(jù)權(quán)利要求1所述的基于視覺特征度量的三維模型簡化方法,其特征在于所述的頂點類型分析的方法如下采用點表和面表的形式來表示的模型網(wǎng)格,頂點的連接性分析記錄每一個頂點的鄰接頂點信息、鄰接面信息,根據(jù)鄰接頂點和鄰接面的信息進(jìn)行頂點類型判斷普通頂點指三角形的內(nèi)部頂點,并且這類頂點不包含特殊頂點,在拓?fù)潢P(guān)系上表現(xiàn)為其鄰接頂點的數(shù)量和鄰接三角形面片的數(shù)量是相同的,并且不是特殊頂點;邊界頂點指三角形的邊界上的點,在拓?fù)潢P(guān)系上表現(xiàn)為其鄰接三角形面片的數(shù)量比鄰接頂點少一;特殊頂點是一類特殊的內(nèi)部頂點,它與其中某一個鄰接頂點具有超過兩個相同的鄰接頂點,它的刪除可能會導(dǎo)致三角網(wǎng)格性質(zhì)的變化;孤立頂點是一種無效的頂點,它不與任何頂點組成三角面片,在模型中不起任何作用,是在建模過程中引入的不必要頂點,可以直接刪除。
3.根據(jù)權(quán)利要求1所述的基于視覺特征度量的三維模型簡化方法,其特征在于所述的基于視覺特征度量的誤差計算的方法如下基于視覺特征度量的誤差計算公式可表示為Verror=BaseError+weightdetail×Vdetail+weightoutline×Voutline;(1)BaseError為基本誤差成分,它根據(jù)頂點類型的不同,采用不同的方式進(jìn)行計算,對于普通頂點,采用計算點到面距離的平均值,其中面指在該點的所有鄰接頂點中選三個組成一個面,計算該頂點到每個面的距,然后相加,并求其平均值。即BaseError=1nΣi=1nDisi,]]>其中n=CM3,]]>M為該點的鄰接點數(shù)目,Disi為該點到第i個面的距離;對于邊界頂點,采用點到兩個鄰接的邊界頂點所組成的線的距離,其中V0點的誤差計算根據(jù)點V0到直線V1V2的距離;(2)Vdetail為頂點曲率變化程度的對誤差的貢獻(xiàn)值,其中Vdetail的計算公式如下Vdetail=Max(Acos(Vnormal·Fnormali)),Vnormal表示某一點的標(biāo)準(zhǔn)化后的法向量值,F(xiàn)normali表示與該點相相連接的第k個三角面片的標(biāo)準(zhǔn)化后的法向量值;Vnormal=1nΣk=1nfnormalk,]]>n為該點鄰接的三角面片的數(shù)量;(3)Voutline為模型輪廓特征對誤差的貢獻(xiàn)值,Vdetail的計算公式如下Voutline=Acos(Vnormal·Viewdirection);Vnormal表示某一點的標(biāo)準(zhǔn)化后的法向量值,Viewdirection表示當(dāng)前的視點觀察方向;(4)Weightdetail,Weightoutline均為誤差項的系數(shù),計算公式如下 其中percent為模型的簡化力度百分比。
4.根據(jù)權(quán)利要求1所述的基于視覺特征度量的三維模型簡化方法,其特征在于所述的根據(jù)頂點誤差大小構(gòu)建最小堆的方法如下有創(chuàng)建、向上移Sift-up)、向下移Sift-down;(1)創(chuàng)建如果用連續(xù)的數(shù)組來表示二叉樹中的節(jié)點,那么對于數(shù)組中任一位置i上的元素,其左子節(jié)點在位置2i上,其右子節(jié)點在(2i+1)中,其父節(jié)點在i/2,因此采用一個一維數(shù)組來表示堆數(shù)據(jù)結(jié)構(gòu);對于給定的頂點數(shù)組,從最后一個節(jié)點開始到根節(jié)點,逐個掃描所有的節(jié)點,根據(jù)需要每一次將以當(dāng)前節(jié)點為根節(jié)點的子樹轉(zhuǎn)換成堆;(2)Sift-up操作當(dāng)子節(jié)點的值小于父節(jié)點中的值的時,這個節(jié)點需要和其父節(jié)點互換,即向上移動,稱之為Sift-up操作;(3)Sift-down操作當(dāng)處于父節(jié)點中的鍵值大于任何一個子節(jié)點中的鍵值,需要將該節(jié)點向下,即向孩子節(jié)點方向移動,最終保持最小堆性質(zhì),稱之為Sift-down操作。
5.根據(jù)權(quán)利要求1所述的基于視覺特征度量的三維模型簡化方法,其特征在于所述的邊折疊的方法如下(1)在模型的頂點誤差的最小堆建立之后,可以選擇一個最小的誤差點進(jìn)行刪除;(2)對于折疊邊的選擇采取距離最小的原則,即選擇一條與最小點相連的并且長度最小的邊,將該邊進(jìn)行折疊產(chǎn)生新的拓?fù)浣Y(jié)構(gòu);(3)折疊后要改變鄰接頂點的連接性,該點刪除的同時需要刪除所有與之相連的線和面并重新計算受影響頂點的誤差。
全文摘要
基于視覺特征度量的三維模型簡化方法,其特征在于包括下列步驟(1)頂點類型分析,對載入的三維模型的頂點進(jìn)行連接性分析,將頂點分為普通頂點、邊界頂點、特殊頂點和孤立頂點四類;(2)基于視覺特征度量的誤差計算,根據(jù)頂點類型計算頂點誤差,并保存在相應(yīng)的頂點中;(3)根據(jù)步驟(2)計算出的頂點誤差,構(gòu)建最小堆;(4)邊折疊,通過選擇最小誤差點,即選擇最小誤差邊進(jìn)行邊折疊,并且折疊后要改變鄰接頂點的連接性,重新計算受影響頂點的誤差;(5)更新最小堆;(6)重復(fù)步驟(4),直到達(dá)到簡化力度的要求。本發(fā)明它在誤差計算方法中引入了對視覺特征的度量,能夠改變邊折疊的次序,從優(yōu)先保留模型中視覺系統(tǒng)敏感的幾何特征,在保證算法效率的同時降低了簡化結(jié)果與原模型在視覺上的誤差。
文檔編號G06T15/10GK1866299SQ20061008943
公開日2006年11月22日 申請日期2006年6月27日 優(yōu)先權(quán)日2006年6月27日
發(fā)明者趙沁平, 李帥 申請人:北京航空航天大學(xué)