摘 要: 介紹了JPEG圖像壓縮" title="圖像壓縮">圖像壓縮編碼技術的總體框架,提出了一種基于JPEG的分層漸進圖像壓縮編碼" title="壓縮編碼">壓縮編碼方法,并通過實驗對該方法和傳統(tǒng)的JPEG圖像壓縮編碼方法進行了比較。
關鍵詞: 圖像壓縮編碼技術? JPEG? 分層漸進
?
實現(xiàn)圖像的漸進壓縮編碼是目前靜止圖像壓縮編碼技術的必然要求。JPEG是當前應用最為廣泛的靜止圖像壓縮編碼標準。
1 JPEG基本框架
JPEG(Joint Photographic Experts Group)是一個由國際標準組織(ISO)和國際電信電報咨詢委員會(CCITT)聯(lián)合組成的從事靜態(tài)圖像壓縮標準制定的委員會[1],它制定了第一套國際靜態(tài)圖像壓縮標準:ISO 10918-1,即JPEG。由于JPEG優(yōu)良的品質,使得它在短短的幾年內就獲得極大的成功,目前網站上百分之八十的圖像都是采用JPEG的壓縮標準。JPEG標準的基本框架分為編碼部分和解碼部分,其基本流程分別如圖1和圖2所示。
JPEG標準定義了四種編碼方式[2]:順序編碼、無損編碼、分級編碼和漸進編碼。漸進編碼模式是JPEG標準的選項。傳統(tǒng)的JPEG漸進編碼模式的基本原理是[3]:將高頻DCT系數塊寫入壓縮碼流(掃描),解碼讀取和處理每個掃描得到的圖像的輪廓,即利用前面的掃描快速產生一幅模糊的低質量圖像預覽,然后根據需要再決定是繼續(xù)掃描還是停止。這種模式的特點是可以根據壓縮圖像的質量隨時中止壓縮和傳送,可以提高圖像的壓縮和傳輸效率。傳統(tǒng)的JPEG漸進編碼模式比較適合中高碼率的圖像壓縮和傳送,但是在中低碼率" title="低碼率">低碼率的情況下,不適合圖像的壓縮效率和圖像壓縮質量的需求,特別是在0.25bpp碼率以下時,圖像質量將出現(xiàn)嚴重失真[4]。這是由于在中低碼率下,JPEG采用的DCT變換方法的細節(jié)分辨能力減弱,使得數據之間還存在比較多的冗余,成為JPEG漸進編碼模式發(fā)展的一個重大瓶頸。本文針對傳統(tǒng)的JPEG漸進編碼模式的問題,在保留JPEG框架的基礎上,提出了一種新的、適合于中低碼率的靜止圖像編碼方法——分層漸進圖像壓縮編碼方法MPCC(Multilayer & Progressive Compression & Coding Method For Still Image)。
2 MPCC的設計與實驗
2.1 MPCC方法的總體設計
MPCC方法仍然采用了JPEG的基本流程模型,其總體設計框架如圖3所示。
從圖3可以看出,MPCC方法總體設計流程是:(1)對經過顏色轉換和采樣的原始圖像進行MDCT變換,得到具有層次結構的MDCT系數。(2)根據MDCT系數的空間層次等特點進行SPIHT編碼,逐步得到包含圖像信息的壓縮碼流。(3)對壓縮碼流進行熵編碼" title="熵編碼">熵編碼(行程編碼),得到最終的壓縮碼流,再進行傳送。同時,在解碼端同步進行解碼(步驟與編碼端相反),根據圖像的質量隨時可以中止圖像的傳送。下面將詳細論述MPCC設計流程的主要步驟。
2.1.1 MDCT變換
為了能夠減少圖像數據的冗余性,以達到有效壓縮圖像的目的,先要對圖像數據進行空間-頻率的轉換。傳統(tǒng)的JPEG漸進模式采用的是DCT變換[5-6],其變換公式如下:
考慮到在后續(xù)SPIHT編碼中的嵌入式編碼的特點以及進一步增強圖像的細節(jié)分辨能力和減少圖像數據之間的冗余性,本文采用了以下的改進變換方法,即多層MDCT(Multilayer-DCT)變換,如圖4所示。
(1)對輸入M×N大小的原始圖像的數據進行第一次DCT變換。經過第一次DCT變換后,原始圖像的數據被分解成四個子帶域:LL1、LH1、HL1、HH1。其中,LL1域是圖像的低頻系數,圖像的能量主要集中在這一部分;LH1、HL1、HH1域是圖像的高頻系數,分別表示圖像的水平、垂直和對角線部分的能量。每個子帶域經過DCT逆變" title="逆變">逆變換后都可以還原成一幅完整的圖像,但是反映了原始圖像的不同細節(jié)信息。
(2)取LL1域做DCT逆變換,還原成原始圖像數據,然后再對其進行第二次DCT變換。經過第二次DCT變換后,LL1同樣被分解成四個子帶域:LL2、LH2、HL2、HH2。每個子帶域經過DCT逆變換后也都是一幅完整的圖像。
(3)取LL2域做DCT逆變換,同樣也還原成原始圖像的數據,然后對其進行第三次DCT變換。經過第三次DCT變換后,LL2同樣被分解成四個子帶域:LL3、LH3、HL3、HH3。每個子帶域經過DCT逆變換后也都是一幅完整的圖像。
通過上述MDCT變換得到的圖像系數,具有了這樣的特征:較低層子帶對應較高的圖像頻率分量;較高層子帶對應較低的圖像頻率分量,并集中了圖像的大部分能量。從數據的數值來看,從高層往低層移動時,能夠預料到細節(jié)系數會顯著變小。
2.1.2 SPIHT編碼算法
分層樹中的集分割SPIHT(Set Partioning In Hierarchical Trees)編碼算法[7],首先是和小波變換相結合的,非常適合具有空間層次相似性的變換方法。SPIHT的重要特點就是在解碼的任意時刻,所顯示的圖像質量都是當時解碼器輸入位數所能得到的最佳圖像。
SPIHT的基本思想是:假設原始圖像P的像素為Pi,j,其經過某種適當變換T后的系數為Ci,j,變換后的圖像為C。該步驟可表示為:C=T(P)。在漸進傳輸方法中,解碼器首先將重建圖像C′設置為零,然后輸入并解碼接收到的經過變換的系數,生成改進的重建圖像C′,再用C′生成更好質量的圖像P′。該步驟可以表示為:P′=T-1(C′)。
空間方向樹是SPIHT中使用的一個數據結構,它類似于子帶金字塔結構。圖4是一個32×32的系數方塊。在最高層的LL3中有16個系數,被分成4個2×2的小組,每個小組中除了第一個系數外,其他3個系數都在其他層有子孫對應。例如:圖4 LL3中第2號系數,在HL3中有2×2=4個子孫,對應在HL2中有4×4=16個子孫,在HL1中則對應有16×16=256個子孫。假設2號系數坐標為(i,j),則直接子孫的坐標對應為(2i,2j)、(2i,2j+1)、(2i+1,2j)、(2i+1,2j+1),下層子孫依次類推。由此對應產生了一棵以(i,j)為根,以其他層對應系數為子孫的樹。將系數(i,j)對應的所有子孫的坐標集合定義為D(i,j),即D類樹。將系數(i,j)對應的所有孫子(不包含4個子系數)的坐標集合定義為L(i,j),即L類樹。限于篇幅,SPIHT編碼詳細算法在后面一并介紹,并可以參見參考文獻[6]。
2.2 MPCC方法的編碼器設計
MPCC方法的編碼器的基本流程見圖3,其具體算法流程如下:
(1)對經過顏色轉換和采樣的原始圖像P進行MDCT變換,得到具有層次結構的MDCT系數。根據需要,MPCC可以是對整幅圖P進行MDCT變換,也可以是先劃分為一個32×32的圖像塊B,之后再進行MDCT變換。本文采用后一種方式。經過MDCT變換后的系數見圖4。
(2)依次對32×32分塊進行SPIHT編碼。
?、僭O定初始閾值為2n,并傳輸n到解碼端。令:LIP為所有根節(jié)點系數(3/4個LL3中的系數),LIS為所有樹,LSP為空集合(用坐標代替各系數)。
②對于LL3中的另外1/4個系數,判定是否顯著,如果顯著,則輸出1和該系數的符號位;否則輸出0。
?、叟判蜻^程:檢測LIP中的系數是否顯著。如果顯著,則輸出1和該系數的符號位,并將系數移入LSP中;否則輸出0。
④根據樹的類型檢測LIS中所有樹是否顯著。
(a)對于D類樹:如果不顯著,就輸出0;如果顯著,就輸出1,并編碼它的子節(jié)點。如果子節(jié)點顯著,就輸出1和符號位,并移入LSP中;如果不顯著,就輸出0,并將其加到LIP的末尾。如果子節(jié)點有子孫,就將樹作為L類移入LIS中;否則從LIS中移出。
(b)對于L類樹:如果不顯著,就輸出0;如果顯著,就輸出1,并將每個子節(jié)點作為D類的一項加到LIS末尾,從LIS中移去父樹。
?、蒽鼐幋a:考慮到輸出的位流具有的分布特點,可以對其進行熵編碼(行程編碼)后,再傳輸給解碼器。
?、扪h(huán):閾值減半,即n減1,如果需要則循環(huán)上述步驟;如果收到解碼端中止傳輸的信號,則停止循環(huán),結束編碼。
2.3 MPCC方法的解碼器設計
MPCC方法的解碼器與編碼器的設計時必須考慮同步工作的問題,這是SPIHT編碼的關鍵,其基本流程可參見圖3,具體算法流程如下:
(1)接收編碼器傳送的n,并確定2n為閾值。采用和編碼器一樣的方法初始化:令LIP為所有根節(jié)點系數(3/4個LL3中的系數),LIS為所有樹,LSP為空集合(同樣用坐標代替各系數)。
(2)依次接收編碼器傳送的各分塊的有效信息。
?、賹邮盏囊粋€分塊的信息流進行熵編碼(解碼),得到還原的一次迭代的信息。②根據信息組織進行編碼器同樣的變化(步驟同編碼器的第2步)。③根據LSP中的坐標進行系數第n位的重建。注意:隨著n的減小,重建的位數也在減小,但前幾次的位數都保留下來了。由此才能夠實現(xiàn)漸進的圖像傳輸。④根據圖像還原的質量,決定中止編碼器繼續(xù)編碼還是繼續(xù)接受編碼信息。本文采用均方差(MSE)失真(公式2)來判定圖像質量。
2.4 MPCC方法的實驗結論
按照上面所述的MPCC方法,在matlab環(huán)境下對MPCC方法和傳統(tǒng)的JPEG漸進模式進行了對比仿真實驗。實驗結果如下:
在0.25bpp的低碼率下,兩者的實驗結果如圖5所示。在低碼率下,傳統(tǒng)的JPEG漸進模式“方塊”效應十分明顯,但圖像效果幾乎不可以接受;而MPCC方法“方塊”效應不明顯,但圖像質量卻明顯優(yōu)于傳統(tǒng)的JPEG漸進模式。
MPCC方法的漸進仿真實驗結果如圖6所示。漸進效果明顯,非常適合網絡上圖像的傳輸。
最后用著名的512×512×8的灰度圖Lena作為原始圖像進行峰值壓縮比(PSNR)的比較,實驗結果參考值如表1所示。由表1可知,MPCC也優(yōu)于傳統(tǒng)的JPEG漸進模式。
?
表1 實驗結果參考值
碼率(bpp) | MPCC(dB) | 傳統(tǒng)的JPEG漸進模式(dB) |
0.25 | 31.9 | 31.6 |
0.75 |
37.4 |
36.5 |
1.00 | 39.7 | 37.9 |
MPCC是為了適應網絡圖像漸進傳輸而提出的一種綜合了MDCT、SPIHT和熵編碼等多項技術的新的編碼方法,它依然采用了廣泛應用的JPEG框架。從實驗結果來看,MPCC方法在中低碼率時,圖像的壓縮效果明顯優(yōu)于傳統(tǒng)的JPEG漸進模式。在超低碼率時(一般指0.25bpp以下),MPCC的圖像壓縮效果遜于基于小波變換的JPEG2000(該標準正在完善之中,尚未廣泛應用);但是在中低碼率時,在圖像質量接近的情況下,MPCC的圖像壓縮速度卻優(yōu)于JPEG2000。
參考文獻
[1] 吳樂南,徐孟俠.數據壓縮[M].北京:電子工業(yè)出版社,2000
[2] 精英科技.視頻壓縮與音頻壓縮編碼技術[M].北京:中國電力出版社,2001
[3] SALOMON D.Data compression-the complete reference,second edition[M].New York:Springer-Verlag Inc.,2000.
[4] 丁貴廣.新一代靜止圖像壓縮編碼標準:JPEG2000概述[EB/OL].http://xllw.cn/n175c13.aspx,2006.
[5] PENNEBAKER W B,MITCHELL J L.JPEG still image data compression standard[S].New York:Van Nostrand,1992.IEEE Trans.Circuits Syst.Video Technol.1995,6(8).
[6] Rao K R,Yip P.Discrete cosine transform-algorithms,advantages,application[M].London:Academic Press,1999.
[7] Siad A,Pearlman W A.A new fast and efficient image codec based on set partioning in hierarchical trees[J].IEEE Trans-actions on Circuits and Systems for Video Technology,1996,6(6).
[8] 何斌,馬天予,王運堅,等.數字圖像處理[M].北京:人民 郵電出版社,2001.(收稿日期:2006-12-20)