彭干濤,禹 峰,林嘉居
(華中師范大學電子信息工程學院,湖北武漢430070)
對一幅圖像進行增強處理,分成8×8個子圖像后進行DCT變換編碼,對得到的DC直流系數進行差分脈沖編碼,交流系數AC使用行程編碼進行編碼,最后對每一個塊進行解碼組合,形成壓縮后的圖像。編碼和解碼過程如圖1、圖2所示。

圖1 編碼器框圖

圖2 解碼器框圖
圖像信息存在空間冗余、時間冗余、結構冗余、信息熵冗余、知識冗余、視覺冗余,以及圖像的專有特性,為圖像壓縮提供了可能。壓縮編碼的理論基礎是信息論,最大熵定理指出,信源的平均碼長大于信息熵;香農信息論指出信息熵是進行無失真編碼的理論基礎,當信源符號概率相等時,熵值達到最大;后來又提出了各種編碼理論。
離散信息編碼定理主要有:香農信息保持編碼定理,變長編碼定理,變長最佳編碼定理,赫夫曼編碼,香農-范諾編碼,算數編碼,行程編碼,LZW算法。
預測編碼是建立在圖像數據的時間和空間上的相關性,實際應用中,由于數據源的數學模型很難建立,一般是基于估計理論、現代統計學理論的。根據解壓重建后的圖像和原始圖像之間是否具有誤差,分為無損編碼和有損編碼兩大類。無損壓縮可以精確地恢復原圖像,但是壓縮比很小。有損壓縮雖然造成了一定的失真,但是壓縮比很大。可根據不同的質量要求改變壓縮比,得到最適合存儲傳輸且不影響效果的編碼圖像。有損預測編碼主要有德爾塔調制、最優量化器、最佳線性預測器。
除了前面提到的對像素空間進行操作的空域方法,還有基于圖像變換的圖像變換編碼技術。它的原理是,因為圖像數據具有相關性,在正交矢量空間描述圖像時,根據圖像本身的主要特征選取最相近的正交矢量,會使數據在新的坐標空間分布得更加集中,因此使編碼過程變得簡化,數據得到有效壓縮。具體方法是先將圖像分割成n×n的子圖像,對每一個子圖像進行正交變換,再將很小變換系數進行消除或者粗量化處理,最后對變換系數進行熵編碼。
圖像變換的實質是將圖像能量或信息集中于某些系數,變換的性質不同,產生的均方重建誤差也不同。一幅N×N圖像f(x,y)可以表示成二維變換T(u,v)的函數:

由于式(1)中的逆變換核h(x,y,u,v)只與x,y,u,v有關,因此h(x,y,u,v)可以看成是式(1)定義的一系列基函數,對式(1)進行變換

式中,F是由f(x,y)組成的n×n矩陣,而Huv是顯然F是n2個大小為n×n的Huv的線性組合。

實際上,這些矩陣是式(2)的一系列擴展基礎圖像;而相關的T(u,v)是擴展的系數。如果現在定義一個變換系數的截取模板:

那么可以得到一個F的截取近似:m(u,v)用來消除(2)式中對求和貢獻最小的基礎圖
像,這樣,子圖像F和F^之間的均方誤差可以表示為

其中,是‖F-F^‖2是(F-F^)的范數,σ2T(u,v)是位置(u,v)的變換系數方差,式(6)的最終化簡是以基礎圖像的正交性質和假定F的像素是由零均值和已知方差的隨機過程產生的為基礎進行的。因此,總的均方差近似誤差是所有截除的變換系數的方差之和,由于把最多的信息集中到最小的系數上去,產生的重建誤差最小,由(6)式假設可知,一幅N×N圖像的N/n2個子圖像的均方誤差是相同的,因此,N×N大小的圖像的均方誤差等于單個子圖像的均方誤差。
不同的圖像變換編碼技術對信息集中的能力不同,主要有基于FFT的圖像壓縮技術、基于DCT的圖像壓縮技術、基于哈達瑪變換的圖像壓縮技術。本論文主要對DCT的圖像壓縮技術進行研究。
在對圖像進行分割時,一般選取尺寸為4×4、8×8、16×16。尺寸太小,雖然計算速度快,實現簡單,但壓縮能力有限;尺寸太大,由于圖像本身的相關性很小,壓縮效果不明顯,而且增加了計算的復雜性。變換編碼時保留系數的方法也不同,主要有區域編碼和閾值編碼(圖3)。

圖3 編碼器框圖
(1)區域編碼基于信息論中視信息的不確定性,保留具有最大方差的變換系數,然后進行量化編碼,在任何一種情況下,根據式(5),區域取樣處理可被看成是每個T(u,v)用相應的區域模板的元素相乘,區域模板有時被描繪成用于對每個系數進行編碼的比特數。
(2)閾值編碼對所有子圖像用一個固定的模板,本質上是自適應的,各個子圖像保留的變換系數的位置可隨子圖像的不同而不同,計算簡單,取閾值的方法有:對所有子圖像用一個全局變量、對各個子圖像分別用不同的閾值、根據子圖像中各系數的位置選取閾值。第三種方法可將取閾值和量化結合起來。
二維離散余弦變換DCT變換公式為

