欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于視覺(jué)特征度量的三維模型簡(jiǎn)化方法

文檔序號(hào):6559273閱讀:248來(lái)源:國(guó)知局
專利名稱:基于視覺(jué)特征度量的三維模型簡(jiǎn)化方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種三維模型簡(jiǎn)化方法,特別是一種基于視覺(jué)特征度量的三維模型簡(jiǎn)化方法。
背景技術(shù)
三維模型簡(jiǎn)化是伴隨著建模技術(shù)的發(fā)展而產(chǎn)生的一項(xiàng)技術(shù)。建模技術(shù)主要研究如何去表示一個(gè)三維幾何模型。近年來(lái),一方面隨著三維掃描儀等設(shè)備的出現(xiàn),三維網(wǎng)格模型的獲取越來(lái)越簡(jiǎn)單,使得模型也越來(lái)越復(fù)雜,其規(guī)模已經(jīng)超出了計(jì)算機(jī)的處理能力;另一方面,網(wǎng)絡(luò)的發(fā)展使得三維模型的網(wǎng)絡(luò)傳輸成為一個(gè)必然的趨勢(shì)。因此為了加速虛擬場(chǎng)景的繪制以及以更快的響應(yīng)時(shí)間將模型通過(guò)網(wǎng)絡(luò)傳輸給用戶,模型簡(jiǎn)化技術(shù)逐漸發(fā)展為一項(xiàng)獨(dú)立的技術(shù)。
三維模型簡(jiǎn)化的宗旨是在盡可能保持原始模型特征的情況下,最大限度的減少模型中的細(xì)節(jié)信息,即減少模型中的幾何信息和拓?fù)湫畔?。使用一個(gè)近似模型來(lái)表示原始模型,近似模型基本保持了原始模型的可視特征,但頂點(diǎn)和面的數(shù)量少于原始模型中頂點(diǎn)和面的數(shù)量。通常的做法是把一些不重要的圖元(頂點(diǎn)、邊或三角形)從三角網(wǎng)格中刪除,在這個(gè)過(guò)程中,為了更好的保持形體本來(lái)的形狀,在每一個(gè)刪除步驟中都需要選擇一個(gè)圖元,使得該圖元的刪除對(duì)模型的可視特征影響最小,即所帶來(lái)的誤差影響最小,所謂誤差,是指簡(jiǎn)化模型和原始模型之間的差異,這種差異可以是距離、曲率等。因此問(wèn)題的關(guān)鍵之處就在于每一步中如何選擇這個(gè)最小誤差。計(jì)算誤差的方法稱為誤差度量準(zhǔn)則。
目前常用的誤差度量準(zhǔn)則有以下幾種(1)點(diǎn)到面的距離計(jì)算當(dāng)前頂點(diǎn)與周圍相連的頂點(diǎn)所組成的平均平面之間的距離,如果該距離小于用戶指定的閾值,則該頂點(diǎn)可以被刪除。(2)點(diǎn)到線的距離計(jì)算當(dāng)前頂點(diǎn)與其左右相鄰的兩個(gè)頂點(diǎn)組成的直線之間的距離,這種方法主要用于邊界頂點(diǎn)的處理。(3)二次誤差計(jì)算當(dāng)前點(diǎn)到所有與其相鄰的三角面的距離的平方和,并且當(dāng)兩個(gè)點(diǎn)折疊為一個(gè)點(diǎn)的時(shí)候,該誤差可以相加。(4)特征角度量特征角定義為頂點(diǎn)處任意兩個(gè)相鄰三角形的法向量之間的夾角中的最大者,越小者則可以進(jìn)行刪除。(5)Hausdorff距離Hausdorff距離是用來(lái)衡量一個(gè)點(diǎn)集到另一個(gè)點(diǎn)集之間最大距離的最小值。從點(diǎn)集A到點(diǎn)集B的Hausdorff距離可以定義為h(A,B)=maxa∈A{minb∈B{d(a,b)}},]]>其中d(a,b)是a、b兩點(diǎn)之間的歐拉距離。該式定義的Hausdorff距離具有方向性,即h(A,B)和h(B,A)是不相等的。另一種更一般的Hausdorff距離定義為H(A,B)=max{h(A,B),h(B,A)},其中h(A,B)如上式定義。(6)能量函數(shù)將一個(gè)點(diǎn)集的能量表示為距離能量、表示能量和彈性能量,是一種全局的誤差測(cè)度準(zhǔn)則。
基于以上的各種誤差度量準(zhǔn)則,目前已經(jīng)有很多網(wǎng)格的簡(jiǎn)化方法,如頂點(diǎn)刪除的簡(jiǎn)化方法、重新劃分網(wǎng)格的簡(jiǎn)化方法、三角形折疊的簡(jiǎn)化方法、小波分解的簡(jiǎn)化方法、頂點(diǎn)聚類的簡(jiǎn)化方法、包絡(luò)網(wǎng)格的簡(jiǎn)化方法、邊折疊的簡(jiǎn)化方法等等。一般說(shuō)來(lái),折疊算法比同類的刪除算法效率要高,因?yàn)樗恍枰獙?duì)刪除后形成的空洞進(jìn)行三角化,只需要使用一些原有的網(wǎng)格元素去代替刪除掉的網(wǎng)格元素。另外,邊折疊方法是一種適用于任意二維流形的三角網(wǎng)格模型的優(yōu)化方法。這使得它已經(jīng)成為非常重要的一類簡(jiǎn)化方法,并且,最近兩年對(duì)網(wǎng)格簡(jiǎn)化方法的研究也多是基于邊折疊展開的。
但是從目前來(lái)看,這類方法的一個(gè)缺點(diǎn)就是使模型各部分的簡(jiǎn)化力度趨于均勻。這使得人的視覺(jué)系統(tǒng)比較敏感的邊界、輪廓以及曲率大的尖銳區(qū)域的網(wǎng)格沒(méi)法得到優(yōu)先保留,從而導(dǎo)致了視覺(jué)上的退化。特別是在分辨率較低的情況下模型一些重要視覺(jué)特征的損失會(huì)更為嚴(yán)重,使得簡(jiǎn)化模型與原模型的視覺(jué)誤差過(guò)大,不能滿足更廣泛的應(yīng)用需求。

