專利名稱:數(shù)據(jù)壓縮方法
技術(shù)領(lǐng)域:
本發(fā)明涉及圖像壓縮方法,特別涉及用于地震數(shù)據(jù)圖像壓縮的改進(jìn)JPEG方法。
背景技術(shù):
圖像壓縮的JPEG標(biāo)準(zhǔn)算法(Pennebaker和Mittchell,1993)由下列3個(gè)針對二維陣列的每個(gè)8×8像素塊的步驟組成1.利用離散余弦變換對8×8像素塊進(jìn)行變換。
2.將變換系數(shù)量化(標(biāo)度和舍入)為小整數(shù)。
3.對比特進(jìn)行編碼,從而利用幾個(gè)比特表示出現(xiàn)頻率最高的整數(shù)。
解壓縮算法逆向完成這些步驟。兩種算法可以容易地?cái)U(kuò)展到壓縮與解壓縮任意維數(shù)的陣列。
圖1示出了未經(jīng)壓縮的地震數(shù)據(jù)的二維陣列。圖1的32位浮點(diǎn)二維陣列是從三維地震勘察數(shù)據(jù)中抽取的等時(shí)層面。圖2示出了同一陣列的放大子集。
圖3示出了利用JPEG型算法壓縮與解壓縮整個(gè)二維陣列之后的同一放大子集。整個(gè)陣列的壓縮比為103∶1,這意味著32位浮點(diǎn)的原始陣列包含了103倍于壓縮陣列的比特。
對于如此大的壓縮比,這種JPEG型算法產(chǎn)生了圖3所示的可見分塊效應(yīng)。在較低壓縮比之下,塊與塊之間的這些不連續(xù)性不易發(fā)覺,但是仍然不能忽視,特別是在解壓縮之后作進(jìn)一步的處理或判讀工作時(shí)。
由于在獨(dú)立地壓縮與解壓縮每個(gè)8×8樣本塊時(shí)沒有考慮保持塊之間連續(xù)性,所以形成了圖3內(nèi)的分塊效應(yīng)。
盡管會(huì)產(chǎn)生分塊效應(yīng),但是將如此小的數(shù)據(jù)子集獨(dú)立地壓縮與解壓縮仍然是需要的。特別是這可以訪問大壓縮陣列的一小部分而無需解壓縮整個(gè)陣列。這還使得壓縮算法適于處理數(shù)據(jù)幅值和頻譜的空間變化。在基于子波變換的壓縮方法(例如Bradley等人,1993;Wickerhauser,1994)中沒有的這樣的特點(diǎn)。本申請著手解決的問題是既具備這些特點(diǎn),又沒有分塊效應(yīng)。
解決此問題的一種方案是利用交疊的塊進(jìn)行數(shù)據(jù)壓縮,因此可以不借助鄰近塊邊界的數(shù)值就可以計(jì)算出解壓縮的樣本值。Yeo和Liu(1995)為使JPEG算法適于三維醫(yī)學(xué)圖像的空間表示,采用了該方案。遺憾的是,利用交疊塊增加了壓縮塊數(shù),這增加了計(jì)算時(shí)間并降低了壓縮比。
說明書內(nèi)引用的現(xiàn)有技術(shù)材料包括Bradley,J.N.,C.M.,和Hopper,T.,1993,用于灰度指紋圖像壓縮的FBI子波/標(biāo)量量化標(biāo)準(zhǔn)Visual Information Processing II,SPIE Proceedings,293-304.(ftp∥ftp.c3.lanl.gov/pub/WSQ.)Jawerth,B.,和Sweldens,W.,1995,雙正交平滑局部三角基J.FourierAnal.Appl.,2(http∥cm.belllabs.com/who/wim/papers/-papers.html)Jawerth,B.,Liu,Y.和Sweldens,W.,1996,借助平滑局部三角基的信號(hào)壓縮(http∥cm.belllabs.com/who/wim/papers/-papers.html)Malvar,H.S.,和Staelin,D.H.,1989,無分塊效應(yīng)的LOT變換編碼IEEETransactions on Acoustic,Speech,and Signal Processing,37,no.4,553-559Malvar,H.S.,1990,高效變換/子帶編碼的重疊變換IEEE Transactionson Acoustic,Speech,and Signal Processing,38,no.6,969-978Pennebaker,W.B.,和Mitchell,J.L.,1993,JPEG靜止圖像數(shù)據(jù)壓縮標(biāo)準(zhǔn)Van Nostrand Reinhold.
Prince,J.P.,和Bradley,A.B.,1956,基于抵消時(shí)域混疊的分析/合成濾波器組設(shè)計(jì)IEEE Transactions on Acoustic,Speech,and Signal Processing,34,no.5,1153-1161Wickerhauser,M.V.,1994,自適應(yīng)子波分析,從理論到軟件A.K.Peter
Yeo,B.,和Liu,B.,1995,基于DCT壓縮三維標(biāo)量數(shù)據(jù)的空間表示IEEETransactions on Visualization and Computer Graphics,1,no.1,29-4
發(fā)明內(nèi)容本發(fā)明的主要目標(biāo)是提供一種用于數(shù)據(jù)壓縮的改進(jìn)JPEG算法。
本發(fā)明的一個(gè)重要目標(biāo)是提供一種改進(jìn)的JPEG數(shù)據(jù)壓縮算法,它可以用于壓縮小子集數(shù)據(jù)但不會(huì)產(chǎn)生分塊效應(yīng)。
本發(fā)明的數(shù)據(jù)壓縮方法利用了針對離散余弦變換和量化變換系數(shù)的霍夫曼編碼的JPEG算法。
附圖的簡要說明圖1示出了從三維地震勘察數(shù)據(jù)中抽取的等時(shí)層面,這里的圖像是未經(jīng)壓縮的32位浮點(diǎn)二維陣列;圖2為圖1二維陣列的放大子集;圖3示出了直接利用JPEG算法壓縮與解壓縮后的圖2數(shù)據(jù),圖中出現(xiàn)分塊效應(yīng),即單獨(dú)壓縮的8×8樣本塊之間的不連續(xù)性;圖4示出了利用抑制分塊效應(yīng)的JPEG型算法壓縮與解壓縮后的圖2數(shù)據(jù);圖5示出了與長度為32的逆DCT-III對應(yīng)的矩陣CIII-1,這里的黑色像素對應(yīng)正值,白色像素對應(yīng)負(fù)值;圖6示出了與長度為8的逆分塊DCT-III對應(yīng)的矩陣;圖7示出了圖6逆分塊DCT-III矩陣的列11和19,在這里諸如樣本15與16之間的不連續(xù)性在JPEG壓縮時(shí)產(chǎn)生分塊效應(yīng),并且由于下面方程(1c)所定義的函數(shù)b(j)內(nèi)的不連續(xù)性,每條余弦內(nèi)的第一樣本都偏離曲線;圖8示出了通過展開圖7所示截?cái)嘤嘞仪€獲得的平滑漸變余弦曲線,它們是圖9逆折疊DCT-III矩陣中的列11和9;圖9示出了對應(yīng)逆折疊DCT-III的矩陣,這里矩陣的列在塊與塊之間交疊,其數(shù)值平滑地減少為零,因此這些列的加權(quán)和消除了分塊效應(yīng);圖10示出了展開逆分塊DCT-III操作的矩陣,在這里圖9的矩陣等于此處矩陣與圖6所示矩陣之積;圖11示出了展開操作,它對跨越DCT塊邊界的樣本值作配對組合與替換,折疊是該操作的逆操作;圖12示出了解壓縮塊A內(nèi)高亮度顯示樣本的步驟,首先需要對塊A、B、C和D進(jìn)行解碼、去量化和逆DCT-III處理,隨后將4個(gè)高亮度顯示樣本展開,在這里折疊與展開操作是將跨越DCT塊邊界的樣本作配對混合。
實(shí)施發(fā)明的較佳方式本發(fā)明是一種改進(jìn)的數(shù)據(jù)壓縮方法,它在用JPEG型算法壓縮期間將相鄰塊的數(shù)據(jù)復(fù)合。許多作者以各種形式描述了JPEG型數(shù)據(jù)壓縮方法(例如Princen和Bradley,1986;Malvar和Staelin,1989;Malvar,1990;Wickerhauser,1994;Jawerth等人,1995)。JPEG型數(shù)據(jù)壓縮的優(yōu)點(diǎn)是可提供壓縮比,但是僅僅略微增加計(jì)算時(shí)間。
圖4示出了壓縮與解壓縮之后圖1二維陣列的同一子集,利用的是基于下述本發(fā)明方法的第二JPEG型算法。整個(gè)陣列的壓縮比為112∶1。解壓縮數(shù)據(jù)中沒有分塊效應(yīng)。
現(xiàn)有JPEG型算法與本發(fā)明新提出的JPEG型算法之間的差別在于對JPEG標(biāo)準(zhǔn)定義的分塊離散余弦變換作了改進(jìn)。本發(fā)明算法中的改進(jìn)減輕了分塊效應(yīng),與此同時(shí)又保持了現(xiàn)有JPEG型算法的所需特征。
現(xiàn)有JPEG壓縮中所用的變換是稱為DCT-II的離散余弦變換。按照本發(fā)明,采用了稱為DCT-III的不同的離散余弦變換。(要了解離散余弦變換的種類,可參見Wickerhauser,1994,P84)。
DCT-III正向DCT-III定義為z(k)=Σj=0M-1y(j)b(j)2Mcos[π(2k+1)j2M],]]>k=0,1,…,M-1 (1a)而相應(yīng)的逆變換為y(j)=Σj=0M-1z(k)b(j)2Mcos[π(2k+1)j2M],]]>j=0,1,…,M-1 (1b)
這里
正變換與逆變換可以用矩陣乘積表示,如z=CIIIy和y=CIII-1z,這里矩陣CIII內(nèi)的單元CIII(k,j)=b(j)2Mcos[π(2k+1)j2M]-----(2)]]>圖5示出了逆變換矩陣CIII-1,M=32。任意32個(gè)實(shí)數(shù)矢量都可以表示為該矩陣列的加權(quán)和。
在一維壓縮算法中,樣本值矢量可以只用矩陣CIII-1的幾列逼近。每列的權(quán)重由矢量z的變換系數(shù)給定。高壓縮比要求z內(nèi)許多系數(shù)接近零。這種小系數(shù)將被量化為零,從而可以利用少量位高效編碼。
JPEG標(biāo)準(zhǔn)描述了二維圖像而不是一維矢量的壓縮。JPEG壓縮中所用現(xiàn)有的DCT-II為二維變換。但是由于多維數(shù)據(jù)的離散余弦變換相當(dāng)于沿每個(gè)數(shù)據(jù)維一維變換的級聯(lián),所以為簡化起見只描述一維變換。
分塊DCT-III對于諸如斷面序列的長數(shù)據(jù)矢量,對整個(gè)矢量進(jìn)行一個(gè)離散余弦變換不可能生成許多微小的變換系數(shù)。因此與JPEG一樣采用分塊DCT,變換長度M=8,并且填充數(shù)據(jù)矢量設(shè)定為零,或根據(jù)需要設(shè)定為8的整數(shù)倍的長度N。圖6示出了對應(yīng)逆分塊DCT-III的矩陣,N=32并且M=8。除了更適合壓縮之外,分塊變換的效率也更高,而計(jì)算代價(jià)僅隨數(shù)據(jù)矢量長度N線性增加。
與JPEG壓縮中所用的現(xiàn)有DCT-II一樣,DCT-III具有幾個(gè)有用的性質(zhì)。首先,DCT-III將實(shí)數(shù)變換為實(shí)數(shù),因此無需復(fù)數(shù)運(yùn)算。而且與現(xiàn)有的DCT-II一樣,DCT-III為酉變換CIII-1=CIIIT。[由上述方程(1)可預(yù)見該性質(zhì)]。對應(yīng)圖6的正分塊DCT-III矩陣僅僅是逆分塊DCT-III的轉(zhuǎn)置。
另一個(gè)有用的性質(zhì)是逆DCT-III等價(jià)于正DCT-IICIII-1=CII。DCT-III與DCT-II之間的這種關(guān)系和選擇變換長度M=8可以通過簡單交換正算法與逆算法便能使用JPEG壓縮中高度優(yōu)化的DCT-II算法。
上述所有這些信息都是有用的,但是為什么不簡單采用現(xiàn)有JPEG的DCT-II呢?答案是按照本發(fā)明DCT-III的改進(jìn)避免了JPEG壓縮引起的分塊效應(yīng)。
只有當(dāng)在矢量逼近中采用圖6所示矩陣列的子集時(shí)才出現(xiàn)分塊效應(yīng)。例如假設(shè)僅僅利用兩列高度壓縮這樣的矢量,其指數(shù)k=11和k=19。如圖7所示,這兩列的任意非平凡組合都在逼近中樣本指數(shù)j=15與j=16之間產(chǎn)生不連續(xù)性。這種不連續(xù)性在利用JPEG算法壓縮的圖像中形成可以覺察到的分塊效應(yīng)。
折疊DCT-III為了避免因在壓縮中采用分塊DCT-III引起的分塊效應(yīng),采用圖8所示平滑漸變余弦曲線代替圖7所示分塊余弦曲線。將圖9所示的完全逆變換矩陣與圖6所示逆分塊DCT-III矩陣進(jìn)行比較。每條余弦曲線內(nèi)的樣本數(shù)增加至16(尾部的樣本不算),因此相鄰塊內(nèi)的余弦曲線現(xiàn)在交疊在一起,并且每條余弦曲線平滑地趨于零。這些余弦曲線的加權(quán)和不會(huì)產(chǎn)生圖7所示的不連續(xù)性。
對應(yīng)這些漸變余弦的變換經(jīng)常被稱為局部余弦變換或者交疊正交變換(Wickerhauser,1994,P.370;圖8與Wickerhauser的圖11.5有一定的相似之處)。這些變換被稱為折疊余弦變換,其名稱反映了它們的計(jì)算方法。具體而言,按照本發(fā)明的壓縮算法中所用的變換是折疊DCT-III。對應(yīng)圖9所示矩陣的逆變換稱為逆折疊DCT-III。
折疊是一種利用高度優(yōu)化的分塊(M=8)DCT算法實(shí)現(xiàn)平滑、漸變的16樣本余弦的方法。Wickerhauser(1994,p.103)將該方法描述為“由幾個(gè)人獨(dú)立作出的驚人觀察”,并且討論了在壓縮中的應(yīng)用。本發(fā)明壓縮中采用的折疊操作雖然是Wickerhauser描述的多種方式中的一種,但是也受到了Jawerth和Swelsdens(1995)和Jawerth等人(1996)著述的啟發(fā)。后者討論了特別與壓縮相關(guān)的折疊操作。
折疊的巧妙和效率在于圖9所示逆折疊DCT-III矩陣是圖10所示展開矩陣與圖6所示逆分塊DCT-III矩陣之積。由于展開矩陣的每行與每列包含了不超過2個(gè)的非零元素,所以除了逆分塊DCT-III的計(jì)算代價(jià)以外,展開的計(jì)算代價(jià)微不足道。
特別是圖6、9或10所示的矩陣實(shí)際上從沒構(gòu)造出來。操作是在樣本值上進(jìn)行的,其效果與這些矩陣的乘積是一樣的。對于圖6所示的逆分塊DCT-III矩陣,該操作是JPEG壓縮中所用的高效正分塊DCT-II算法。對于圖10所示的展開矩陣,如圖11所示,該操作是跨越指數(shù)j=8,16…的塊邊界樣本值的配對混合。
折疊操作是簡單的逆展開操作,它將同一樣本值作不同的配對復(fù)合。由于折疊與展開邊界的中心在塊邊界周圍,所以這些操作可以用偏移樣本值最簡潔地定義為yI(j)=y(tǒng)(IM+j)。符號(hào)I是塊指數(shù)而j是塊內(nèi)樣本指數(shù)。
隨后借助下列方程完成折疊yI(j)=f(j)xI(j)+f(-j)xI(-j),yI(-j)=f(j)xI(-j)-f(-j)xI(j),I=1,2,…,N/M-1,j=1,2,…,M/2-1,yI(j)=xI(j),否則 (3a)并借助下列方程完成展開xI(j)=f(j)yI(j)-f(-j)yI(-j),xI(-j)=f(j)yI(-j)-f(-j)yI(j),I=1,2,…,N/M-1,j=1,2,…,M/2-1,xI(j)=y(tǒng)I(j),否則(3b)這里的折疊函數(shù)f(j)被定義為f(j)=sin[π4(1+2jM)],--(3c)]]>將方程(3b)應(yīng)用于圖6所示的矩陣列計(jì)算得到了圖8的平滑漸變余弦曲線與圖9的這種余弦曲線的矩陣。
首先借助方程(3a)計(jì)算y(j),然后借助方程(1a)計(jì)算8個(gè)樣本中每個(gè)塊的z(k)就確定了樣本值x(j)的正折疊DCT-III。同樣,首先借助方程(1b)計(jì)算每個(gè)塊的y(j),然后借助方程(3b)計(jì)算x(j)就確定了逆折疊DCT-III。
如Wickerhauser(1994,p.105)、Jawerth和Swelsdens(1995)以及Jawerth等人(1996)所述,可以采用雖然不同但是原理相似的折疊操作。選擇方程(3)定義的折疊操作基于兩個(gè)理由。
首先折疊操作是酉操作。圖10所示展開矩陣是對應(yīng)折疊矩陣(未畫出)的轉(zhuǎn)置。為了確證這種性質(zhì),請注意方程(3c)的折疊函數(shù)滿足f2(j)+f2(-j)=1,并且將方程(3a)和(3b)的折疊與展開操作表示為2×2矩陣的乘積。解析地求出2×2折疊矩陣的逆矩陣以考察其是否等于轉(zhuǎn)置矩陣,而轉(zhuǎn)置矩陣等于2×2的展開矩陣。由于矩陣由跨越邊界的2×2樣本值混合組成,因此整個(gè)折疊操作是酉操作。
其次,按照本發(fā)明的折疊操作確保了常數(shù)函數(shù)(例如x(j)=1)在每個(gè)塊內(nèi)產(chǎn)生僅對于k=0是非零的變換系數(shù)zI(k),因此提高了恒定的(或者變化緩慢的)數(shù)據(jù)的壓縮比。Jawerth等人(1996)稱正折疊DCT-III實(shí)現(xiàn)了“恒定的分辨率”。
為了確證折疊DCT-III的第二種性質(zhì),解析地將方程(3a)的折疊操作應(yīng)用于恒定樣本值xI(j)=1,并確證結(jié)果是
,這里CIII(k,j)在方程(2)中定義。換句話說,選定的折疊函數(shù)使得恒定樣本值折疊為精確地(在標(biāo)度因子
內(nèi))與DCT-III的第一(k=0)余弦值匹配。由于該余弦與變換的所有其它余弦正交,所以在正折疊DCT-III之后只有每個(gè)塊內(nèi)k=0的變換系數(shù)非零。每個(gè)非零系數(shù)的值為
更為確切地說,除了第一和最后的塊,其他塊都保持這種性質(zhì)。雖然可以通過將折疊與展開矩陣修改為矩陣角部不為單位值從而使得第一和最后塊的分辨率恒定,但是這些塊內(nèi)的壓縮比小一些是能夠接受的,并且還保持了嚴(yán)格的酉折疊與展開操作。
與用于JPEG壓縮的DCT-II之比較由于DCT-II的第一余弦(例如圖5內(nèi)矩陣的第一行)為常數(shù),所以JPEG壓縮所用的正DCT-II無需折疊就實(shí)現(xiàn)恒定的分辨率。實(shí)際上,這就是JPEG壓縮標(biāo)準(zhǔn)指定DCT-II而非DCT-III的理由。由于無需修改標(biāo)準(zhǔn)的JPEG算法就可以在JPEG壓縮之前進(jìn)行折疊并在JPEG解壓縮之后進(jìn)行展開,所以可以考慮對DCT-II利用折疊技巧。
遺憾的是,方程(3)的折疊與展開操作對DCT-II并不適合。具體而言,方程(3b)不會(huì)產(chǎn)生如圖8所示的平滑漸變余弦曲線。
Jawerth等人(1995)描述了適合于DCT-II的不同折疊與展開操作,這些操作保持了恒定的分辨率。但是這些操作不是酉操作。實(shí)際上它們是病態(tài)條件的,將會(huì)放大塊邊界附近樣本值的不連續(xù)性,從而減小壓縮效率。
相反,與方程(1)的正和逆DCT-III一樣,方程(3)的折疊與展開操作是酉操作。如果F表示折疊矩陣,則正折疊DCT-III可以表示為z=CIIIFx,并且注意到zTz=xTFTCIIITCIIIFx=xTF-1CIII-1CIIIFx=xTxΣk=0N-1z2(k)=Σj=0N-1x2(j)---(4)]]>換句話說,折疊DCT-III變換之后的樣本值平方和等于折疊DCT-III前的和。該信息可以用來估計(jì)量化變換系數(shù)過程中引入的解壓縮數(shù)據(jù)的失真。
量化和編碼如上所述,本發(fā)明壓縮算法中所用的變換僅僅是JPEG壓縮中所用變換的逆變換,但是引入的折疊抑制了分塊效應(yīng)。所用的量化和編碼方法也由JPEG壓縮中所用方法修改而來。以下描述JPEG方法與本發(fā)明之間的差異。
量化由于JPEG壓縮是針對圖像的,所以壓縮之前的數(shù)據(jù)不是8位就是12位(彩色圖像用紅綠藍(lán)三重色樣本表示)。在借助DCT-II進(jìn)行二維變換之后,由于二維DCT-II之后最大的樣本值比變換前最多大8倍,所以每個(gè)樣本的8位數(shù)據(jù)可能需要11位。通常情況下,DCT-II之后的最大樣本值最多是變換前的MD/2倍,這里D為變換的維數(shù)。換句話說,|z|maxsMD/2|x|max(5)當(dāng)數(shù)據(jù)與DCT-II中所用其中一個(gè)余弦(例如恒定的第一余弦CII(k=0,j))匹配時(shí)達(dá)到上限。
同樣的因子MD/2也可應(yīng)用于本發(fā)明壓縮算法所用的折疊DCT-III上。因此借助折疊DCT-III變換8位整數(shù)數(shù)據(jù)之后,本發(fā)明的方法對二維壓縮中的11位整數(shù)和三維壓縮中的13位整數(shù)進(jìn)行量化和編碼。
JPEG壓縮算法與本發(fā)明方法中的量化步驟是一種減少編碼位數(shù)的標(biāo)度操作,而且正是這種位數(shù)的減少導(dǎo)致壓縮和隨后解壓縮數(shù)據(jù)的失真。在這種有損壓縮方法中,相對高壓縮比而言這樣的失真是可以接受的。
在JPEG壓縮中,每塊內(nèi)的變換系數(shù)的量化是不同的,表示大波數(shù)(空間頻率)所用的位數(shù)比小波數(shù)的少。JPEG壓縮中與波數(shù)相關(guān)的標(biāo)度通常針對人類視覺而優(yōu)化。
在本發(fā)明的壓縮方法中,波數(shù)的量化是相等的。因此不會(huì)引入與波數(shù)相關(guān)的量化才有的誤差。等量化的理由是對于地震數(shù)據(jù),經(jīng)常對大波數(shù)感興趣。例如地震數(shù)據(jù)的子表面斷層圖像對應(yīng)于大波數(shù)。另一個(gè)理由是地震數(shù)據(jù)通常由計(jì)算機(jī)算法分析,它們與人的視覺系統(tǒng)無關(guān)。
局部量化當(dāng)壓縮8位圖像數(shù)據(jù)時(shí),樣本值介于-128與+127之間;并且可以假定小幅值的數(shù)據(jù)塊是無意義的并在壓縮期間將它們量化為零而不會(huì)有問題。特別是JPEG標(biāo)準(zhǔn)假定對于整幅圖像只允許有一組量化標(biāo)度因子。如上所述,這些標(biāo)度因子相對塊內(nèi)不同的系數(shù)(不同的波數(shù))變化,但是對于每個(gè)塊都采用同樣的一組標(biāo)度因子。就這個(gè)意義而言,JPEG量化是全局性的。
當(dāng)壓縮32位浮點(diǎn)數(shù)據(jù)時(shí),比較好的是進(jìn)行局部量化,其標(biāo)度因子隨著塊的不同而不同。在壓縮這類數(shù)據(jù)之前,最大樣本幅值|x|max可能是未知的,并且在壓縮前讀取每個(gè)樣本以確定該值的代價(jià)是高昂的。另外小幅值可能不能假定為無意義的;特別是地震數(shù)據(jù)經(jīng)常在確認(rèn)假定有效之前需要作可觀的處理。因此雖然對于塊內(nèi)所有變化系數(shù)的量化采用的是一個(gè)標(biāo)度因子,但是塊與塊之間的標(biāo)度因子是變化的。具體而言,在上述方程(5)中,|z|max表示每個(gè)變換塊內(nèi)的最大系數(shù),并且對于每塊計(jì)算不同的標(biāo)度因子。
局部量化產(chǎn)生比全局量化更低的壓縮比(每個(gè)樣本的位數(shù)更多)。顯而易見的原因是需要額外的位來存儲(chǔ)每個(gè)被壓縮塊的量化標(biāo)度因子。比較間接的原因是局部量化可以量化為零的樣本比全局量化更少。因此在本發(fā)明的壓縮算法中既允許選擇局部量化也允許選擇全局量化。
局部量化無法處理單個(gè)塊內(nèi)動(dòng)態(tài)范圍較大的情況。例如,未處理地震數(shù)據(jù)中的低幅值反射可能隱藏在高幅值表面波的下面。在混雜高幅值噪聲的塊內(nèi),即使是局部量化,本發(fā)明的壓縮算法也可能將低幅值信號(hào)量化為零,從而無法在解壓縮之后恢復(fù)這樣的信號(hào)。因此在壓縮之前應(yīng)該衰減高幅值噪聲。
壓縮的虛擬存儲(chǔ)器虛擬存儲(chǔ)器給人以存儲(chǔ)器空間大于物理可用空間的假象。這種假象特別適合于這樣的應(yīng)用,它們訪問的數(shù)據(jù)常常在最近被訪問過的其他數(shù)據(jù)附近。這類應(yīng)用具有良好的引用局域性。
借助二維或三維陣列進(jìn)行處理的應(yīng)用常常具有良好的引用局域性。例如地震數(shù)據(jù)解釋應(yīng)用顯示了來自三維陣列的連續(xù)二維層面數(shù)據(jù)。借助足夠快的局部解壓縮算法可以解壓縮包含所需分層樣本的塊而無需解壓縮整個(gè)三維陣列。本發(fā)明的壓縮算法特別適用于這類應(yīng)用。
這類應(yīng)用的關(guān)鍵是能夠壓縮或解壓縮大陣列的一個(gè)子集而無需壓縮或解壓縮整個(gè)陣列。對于基于分塊DCT-II的壓縮而言,就象JPEG壓縮中所用的方法一樣,很容易達(dá)到這種要求。具體而言,為了解壓縮一個(gè)樣本,只需解碼、去量化和逆DCT-II包含該樣本的塊。一旦完成一個(gè)樣本的解壓縮,則就完成了塊內(nèi)所有樣本的解壓縮。假定引用局域性,則節(jié)省了解壓縮該塊其他樣本的計(jì)算代價(jià)。
對于本發(fā)明基于折疊DCT-III的壓縮算法,需要一些額外的處理??紤]二維壓縮和圖12所示的四塊8×8樣本。為了解壓縮對應(yīng)塊A內(nèi)實(shí)心圓圈的樣本,需要(1)解碼、去量化和逆DCT-III所有四塊(A、B、C和D),以及(2)展開對應(yīng)實(shí)心圓圈的四個(gè)樣本。跨越塊邊界的展開如圖11所示并且由方程(3b)描述,它首先對一個(gè)維數(shù)上的第一個(gè)塊展開,然后再展開另一個(gè)塊。雖然需要四個(gè)塊,但是一旦完成塊A內(nèi)樣本的解壓縮,則解壓縮鄰近樣本所需的大部分工作即告完成。而且如果假定引用局域性,則無需額外的計(jì)算。
本發(fā)明的量化步驟與JPEG另一個(gè)差異源于本發(fā)明需要量化32位浮點(diǎn)數(shù)據(jù),這些數(shù)據(jù)的動(dòng)態(tài)范圍大于8或12位的圖像數(shù)據(jù)。為了將浮點(diǎn)值z量化為具有B+I位(包括符號(hào)位)的整數(shù)i,采用了以下算法i={zxs-1/2,z≥0,zxs+1/2,z≥0,--(6)]]>
這里s為量化標(biāo)度因子。為了避免溢出,要求|i|<2B。該限制與方程(6)導(dǎo)出下列標(biāo)度因子方程s=(2B-1/2)(1-∈)|z|max--(7)]]>這里ε為浮點(diǎn)小正數(shù),即利用浮點(diǎn)運(yùn)算從1減去的最小正數(shù),用于獲得不等于1的數(shù)。
霍夫曼編碼JPEG壓縮標(biāo)準(zhǔn)可以有兩種編碼量化生成整數(shù)的方法,即霍夫曼編碼和算術(shù)編碼,其他許多編碼方法也是可行的。由于JPEG的霍夫曼編碼計(jì)算速度快,所以被用于本發(fā)明的壓縮算法中,并且這種編碼實(shí)現(xiàn)簡單,可以免費(fèi)使用。
但是霍夫曼編碼和解碼算法遵循的是JPEG規(guī)范。JPEG標(biāo)準(zhǔn)規(guī)定了DC(k=0)變換系數(shù)的特殊編碼。JPEG壓縮充分利用了相鄰塊之間的這些DC系數(shù)常常高度相關(guān)的特點(diǎn)?;趦蓚€(gè)理由,本發(fā)明的方法未采用這種特殊處理(1)特殊處理引入了塊與塊的依賴性,這使單個(gè)塊的壓縮與解壓縮復(fù)雜化;以及(2)地震數(shù)據(jù)的DC系數(shù)一般比較小(雖然小,但是由于采用了短M=8變換,所以很少能忽略)。因此DC系數(shù)就象其他(AC)系數(shù)那樣編碼。
局部壓縮JPEG型算法的主要優(yōu)點(diǎn)是無需處理全部多維陣列即可壓縮或使用其一部分。相反,基于小波變換的壓縮算法缺乏這個(gè)特點(diǎn)(例如參見Bradley等人,1993;Wickerhauser,1994)。雖然JPEG標(biāo)準(zhǔn)并不直截了當(dāng)?shù)刂С诌@種特征,但是JPEG壓縮中采用的分塊DCT-II使得這種特征的實(shí)現(xiàn)更為容易。該能力在本發(fā)明的基于折疊DCT-III的壓縮算法中得到了充分發(fā)揮。
陣列中的每個(gè)數(shù)據(jù)塊可以被類推為虛擬存儲(chǔ)器的頁面。對于二維壓縮,每個(gè)頁面包含64=8×8個(gè)樣本;對于三維壓縮,每個(gè)頁面包含512=8×8×8個(gè)樣本。當(dāng)樣本頁面被調(diào)用時(shí)進(jìn)行解壓縮,并在調(diào)出頁面時(shí)壓縮波數(shù)。解壓縮頁面的工作組保存在存儲(chǔ)器內(nèi),而大多數(shù)頁面仍然處于壓縮狀態(tài)并且存儲(chǔ)在存儲(chǔ)器或磁盤內(nèi)(如果存儲(chǔ)在磁盤上,則可以對頁面進(jìn)行組合以提高I/O效率)。如果工作組的長度足夠,并且應(yīng)用具有良好的引用局域性,則可以將壓縮和/或解壓縮每個(gè)頁面的計(jì)算代價(jià)分?jǐn)偟竭@些頁面內(nèi)大多數(shù)樣本的訪問上。
總結(jié)在根據(jù)本發(fā)明對JPEG壓縮算法的適用性修改中可以重復(fù)使用算法中的許多部分。通過簡單地將正和逆變換互換就可以對長度為8的DCT重復(fù)使用JPEG方法。JPEG量化方法經(jīng)過修改避免了對小波數(shù)的優(yōu)先處理,并且處理了數(shù)據(jù)幅值在塊與塊之間的變化。在正DCT之前也可以跨越塊邊界折疊樣本值,并且在逆DCT之后展開這樣的值。這種折疊與展開抑制了JPEG算法壓縮圖像內(nèi)可覺察的分塊效應(yīng)。
為了比較本發(fā)明方法與其他算法的性能,采用特定壓縮比下計(jì)算時(shí)間和失真作為性能比較的兩個(gè)指標(biāo)。作為初步基準(zhǔn)程序,我們傾向于采用前述本發(fā)明算法的實(shí)現(xiàn)方案。在較寬的壓縮比范圍內(nèi),本發(fā)明方法的計(jì)算時(shí)間大約是小波算法的一半而失真基本相同(Diller 1997,私人通信)。本發(fā)明方法的計(jì)算時(shí)間比小波方法短的結(jié)果是可信的(因?yàn)楸景l(fā)明采用了較少的乘法和加法運(yùn)算,并且更多地以局部方式使用存儲(chǔ)器)。
權(quán)利要求
1.一種壓縮N個(gè)樣本的一維陣列的方法,樣本表征了地球的特征,所述方法的特征在于包含以下步驟(a)將所述陣列x分割為具有M個(gè)樣本的塊,這里M<N;(b)根據(jù)下列方程折疊跨越每個(gè)塊邊界l的樣本xI(j)=x(/M+j)yI(j)=f(j)xI(j)+f(-j)xI(-j),yI(-j)=f(j)xI(-j)-f(-j)xI(j),I=1,2,…,N/M-1,j=1,2,…,M/2-1,yI(j)=xI(j),否則這里f(j)=sin[π4(1+2jM)],]]>(c)根據(jù)下列方程式將陣列y每個(gè)塊內(nèi)的折疊樣本進(jìn)行變換z(k)=Σj=0M-1y(j)b(j)2Mcos[π(2k+1)j2M],]]>k=0,1,…,M-1這里
(d)對陣列z的每個(gè)塊內(nèi)的已變換樣本進(jìn)行量化以生成整數(shù);以及(e)將所述整數(shù)編碼為代表壓縮陣列的位流。
2.如權(quán)利要求1所述的方法,其特征在于將所述方法應(yīng)用于多維陣列,其中沿陣列的每個(gè)維數(shù)應(yīng)用步驟(a)分塊、(b)折疊和(c)變換作為操作的級聯(lián)。
3.如權(quán)利要求2所述的方法,其特征在于壓縮所述多維陣列的子集。
4.如權(quán)利要求3所述的方法,其特征在于所述多維陣列代表地震信號(hào)。
5.如權(quán)利要求1所述的方法,其特征在于進(jìn)一步包含解壓縮所述壓縮陣列的步驟,它包括與步驟(a)~(e)順序相反的步驟。
6.如權(quán)利要求5所述的方法,其特征在于將所述方法應(yīng)用于多維陣列,其中沿陣列的每個(gè)維數(shù)以相反的順序應(yīng)用步驟(a)分塊、(b)折疊和(c)變換作為操作級聯(lián)。
7.如權(quán)利要求6所述的方法,其特征在于解壓縮所述多維陣列的子集。
8.如權(quán)利要求7所述的方法,其特征在于所述多維陣列代表地震信號(hào)。
全文摘要
在根據(jù)本發(fā)明對JPEG壓縮算法的適用性修改中可以重復(fù)使用算法中的許多部分。通過簡單地將正和逆變換互換就可以對長度為8的DCT重復(fù)使用JPEG方法。JPEG量化方法經(jīng)過修改避免了對小波數(shù)的優(yōu)先處理,并且處理了數(shù)據(jù)幅值在塊與塊之間的變化。在正DCT之前也可以跨越塊邊界折疊樣本值,并且在逆DCT之后展開這樣的值。這種折疊與展開抑制了JPEG算法壓縮圖像內(nèi)可覺察的分塊效應(yīng)。
文檔編號(hào)H03M7/40GK1261967SQ98806856
公開日2000年8月2日 申請日期1998年5月6日 優(yōu)先權(quán)日1997年5月7日
發(fā)明者I·D·黑爾 申請人:界標(biāo)制圖有限公司