两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種二維矢量數(shù)據(jù)的壓縮方法

文檔序號:7508603閱讀:278來源:國知局
專利名稱:一種二維矢量數(shù)據(jù)的壓縮方法
技術(shù)領(lǐng)域
本發(fā)明涉及信息處理領(lǐng)域,特別是一種二維矢量數(shù)據(jù)的壓縮方法。
背景技術(shù)
1.GIS中二維矢量數(shù)據(jù)的特點及對其進行壓縮的必要性二維空間矢量數(shù)據(jù)是當(dāng)前地理信息系統(tǒng)所管理和應(yīng)用的主要數(shù)據(jù)類型之一,具有數(shù)據(jù)量大、分布不均勻、拓撲關(guān)系復(fù)雜等特點。GIS中矢量數(shù)據(jù)一般由坐標串的形式表示,其中的坐標數(shù)據(jù)一般為浮點格式,隨著獲取數(shù)據(jù)的能力提高以及用戶對數(shù)據(jù)精度的要求,為了更好地表達現(xiàn)實地理世界,GIS矢量數(shù)據(jù)量極為龐大,需要大量的存儲和傳輸資源。在地理信息的網(wǎng)絡(luò)服務(wù)(參見文獻[1])等新興的GIS應(yīng)用領(lǐng)域,矢量數(shù)據(jù)需要經(jīng)由帶寬受限和不穩(wěn)定的Internet連接傳送給用戶,需要傳送的矢量數(shù)據(jù)的數(shù)據(jù)量大小成為決定應(yīng)用成敗的關(guān)鍵,直接采用原始的坐標數(shù)據(jù)作為二維空間矢量數(shù)據(jù)的載體無法滿足要求。
在圖像、視頻和音頻等多媒體數(shù)據(jù)領(lǐng)域,目前均有成熟的國際標準,如JPEG、JPEG2000、MPEG1/2/4、H.263/4等等。這些標準在提供了一種對龐大的多媒體數(shù)據(jù)的有效的具備高壓縮比和高性能的壓縮方法的同時,也提供了巨大的商業(yè)機會,使得基于這些多媒體數(shù)據(jù)的在線瀏覽和實時應(yīng)用成為可能。對GIS矢量數(shù)據(jù),目前還沒有這樣一種專門的壓縮方法能夠在不損失矢量數(shù)據(jù)所蘊涵的地理信息的前提下有效地減小矢量數(shù)據(jù)的數(shù)據(jù)量。這不僅影響了空間數(shù)據(jù)的存儲和管理效率,也成為地理信息網(wǎng)絡(luò)服務(wù)的瓶頸,大大阻礙了地理信息系統(tǒng)與Internet分布式應(yīng)用的結(jié)合。
在這一背景之下,通過對二維空間矢量數(shù)據(jù)內(nèi)部的復(fù)雜性分析和信息構(gòu)成的分解以及對現(xiàn)有多媒體壓縮技術(shù)的利用和在矢量數(shù)據(jù)壓縮方面的革新,本發(fā)明提出了對二維矢量數(shù)據(jù)進行基于塊變換編碼的壓縮方法。
2.二維矢量數(shù)據(jù)的特點分析及壓縮方案選擇與圖像數(shù)據(jù)相比,二維矢量數(shù)據(jù)具有復(fù)雜的內(nèi)部結(jié)構(gòu)。矢量數(shù)據(jù)文件由位于地圖繪制范圍內(nèi)部所有感興趣的矢量對象構(gòu)成,這些矢量對象內(nèi)部的點的排列是有序的,然而矢量對象在矢量數(shù)據(jù)文件內(nèi)部的排列則是無序的。
眾所周知,在圖像數(shù)據(jù)中,其冗余的一個主要表現(xiàn)形式就是相鄰象素之間灰度值上的相關(guān)性。現(xiàn)行的圖像壓縮國際標準采用了塊變換編碼方法,通過將圖像數(shù)據(jù)從空間域變換為頻率域近似不相關(guān)的變換系數(shù),然后對變換系數(shù)進行獨立的標量量化來利用這種相關(guān)性。這一方法避免了直接采用理論上最優(yōu)的但是計算量太大的矢量量化方法,同時也有效利用了原始數(shù)據(jù)內(nèi)部的相關(guān)性,是一種實際的“最優(yōu)”方案。
我們發(fā)現(xiàn),在構(gòu)成矢量數(shù)據(jù)的采樣點坐標序列數(shù)據(jù)中也存在著很強的長序列相關(guān)性,因而也存在著大量的冗余。作為現(xiàn)實地理世界的數(shù)字化表示,這些坐標序列表明了地理對象(如河流、道路等)的變化趨勢。由于平緩性變化和周期性變化在地理對象中的大量存在,使得矢量數(shù)據(jù)內(nèi)部采樣點坐標數(shù)據(jù)序列也具有了相應(yīng)的特點并表現(xiàn)出我們前面所說的相關(guān)性,也表明對矢量數(shù)據(jù)進行壓縮是可行的。
對矢量數(shù)據(jù)進行壓縮并不是直接將成熟的圖像數(shù)據(jù)壓縮算法移植到矢量數(shù)據(jù)上那么簡單。無論數(shù)據(jù)量多么大的圖像數(shù)據(jù)都可以看成一個具有若干個分量(如RGB)的二維矩陣,而這種規(guī)則的內(nèi)部結(jié)構(gòu)是矢量數(shù)據(jù)所不具備的。因此,尋求矢量數(shù)據(jù)的有效壓縮表示,必須充分考慮到矢量數(shù)據(jù)的結(jié)構(gòu)對壓縮算法和壓縮性能的影響。
在選擇矢量數(shù)據(jù)壓縮方案中所采用的線性變換時,如眾多圖像壓縮算法一樣我們也采用了DCT(離散余弦變換,英文縮寫)變換。盡管從去相關(guān)的意義上講KL變換(Kahunen-Loéve)是最優(yōu)的線性變換[2],但是KL變換的變換矩陣與所需要進行處理的數(shù)據(jù)的統(tǒng)計特征有關(guān),不能事先確定,并且其計算到目前為止尚不存在快速算法。理論證明對一階Markov信號,當(dāng)其相關(guān)系數(shù)ρ接近于1時DCT變換是對KL變換的良好的近似。實驗表明對矢量數(shù)據(jù)采用一階Markov過程進行建模時其相關(guān)系數(shù)確實很接近于1,并且由于DCT變換矩陣可以事先確定,其計算有多種快速算法,因此從理論上到實踐上采用DCT變換對矢量數(shù)據(jù)進行壓縮都是可行的。
3.量化與二維矢量數(shù)據(jù)壓縮的失真量化過程會產(chǎn)生精度的損失,盡量減少失真是二維矢量數(shù)據(jù)壓縮追求的目標之一。目前在多媒體數(shù)據(jù)的有損壓縮中多采用MSE(Mean Square Error,均方誤差)作為失真度量[3],也有其它的準則,這些準則各有其優(yōu)缺點。如MSE準則,它具有計算簡單,物理意義明確、便于進行優(yōu)化等優(yōu)點,它突出的缺點則是在某些方面與人類感知特性不符合,較大的MSE值不一定對應(yīng)了較差的感知質(zhì)量。此外,MSE體現(xiàn)了一種“平均”的效果,即整體的失真達到了所給定的標準,因此,MSE無法對單個象素或者音頻采樣值的誤差進行局部的控制,可能在重建圖像或者重建音頻中有個別的數(shù)據(jù)誤差較顯著,但是整體上卻是符合失真控制的要求的。
對矢量數(shù)據(jù)的DCT變換系數(shù),采用不同的量化表進行均勻量化會得到不同的壓縮結(jié)果,得到不同的失真。本專利申請,不特別指定量化表,也不特別指定失真的度量標準。
4.矢量數(shù)據(jù)的漸進壓縮和傳輸漸進壓縮和傳輸是近年來應(yīng)用于多媒體數(shù)據(jù)的一項新興的技術(shù),其特點是根據(jù)用戶的要求以及網(wǎng)絡(luò)帶寬、顯示和計算設(shè)備的能力等因素,傳輸合適大小的數(shù)據(jù)給用戶。這一傳輸過程隨時可以由用戶所中止,而所獲得的數(shù)據(jù)則構(gòu)成了原多媒體數(shù)據(jù)的一個壓縮的表示。這一技術(shù)的優(yōu)點在于用戶可以實時地獲得原始數(shù)據(jù)的壓縮表示,而不必等待整個數(shù)據(jù)傳輸完成,這對于低帶寬的用戶是尤其重要的。這一技術(shù)的運用需要對多媒體數(shù)據(jù)進行內(nèi)在的組合,JPEG2000圖像壓縮標準對這一技術(shù)提供了良好的支持(參見文獻[4])。
對于矢量數(shù)據(jù),很多研究者提出的漸近傳輸方案僅限于對空間數(shù)據(jù)點的取舍和傳輸,也就是說僅限于空間域的漸進表示,它與矢量數(shù)據(jù)現(xiàn)有的原始的存儲方式密切相關(guān)的。由于沒有深入的矢量數(shù)據(jù)頻率域表示方式作為支撐,因此這些漸進傳輸方案無法涉及到在矢量數(shù)據(jù)頻率域表示基礎(chǔ)上開展的頻率域漸進傳輸方式。
綜合以上來看,將變換編碼方法應(yīng)用于二維空間矢量數(shù)據(jù)的壓縮,其技術(shù)關(guān)鍵在于矢量數(shù)據(jù)的頻率域分析、冗余分析、矢量數(shù)據(jù)壓縮失真的評定、適合于矢量數(shù)據(jù)編碼的碼率分配算法、矢量數(shù)據(jù)頻率域漸近傳輸?shù)鹊?。就以上這些問題,目前研究者還沒有提出完整的解決方案,只是在對空間數(shù)據(jù)庫、空間數(shù)據(jù)網(wǎng)絡(luò)服務(wù)、WebGIS等等的研究中有所涉及,但是沒有進行深入的研究,更加沒有形成系統(tǒng)的方法。

