摘 要: 根據不同特征的圖像在進行小波變換中能量分布的特點,提出了一種用能量函數來控制小波的分解,并找到圖像的最佳小波分解樹,從而完成自適應圖像壓縮的方法。
關鍵詞: 小波自適應算法 能量函數 最佳小波分解樹 圖像壓縮
在眾多圖像壓縮的方法中,小波變換以其優異的時頻局部能力及良好的去相關能力在圖像壓縮編碼中得到了廣泛應用,并取得了良好的效果[1]。目前,運用小波變換進行圖像壓縮編碼時一般都集中在對小波變換的多分辨率分析上,即著眼于對多分辨率下的小波系數進行不同的編碼和量化。本文在對圖像進行小波變換后,針對不同特征的圖像提出了一種能量準則,來控制小波的分解,從而實現圖像的自適應壓縮編碼。
1 圖像中的小波分解
但在實際中,可以不必知道ψ(x)和?準(x)的具體表達形式,而只需知道系數h(m)和g(m)即可。對于圖像分解,一般采用行列可分離的低、高通濾波器與圖像進行卷積并抽樣圖像來實現其小波分解。對圖像S進行第1次小波變換的過程如圖1所示。圖像3級分解后的子圖位置如圖2所示。圖2中,LL子圖包含原始圖像的低頻信息,稱為低頻子圖;LH子圖包含圖像的橫向邊緣信息,稱為水平邊緣子圖;HL子圖包含圖像的縱向邊緣信息,稱為垂直邊緣子圖;HH子圖包含圖像的對角邊緣信息,稱為對角線子圖。LH、HL、HH子圖又統稱為高頻子圖。若對圖像進行N次分解,一共可分解成3N+1幅子圖像。
2 小波變換后各頻帶統計
小波變換用于圖像壓縮的一般方法是先對圖像進行小波變換,然后再對低頻部分LL進行遞歸分解。這種塔式小波分解[3]的依據是圖像的重要信息往往包含在LL頻帶。本文用db3(Daubechies 3)小波對圖像Woman、Lena和Fingerprint進行了分解并給出了每一層分解后各個分量的能量。
其中,能量定義為:
E=100×(Ed/Et)
Ed為分解子帶經小波變化后的系數值的平方和,Et為分解后的所有系數值的平方和。
db3小波1次分解和3次分解變換的能量統計表分別如表1和表2所示。其中,Ell表示低頻LL的能量,Elh、Ehl、Ehh對應LH、HL、HH各個頻帶的能量。
從表1可以看出,圖像Woman、Lena和Fingerprint的能量主要集中在低頻LL帶上;其他頻帶LH、HL、HH集中了圖像少量的能量;LH、HL、HH各個頻帶包含的圖像信息不同,其中HL相對于其他2個頻帶包含了更多的圖像信息。
從表2可以看出:圖像Woman、Lena和Fingerprint經過db3的3次小波分解后的能量總體分布規律同表1大體相同;HH頻帶相對于其他頻帶的能量更少,對圖像影響更弱;HL、LH頻帶的能量百分比增大,包含的圖像信息量也相應增加;頻帶LH、HL、HH對不同特征的圖像影響能力不同:圖像Woman中LH、HL、HH頻帶的總能量Et值減小,對圖像的影響逐步減弱,包含的圖像重要信息相對減少;而圖像Lena和圖像Fingerprint中LH、HL、HH頻帶總能量Et值增大,對圖像的影響逐步增強,包含的圖像的重要信息相對增多。
從表1和表2中可知,在實際中也有一些圖像的圖像信息往往會包含在HL或LH頻帶中。所以,如果只是對圖像的低頻分量進行分解,對于某些類型的圖像的數據進行壓縮,就可能將圖像中重要的信息丟失掉,影響實際應用。因此,需要用一種具有普遍性的算法來控制圖像的分解。
3 小波自適應算法
針對傳統的塔式小波分解存在的不足,本文定義了一個能量函數F作為判斷準則來控制小波分解。能量函數的定義為:
此外,再設置c、d 2個參數,用于控制圖像的分解過程,其中c用于判斷小波分解后的子圖是否進行再分解,d用于判斷其子圖的重要性。為便于程序設計,設置標識為flg。當flg=0時,表示該子圖不重要;當flg=1時,表示該子圖重要;當flg=2時,該子圖需要進行下一層小波分解。下面給出小波自適應的算法。
(1)選用合適的小波函數對圖像進行第1次分解。
(2)設置參數c,d。
(3)用公式(1)計算第1次小波分解后的總能量值F1。
(4)用公式(2)和公式(3)計算出第1次小波分解后的低頻LL及其他頻帶LH、HL、HH的能量值f1L、g1h。
(5)判斷分解后各子頻帶的能量值是否大于cF1,若是,置flg=2;判斷分解后各子頻帶的能量值是否小于dF1,若是,置flg=1。若非上述2種情況,則置flg=0。
(6)將flg=2的子圖繼續按照步驟(3)和(4)分解,直到子圖的大小≤16×16時結束。
通過小波自適應算法,在圖像分解過程就產生了圖像的最佳小波分解樹示意圖,如圖3所示。
最佳小波分解樹的數據結構定義如下:
typedef struct besttree
{
struct besttree*child1;//LL 分量
struct besttree*child2;//LH分量
struct besttree*child3;//HL分量
struct besttree*child4;//HH分量
int flag;// flg標識
float*data;
}
4 圖像編碼機制
得到圖像的最佳小波分解樹后,就可以對其進行編碼。首先處理分辨率最高層的LLm的子圖。因為其包含了圖像的主要信息,而且相鄰象素之間存在較強的相關性,故對其采用壓縮比較高的預測編碼算法。其他的子圖因其分解樹具有不確定性,因而可根據其重要性來編碼。對重要矢量的各分量進行標量量化,即將低于某個門限的分量置為0,對較大的系數屏蔽其后若干位。最后對保留的量化的系數進行算術編碼。
圖像的重構是上述圖像分解的逆過程,即與上面的過程相反。先解碼重要的圖,重要的系數從熵解碼中直接獲得,不重要的系數用0填充,然后再重建出圖像的LL分量的系數,再將小波系數反量化,最后再進行小波的反變換,則得到重建的圖像。
5 實驗結果及結論
本文實驗采用的圖像均為灰度靜止圖像,小波濾波器采用的是db3。實驗圖像有標準圖像Lena、Woman、指紋圖像和隨機圖像Mandrill。
在圖像壓縮中,衡量壓縮算法的好壞主要有2個指標,即壓縮比和恢復圖像的質量。對于恢復圖像的質量,目前廣泛使用的主要有2個評價標準[3]:(1)客觀標準,以恢復圖像和原圖像間的信噪比表示。(2)主觀評價標準,根據人眼的視覺特性(HVS)對圖像進行評價。
本文采用峰值信噪比(PSNR),其定義為:
M、N為圖像的尺寸,x(i,j)、y(i,j)分別為原始圖像和重構圖像的象素值。
不同算法的實驗數據比較如表3所示。
Mandrill的原始圖像和壓縮圖像如圖4所示。
從圖4和表3中可以看出:本文采用的壓縮算法不會產生塊狀效應,視覺效果明顯優于JPEG的壓縮,相對于JPEG各種不同特征的圖像都提高了其壓縮比,但是在圖像的邊緣處出現了鋸齒現象。同時,本文在編碼量化中通過分組判定重要性對數據進行分類組織,可以提高壓縮比。在量化過程中不需要做乘、除法運算,加快了編解碼的過程。
參考文獻
1 王向陽,楊紅穎.基于人眼視覺特性的快速圖像編碼算法.軟件學報,2003;14(11)
2 Mallat S.A Theory for Multiresolution Signal Decomposition.The Wavelet Representation.IEEE Trans on Pattern Anal and Mach Intel,1989;11(7)
3 孫燕,卓晴.基于小波變換的一種有效的面向指紋自動識別的圖像壓縮算法.中國體視學與圖像分析,1997;2(4)
4 胡昌華.基于MATLAB的系統分析與設計—小波分析.西安:西安電子科技大學出版社,1999