發(fā)明內(nèi)容
本發(fā)明的技術(shù)解決問(wèn)題是克服現(xiàn)有技術(shù)的不足,提供一種基于視覺(jué)特征度量的模型簡(jiǎn)化方法,它在誤差計(jì)算方法中引入了對(duì)視覺(jué)特征的度量,能夠改變邊折疊的次序,從優(yōu)先保留模型中視覺(jué)系統(tǒng)敏感的幾何特征,在保證算法效率的同時(shí)降低了簡(jiǎn)化結(jié)果與原模型在視覺(jué)上的誤差。
本發(fā)明的技術(shù)解決方案基于視覺(jué)特征度量的三維模型簡(jiǎn)化方法,其特點(diǎn)在于包括下列步驟(1)頂點(diǎn)類型分析,對(duì)載入的三維模型的頂點(diǎn)進(jìn)行連接性分析,將頂點(diǎn)分為普通頂點(diǎn)、邊界頂點(diǎn)、特殊頂點(diǎn)和孤立頂點(diǎn)四類;(2)基于視覺(jué)特征度量的誤差計(jì)算,根據(jù)頂點(diǎn)類型計(jì)算頂點(diǎn)誤差,并保存在相應(yīng)的頂點(diǎn)中;(3)根據(jù)步驟(2)計(jì)算出的頂點(diǎn)誤差,構(gòu)建最小堆;(4)邊折疊,通過(guò)選擇最小誤差點(diǎn),即選擇最小誤差邊進(jìn)行邊折疊,并且折疊后要改變鄰接頂點(diǎn)的連接性,重新計(jì)算受影響頂點(diǎn)的誤差;(5)更新最小堆;(6)重復(fù)步驟(4),直到達(dá)到簡(jiǎn)化力度的要求。
所述的頂點(diǎn)類型分析的方法如下用點(diǎn)表和面表的形式來(lái)表示的模型網(wǎng)格,對(duì)于某一個(gè)頂點(diǎn)或三角面片來(lái)說(shuō)其連接性是難以直觀的判斷的,因此首先需要進(jìn)行頂點(diǎn)的連接性分析。頂點(diǎn)的連接性需要記錄每一個(gè)頂點(diǎn)的鄰接頂點(diǎn)信息、鄰接面信息,根據(jù)鄰接頂點(diǎn)和鄰接面的信息進(jìn)行頂點(diǎn)類型判斷,頂點(diǎn)類型分為普通頂點(diǎn)、邊界頂點(diǎn)、特殊頂點(diǎn)和孤立頂點(diǎn)四類(如圖1所示)。
(1)普通頂點(diǎn)就是指三角形的內(nèi)部頂點(diǎn),并且這類頂點(diǎn)不包含特殊頂點(diǎn),在拓?fù)潢P(guān)系上表現(xiàn)為其鄰接頂點(diǎn)的數(shù)量和鄰接三角形面片的數(shù)量是相同的,并且不是特殊頂點(diǎn)。
(2)邊界頂點(diǎn)就是指三角形的邊界上的點(diǎn),對(duì)于封閉的圖形來(lái)說(shuō),這類頂點(diǎn)幾乎不存在。在拓?fù)潢P(guān)系上表現(xiàn)為其鄰接三角形面片的數(shù)量比鄰接頂點(diǎn)少一。
(3)特殊頂點(diǎn)是一類特殊的內(nèi)部頂點(diǎn),它與其中某一個(gè)鄰接頂點(diǎn)具有超過(guò)兩個(gè)相同的鄰接頂點(diǎn)。它的刪除可能會(huì)導(dǎo)致三角網(wǎng)格性質(zhì)的變化。
(4)孤立頂點(diǎn)是一種無(wú)效的頂點(diǎn),它不與任何頂點(diǎn)組成三角面片,在模型中不起任何作用,是在建模過(guò)程中引入的不必要頂點(diǎn),可以直接刪除。
所述的基于視覺(jué)特征度量的誤差計(jì)算的方法如下基于視覺(jué)特征度量的誤差計(jì)算公式可表示為Verror=BaseError+weightdetail×Vdetail+weightoutline×Voutline;(1)BaseError稱為基本誤差成分,它根據(jù)頂點(diǎn)類型的不同,采用不同的方式進(jìn)行計(jì)算,對(duì)于普通頂點(diǎn),采用計(jì)算點(diǎn)到面距離的平均值,其中面是指在該點(diǎn)的所有鄰接頂點(diǎn)中選三個(gè)組成一個(gè)面,計(jì)算該頂點(diǎn)到每個(gè)面的距,如圖2所示,然后相加,并求其平均值。即BaseError=1nΣi=1nDisi;]]>其中n=CM3]]>(M為該點(diǎn)的鄰接點(diǎn)數(shù)目),Disi為該點(diǎn)到第i個(gè)面的距離。對(duì)于邊界頂點(diǎn),采用點(diǎn)到兩個(gè)鄰接的邊界頂點(diǎn)所組成的線的距離(如圖3所示),其中V0點(diǎn)的誤差計(jì)算根據(jù)點(diǎn)V0到直線V1V2的距離。
(2)Vdetail為頂點(diǎn)曲率變化程度的對(duì)誤差的貢獻(xiàn)值,曲率變化越大該值越大。其中Vdetail的計(jì)算公式如下Vdetail=Max(Acos(Vnormal·Fnormali));Vnormal表示某一點(diǎn)的標(biāo)準(zhǔn)化后的法向量值,F(xiàn)normali表示與該點(diǎn)相相連接的第k個(gè)三角面片的標(biāo)準(zhǔn)化后的法向量值(如圖4所示);Vnormal=1nΣk=1nfnormalk]]>(n為該點(diǎn)鄰接的三角面片的數(shù)量)。因此某點(diǎn)的細(xì)致度就是其所鄰接的所有三角面片的法向量與他們的均值(三角面片的法向量的平均值)所構(gòu)成的夾角中最大的那一個(gè)夾角的弧度值。
(3)Voutline為模型輪廓特征對(duì)誤差的貢獻(xiàn)值,Vdetail的計(jì)算公式如下Voutline=Acos(Vnormal·Viewdirection);Vnormal表示某一點(diǎn)的標(biāo)準(zhǔn)化后的法向量值,Viewdirection表示當(dāng)前的視點(diǎn)觀察方向,如圖5所示。
(4)Weightdetail,Weightoutline均為誤差項(xiàng)的系數(shù),計(jì)算公式如下 其中percent為模型的簡(jiǎn)化力度(百分比),并且若模型簡(jiǎn)化后的三角面片數(shù)少于1000則Weightdetail=0;當(dāng)Voutline∉[80180Π,12Π]]]>時(shí),Voutline=0。
所述的根據(jù)頂點(diǎn)誤差大小構(gòu)建最小堆的方法如下堆是一個(gè)幾乎完全的二叉樹,它的每個(gè)頂點(diǎn)都滿足堆的特性如果v和p(v)分別是節(jié)點(diǎn)和它的父節(jié)點(diǎn),那么存儲(chǔ)在p(v)中的數(shù)據(jù)項(xiàng)的鍵值小于(或大于)存儲(chǔ)在v中的數(shù)據(jù)項(xiàng)的鍵值。如果父節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)的鍵值小于子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)的鍵值,那么則稱這個(gè)堆為最小堆,如果父節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)的鍵值大于子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)的鍵值,那么則稱這個(gè)堆為最大堆。按照最小堆的定義,在最小堆中鍵值最小的點(diǎn)應(yīng)該在根節(jié)點(diǎn)。將頂點(diǎn)誤差作為鍵值構(gòu)建的最小堆,其基本操作有三個(gè)創(chuàng)建、Sift-up(向上移)、Sift-down(向下移)。
(1)創(chuàng)建由于完全二叉樹具有這樣的性質(zhì)如果用連續(xù)的數(shù)組來(lái)表示二叉樹中的節(jié)點(diǎn),那么對(duì)于數(shù)組中任一位置i上的元素,其左子節(jié)點(diǎn)在位置2i上,其右子節(jié)點(diǎn)在(2i+1)中,其父節(jié)點(diǎn)在i/2。因此采用一個(gè)一維數(shù)組來(lái)表示堆數(shù)據(jù)結(jié)構(gòu)。對(duì)于給定的頂點(diǎn)數(shù)組,從最后一個(gè)節(jié)點(diǎn)開始到根節(jié)點(diǎn),逐個(gè)掃描所有的節(jié)點(diǎn),根據(jù)需要每一次將以當(dāng)前節(jié)點(diǎn)為根節(jié)點(diǎn)的子樹轉(zhuǎn)換成堆。
(2)Sift-up操作堆的定義中規(guī)定了父節(jié)點(diǎn)中的鍵值和子節(jié)點(diǎn)之間鍵值的關(guān)系,因此當(dāng)一個(gè)節(jié)點(diǎn)中的鍵值發(fā)生變化而破壞堆的這個(gè)性質(zhì)的時(shí)候,需要對(duì)堆中的數(shù)據(jù)進(jìn)行重新排列,使之重新達(dá)到上述性質(zhì)。對(duì)于最小堆來(lái)說(shuō),當(dāng)子節(jié)點(diǎn)的值小于父節(jié)點(diǎn)中的值的時(shí)候,那么這個(gè)節(jié)點(diǎn)需要和其父節(jié)點(diǎn)互換,即向上移動(dòng),稱之為Sift-up操作。例如,對(duì)于圖6中左邊的堆,如果節(jié)點(diǎn)32的值變成了10,此時(shí)需要不斷將節(jié)點(diǎn)10上移,直到移到根節(jié)點(diǎn)位置,重新保持最小堆性質(zhì)。
在這一過(guò)程中,最壞情況是堆中的最后一層元素中的一個(gè)變成最小的,此時(shí)需要將這個(gè)元素從最低層一直移動(dòng)到最高層,此時(shí)需要移動(dòng)的次數(shù)為logn,因此上述過(guò)程的最壞情況算法復(fù)雜度為O(logn)。
(3)Sift-down操作同理,如果處于父節(jié)點(diǎn)中的鍵值大于任何一個(gè)子節(jié)點(diǎn)中的鍵值,此時(shí)需要將該節(jié)點(diǎn)向下(即向孩子節(jié)點(diǎn)方向)移動(dòng),最終保持最小堆性質(zhì),稱之為Sift-down操作。該過(guò)程的最壞情況算法復(fù)雜度也為O(logn)。
所述的邊折疊的方法如下通過(guò)上面的誤差計(jì)算準(zhǔn)則計(jì)算出每一個(gè)頂點(diǎn)的誤差之后,可以選擇一個(gè)最小的誤差點(diǎn)進(jìn)行刪除,該點(diǎn)刪除的同時(shí)需要?jiǎng)h除所有與之相連的線和面,于是就形成了一個(gè)空洞,對(duì)于這個(gè)空洞需要重新進(jìn)行三角剖分,如圖7所示,當(dāng)A圖中頂點(diǎn)v0刪除后,形成圖B中的空洞,然后對(duì)其三角化形成圖C。從圖中不難看出,這一過(guò)程相當(dāng)于將邊v0v1進(jìn)行折疊(即點(diǎn)v0合并到點(diǎn)v1),但是從計(jì)算復(fù)雜度上來(lái)說(shuō),邊折疊的計(jì)算量比先刪除然后三角化要少。
折疊邊的選擇采取距離最小的原則,即選擇一條與最小點(diǎn)相連的并且長(zhǎng)度最小的邊,將該邊進(jìn)行折疊產(chǎn)生新的拓?fù)浣Y(jié)構(gòu)。
對(duì)于特殊頂點(diǎn)來(lái)說(shuō),并不是其所有的邊都可以進(jìn)行折疊,如圖8所示的拓?fù)浣Y(jié)構(gòu)中,當(dāng)邊(V1,V2)進(jìn)行折疊時(shí),形成右圖所示的拓?fù)浣Y(jié)構(gòu),此時(shí)原來(lái)的三角形面A(V1,V3,V4)的頂點(diǎn)V1應(yīng)該替換為V2,從而形成新的平面A′(V2,V3,V4),此平面和三角平面B(V3,V2,V4)相同,雖然從繪制的角度看,這兩個(gè)三角形一個(gè)為正面(面A,頂點(diǎn)順序?yàn)轫槙r(shí)針),一個(gè)為反面(面B,頂點(diǎn)順序?yàn)槟鏁r(shí)針),但從外觀看,這破壞了三角網(wǎng)格模型的流行性質(zhì),形成了一個(gè)獨(dú)立的三角形面片。
因此,規(guī)定邊(V1,V2)不能進(jìn)行折疊。一般來(lái)說(shuō),如果一條邊能夠折疊,那么這條邊的兩個(gè)頂點(diǎn)的鄰接頂點(diǎn)至多只能有兩個(gè)是相同的。具體解決方法為判斷這條邊的兩個(gè)頂點(diǎn)的鄰接頂點(diǎn)中相同頂點(diǎn)的數(shù)目是否超過(guò)2。對(duì)于上圖,邊(V1,V2)不能折疊,其中頂點(diǎn)V1的鄰接頂點(diǎn)為V2、V3、V4、V5、V6,頂點(diǎn)V2的鄰接頂點(diǎn)為V3、V4、V1、V6,二者相同的鄰接頂點(diǎn)為V3、V4、V6,超過(guò)2,所以不能進(jìn)行折疊。
本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點(diǎn)在于(1)本發(fā)明在誤差度量準(zhǔn)則中引入了對(duì)人的視覺(jué)系統(tǒng)敏感的重要幾何特征的度量,能夠根通過(guò)調(diào)整這些重要頂點(diǎn)的誤差值來(lái)改變邊折疊的次序,優(yōu)先保留細(xì)節(jié)特征和輪廓特征。在同等簡(jiǎn)化力度下能夠突出模型的細(xì)節(jié)特征、邊界以及輪廓特征。簡(jiǎn)化效果相對(duì)其他方法具有明顯優(yōu)勢(shì)。
(2)本發(fā)明作為一種自動(dòng)的網(wǎng)格簡(jiǎn)化算法,能夠在沒(méi)有用戶交互的前提下,自動(dòng)保留模型中人的視覺(jué)系統(tǒng)比較敏感的幾何特征。同時(shí)本發(fā)明能夠根據(jù)模型簡(jiǎn)化力度(百分比)的不同自動(dòng)調(diào)整頂點(diǎn)誤差各組成部分的權(quán)重,從而避免了在在模型分辨率較低的狀態(tài)下因過(guò)于注重保留邊界、輪廓、尖銳點(diǎn)等幾何特征而導(dǎo)致簡(jiǎn)化結(jié)果誤差過(guò)大的情況。
(3)本發(fā)明采用基于點(diǎn)到面距離平均值的方法來(lái)計(jì)算基本的誤差項(xiàng),計(jì)算量小,效率高。采用邊折疊的模型簡(jiǎn)化方法對(duì)模型要求低,它適用于任意二維流形的三角網(wǎng)格模型。同時(shí),邊折疊的簡(jiǎn)化方法在計(jì)算復(fù)雜度計(jì)算量比先刪除然后三角化要少;而且它屬于局部算法,算法簡(jiǎn)單、穩(wěn)定,易于實(shí)現(xiàn),能夠應(yīng)用于較大的模型。
(4)本發(fā)明的計(jì)算復(fù)雜度相對(duì)較低。模型化簡(jiǎn)的關(guān)鍵是采用何種方式計(jì)算幾何元素誤差。對(duì)于局部算法來(lái)說(shuō),這種計(jì)算所消耗的時(shí)間相對(duì)于整個(gè)過(guò)程來(lái)說(shuō)是非常小的,大部分時(shí)間消耗在查找最小誤差元素上;而由于本發(fā)明采用了最小堆這種數(shù)據(jù)結(jié)構(gòu),從而將這一比較耗時(shí)的查找操作的時(shí)間復(fù)雜度降到了O(nlognh)。同時(shí)這也是整個(gè)三維模型簡(jiǎn)化算法的時(shí)間復(fù)雜度。


