基于面片鏈碼的三維網格模型表示方法
【技術領域】
[0001] 本發(fā)明涉及一種三維網格模型的表示方法。
【背景技術】
[0002] 鏈碼是用曲線起始點的坐標和邊界點方向代碼來描述曲線或邊界的方法,常被用 來在圖像處理、計算機圖形學、模式識別等領域中表示曲線和區(qū)域邊界。它是常用的表示線 條、平面曲線及區(qū)域邊界的編碼技術,用邊界方向作為編碼依據,為簡化邊界的描述,一般 描述的是邊界點集。
[0003] 常用的鏈碼有:Freeman鏈碼、頂點鏈碼、角度差Freeman鏈碼、基于一小段直線段 的新鏈碼、基于頂點鏈碼及Huffman編碼思想的壓縮頂點鏈碼等。
[0004] Freeman鏈碼至今仍然是一個被廣泛使用的最主要的鏈碼編碼方法,該鏈碼沿著 數字曲線或邊界像素以8鄰接的方式移動,每一個移動方向由數字集Uli = 0, 1,2,……7} 進行編碼,表示與X軸正向的45 ° X i夾角,稱為八方向Freeman鏈碼。在角度差Freeman鏈 碼中,第一個碼值仍然采用8方向Freeman鏈碼,其余每個碼值則采用它與其前一個碼值的 相對角度差進行編碼,該角度差Freeman鏈碼基于最常用的8方向Freeman鏈碼和Huffman 編碼思想,編碼時考慮到各碼值出現(xiàn)的不同概率,其碼值C0、CU C2、C3、C4、C5、C6、C7分別 表示角度差值 0。、45。、-45。、90。、-90。、135。、-135°、180。。
[0005] 目前,最常用的三維體素鏈碼編碼方法主要有26方向Freeman鏈碼、用鏈碼描 述基于體素構成的三維樹狀模型以及基于體素方向變化編碼的相對鏈碼方法等。26方向 Freeman鏈碼的鏈碼元素表明三維空間中體素的26種方向。三維樹狀模型以及基于體素方 向變化編碼的相對鏈碼方法定義的鏈碼共有〇, 1,2, 3和4五個元素,分別表明由體素構成 的連續(xù)直線段的兩個發(fā)生直角變化的方向,稱為50T。
[0006] 但是,上述鏈碼方法的應用有的是局限于簡單輪廓及二值圖像的編碼及壓縮中, 有的雖然是在三維模型表示中的應用,可依然還局限于特定的形狀描述,如三維數字曲線、 三維樹狀模型等。即使是對三維模型的表示,也是基于體素進行描述。因此,這些方法都是 基于二維中的像素延伸到對三維中的體素進行的編碼。這些基于體素的三維模型邊界的鏈 碼表示方法,其表面只有水平和垂直的兩種四邊形面組成,不能很好地表示真實物體的表 面。
[0007] 鑒于此,本發(fā)明提出面片鏈碼的方法,實現(xiàn)對三維物體模型的表示,不僅使表示的 三維模型更逼近真實物體的表面,而且為三維模型提供了一種新的表示方法,同時,極大地 提高了三維模型表示的數據的壓縮率。
【發(fā)明內容】
[0008] 本發(fā)明目的在于提供一種更逼近真實物體表面、極大提高三維模型表示數據壓縮 率的基于面片鏈碼的三維網格模型表示方法。
[0009] 為實現(xiàn)上述目的,采用了以下技術方案:本發(fā)明表示方法如下:
[0010] (1)輸入待編碼的三維模型;
[0011] (2)將三維圖形空間用平行于坐標面的平面劃分成均勻的立方體小格,所述立方 體小格稱為體素;
[0012] 其中,每個體素有8個頂點,8個頂點中任意3個頂點相連即可組成一個三角面片, 每個體素中共存在56個位置固定的三角面片,對每個三角面片用一組二進制數進行編碼 表不;
[0013] (3)在三維物體模型的邊界體素上找一個與物體表面最接近的三角面片來表示該 部分三維表面;
[0014] (4)以此類推,按順序逐層地將這些三角面片連接起來,所有三角面片組成三角面 片鏈碼,用三角面片鏈碼來表示整個三維物體模型。
[0015] 三角面片鏈碼的編碼是對體素中的三角面片進行編碼;所述三角面片鏈碼中的每 個元素均由連接邊標識和下一個三角面片編號兩部分組成;
[0016] 所述連接邊是由一個三角面片過渡到下一個三角面片時兩個三角面片的公共 邊;
[0017] 所述連接邊標識,任何一條當前連接邊均有兩個端點,從當前三角面片向下一三 角面片過渡時,當前連接邊兩個端點中的一個端點必然成為下一條連接邊的一個端點,以 該端點作為下一條連接邊端點時,則此時連接邊標識為〇 ;以另一個端點作為下一條連接 邊端點時,則此時連接邊標識為1 ;
[0018] 所述三角面片的編號,在每個體素中,將同一方向的連接邊歸結為一類,得到共13 類連接邊,13類連接邊中每一類連接邊作為一條邊的所有三角面片只是一個體素中的56 個三角面片的子集;三角面片的編號取決于連接邊的類型;通過最多4位二進制數對每一 類連接邊中三角面片子集的每個三角面片分別進行編號;
[0019] 三角面片鏈碼的編碼是由連接邊標識的1位二進制數加上下一個三角面片編號 的最多4位二進制數組成的一組最多5位二進制數,通過連接邊標識確定一類連接邊,三角 面片的編碼一類連接邊對應固定數目和位置的三角面片,每個三角面片均有各自的編碼; 三維物體模型采用三角面片鏈碼進行表示。
[0020] 13類連接邊的定義,設連接邊為e,X為X軸上數值,y為y軸上數值,z為z軸上 數值,所述13類連接邊的表述如下:
[0021] (1)第1類連接邊ei為點(X,y,z)到點(x+1,y,z)的線段;
[0022] (2)第2類連接邊e2為點(X,y,z)到點(X,y+1,z)的線段;
[0023] (3)第3類連接邊e3為點(X,y,z)到點(X,y,z+1)的線段;
[0024] (4)第4類連接邊e4為點(X,y,z)到點(x+1,y+1,z)的線段;
[0025] (5)第5類連接邊e5為點(X,y,z)到點(x+1,y-1,z)的線段;
[0026] (6)第6類連接邊e6為點(X,y,z)到點(X,y+1,z+1)的線段;
[0027] (7)第7類連接邊e7為點(X,y,z)到點(X,y+1,z-Ι)的線段;
[0028] (8)第8類連接邊es為點(X,y,z)到點(x+1,y,z+1)的線段;
[0029] (9)第9類連接邊e9為點(X,y,z)到點(x+1,y,z-Ι)的線段;
[0030] (10)第10類連接邊e!。為點(X,y,z)到點(x+1,y-1,z+1)的線段;
[0031] (11)第11類連接邊en為點(X,y,z)到點(x+1,y+1,z+1)的線段;
[0032] (12)第12類連接邊e12為點(x,y,z)到點(x-1,y+1,ζ+l)的線段;
[0033] (13)第13類連接邊e13為點(x,y,z)到點(x+1,y+1,ζ-l)的線段。
[0034] 與現(xiàn)有技術相比,本發(fā)明具有如下優(yōu)點:
[0035] 1、在三維模型的表示中,省略掉現(xiàn)有方法中的數據量最大的點表,而只使用了相 當于其面表的面片鏈碼表,為三維模型提供了一種新的表示方法,極大地節(jié)省三維模型表 示的數據量。
[0036] 2、使表示的三維模型更逼近真實物體的表面,在計算機圖形學、虛擬現(xiàn)實、科學計 算、CAD、CAM、幾何律樽、動畫、游戲、仿直、教育、醫(yī)療等三維樽銦廣泛應用的領域中具備廣 闊的應用前景。
【附圖說明】
[0037] 圖1是本發(fā)明方法的處理過程框圖。
[0038] 圖2是本發(fā)明方法中面片鏈碼元素的數據結構圖。
[0039] 圖3是連接邊標識定義的表示圖。
[0040] 圖4是連接邊標識定義的解釋圖。
[0041] 圖5是13類連接邊的類型圖。
[0042] 圖6是第1類連接邊所對應的三角面片位置表示圖。
[0043] 圖7是第2類連接邊所對應的三角面片位置表示圖。
[0044] 圖8是第3類連接邊所對應的三角面片位置表示圖。
[0045] 圖9是第4類連接邊所對應的三角面片位置表示圖。
[0046] 圖10是第5類連接邊所對應的三角面片位置表示圖。
[0047] 圖11是第6類連接邊所對應的三角面片位置表示圖。
[0048] 圖12是第7類連接邊所對應的三角面片位置表示圖。
[0049] 圖13是第8類連接邊所對應的三角面片位置表示圖。
[0050] 圖14是第9類連接邊所對應的三角面片位置表示圖。
[0051] 圖15是第10類連接邊所對應的三角面片位置表示圖。
[0052] 圖16是第11類連接邊所對應的三角面片位置表示圖。
[0053] 圖17是第12類連接邊所對應的三角面片位置表示圖。
[0054] 圖18是第13類連接邊所對應的三角面片位置表示圖。
[0055] 圖19是實施本發(fā)明硬件連接框圖。
【具體實施方式】
[0056] 下面結合附圖對本發(fā)明做進一步說明:
[0057] 如圖1所示,本發(fā)明所述基于面片鏈碼的三維網格模型表示方法,表示方法如下:
[0058] (1)輸入待編碼的三維模型;
[0059] (2)將三維圖形空間用平行于坐標面的平面劃分成均勻的立方體小格,所述立方 體小格稱為體素;
[0060] 其中,每個體素有8個頂點,8個頂點中任意3個頂點相連即可組成一個三角面片, 每個體素中共存在56個位置固定的三角面片,對每個三角面片用一組二進制數進行編碼 表不;
[0061] (3)在三維物體模型的邊界體素上找一個與物體表面最接近的三角面片來表示該 部分三維表面;
[0062] (4)以此類推,按順序逐層地將這些三角面片連接起來,所有三角面片組成三角面 片鏈碼,用三角面片鏈碼來表示整個三維物體模型。
[0063] 如圖2所示,三角面片鏈碼的編碼是對體素中的三角面片進行編碼;所述三角面 片鏈碼中的每個元素均由連接邊標識和下一個三角面片編號兩部分組成;
[0064] 所述連接邊是由一個三角面片過渡到下一個三角面片時兩個三角面片的公共 邊;
[0065] 所述連接邊標識,任何一條當前連接邊均有兩個端點,從當前三角面片向下一三 角面片過渡時,當前連接邊兩個端點中的一個端點必然成為下一條連接邊的一個端點,以 該端點作為下一條連接邊端點時,則此時連接邊標識為〇 ;以另一個端點作為下一條連接 邊端點時,則此時連接邊標識為1 ;如圖3所示,用V表示頂點,f表示面片,設f2為當前面 片由有序的頂點vl, v2和v3組成,Π 是上一個面片,則邊vlv2就是當前連接邊;下一個面 片如果是f3,則連接邊標識為0 ;如果是f4,則連接邊標識為1。連接邊標識的定義如圖4 所示。
[0066] 要把整個三維模型表示出來,面片是按順序走起來的,并且是逐層進行,一層表示 完再表示到上一層。這樣,下一個連接邊只能是v2v3