發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是通過對二維空間矢量數(shù)據(jù)的頻率域分析和信息構(gòu)成的分解,借鑒多媒體壓縮技術(shù),提出矢量數(shù)據(jù)壓縮方案,提供一種基于變換編碼的新型二維空間矢量數(shù)據(jù)壓縮方法,實現(xiàn)二維矢量數(shù)據(jù)的快速和有效的存儲、管理和傳輸。
本發(fā)明解決上述技術(shù)問題的技術(shù)方案是將二維矢量數(shù)據(jù)分塊后,使用基于DCT變換的編碼方法對二維矢量數(shù)據(jù)進行有損壓縮,并輸出為指定格式的二進制位流。
本發(fā)明提出的對二維矢量數(shù)據(jù)進行基于變換編碼的壓縮方法,具有以下顯著的效果其一.經(jīng)過測試,在對等高線、道路網(wǎng)、水系等范圍廣泛的自然形成的矢量數(shù)據(jù)達到了近20的壓縮比的情況下,其信噪比高達60dB,最大絕對失真僅為原矢量數(shù)據(jù)動態(tài)范圍的10-5數(shù)量級左右;其二.對二維空間矢量數(shù)據(jù)的自適應(yīng)分塊在不破壞空間數(shù)據(jù)自身的復(fù)雜結(jié)構(gòu)的同時生成了適合于塊變換編碼的矢量數(shù)據(jù)塊;其三.采用合適的量化方法,可以控制重建誤差,從而控制壓縮過程中所產(chǎn)生的失真;其四.結(jié)合空間域和頻率域的漸進壓縮技術(shù),為靈活和高效的矢量數(shù)據(jù)漸近傳輸提供技術(shù)基礎(chǔ)。通過結(jié)合空間域和頻率域矢量數(shù)據(jù)的表示所提出的新的更加高效的漸近傳輸方案可以更好地滿足用戶的需求。