圖1為本發(fā)明的頂點(diǎn)類型分析示意圖;
圖2為本發(fā)明的普通頂點(diǎn)的基本誤差計(jì)算示意圖;圖3為本發(fā)明的邊界頂點(diǎn)的基本誤差計(jì)算示意圖;圖4為本發(fā)明的誤差計(jì)算公式中頂點(diǎn)曲率變化項(xiàng)的計(jì)算示意圖;圖5為本發(fā)明的誤差計(jì)算公式中輪廓特征度量項(xiàng)的計(jì)算示意圖;圖6為本發(fā)明的堆的Sift-up操作示意圖;圖7本發(fā)明中的某個(gè)頂點(diǎn)刪除后所形成的空洞示意圖;圖8為本發(fā)明中的特殊頂點(diǎn)折疊過(guò)程示意圖;圖9Happy Buddha模型的簡(jiǎn)化結(jié)果圖。
具體實(shí)施例方式
下面結(jié)合實(shí)施例對(duì)本發(fā)明進(jìn)一詳細(xì)說(shuō)明本發(fā)明的三維模型原始數(shù)據(jù)采用斯坦福大學(xué)的PLY格式的三維模型Happy Buddha,原始模型含108,770個(gè)三角面片,其簡(jiǎn)化模型的步驟如下1.頂點(diǎn)類型分析,首先載入Happy Buddha三維模型,然后對(duì)該模型的頂點(diǎn)進(jìn)行連接性分析,將頂點(diǎn)分為普通頂點(diǎn)、邊界頂點(diǎn)、特殊頂點(diǎn)和孤立頂點(diǎn)四類。頂點(diǎn)類實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)見(jiàn)表1。
表1頂點(diǎn)類關(guān)鍵數(shù)據(jù)