MATLAB具有強大的計算、仿真、繪圖等功能,庫函數的發展使它逐漸成為各個科學領域常用的研究應用軟件。
同態濾波是一種在頻域中同時將圖像亮度范圍進行壓縮和將圖像對比度增強的方法。增強后的圖像由對應的照明分量和反射分量兩部分疊加而成。一般照明分量反映了圖像緩慢的空間變化,反射分量反映了不同物體交界處的急劇變化。
利用DCT進行圖像壓縮,首先將原圖像分解成8×8塊,然后對每個塊進行二維離散余弦變換,最后對得到的DCT系數進行量化和行程編碼,并舍棄大量的接近0的系數。解碼時首先對每個塊進行DCT反變換,然后將反變換的塊組合到一起。
(1)仿真 Matlab代碼
I=imread('E:\數字圖像處理\lena.png');%讀入圖片I=rgb2gray(I);I=double(I);%同態濾波處理f=fft2(I);%采用傅里葉變換g=fftshift(f);%數據矩陣平衡
[M,N]=size(f);d0=10;r1=0.5;rh=2;c=4;n1=floor(M/2);n2=floor(N/2);for i=1:M %主循環for j=1:N
d=sqrt((i-n1)^2+(j-n2)^2);h=(rh-r1)*(1-exp(-c*(d.^2/d0.^2)))+r1;
g(i,j)=h*g(i,j);end end g=ifftshift(g);%循環結束g=uint8(real(ifft2(g)));%DCT變換
J=im2double(g);%存儲類型轉換為雙精度浮點類型T=dctmtx(8);%離散余弦變換矩陣,得到8DCT矩降,然后進行量化
B=blkproc(J,[8 8],'P1*x*P2',T,T');%對原圖像進行DCT變換

B1=blkproc(B,[8 8],'P1.*x',mask1);%數據壓縮,丟棄右下角高頻數據
J1=blkproc(B1,[8 8],'P1*x*P2',T',T);%進行反DCT變換
B3=blkproc(B,[8 8],'P1.*x',mask3);J36=blkproc(B3,[8 8],'P1*x*P2',T',T);
figure;subplot(141);imshow(I,[]);title(‘原圖像');subplot(142);imshow(g,[]);
title('同態濾波增強圖像');subplot(143);imshow(J1,[]);title('量化系數為1');subplot(144);imshow(J36,[]);title('量化系數為36');%壓縮比程序
imwrite(I,'c:\\c1.png');imwrite(J36,'c:\\c2.png');f1=imfinfo('c:\\c1.png');
f2=imfinfo('c:\\c2.png');r=f1.FileSize/f2.File-Size;disp(r);%峰值信噪比程序
I=double(I);I2=double(J36);[Row,Col]=size(I);[Row,Col]=size(I2);
MSE=sum(sum((I-I2).^2))/(Row*Col);%均方誤差MSE disp(MSE);
PSNR=10*log10(255^2/MSE);%峰值信噪比PSNR(dB)disp(PSNR);
運行程序便得到壓縮編碼后的圖像如圖4。

圖4 壓縮編碼后的圖像
(2)仿真結果分析
同態濾波時lena頭像的背景亮度減弱了,頭像的邊緣和圖案的線條的對比度增強了。量化編碼時,量化系數不同,壓縮圖像的質量也不同。量化系數越大,圖像質量越好,效果上看越接近原圖像,特別地,當量化系數為1時,壓縮圖像出現了明顯的“塊”失真,這是因為有損壓縮丟失了原始圖像部分數據信息導致的,量化系數越大,壓縮編碼引起的失真越小。表1顯示了量化系數個數不同的圖像的壓縮比、均方誤差和峰值信噪比。
由表1可以看出,量化個數越多,壓縮比越小,即壓縮圖像損失的數據信息越小,壓縮圖像的質量也越好。

表1 量化系數個數不同的圖像的壓縮比、均方誤差和峰值信噪比
本文針對圖像壓縮技術進行了系統概述。針對一幅lena圖像進行DCT變換,用MATLAB仿真,具體分析圖像壓縮技術。基于DCT變換的圖像壓縮技術對圖像壓縮的效果主要受量化個數的影響,量化系數越大,壓縮效果越好,圖像的峰值信噪比越大。DCT是正交變換,能把圖像從空間域變換到頻率域,只需要對少量的系數進行量化編碼,壓縮效果明顯。而且DCT有快速算法,對稱的逆DCT變換也很容易實現圖像解碼,軟件便于實現。雖然現在圖像壓縮技術發展比較成熟,但在信息全球化的時代,需要更加便捷有效的壓縮技術來為社會服務。
[1]姚 敏.數字圖像處理[M].北京:機械工業出版社,2006.