圖1本發(fā)明壓縮方法的基本流程2分塊算法框圖,其中N為2n,n為壓縮前指定。
圖3矢量數(shù)據(jù)壓縮主程序框圖。
圖4按照給定精度將壓縮矢量數(shù)據(jù)塊進行分節(jié)示意圖。
圖5jvg壓縮文件結(jié)構(gòu)。
圖6壓縮前的數(shù)據(jù)。
圖7壓縮后解壓得到的數(shù)據(jù)。
圖8壓縮前和壓縮后數(shù)據(jù)的重疊顯示。其中壓縮前為黑色,壓縮后為灰色,灰色線旁邊的黑色點以及短線為失真導(dǎo)致的不完全一致。
圖9放大3倍后的一個局部數(shù)據(jù)重疊顯示。
圖10放大8倍后的一個局部數(shù)據(jù)重疊顯示。
具體實施例方式
下面結(jié)合實例及附圖對本發(fā)明作進一步說明。
本發(fā)明是一種二維空間矢量數(shù)據(jù)的壓縮方法,具體是首先將原始矢量數(shù)據(jù)劃分為矢量數(shù)據(jù)塊,再按照兩種模式之一對矢量數(shù)據(jù)塊進行基于DCT變換的有損壓縮,然后對得到的DCT變換系數(shù)進行熵編碼得到壓縮矢量數(shù)據(jù)塊,最后將所有壓縮矢量數(shù)據(jù)塊組織為指定格式的二進制位流,圖1是本發(fā)明中壓縮方法的基本流程圖。
本發(fā)明采用如下步驟對二維矢量數(shù)據(jù)壓縮。
一.二維矢量數(shù)據(jù)集分割為矢量數(shù)據(jù)塊(簡稱分塊)1.二維矢量數(shù)據(jù)的整理本發(fā)明所處理的原始矢量數(shù)據(jù)是一個包含一個或多個幾何對象(一般是多個)的數(shù)據(jù)集,可以是一個文件,也可以是二進制或文本數(shù)據(jù)流。一個幾何對象由一個或者多個獨立的部分組成(例如,帶有島的多邊形、河流的分叉等),每個部分由數(shù)量不等的點按照存儲的順序連接而成。
如果要壓縮的數(shù)據(jù)不符合上述模型,采用本發(fā)明技術(shù)前,必須預(yù)先進行整理,或者在實施壓縮的過程中實時整理為指定的格式。
2.二維矢量數(shù)據(jù)集劃分為矢量數(shù)據(jù)塊將二維矢量數(shù)據(jù)劃分為矢量數(shù)據(jù)塊的過程就是將每個幾何對象分別按照壓縮算法的需要劃分為相同大小的多個矢量數(shù)據(jù)塊。為了便于進行DCT變換的快速計算,每個矢量數(shù)據(jù)塊中都含有2n個二維數(shù)據(jù)點,n為大于1的整數(shù),在壓縮前指定。
為了與矢量數(shù)據(jù)的原有結(jié)構(gòu)相一致,分塊在矢量對象內(nèi)部進行。幾何對象(及其各個部分)中存儲的點的數(shù)目不可能都是2n的倍數(shù),從各個部分順序提取矢量數(shù)據(jù)塊后,對各個部分剩余的點,人為補充足夠數(shù)量的點以構(gòu)成一個完整的矢量數(shù)據(jù)塊,分塊算法見圖2。圖2中的N為2n。分塊算法依次遍歷一個幾何對象的每個部分,按點的原始順序提取2n大小的矢量數(shù)據(jù)塊,其中所有點完全來自某一個部分的矢量數(shù)據(jù)塊,稱為GDB(GeometryData Block)。對每個部分提取GDB后剩余的不足2n的點,人為補充足夠數(shù)量的點后再構(gòu)成一個完整的矢量數(shù)據(jù)塊,稱為GSDB(Geometry Supplement Data Block)。補充的點的坐標等于GSDB中原有的所有點的坐標的平均值。對GDB和GSDB兩種矢量數(shù)據(jù)塊的壓縮是一樣的,但是在形成的壓縮矢量數(shù)據(jù)文件中,壓縮矢量數(shù)據(jù)塊的頭部包含了指示該塊的類型以及該塊中實際包含的數(shù)據(jù)點的數(shù)量的信息。
二.基于DCT變換的有損壓縮(簡稱編碼)參見圖3,采用下述步驟對矢量數(shù)據(jù)壓縮。
1.DCT變換對所有矢量數(shù)據(jù)塊,選擇兩種模式之一對x和y坐標數(shù)據(jù)分別進行一維DCT變換。第一種模式是首先對矢量數(shù)據(jù)塊的數(shù)據(jù)進行量化,然后對量化數(shù)據(jù)進行無損的整數(shù)DCT變換;第二種模式是直接使用有損的浮點DCT變換,變換之后進行量化,如果不考慮浮點運算中的舍入誤差,浮點DCT變換也可以看成是無損的,但是后續(xù)的對變換系數(shù)的量化則是有損的。
一維序列x(i),i=0,1,ΛN-1的DCT變換及逆變換為X(k)=ckΣi=0N-1x(i)cos(2i+1)kπ2N]]>x(i)=Σk=0N-1ckX(k)cos(2i+1)kπ2N]]>其中c0=1/N,ck=2/N,1≤k≤N-1.]]>整數(shù)DCT變換由浮點DCT變換推導(dǎo)而得,具體可以參見文獻[6]。本專利并不限制具體使用的整數(shù)DCT變換的類型以及其中的參數(shù),只要正向整數(shù)DCT變換(Forward IntegerDCT)和逆向整數(shù)DCT變換(Inverse Integer DCT)相互對應(yīng)即可。
2.量化及其重建第一種模式中的量化,以x分量的均勻量化為例,其方法是假定當(dāng)前的矢量數(shù)據(jù)在x方向的范圍為[XMIN,XMAX],指定x數(shù)據(jù)的量化步長為Δx,那么對所有矢量數(shù)據(jù)塊中的x數(shù)據(jù)進行以下的量化 其中 是向下取整運算,后繼的變換和編碼對qx(i)進行,并且是無損的。
對壓縮矢量數(shù)據(jù)文件解壓后得到了qx(i),將其重建為原量化區(qū)間中點,也就是x^(i)=qx(i)Δx+XMIN]]>第二種模式中的量化,以x分量的均勻量化為例,其方法是假設(shè)當(dāng)前的矢量數(shù)據(jù)經(jīng)過浮點DCT變換后的DCT系數(shù)是X(k),k=0,1,Λ,N-1,指定量化步長為Δix,那么對所有X(k)進行以下的量化 其中 是向下取整運算,后繼的編碼對Qx(k),k=0,1,Λ,N-1進行,并且是無損的。要注意此時對于x坐標數(shù)據(jù)的不同的變換系數(shù)其量化步長一般是不同的,而不象直接對坐標數(shù)據(jù)進行量化那樣只有一個量化步長。
同樣地,對壓縮矢量數(shù)據(jù)文件解壓后得到QX(k),將其重建為原量化區(qū)間中點,也就是X^(k)=QX(k)ΔkX]]>注意無論是第一種模式還是第二種模式,對矢量數(shù)據(jù)塊的有損壓縮都得到了一組整數(shù)DCT變換系數(shù)。在后繼的無損熵編碼(第一層編碼)中將不再區(qū)分這兩種模式,而統(tǒng)一地將這些系數(shù)稱為整數(shù)DCT變換系數(shù)。對于有損量化,本專利并不特別指定量化的步長和量化失真的度量,不同的量化步長會產(chǎn)生不同的量化失真,在不同的失真度量下壓縮效果也不盡相同。如何通過設(shè)定失真度量和優(yōu)化量化方法,是本專利的壓縮技術(shù)框架下開放的內(nèi)容。
量化的參數(shù)一般是隨矢量數(shù)據(jù)的不同而不同的,不同的量化參數(shù)將產(chǎn)生不同的量化變換系數(shù)和最后的壓縮效果,因此本專利也不特別限定特別的量化參數(shù),專利的用戶可以根據(jù)需要選擇量化參數(shù)或選擇參數(shù)的方法。
3.DC系數(shù)的處理DCT變換系數(shù)可以分為兩類,第一個系數(shù)稱為DC系數(shù),是參加變換的所有數(shù)據(jù)的均值;其它的系數(shù)稱為AC系數(shù)。由于DC系數(shù)直接與矢量數(shù)據(jù)塊的位置相關(guān),因此同一個幾何對象的所有矢量數(shù)據(jù)塊的DC系數(shù)之間往往具有很強的相關(guān)性,適合于采用預(yù)測編碼來進行壓縮。在本發(fā)明中,在一個幾何對象(包括其多個部分)中,除了第一個矢量數(shù)據(jù)塊中的DC系數(shù)之外,對所有后繼矢量數(shù)據(jù)塊的DC系數(shù)均計算其與前一個壓縮數(shù)據(jù)塊的DC系數(shù)的差值,然后對該差值進行霍夫曼編碼。
差值霍夫曼編碼表的示例見附表1。該表的第一列是行號,第三列是該行的霍夫曼碼字,每行包含整數(shù)區(qū)間(-(2i-1),+(2i-1)),但是不包含中間區(qū)間(-(2i-1-1),+(2i-1-1))。對差值進行編碼的碼字包括兩個部分,第一部分為該差值所在行的一元霍夫曼碼字;第二部分是該差值的二進制反碼(不需要符號位)。對于一個幾何對象中第一個矢量數(shù)據(jù)塊中的DC系數(shù),直接使用該表進行編碼。該編碼方法可以參見文獻[6]。DC系數(shù)的差值霍夫曼編碼可舉例說明如下。假定當(dāng)前幾何對象中第一個矢量數(shù)據(jù)塊的DC系數(shù)為1787,第二個矢量數(shù)據(jù)塊的DC系數(shù)為1783,對第一個矢量數(shù)據(jù)塊的DC系數(shù)進行直接編碼得到111111110|11011111011,第二個矢量數(shù)據(jù)塊中實際編碼的是這兩者之間的差值-4,編碼為100|011。
4.第一層編碼對每個矢量數(shù)據(jù)塊,經(jīng)過第一種模式或者第二種模式的有損壓縮后都將得到兩個整數(shù)DCT變換系數(shù)塊(分別對應(yīng)于x和y坐標數(shù)據(jù))。該塊的第一個分量是DC系數(shù),其處理已經(jīng)在前面論述,剩下的所有AC系數(shù)按照如下方式進行無損的游程霍夫曼編碼。
首先將AC系數(shù)塊分割為(非零系數(shù),零游程長度)對。零游程長度表示在該非零系數(shù)前面為零的AC系數(shù)的個數(shù)。對每個對,首先找到非零系數(shù)在差值霍夫曼編碼表中的行數(shù)R,然后在游程霍夫曼編碼表中找到對應(yīng)于Z/R(Z為行號,R為列號)位置的碼字,其中Z為零游程的長度。在該表中,R從1開始計數(shù),Z從0開始計數(shù)。該碼字后面加上非零系數(shù)的反碼(不需要符號位)就是這個對的編碼。AC系數(shù)塊最后的一串零(個數(shù)不定,也可能是0個)以EOB(End Of Block,塊結(jié)束)表示。游程霍夫曼編碼表包括了(零游程長度,非零系數(shù)所在行)對和EOB的霍夫曼碼字。一個游程霍夫曼編碼表的示例見附表2。AC系數(shù)塊的游程霍夫曼編碼可舉例說明如下。假定DCT變換塊的尺寸N=16,欲編碼的AC系數(shù)塊為10,0,0,2,0,0,0,0,0,0,0,0,0,0,0,那么該塊被劃分為2個(非零系數(shù),零游程長度)對和一個EOB。第一個非零系數(shù)10的前面沒有零系數(shù),它位于差值霍夫曼編碼表中第4行,因此在游程霍夫曼編碼表中其對應(yīng)的碼字是在0/4處的1011,其編碼為1011|110。同樣得到后面的非零系數(shù)2的編碼為11111001|10。最后這串AC系數(shù)被編碼為101111011111001101010其中最后的1010是EOB的編碼。
此外,零游程的長度不得超出15,如果超出則用一個碼字ZRL來表示之,并重新開始對零游程長度計數(shù)。舉例來說,假如兩個非零AC系數(shù)之間有17個零AC系數(shù),那么被分割為一個ZRL和一個零游程長度為2的(非零系數(shù),零游程長度)對。
5.第二層編碼假如在第一層編碼結(jié)束后直接將得到的位流輸出為二進制文件,那么所得到的壓縮矢量文件將具有唯一的精度。只有將整個文件解壓縮之后,才能得到具有給定精度的解壓矢量文件,而僅僅解壓一部分壓縮位流則得不到對原矢量文件的有意義的表示。通過對壓縮位流的重新組織,可以使壓縮位流進行部分解壓后,得到較低精度或者較小范圍的解壓矢量文件。而如果用戶需要更高精度或者更大范圍的矢量數(shù)據(jù),則可以進一步對剩下的壓縮位流進行解壓直至結(jié)尾。這一組織方式使得壓縮位流具有漸進性質(zhì),用戶可以按照其需要選擇相應(yīng)的位流進行解壓,而不必一定要對整個文件進行解壓才可以使用。上述按照矢量數(shù)據(jù)的精度或者范圍對壓縮位流進行組織以使得輸出位流具有近似的漸進性質(zhì)的過程稱為第二層編碼。
第二層編碼通過對壓縮矢量數(shù)據(jù)塊的分割實現(xiàn)。假定原壓縮矢量數(shù)據(jù)所達到的精度為εtotal,該εtotal指解壓后的所有數(shù)據(jù)點與原數(shù)據(jù)點之間在x方向和y方向誤差不超出的某一事先給定的閾值(例如,10-5)。給定一組S個從低到高的精度等級{ε1,ε2,Λ,εS},其中εS=εtotal。那么所有壓縮矢量數(shù)據(jù)塊都將被分割為S節(jié),使得當(dāng)僅解壓第1節(jié)時,解壓數(shù)據(jù)達到了ε1的精度等級,依次類推。同樣地,對整個壓縮矢量數(shù)據(jù)文件,當(dāng)將其中所有的壓縮矢量數(shù)據(jù)塊都解壓到第k(1≤k≤S)個精度等級時,整個解壓矢量數(shù)據(jù)文件也達到了第k個精度等級。因此將壓縮矢量文件(或者其某個范圍,在下文中說明)的所有壓縮矢量數(shù)據(jù)塊中屬于第k節(jié)的壓縮位流的集合稱為該壓縮矢量文件(或者其某個范圍)的第k段。在分割單個壓縮矢量數(shù)據(jù)塊后形成的節(jié)中包含了若干個(非零系數(shù),零游程長度)對的編碼,也可能是零個,但是分割不能打斷(非零系數(shù),零游程長度)對的編碼。形成節(jié)之后在這些節(jié)的最后必須加上EOB的碼字(在上面的例子中,是1010),假如該節(jié)是空的,那么直接用EOB表示該節(jié)。一個具有五個精度等級的分割的示意圖見圖4。精度等級的確定以及根據(jù)確定的精度等級對壓縮矢量數(shù)據(jù)塊進行分割的方式都可以由應(yīng)用所指定,不是本專利的內(nèi)容。
本發(fā)明中對矢量數(shù)據(jù)進行第二層編碼有兩種方式,分別是精度優(yōu)先方式以及范圍優(yōu)先方式。在精度優(yōu)先方式中,整個矢量數(shù)據(jù)的低精度版本首先被解壓,然后解壓的數(shù)據(jù)將逐步提高整個矢量數(shù)據(jù)的精度。在范圍優(yōu)先方式中,首先將整個矢量數(shù)據(jù)分割為幾個范圍,所有范圍互不重疊,都是由若干個幾何對象組成。然后對每個范圍實行精度優(yōu)先的組織。范圍的劃分由應(yīng)用確定,不是本專利的內(nèi)容。由于精度優(yōu)先方式也可以看作是將整個文件視為一個范圍,因此可以認為壓縮矢量數(shù)據(jù)位流由一個或者多個范圍組成,而一個范圍則由一個或者多個段組成。
下面舉例說明這兩種第二層編碼方式。假定有矢量數(shù)據(jù)A中包含了三個幾何對象A1,A2,A3。所有幾何對象都被按照三個精度層次劃分為三節(jié),即Aiji,j=1,2,3,表示第i個幾何對象的第j節(jié)。在范圍優(yōu)先方式下A被分割為兩個范圍,分別包含幾何對象A1,A2和幾何對象A3。如果按照精度優(yōu)先方式,那么在壓縮文件中所有節(jié)的排列方式為A11,A21,A31,A12,A22,A32,A13,A23,A33如果按照范圍優(yōu)先方式,那么在壓縮文件中所有節(jié)的排列方式為A11,A21,A12,A22,A13,A23,A31,A32,A33三.壓縮矢量數(shù)據(jù)的輸出對所有壓縮矢量數(shù)據(jù)塊,在給定的編碼方式下添加各種標記和控制信息并進行組織后就形成了最后的矢量數(shù)據(jù)壓縮文件,稱為jvg文件,由文件頭和文件體組成(見圖5)。下面對jvg文件的格式作詳細的說明。所有的字節(jié)均具有Intel平臺上使用的littleendian字節(jié)順序(最顯著位在字節(jié)的最后面)。
參見附表3,壓縮文件的文件頭包含了如下的兩部分第一部分是關(guān)于壓縮矢量數(shù)據(jù)文件整體以及所采取的壓縮算法的信息。
這一部分是必需的。這里以及在后續(xù)碼流的形成中用到的標記由兩個字節(jié)組成,其中第一個字節(jié)為0XFF,第二個字節(jié)在除了0X00和0XFF(即全0和全1的字節(jié))之外的范圍內(nèi)取值,具體見附表3。
第二部分是壓縮算法所需要的表,包括DCT變換系數(shù)量化表、對DC系數(shù)差值和AC系數(shù)進行無損熵編碼的編碼表。
這一部分是可選的。如果不給出這些表,那么可能由壓縮和解壓程序從另外的默認途徑獲得。具體說明如下首先是DCT變換系數(shù)量化表的定義。量化表的定義由標記DQT(參見附表4)開始,第一種方式下定義的量化表由一個雙精度浮點常數(shù)C和N(N為DCT變換塊尺寸)個整數(shù)組成,每個DCT變換系數(shù)的對應(yīng)量化步長為C乘以對應(yīng)位置的整數(shù);第二種方式下定義的量化表由N個雙精度浮點數(shù)組成,這些數(shù)即為對應(yīng)DCT變換系數(shù)的量化步長。
然后是DC系數(shù)差值霍夫曼編碼表的定義。為了保存該表,首先給出一個一字節(jié)無符號整數(shù)表示該表的行數(shù)R,每行包含的差值可以直接由該行的行號計算得到,因此不需要保存。接下來是R個一字節(jié)無符號整數(shù),表示每行所對應(yīng)的霍夫曼碼字的長度?;舴蚵a字的長度不允許超過16。最后將所有碼字按照順序各以兩個字節(jié)進行保存,真正的碼字位于這兩個字節(jié)的低端,由于碼字長度不允許超過16,因此兩個字節(jié)是足夠的。以附表1為例,首先保存的字節(jié)為0X11(17的十六進制表示),然后是下面17個字節(jié),表示各個碼字的長度0X02,0X03,0X03,…接下來的34個字節(jié)為0X00,0X00,0X00,0X02,0X00,0X03…最后是AC系數(shù)游程霍夫曼編碼表。為了保存該表,首先給出兩個一字節(jié)無符號整數(shù)表示該表的行數(shù)R和列數(shù)Z。R代表了非零AC系數(shù)在DC系數(shù)差值霍夫曼編碼表中的最大行數(shù),Z代表了非零AC系數(shù)前面的零游程的最大長度。然后,接下來再按照行優(yōu)先的順序保存該表中的RZ個碼字,并在(0,0)位置(也就是表的開頭)插入保存EOB的碼字,在(0,15)處插入保存ZRL的碼字。共計RZ+2個碼字。保存這些碼字時,同樣首先保存RZ+2個表示對應(yīng)碼字長度的一字節(jié)無符號整數(shù),然后將所有碼字按照順序各以兩個字節(jié)保存。
如果上述的量化表和編碼表均在壓縮文件中給出,那么將有六個表(分別對應(yīng)x和y坐標數(shù)據(jù))。
jvg文件的文件體包含了實際的壓縮矢量數(shù)據(jù)。如果為第一層編碼,那么該部分僅有一個壓縮矢量數(shù)據(jù)段,該段由一到多個壓縮矢量數(shù)據(jù)塊組成。如果為第二層編碼,那么該部分有一到多個范圍,每個范圍由一到多個段組成,每個段按照順序由一到多個壓縮矢量數(shù)據(jù)塊的節(jié)組成。在文件體中,需要一些標記以表示不同的范圍和段的開始和結(jié)束,而每個節(jié)均由EOB結(jié)尾。
下面首先就第一層編碼中的壓縮矢量數(shù)據(jù)塊作一些說明。由前面的分塊算法可知壓縮矢量數(shù)據(jù)塊可能由GDB或者GSDB處理而來,而該GDB或者GSDB又可能位于一個幾何對象中不同的部分,這些信息需要在壓縮矢量數(shù)據(jù)塊中加以保存。為此在每個壓縮矢量數(shù)據(jù)塊的開頭附加兩個比特,其意義如附表5所示,如果該壓縮矢量數(shù)據(jù)塊由GSDB壓縮而來則下一個字節(jié)保存該壓縮矢量數(shù)據(jù)塊中的實際包含的點數(shù)。由于一個GDB或者GSDB將產(chǎn)生兩個壓縮矢量數(shù)據(jù)塊(分別對應(yīng)x和y坐標數(shù)據(jù)),并且這兩個塊總是相繼的,因此僅在前一個塊的開頭保存這些信息。由塊頭部信息以及GSDB中包含的點數(shù)信息即可重建由多個部分組成的幾何對象。此外如果將一個壓縮矢量數(shù)據(jù)塊根據(jù)精度要求劃分為多個節(jié),那么僅在第一節(jié)中保存原塊頭部信息。
在確定了采用第一層還是第二層編碼以及具體將整體矢量數(shù)據(jù)分割為范圍以及將各個范圍內(nèi)的壓縮矢量數(shù)據(jù)塊分割為節(jié)并組合為段的方式之后即可將所有位流組織為文件體。附圖5是文件體的一個示例。在壓縮文件中難以發(fā)現(xiàn)各個幾何對象之間的邊界,但是在解壓時可根據(jù)各個壓縮矢量數(shù)據(jù)塊的頭部信息將解壓后的坐標點列組合為幾何對象。
最后還有兩點需要說明。一是jvg文件中各個編碼單元(如壓縮矢量數(shù)據(jù)塊或者分割該塊所形成的節(jié))都必須是字節(jié)對齊的,因此如果編碼單元的位數(shù)不是8的整數(shù)倍,那么必須在該編碼單元最后補充足夠的0以使其位數(shù)為8的整數(shù)倍。二是為了避免混淆編碼單元中的位流和壓縮文件中的標記(見前面的定義),規(guī)定假如編碼單元中如果出現(xiàn)了0XFF字節(jié)(也就是一個全為1的字節(jié)),那么在該字節(jié)后面插入一個全為0的字節(jié)。因此如果解碼器遇到一個0XFF字節(jié),如果其后面的字節(jié)為0X00,那么應(yīng)當(dāng)直接拋棄這個字節(jié),如果不是,那么應(yīng)當(dāng)解釋將這兩個字節(jié)解釋為一個標記并根據(jù)該標記的值采取相應(yīng)的動作。圖6至圖10是一個用本專利技術(shù)壓縮實際河流數(shù)據(jù)的例子,采用第一層編碼,壓縮前的大小為5,831,572字節(jié)(5.56M),壓縮后的大小為269,716字節(jié)(264kB),包括了文件頭和量化表、編碼表等,壓縮比達到了21.6。
附表附表1差值霍夫曼編碼表示例