2.基于視覺(jué)特征度量的誤差計(jì)算,根據(jù)1中的頂點(diǎn)分類,采用相應(yīng)的方式計(jì)算各個(gè)頂點(diǎn)的誤差,并保存在相應(yīng)的頂點(diǎn)中。對(duì)模型頂點(diǎn)列表中的每一個(gè)頂點(diǎn)的誤差其計(jì)算步驟如下(1)基本誤差計(jì)算
A.普通頂點(diǎn)的基本誤差計(jì)算,以圖二中的頂點(diǎn)V0為例,首先根據(jù)頂點(diǎn)V0的所有鄰接頂點(diǎn)V1、V2、V3、V4所組成的平面S123、S134、S124、S234計(jì)算頂點(diǎn)V0到這四個(gè)面的距離,然后求其平均值作為頂點(diǎn)V0的基本誤差值。
B.邊界頂點(diǎn)的基本誤差計(jì)算,以圖三中的頂點(diǎn)V0為例,V0點(diǎn)到其兩個(gè)鄰接的邊界頂點(diǎn)所組成的直線V1V2的距離作為該點(diǎn)的基本誤差。
C.特殊頂點(diǎn)的基本誤差計(jì)算,以圖一中的特殊頂點(diǎn)V為例,因?yàn)檫@類頂點(diǎn)不能刪除,所以直接給它的基本誤差項(xiàng)賦一無(wú)窮大的值,以保證該類頂點(diǎn)不會(huì)被刪除。
D.孤立頂點(diǎn)的基本誤差計(jì)算,以圖一中孤立頂點(diǎn)V為例,因?yàn)檫@類頂點(diǎn)可以直接刪除,所以直接給頂點(diǎn)V的基本誤差賦一無(wú)窮小的值,以保證這類頂點(diǎn)能夠被優(yōu)先刪除。
(2)頂點(diǎn)曲率變化程度的對(duì)誤差的貢獻(xiàn)值的計(jì)算Vdetail為頂點(diǎn)曲率變化程度的對(duì)誤差的貢獻(xiàn)值,曲率變化越大該值越大。其中Vdetail的計(jì)算公式如下Vdetail=Max(Acos(Vnormal·Fnormali));如圖四所示,Vnormal表示某一點(diǎn)的標(biāo)準(zhǔn)化后的法向量值,F(xiàn)normali表示與該點(diǎn)相相連接的第k個(gè)三角面片的標(biāo)準(zhǔn)化后的法向量值;Vnormal=1nΣk=1nfnormalk]]>(n為該點(diǎn)鄰接的三角面片的數(shù)量)。該誤差項(xiàng)的系數(shù)計(jì)算公式為 其中percent為模型的簡(jiǎn)化力度(百分比),并且規(guī)定若模型簡(jiǎn)化后的三角面片數(shù)少于1000則Weightdetail=0,以防止在模型分辨率較低的情況下由于過(guò)分保留模型尖銳特征而引起簡(jiǎn)化誤差反而增大的情況。
(3)模型輪廓特征對(duì)誤差的貢獻(xiàn)值的計(jì)算Voutline為模型輪廓特征對(duì)誤差的貢獻(xiàn)值,Vdetail的計(jì)算公式如下Voutline=Acos(Vnormal·Viewdirection);如圖5所示,Vnormal表示某一點(diǎn)的標(biāo)準(zhǔn)化后的法向量值,Viewdirection表示當(dāng)前的視點(diǎn)觀察方向。該誤差項(xiàng)的系數(shù)計(jì)算公式為 其中percent為模型的簡(jiǎn)化力度(百分比),并且規(guī)定當(dāng)Voutline∉[80180Π,12Π]]]>時(shí),Voutline=0,以防止在模型分辨率較低的情況下由于過(guò)分保留模型輪廓特征而引起簡(jiǎn)化誤差反而增大的情況。
3、構(gòu)建最小堆;在第2步已經(jīng)計(jì)算完的所有頂點(diǎn)的誤差基礎(chǔ)上,構(gòu)建頂點(diǎn)誤差的最小堆。
由于完全二叉樹具有這樣的性質(zhì)如果用連續(xù)的數(shù)組來(lái)表示二叉樹中的節(jié)點(diǎn),那么對(duì)于數(shù)組中任一位置i上的元素,其左子節(jié)點(diǎn)在位置2i上,其右子節(jié)點(diǎn)在(2i+1)中,其父節(jié)點(diǎn)在i/2」。因此我們可以使用一個(gè)一維數(shù)組來(lái)表示堆數(shù)據(jù)結(jié)構(gòu)。對(duì)于給定的頂點(diǎn)數(shù)組,從最后一個(gè)節(jié)點(diǎn)開始到根節(jié)點(diǎn),逐個(gè)掃描所有的節(jié)點(diǎn),根據(jù)需要每一次將以當(dāng)前節(jié)點(diǎn)為根節(jié)點(diǎn)的子樹轉(zhuǎn)換成堆。
4、邊折疊,其步驟為(1)在模型的頂點(diǎn)誤差的最小堆建立之后,可以選擇一個(gè)最小的誤差點(diǎn)進(jìn)行刪除。
(2)對(duì)于折疊邊的選擇采取距離最小的原則,即選擇一條與最小點(diǎn)相連的并且長(zhǎng)度最小的邊,將該邊進(jìn)行折疊產(chǎn)生新的拓?fù)浣Y(jié)構(gòu)。從圖7中不難看出,這一過(guò)程相當(dāng)于將邊v0v1進(jìn)行折疊(即點(diǎn)v0合并到點(diǎn)v1)。
對(duì)于特殊頂點(diǎn)來(lái)說(shuō),并不是其所有的邊都可以進(jìn)行折疊,如圖8所示的拓?fù)浣Y(jié)構(gòu)中,當(dāng)邊(V1,V2)進(jìn)行折疊時(shí),形成右圖所示的拓?fù)浣Y(jié)構(gòu),此時(shí)原來(lái)的三角形面A(V1,V3,V4)的頂點(diǎn)V1應(yīng)該替換為V2,從而形成新的平面A′(V2,V3,V4),此平面和三角平面B(V3,V2,V4)相同,雖然從繪制的角度看,這兩個(gè)三角形一個(gè)為正面(面A,頂點(diǎn)順序?yàn)轫槙r(shí)針),一個(gè)為反面(面B,頂點(diǎn)順序?yàn)槟鏁r(shí)針),但從外觀看,這破壞了三角網(wǎng)格模型的流行性質(zhì),形成了一個(gè)獨(dú)立的三角形面片。因此,規(guī)定邊(V1,V2)不能進(jìn)行折疊。一般來(lái)說(shuō),如果一條邊能夠折疊,那么這條邊的兩個(gè)頂點(diǎn)的鄰接頂點(diǎn)至多只能有兩個(gè)是相同的。具體解決方法為判斷這條邊的兩個(gè)頂點(diǎn)的鄰接頂點(diǎn)中相同頂點(diǎn)的數(shù)目是否超過(guò)2。對(duì)于上圖,邊(V1,V2)不能折疊,其中頂點(diǎn)V1的鄰接頂點(diǎn)為V2、V3、V4、V5、V6,頂點(diǎn)V2的鄰接頂點(diǎn)為V3、V4、V1、V6,二者相同的鄰接頂點(diǎn)為V3、V4、V6,超過(guò)2,所以不能進(jìn)行折疊。
(3)折疊后要改變鄰接頂點(diǎn)的連接性,該點(diǎn)刪除的同時(shí)需要?jiǎng)h除所有與之相連的線和面并重新計(jì)算受影響頂點(diǎn)的誤差;5、根據(jù)第4步更新后的頂誤差更新最小堆。
更新最小堆可能會(huì)涉及堆的兩個(gè)操作Sift-up操作和Sift-down操作。對(duì)于,Sift-up操作,如圖6中左邊的堆,如果節(jié)點(diǎn)32的值變成了10,此時(shí)需要不斷將節(jié)點(diǎn)10上移,直到移到根節(jié)點(diǎn)位置,重新保持最小堆性質(zhì)。同理如果處于父節(jié)點(diǎn)中的鍵值大于任何一個(gè)子節(jié)點(diǎn)中的鍵值,此時(shí)需要將該節(jié)點(diǎn)向下(即向孩子節(jié)點(diǎn)方向)移動(dòng)進(jìn)行Sift-down操作,最終保持最小堆性質(zhì)。
6、重復(fù)第4步,直到達(dá)到簡(jiǎn)化力度(簡(jiǎn)化百分比)的要求。
Happy Buddha模型的簡(jiǎn)化結(jié)果請(qǐng)參考圖9,其中A為模型原圖(1,087,716個(gè)面片);B為簡(jiǎn)化到原模型10%的結(jié)果(108,770個(gè)面片);C為簡(jiǎn)化到原模型5%的結(jié)果(54,384個(gè)面片);D為簡(jiǎn)化到原模型3%的結(jié)果(32,630個(gè)面片);E為簡(jiǎn)化到原模型1%的結(jié)果(10,876個(gè)面片)。
權(quán)利要求
1.基于視覺(jué)特征度量的三維模型簡(jiǎn)化方法,其特征在于包括下列步驟(1)頂點(diǎn)類型分析,對(duì)載入的三維模型的頂點(diǎn)進(jìn)行連接性分析,將頂點(diǎn)分為普通頂點(diǎn)、邊界頂點(diǎn)、特殊頂點(diǎn)和孤立頂點(diǎn)四類;(2)基于視覺(jué)特征度量的誤差計(jì)算,根據(jù)頂點(diǎn)類型計(jì)算頂點(diǎn)誤差,并保存在相應(yīng)的頂點(diǎn)中;(3)根據(jù)步驟(2)計(jì)算出的頂點(diǎn)誤差,構(gòu)建最小堆;(4)邊折疊,通過(guò)選擇最小誤差點(diǎn),即選擇最小誤差邊進(jìn)行邊折疊,并且折疊后要改變鄰接頂點(diǎn)的連接性,重新計(jì)算受影響頂點(diǎn)的誤差;(5)更新最小堆;(6)重復(fù)步驟(4),直到達(dá)到簡(jiǎn)化力度的要求。
2.根據(jù)權(quán)利要求1所述的基于視覺(jué)特征度量的三維模型簡(jiǎn)化方法,其特征在于所述的頂點(diǎn)類型分析的方法如下采用點(diǎn)表和面表的形式來(lái)表示的模型網(wǎng)格,頂點(diǎn)的連接性分析記錄每一個(gè)頂點(diǎn)的鄰接頂點(diǎn)信息、鄰接面信息,根據(jù)鄰接頂點(diǎn)和鄰接面的信息進(jìn)行頂點(diǎn)類型判斷普通頂點(diǎn)指三角形的內(nèi)部頂點(diǎn),并且這類頂點(diǎn)不包含特殊頂點(diǎn),在拓?fù)潢P(guān)系上表現(xiàn)為其鄰接頂點(diǎn)的數(shù)量和鄰接三角形面片的數(shù)量是相同的,并且不是特殊頂點(diǎn);邊界頂點(diǎn)指三角形的邊界上的點(diǎn),在拓?fù)潢P(guān)系上表現(xiàn)為其鄰接三角形面片的數(shù)量比鄰接頂點(diǎn)少一;特殊頂點(diǎn)是一類特殊的內(nèi)部頂點(diǎn),它與其中某一個(gè)鄰接頂點(diǎn)具有超過(guò)兩個(gè)相同的鄰接頂點(diǎn),它的刪除可能會(huì)導(dǎo)致三角網(wǎng)格性質(zhì)的變化;孤立頂點(diǎn)是一種無(wú)效的頂點(diǎn),它不與任何頂點(diǎn)組成三角面片,在模型中不起任何作用,是在建模過(guò)程中引入的不必要頂點(diǎn),可以直接刪除。
3.根據(jù)權(quán)利要求1所述的基于視覺(jué)特征度量的三維模型簡(jiǎn)化方法,其特征在于所述的基于視覺(jué)特征度量的誤差計(jì)算的方法如下基于視覺(jué)特征度量的誤差計(jì)算公式可表示為Verror=BaseError+weightdetail×Vdetail+weightoutline×Voutline;(1)BaseError為基本誤差成分,它根據(jù)頂點(diǎn)類型的不同,采用不同的方式進(jìn)行計(jì)算,對(duì)于普通頂點(diǎn),采用計(jì)算點(diǎn)到面距離的平均值,其中面指在該點(diǎn)的所有鄰接頂點(diǎn)中選三個(gè)組成一個(gè)面,計(jì)算該頂點(diǎn)到每個(gè)面的距,然后相加,并求其平均值。即BaseError=1nΣi=1nDisi,]]>其中n=CM3,]]>M為該點(diǎn)的鄰接點(diǎn)數(shù)目,Disi為該點(diǎn)到第i個(gè)面的距離;對(duì)于邊界頂點(diǎn),采用點(diǎn)到兩個(gè)鄰接的邊界頂點(diǎn)所組成的線的距離,其中V0點(diǎn)的誤差計(jì)算根據(jù)點(diǎn)V0到直線V1V2的距離;(2)Vdetail為頂點(diǎn)曲率變化程度的對(duì)誤差的貢獻(xiàn)值,其中Vdetail的計(jì)算公式如下Vdetail=Max(Acos(Vnormal·Fnormali)),Vnormal表示某一點(diǎn)的標(biāo)準(zhǔn)化后的法向量值,F(xiàn)normali表示與該點(diǎn)相相連接的第k個(gè)三角面片的標(biāo)準(zhǔn)化后的法向量值;Vnormal=1nΣk=1nfnormalk,]]>n為該點(diǎn)鄰接的三角面片的數(shù)量;(3)Voutline為模型輪廓特征對(duì)誤差的貢獻(xiàn)值,Vdetail的計(jì)算公式如下Voutline=Acos(Vnormal·Viewdirection);Vnormal表示某一點(diǎn)的標(biāo)準(zhǔn)化后的法向量值,Viewdirection表示當(dāng)前的視點(diǎn)觀察方向;(4)Weightdetail,Weightoutline均為誤差項(xiàng)的系數(shù),計(jì)算公式如下 其中percent為模型的簡(jiǎn)化力度百分比。
4.根據(jù)權(quán)利要求1所述的基于視覺(jué)特征度量的三維模型簡(jiǎn)化方法,其特征在于所述的根據(jù)頂點(diǎn)誤差大小構(gòu)建最小堆的方法如下有創(chuàng)建、向上移Sift-up)、向下移Sift-down;(1)創(chuàng)建如果用連續(xù)的數(shù)組來(lái)表示二叉樹中的節(jié)點(diǎn),那么對(duì)于數(shù)組中任一位置i上的元素,其左子節(jié)點(diǎn)在位置2i上,其右子節(jié)點(diǎn)在(2i+1)中,其父節(jié)點(diǎn)在i/2,因此采用一個(gè)一維數(shù)組來(lái)表示堆數(shù)據(jù)結(jié)構(gòu);對(duì)于給定的頂點(diǎn)數(shù)組,從最后一個(gè)節(jié)點(diǎn)開始到根節(jié)點(diǎn),逐個(gè)掃描所有的節(jié)點(diǎn),根據(jù)需要每一次將以當(dāng)前節(jié)點(diǎn)為根節(jié)點(diǎn)的子樹轉(zhuǎn)換成堆;(2)Sift-up操作當(dāng)子節(jié)點(diǎn)的值小于父節(jié)點(diǎn)中的值的時(shí),這個(gè)節(jié)點(diǎn)需要和其父節(jié)點(diǎn)互換,即向上移動(dòng),稱之為Sift-up操作;(3)Sift-down操作當(dāng)處于父節(jié)點(diǎn)中的鍵值大于任何一個(gè)子節(jié)點(diǎn)中的鍵值,需要將該節(jié)點(diǎn)向下,即向孩子節(jié)點(diǎn)方向移動(dòng),最終保持最小堆性質(zhì),稱之為Sift-down操作。
5.根據(jù)權(quán)利要求1所述的基于視覺(jué)特征度量的三維模型簡(jiǎn)化方法,其特征在于所述的邊折疊的方法如下(1)在模型的頂點(diǎn)誤差的最小堆建立之后,可以選擇一個(gè)最小的誤差點(diǎn)進(jìn)行刪除;(2)對(duì)于折疊邊的選擇采取距離最小的原則,即選擇一條與最小點(diǎn)相連的并且長(zhǎng)度最小的邊,將該邊進(jìn)行折疊產(chǎn)生新的拓?fù)浣Y(jié)構(gòu);(3)折疊后要改變鄰接頂點(diǎn)的連接性,該點(diǎn)刪除的同時(shí)需要?jiǎng)h除所有與之相連的線和面并重新計(jì)算受影響頂點(diǎn)的誤差。
全文摘要
基于視覺(jué)特征度量的三維模型簡(jiǎn)化方法,其特征在于包括下列步驟(1)頂點(diǎn)類型分析,對(duì)載入的三維模型的頂點(diǎn)進(jìn)行連接性分析,將頂點(diǎn)分為普通頂點(diǎn)、邊界頂點(diǎn)、特殊頂點(diǎn)和孤立頂點(diǎn)四類;(2)基于視覺(jué)特征度量的誤差計(jì)算,根據(jù)頂點(diǎn)類型計(jì)算頂點(diǎn)誤差,并保存在相應(yīng)的頂點(diǎn)中;(3)根據(jù)步驟(2)計(jì)算出的頂點(diǎn)誤差,構(gòu)建最小堆;(4)邊折疊,通過(guò)選擇最小誤差點(diǎn),即選擇最小誤差邊進(jìn)行邊折疊,并且折疊后要改變鄰接頂點(diǎn)的連接性,重新計(jì)算受影響頂點(diǎn)的誤差;(5)更新最小堆;(6)重復(fù)步驟(4),直到達(dá)到簡(jiǎn)化力度的要求。本發(fā)明它在誤差計(jì)算方法中引入了對(duì)視覺(jué)特征的度量,能夠改變邊折疊的次序,從優(yōu)先保留模型中視覺(jué)系統(tǒng)敏感的幾何特征,在保證算法效率的同時(shí)降低了簡(jiǎn)化結(jié)果與原模型在視覺(jué)上的誤差。
文檔編號(hào)G06T15/10GK1866299SQ20061008943
公開日2006年11月22日 申請(qǐng)日期2006年6月27日 優(yōu)先權(quán)日2006年6月27日
發(fā)明者趙沁平, 李帥 申請(qǐng)人:北京航空航天大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
北辰区| 陆良县| 九龙城区| 玉山县| 翼城县| 龙岩市| 尼勒克县| 丰宁| 利津县| 嘉黎县| 兴隆县| 青阳县| 措美县| 新闻| 团风县| 富顺县| 琼中| 肃宁县| 长宁区| 太谷县| 太湖县| 基隆市| 西昌市| 女性| 隆子县| 平阳县| 介休市| 新余市| 马公市| 邯郸市| 自治县| 天津市| 临城县| 灵石县| 曲水县| 邵东县| 台安县| 高雄县| 宜州市| 会理县| 张家口市|