国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于Octree的三維模型壓縮編/解碼方法

      文檔序號:6560968閱讀:241來源:國知局
      專利名稱:一種基于Octree的三維模型壓縮編/解碼方法
      技術領域
      本發(fā)明屬于計算機圖形學技術領域,具體地說,是一種基于Octree的三維模型壓縮編/解碼方法,應用于各種三維模型的網(wǎng)絡發(fā)布。
      背景技術
      當前各種高級造型工具的不斷涌現(xiàn)和三維外形掃描數(shù)據(jù)技術的日益成熟使得人們對幾何數(shù)據(jù)的精度和細節(jié)都提出了更高的要求,這同時也導致了三維幾何數(shù)據(jù)的規(guī)模和復雜程度急劇增長,龐大的幾何數(shù)據(jù)量對現(xiàn)有的三維圖形引擎的處理能力和速度提出了巨大的挑戰(zhàn)。另一方面,Internet的迅猛發(fā)展也使得三維幾何數(shù)據(jù)的應用越來越廣泛。但是網(wǎng)絡帶寬的限制嚴重阻礙了這種媒體的傳播。如果僅僅依靠增加硬件設備的投入是不足以解決這一問題的,需要人們研究針對三維幾何數(shù)據(jù)的壓縮編碼技術。
      當前對拓撲的壓縮已接近理論極限,而幾何壓縮正在成為研究的熱點,并且?guī)缀涡畔⒃谌S模型文件中占據(jù)的空間是最大的,相對拓撲壓縮來說,幾何壓縮還有很大的研究空間。另外,大多數(shù)人的方法是以拓撲壓縮算法為主導,幾何頂點位置往往依附于模型的拓撲關系來編碼,這在很大程度上制約了幾何信息可壓縮的空間。因此目前國際上的研究熱點轉為以幾何信息的壓縮為主導,并以幾何壓縮驅動拓撲信息的壓縮,這樣總體上能達到更高的壓縮收益。
      在已有的幾何驅動編碼中,頻域編碼雖然有很高的編碼效率,但是它們只適合于流形網(wǎng)格,計算開銷很大,在壓縮比比較大時失真嚴重,而且是一種有損壓縮。由于本項研究需要到達無損壓縮的效果,所以不考慮頻域的方法。在空間域方法中,Kdtree和Octree等空間劃分的方法逐漸成為壓縮編碼領域的研究熱點,一方面這種樹形結構能很好的重新組織幾何數(shù)據(jù),另一方面只要劃分足夠精細就能夠做到無損壓縮。所以這一類壓縮方法能夠滿足人們的需求。
      最新的文獻J.Peng,C.-C.J.Kuo,Geometry-guided progressivelossless 3D mesh coding with octree(OT)decomposition.ACM Transactionson Graphics,vol.24,no.3,pp.609-616,2005.表示Octree壓縮方法比Kdtree壓縮方法能達到更低的壓縮比特率。目前為止有以下幾篇文獻使用到Octree(1)J.Peng,C.-C.J.Kuo,Geometry-guided progressive Iossless 3D meshcoding with octree(OT)decomposition.ACM Transactions on Graphics,vol.24,no.3,pp.609-616,2005.;(2)D.Saupe,J.-P.Kuska,Compression ofisosurfaces for structured volumes.In Proceedings of Vision,Modeling andVisualization,pp.333-340,2001;(3)M.Botsch,A.Wiratanaya,and L.Kobbelt.Efficient high quality rendering of point sampled geometry.InEGRW’02Proceedings of the 13th Eurographics workshop on Rendering,pp.53-64,2002.;(4)D.Laney,M.Bertram,M.Duchaineau,and N.Max.Multiresolution distance volumes for progressive surface compression.InProceedings of the First International Symposium on 3D Data Processing,Visualization,and Transmission,pp.470-479,2002.。
      文獻2、3是針對isosurface的,這類模型不太常見;文獻4的方法使用的是判斷子樹是否非空來編碼,但是其缺點是編碼沒有優(yōu)化,而且在點采樣網(wǎng)格中沒有必要使用拓撲編碼;文獻1的Peng的OT Compression方法目前來說是最好的,但是該方法在遞進顯示過程中缺乏優(yōu)化操作,即他采用固定的順序或者說無序的方式進行恢復操作,在網(wǎng)格恢復的過程中不能保證以較佳的效果呈現(xiàn)在用戶面前。另外該方法只完成了幾何、拓撲信息的編碼,并沒有對屬性信息進行遞進壓縮編碼。

      發(fā)明內容
      本發(fā)明的技術解決問題克服現(xiàn)有技術的不足,提供一種基于Octree的三維模型壓縮編/解碼方法,該方法壓縮比很高,并且適合網(wǎng)絡遞進傳輸,滿足了當前大數(shù)據(jù)量的三維數(shù)據(jù)存儲及網(wǎng)絡傳輸?shù)男枨蟆?br> 本發(fā)明的技術解決方案基于Octree的三維網(wǎng)格模型編/解碼方法,其特征在于包括以下步驟(1)對三維網(wǎng)格模型的頂點信息重新進行Octree空間劃分,統(tǒng)計分析其中各種不同類型的節(jié)點,找出占總節(jié)點數(shù)目比例最多的一類或幾類節(jié)點,單獨對其使用較少的比特位進行幾何信息編碼;(2)根據(jù)幾何信息的傳輸順序,重新排列拓撲信息和屬性信息并編碼;(3)設置單獨的遞進文件用來控制幾何信息傳輸、顯示以及解碼時拓撲、屬性信息的同步映射。
      在所述步驟(1)中的幾何信息編碼方法為對得到的Octree中子節(jié)點中只有一個非空的節(jié)點單獨使用3位記錄,其他類型的節(jié)點使用8位來記錄,依此原則對Octree進行廣度優(yōu)先策略遍歷記錄數(shù)據(jù)流,并對得到的數(shù)據(jù)流進行二次熵編碼。
      在所述步驟(2)中在對拓撲和屬性信息編碼之前按照Octree中葉節(jié)點從左到右的順序,對其中的頂點索引重新排列得到新的頂點序列,并且根據(jù)新頂點序列更新原始拓撲、屬性信息中頂點索引值。
      在所述步驟(3)中采用的遞進文件生成方法為只編碼Octree中每個非空節(jié)點所包含頂點的個數(shù)。
      在所述步驟(3)中所采取的遞進顯示策略為在客戶端模型更新顯示的次數(shù)等于Octree的深度,即只在Octree每一層數(shù)據(jù)傳輸結束時更新顯示。
      本發(fā)明與現(xiàn)有技術相比的有益效果(1)Octree子分過程能產(chǎn)生豐富的信息,而且空間劃分效率較高,收斂速度快,客戶端響應等待時間短并能控制對模型解碼的精細程度,能更有效的進行幾何和拓撲編碼。
      (2)壓縮程度可以進行有效控制,一般能達到無損壓縮程度,如果設置較小的Octree深度值也能得到更大壓縮比率的有損壓縮。
      (3)設計了優(yōu)化的遞進顯示策略,使得客戶端圖形界面不僅很快就能得到圖形顯示,并且所展示的圖形恢復過程比較合乎人眼的視覺習慣。


      圖1為本發(fā)明基于Octree的三維網(wǎng)格模型編/解碼方法中幾何數(shù)據(jù)編解/碼流程圖;圖2為本發(fā)明的Octree構造過程(為作圖方便,使用四叉樹代替Octree,每一次劃分得到的四個子空間中左上角序號為1,右上角序號為2,左下角序號為3,右下角序號為4);圖3為本發(fā)明的幾何文件的編碼格式;圖4為本發(fā)明的遞進文件的編碼格式;圖5為本發(fā)明的無紋理的Bunny模型在客戶端的遞進顯示過程;圖6為本發(fā)明的有紋理的兵馬俑模型在客戶端的遞進顯示過程。
      具體實施例方式
      本發(fā)明采用如下步驟(1)幾何信息壓縮編碼如圖1所示,本發(fā)明的基于Octree的三維網(wǎng)格模型壓縮編/解碼中的幾何信息壓縮編/解碼的流程圖。首先對輸入的三維網(wǎng)格模型中的頂點集合進行Octree分解,得到含有頂點的Octree數(shù)據(jù)結構,然后對該Octree進行編碼得到bit流A,這個流中含有冗余數(shù)據(jù),必須對其進行再次編碼壓縮,本發(fā)明選擇接近熵編碼理論極限的算術編碼對其壓縮,得到bit流B。bit流B可結合拓撲及屬性數(shù)據(jù)在Internet上發(fā)布后,客戶端一旦得到bit流數(shù)據(jù),就對其進行解碼,得到bit流A’,然后恢復出Octree并計算頂點的坐標。解碼是編碼的逆過程,其方法與編碼相似。
      如圖2所示,為Octree的構造過程。為了作圖方便,這里使用四叉樹代替Octree,每一次劃分得到的四個子空間中左上角序號為1,右上角序號為2,左下角序號為3,右下角序號為4。假設每個節(jié)點中含有n個非空子節(jié)點,其子節(jié)點分布情況的種數(shù)為C8n。進一步分析Octree節(jié)點類型,發(fā)現(xiàn)在所有的節(jié)點中,只有1個子節(jié)點非空的節(jié)點特別多。將這些占總節(jié)點數(shù)較多的節(jié)點挑選出來單獨編碼,可進一步節(jié)省存儲空間。對于只有1個子節(jié)點非空的節(jié)點(以下簡稱M節(jié)點),只有C81種不同的情況,那么只需要3位(bit)即可對該類型節(jié)點編碼。下面進行收益分析。
      不考慮統(tǒng)計特性,每個子節(jié)點均用8bits編碼。若使用上述改進編碼,需增加1bit的判斷位(實際操作中不需要增加判斷位,見(3)(C)所述方法),如判斷位為0表示當前節(jié)點是M節(jié)點,用3bits表示;判斷位為1代表當前節(jié)點是非M節(jié)點,用8bits表示。假設M節(jié)點在所有節(jié)點中的概率為P,則使用改進編碼平均每個節(jié)點所需位數(shù)為(1+3)×P+(1+8)×(1-P)=9-5P若要使改進編碼比原編碼短,即9-5P<8,P>20%。實際對于一般模型在子樹劃分過程中,M節(jié)點很多,通常都大大超過20%,如bunny模型,其M節(jié)點占總節(jié)點數(shù)的75%,這樣的收益是很大的。在本方法中采用M節(jié)點3bits、非M節(jié)點8bits來編碼幾何數(shù)據(jù)。對于M節(jié)點,3bits所表示的十進制值為m,則表示該M節(jié)點8個子節(jié)點中第m個子節(jié)點非空;對于非M節(jié)點,8bits中為1的子節(jié)點表示非空,為0的子節(jié)點為空。
      幾何文件格式如圖3所示。幾何文件后綴名為.geo,除幾何信息主體外,還包含72bytes的文件頭信息,和一個文件結尾標志符。其中文件頭中包含模型頂點數(shù)目、面片數(shù)目、模型中心點坐標、初始包圍盒大小以及Octree每一層的節(jié)點個數(shù)。
      (2)拓撲數(shù)據(jù)和屬性數(shù)據(jù)遞進編碼在上述第一步建立Octree的過程中,每個節(jié)點包含一個頂點集合,設為SVertPerNode,該集合中實際記錄的是頂點的原始索引值,拓撲數(shù)據(jù)和屬性數(shù)據(jù)中對應的頂點也是按照原始的頂點索引值記錄的。但是.geo編碼文件并不按照原始頂點索引順序編碼,而是按照Octree廣度優(yōu)先遍歷遞進編碼的,所以在幾何數(shù)據(jù)遞進編碼的情況下,拓撲數(shù)據(jù)和屬性數(shù)據(jù)無法與之對應。這里采用的方法是在編碼之前就對頂點索引進行重排,即按照Octree中葉節(jié)點從左到右的順序,對其中的頂點索引重新排列得到新的頂點序列,并且根據(jù)新頂點序列更新原始拓撲、屬性信息中頂點索引值。
      當客戶端對幾何數(shù)據(jù)進行遞進解碼時,三維網(wǎng)格模型中的原始拓撲數(shù)據(jù)的排列順序不能與幾何數(shù)據(jù)流同步顯示。為解決這一問題,可對照原始拓撲信息,找出SVertPerNode中哪些頂點能夠成一個三角面片。每個節(jié)點有一個域值記錄了這些三角面片的索引集合,設為STriPerNode,其中每個元素為一個三元組[a,b,c],a,b,c為頂點索引。在對Octree進行廣度優(yōu)先遍歷的時候,后面節(jié)點的STriPerNode中會出現(xiàn)重復的三角形索引。本方法設置了一個數(shù)組DirtyFlag可跳過重復三角形索引,DirtyFlag的元素個數(shù)與三角面片個數(shù)相同,它用來記錄當前三角面片是否已經(jīng)被記錄,如果當前面片尚未記錄,則加入遞進顯示的面片列表,如果已經(jīng)記錄了,則不加入。假設當前節(jié)點的非空子節(jié)點為ChildNodek(0≤k≤8),a屬于ChildNodeka,b屬于ChildNodekb,c屬于ChildNodekc,遞進顯示的面集合為Lprogress,下面算法為構造Lprogress的過程loop每一個節(jié)點Nodeloop STriPerNode中每一個元素if(ka?。絢b)且(kb!=kc)且(ka?。絢c)if DirtyFlag[STriPerNode[i]]==falseDirtyFlag[STriPerNode[i]]=trueAdd STriPerNode[i]to Lprogress遍歷所有節(jié)點后,Lprogress中的面片排列順序即為遞進顯示的拓撲順序。最終生成的拓撲文件后綴名為.con,其記錄了熵編碼后遞進顯示的拓撲信息。
      屬性信息包含法向量,紋理等。法向量信息通過客戶端解碼實時計算產(chǎn)生,不需要額外的編碼文件。紋理信息包含二維紋理坐標、三維紋理坐標索引和紋理圖片三部分信息,其中前兩者采用和拓撲信息遞進類似的方法遞進編碼,紋理圖片則預先一次性傳輸?shù)娇蛻舳恕W罱K生成的屬性文件后綴名為.nor,其記錄了熵編碼后遞進顯示的二維紋理坐標和三維紋理坐標索引信息。
      (3)遞進數(shù)據(jù)
      Octree的子分結果將幾何數(shù)據(jù)分為不同的層次,這將產(chǎn)生不同分辨率的幾何圖形。在幾何編碼時并不需要編碼每個非空節(jié)點所包含的頂點索引值,而只需編碼每個非空節(jié)點所包含頂點的個數(shù)。其作用主要有三個(A)記錄頂點個數(shù)足以確定頂點序號。在(2)中按照Octree中葉節(jié)點從左到右的順序,對其中的頂點索引重新排列得到新的頂點序列。記錄當前節(jié)點所含頂點的個數(shù),再結合同一層前面節(jié)點所含頂點個數(shù),即能確定當前頂點的索引。假設當前層第一個節(jié)點所含頂點個數(shù)為n1,第m個節(jié)點所含頂點個數(shù)為nm,第m個節(jié)點所含頂點的索引起始值為indexmStart,最后一個索引為indexmEnd,并假設頂點索引從“1”開始,則indexmStart=(&Sigma;i=1m-1ni)+1,indexmEnd=(&Sigma;i=1m-1ni)+nm]]>(B)不需額外標志位判斷是否一層已遍歷完。假設模型頂點總數(shù)為nv,Octree每一層所有節(jié)點所包含的頂點個數(shù)和都等于nv。根據(jù)這一原則設置一個計數(shù)器counter就能在幾何數(shù)據(jù)流讀取過程中自行判斷當前層的節(jié)點是否讀完Counter=0loop讀取節(jié)點信息if counter<nvcounter=counter+當前節(jié)點包含的頂點個數(shù)else一層已遍歷完counter=0通過設置計數(shù)器減少了幾何文件中設置判斷位的存儲開銷。
      (C)不需額外標志位判斷當前節(jié)點是哪一種節(jié)點。在(1)中將節(jié)點分為兩類M節(jié)點和非M節(jié)點,并采用1bit來判斷當前節(jié)點屬哪一類。在遞進文件中使用一個整型數(shù)據(jù)記錄當前節(jié)點所包含的頂點個數(shù),通過設定該整型值的正負來判斷節(jié)點類型,正數(shù)表示M節(jié)點,負數(shù)表示非M節(jié)點。這樣減少了幾何文件中設置判斷位的存儲開銷。
      最終生成的遞進文件后綴名為.pro,其記錄了熵編碼后上述遞進顯示信息,如圖4所示。
      (4)多分辨率顯示策略客戶端解碼顯示圖形時,并不是接收一個節(jié)點信息即刷新顯示。通過判斷Octree一層是否已遍歷完,來決定是否更新顯示。即判斷接受數(shù)據(jù)流中當前已傳輸過來的節(jié)點所包含的頂點個數(shù),如果其頂點個數(shù)達到nv,則表明Octree一層結束,即將開始下一層節(jié)點傳輸,此時在客戶端刷新顯示。若Octree共有12層,則客戶端只需刷新顯示12次即可。這種顯示策略節(jié)省了客戶端的計算開銷,并且避免了顯示時模型某些地方精細、某些地方粗糙的現(xiàn)象。
      圖5所示為bunny模型經(jīng)過壓縮編碼之后通過網(wǎng)絡傳輸,客戶端對其解碼的情況。隨著后臺數(shù)據(jù)流的不斷傳輸,客戶端逐漸顯示出逼近原始模型形狀的三維模型。(a)、(b)、(c)、(d)、(e)、(f)6幅小圖為Octree在不同層次解碼完畢時所顯示的圖形。在數(shù)據(jù)傳輸期間用戶就可對模型進行交互操作,并可隨時中止數(shù)據(jù)流的傳輸。
      本方法也支持帶紋理的模型遞進傳輸。圖6所示為帶紋理的兵馬俑模型經(jīng)過壓縮編碼之后通過網(wǎng)絡傳輸,客戶端對其解碼的情況。
      權利要求
      1.一種基于Octree的三維模型壓縮編/解碼方法,其特征在于包括以下步驟(1)對三維網(wǎng)格模型的頂點信息重新進行Octree空間劃分,統(tǒng)計分析其中各種不同類型的節(jié)點,找出占總節(jié)點數(shù)目比例最多的一類或幾類節(jié)點,單獨對其使用較少的比特位進行幾何信息編碼;(2)根據(jù)幾何信息的傳輸順序,重新排列拓撲信息和屬性信息并編碼;(3)設置單獨的遞進文件用來控制幾何信息傳輸、顯示以及解碼時拓撲、屬性信息的同步映射。
      2.根據(jù)權利要求1所述的一種基于Octree的三維模型壓縮編/解碼方法,其特征在于在所述步驟(1)中的幾何信息編碼方法為對得到的Octree中子節(jié)點中只有一個非空的節(jié)點單獨使用3位記錄,其他類型的節(jié)點使用8位來記錄,依此原則對Octree進行廣度優(yōu)先策略遍歷記錄數(shù)據(jù)流,并對得到的數(shù)據(jù)流進行二次熵編碼。
      3.根據(jù)權利要求1所述的一種基于Octree的三維模型壓縮編/解碼方法,其特征在于在所述步驟(2)中在對拓撲和屬性信息編碼之前按照Octree中葉節(jié)點從左到右的順序,對其中的頂點索引重新排列得到新的頂點序列,并且根據(jù)新頂點序列更新原始拓撲、屬性信息中頂點索引值。
      4.根據(jù)權利要求1所述的一種基于Octree的三維模型壓縮編/解碼方法,其特征在于在所述步驟(3)中采用的遞進文件生成方法為只編碼Octree中每個非空節(jié)點所包含頂點的個數(shù)。
      5.根據(jù)權利要求1所述的一種基于Octree的三維模型壓縮編/解碼方法,其特征在于在所述步驟(3)中所采取的遞進顯示策略為在客戶端模型更新顯示的次數(shù)等于Octree的深度,即只在Octree每一層數(shù)據(jù)傳輸結束時更新顯示。
      全文摘要
      本發(fā)明是一種基于Octree的三維模型壓縮編/解碼方法。當前龐大的三維數(shù)據(jù)對現(xiàn)有圖形引擎的處理能力和處理速度提出了巨大的挑戰(zhàn),而Internet的迅猛發(fā)展也使得三維數(shù)據(jù)的應用越來越廣泛。本發(fā)明對三維網(wǎng)格模型的頂點信息重新進行Octree空間劃分,統(tǒng)計分析其中各種不同類型的節(jié)點,找出占總節(jié)點數(shù)目比例最多的一類或幾類節(jié)點,單獨對其使用較少的比特位編碼。根據(jù)幾何信息的傳輸順序,重新排列拓撲信息和屬性信息并編碼。設置單獨的遞進文件用來控制幾何信息傳輸、顯示以及解碼時拓撲、屬性信息的同步映射。本壓縮編/解碼方法空間劃分效率高,收斂速度快,客戶端響應等待時間短并能控制對模型解碼的精細程度。
      文檔編號G06T9/40GK1946180SQ200610114098
      公開日2007年4月11日 申請日期2006年10月27日 優(yōu)先權日2006年10月27日
      發(fā)明者趙沁平, 齊越, 沈旭昆, 蔡蘇 申請人:北京航空航天大學
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1