附表2AC系數(shù)游程霍夫曼編碼表示例

附表3 jvg文件頭

附表4jvg文件中所使用的標記

附表5 壓縮矢量數(shù)據(jù)塊頭部信息

參考文獻[1]H.Wu,Hanwu Zhang,Xiaojing Liu,Xia Sun,Adaptive Architecture of GeospatialInformation Service over the Internet with QoGIS Embedded,inISPRS Workshopon Service and Application of Spatial Data Infrastructure,XXXVI(4/W6),Oct14-16,2005,Hangzhou,China[2]胡廣書.數(shù)字信號處理——理論、算法與實現(xiàn).北京清華大學(xué)出版社,1997[3]A.Ortega and K.Ramchandran,Rate Distortion Methods for Image and VideoCompression,IEEE Signal Proc.Magazine,pp.23-49,Nov.1998. M.Rabbani and R.Joshi,An Overview of the JPEG2000 Still Image CompressionStandard,Signal ProcessingImage Communication,vol.17,issue.1,pp.3-48,Jan.2002. V.K.Goyal,Theoreticai Foundations of Transform Coding,IEEE SignalProcessing Magazine,pp.9-21,Sept.2001. Y.Zeng,L.Cheng,G.Bi,and A.C.Kot,Integer DCTs and Fast Algorithms.IEEETransactions on Signal Processine,vol.49,no.11,pp.2774-2782,Nov.2001. David Salomon[美]著,吳樂南等譯,數(shù)據(jù)壓縮原理與應(yīng)用.北京電子工業(yè)出版社,200權(quán)利要求
1.一種二維空間矢量數(shù)據(jù)的壓縮方法,其特征是將二維矢量數(shù)據(jù)分塊后,使用基于DCT變換的編碼方法對二維矢量數(shù)據(jù)進行有損壓縮,并輸出為指定格式的二進制位流,DCT是離散余弦的英文縮寫;具體步驟如下(1)將二維矢量數(shù)據(jù)劃分為矢量數(shù)據(jù)塊,后續(xù)的編碼過程針對每個矢量數(shù)據(jù)塊單獨地進行,這一步稱為分塊,(2)對每個矢量數(shù)據(jù)塊中的x和y坐標數(shù)據(jù)進行基于DCT變換的有損壓縮,這一步稱為編碼,(3)對所有編碼得到的壓縮數(shù)據(jù)塊添加各種標記和控制信息形成壓縮位流,輸出到二進制的壓縮矢量數(shù)據(jù)文件,這一步稱為輸出。
2.根據(jù)權(quán)利要求1所述的二維矢量數(shù)據(jù)的壓縮方法,其特征是采用以下步驟分塊對所處理的二維矢量數(shù)據(jù),以矢量數(shù)據(jù)內(nèi)部所包含的矢量對象為單位,按照壓縮算法的需要劃分為相同大小的矢量數(shù)據(jù)塊;每個矢量數(shù)據(jù)塊中都含有2n個二維數(shù)據(jù)點,為了與矢量數(shù)據(jù)的原有結(jié)構(gòu)相一致,分塊在矢量對象內(nèi)部進行,不足2n個數(shù)據(jù)點的矢量數(shù)據(jù)塊人為補充一些數(shù)據(jù)點后構(gòu)成一個完整矢量數(shù)據(jù)塊;n為大于1的整數(shù),在壓縮前指定。
3.根據(jù)權(quán)利要求1所述的二維矢量數(shù)據(jù)的壓縮方法,其特征是采用以下步驟編碼a.對所有矢量數(shù)據(jù)塊,選擇兩種模式之一對x和y坐標數(shù)據(jù)分別進行一維DCT變換;第一種模式是先對坐標數(shù)據(jù)進行量化,然后對量化后的整數(shù)坐標數(shù)據(jù)進行無損整數(shù)DCT變換,得到整數(shù)變換系數(shù);第二種模式是直接對坐標數(shù)據(jù)進行浮點DCT變換,得到浮點變換系數(shù),b.對第二種模式處理得到的所有變換系數(shù)進行均勻量化,得到量化變換系數(shù),c.對每個矢量數(shù)據(jù)塊的量化變換系數(shù)或者第一種模式中的整數(shù)變換系數(shù)按順序逐塊進行無損熵編碼,生成壓縮矢量數(shù)據(jù)塊,由步驟a、b和c組成的編碼過程稱為第一層編碼,或者,d.按照矢量數(shù)據(jù)的重建精度遞增的要求進一步組織壓縮矢量數(shù)據(jù)塊,使得壓縮位流具有漸進性質(zhì),這樣,由步驟a、b、c和d組成的編碼過程稱為第二層編碼;第二層編碼僅針對第二種模式下得到的量化變換系數(shù)。
4.根據(jù)權(quán)利要求1所述的二維矢量數(shù)據(jù)的壓縮方法,其特征在于輸出對有損壓縮數(shù)據(jù)塊添加各種標記和控制信息,并將得到的二進制位流輸出到指定格式的壓縮文件,擴展名為jvg;該壓縮文件由文件頭和文件體兩個部分組成。
全文摘要
本發(fā)明是一種二維矢量數(shù)據(jù)的壓縮方法,具體是首先將原始矢量數(shù)據(jù)劃分為矢量數(shù)據(jù)塊,再按照兩種模式之一對矢量數(shù)據(jù)塊進行基于DCT變換的有損壓縮,然后對得到的DCT變換系數(shù)進行熵編碼得到壓縮矢量數(shù)據(jù)塊,最后將所有壓縮矢量數(shù)據(jù)塊組織為指定格式的二進制位流。本發(fā)明的主要效果是在對等高線、道路網(wǎng)、水系等范圍廣泛的自然形成的矢量數(shù)據(jù)達到了近20的壓縮比的情況下,其信噪比高達60dB,最大絕對失真僅為原矢量數(shù)據(jù)動態(tài)范圍的10
文檔編號H03M7/30GK1777038SQ20051001993
公開日2006年5月24日 申請日期2005年12月1日 優(yōu)先權(quán)日2005年12月1日
發(fā)明者吳華意, 朱海軍, 劉異 申請人:武漢大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
浦县| 个旧市| 玉溪市| 松阳县| 嫩江县| 新竹县| 四会市| 湟中县| 韶山市| 清新县| 北票市| 石泉县| 亳州市| 勐海县| 榆社县| 丽江市| 那坡县| 兴国县| 安徽省| 洪泽县| 南雄市| 咸阳市| 建平县| 仙游县| 衡山县| 丽江市| 内江市| 新密市| 洞头县| 会昌县| 永福县| 江山市| 白城市| 扎鲁特旗| 彩票| 确山县| 吉木乃县| 新建县| 罗平县| 土默特右旗| 长沙市|