Wavelet Transform & Image Compression

                                         /***********************Wavelet  Transform出現背景***********************/
html

       圖像編碼在保證必定重構質量的前提下,經過取出圖像中的各類冗餘,以儘可能少的比特數來表示圖像。
算法

       圖像編碼長期以來主要利用離散餘弦變換(DCT)做爲變換編碼的主要技術,然而存在以下一些問題:(1)利用DCT變換存在明顯的方塊效應,(2)不適用於對非平穩信號,(3)要進一步提升壓縮性能很困難。
api

       小波變換是在短時傅里葉變換的基礎上發展起來的一種新型變換方法,他是一種時—頻分析法,具備多分辨率分析 (MultiresolutionAnalysis)的特色,並且在時、頻域都具備表徵信號局部特徵的能力,是一種窗口大小不變、形狀可變、時間窗和頻率 窗均可以改變的時頻局部化分析方法。小波變換因爲具備很好的時—頻特性並且能夠匹配人類視覺系統的特性,於是獲得圖像壓縮編碼領域的極大關注。網絡

       

       首先咱們簡單瞭解一下二維小波變換的塔式結構。咱們知道,一維小波變換實際上是將一維原始信號分別通過低通濾波和高通濾波以及二元下抽樣獲得信號的低頻部分 L和高頻部分H。而根據Mallat算法,二維小波變換能夠用一系列的一維小波變換獲得。對一幅m行n列的圖像,二維小波變換的過程是先對圖像的每一行作 一維小波變換,獲得L和H兩個對半部分;而後對獲得的LH圖像(還是m行n列)的每一列作一維小波變換。這樣通過一級小波變換後的圖像就能夠分爲 LL,HL,LH,HH四個部分,以下圖所示,就是一級二維小波變換的塔式結構:
LL
HL
LH
HH
圖1
        而二級、三級以致更高級的二維小波變換則是對上一級小波變換後圖像的左上角部分(LL部分)再進行一級二維小波變換,是一個遞歸過程。下圖是三級二維小波變換的塔式結構圖:
LL3
HL3
HL2
HL1
LH3
HH3
LH2
HH2
LH1
HH1
圖2
       一個圖像通過小波分解後,能夠獲得一系列不一樣分辨率的子圖像,不一樣分辨率的子圖像對應的頻率也不一樣。高分辨率(即高頻)子圖像上大部分點的數值都接近於 0,分辨率越高,這種現象越明顯。要注意的是,在N級二維小波分解中,分解級別越高的子圖像,頻率越低。例如圖2的三級塔式結構中,子圖像HL二、 LH二、HH2的頻率要比子圖像HL一、LH一、HH1的頻率低,相應地分辨率也較低。根據不一樣分辨率下小波變換系數的這種層次模型,咱們能夠獲得如下三 種簡單的圖像壓縮方案。
     
       方案一:舍高頻,取低頻
        一幅圖像最主要的表現部分是低頻部分,所以咱們能夠在小波重構時,只保留小波分解獲得的低頻部分,而高頻部分系數做置0處理。這種方法獲得的圖像能量損失大,圖像模糊,不多采用。
另外,也能夠對高頻部分的局部區域係數置0,這樣重構的圖像就會有局部模糊、其他清晰的效果。
       方案二:閾值法
       對圖像進行多級小波分解後,保留低頻係數不變,而後選取一個全局閾值來處理各級高頻係數;或者不一樣級別的高頻係數用不一樣的閾值處理。絕對值低於閾值的高頻 係數置0,不然保留。用保留的非零小波係數進行重構。Matlab中用函數ddencmp()可獲取壓縮過程當中的默認閾值,用函數wdencmp()能對 一維、二維信號進行小波壓縮。
        方案三:截取法
        將小波分解獲得的所有係數按照絕對值大小排序,只保留最大的x %的係數,剩餘的係數置0。不過這種方法的壓縮比並不必定高。由於對於保留的係數,其位置信息也要和係數值一塊兒保存下來,才能重構圖像。而且,和原圖像的 像素值相比,小波係數的變化範圍更大,於是也須要更多的空間來保存。

       小波分析在圖像領域的應用應歸功於Mallat。1987年,Mallat巧妙地將計算機視覺領域內的多尺度分析思想引入到小波分析中小波函數的構造,從 而統一了在此以前的各類小波的構造方法。Mallat研究了小波變換的離散形式,並將相應的算法應用於圖像的分解與重建,爲隨後的小波圖像壓縮奠基了基 礎。進入90年代,利用小波進行圖像壓縮的研究獲得了空前的關注。這一時期正是互聯網蓬勃興起的時候,所以如何適應網絡的特色進行圖像編碼獲得了重視。 1993年,Shapiro首先將零樹的概念引入到小波圖像壓縮中,這種稱爲EZW的方法能夠對圖像進行漸進性編碼,具備很高的壓縮性能,很是適合於網絡 圖像的傳輸與瀏覽。對於圖像來講,若是須要進行快速或實時傳輸以及大量存儲,就須要對圖像數據進行壓縮。在一樣的通訊容量下,若是圖像數據壓縮後再傳輸, 就能夠傳輸更多的圖像信息。例如,用普通的電話線傳輸圖像信息。圖像壓縮研究的就是尋找高壓縮比的方法且壓縮後的圖像要有合適的信噪比,在壓縮傳輸後還要 恢復原信號,而且在壓縮、傳輸、恢復的過程當中,還要求圖像的失真度小,這就是圖像壓縮的研究問題。圖像數據每每存在各類信息的冗餘、如空間冗餘、信息熵冗 餘、視覺冗餘和結構冗餘等等。所謂壓縮就是去掉各類冗餘,保留對咱們有用的信息。圖像壓縮的過程常稱爲編碼。相對的,圖像的恢復就是解碼。圖像壓縮的方法 一般可分爲有失真編碼和無失真編碼兩大類:無失真編碼方法如改進的霍夫曼編碼。有失真編碼方法的還原圖像較之原始圖像存在着一些偏差,但視覺效果是能夠接 受的。常見的方法有預測編碼、變換編碼、量化編碼、信息熵編碼、分頻帶編碼和結構編碼等。在小波分析中也有兩個重要的數學實體:"積分小波變換"和"小波 級數"。積分小波變換是基小波的某個函數的反射膨脹卷積,而小波級數是稱爲小波基的一個函數,用兩種很簡單的運算"二進制膨脹"與"整數平移"表示。經過 這種膨脹和平移運算能夠對信號進行多尺度的細緻表示。經過這種膨脹和平移運算能夠對信號進行多尺度的細緻的動態分析,從而可以解決Fourier變換不能 解決的許多困難問題。利用小波變換能夠一次變換整幅圖像,不只能夠達到很高的壓縮比,並且會出現JPEG重建圖像中的"方塊"效應,但編碼器複雜,有潛像 問題。app

       因爲小波及小波包技術能夠將信號或圖像分層次按小波基展開,因此能夠根據圖像信號的性質以及事先給定的圖像處理要求肯定到底要展開到哪一級爲止,從而不只 能有效地控制計算量,知足實時處理的須要,並且能夠方便地實現一般由子頻帶、層次編碼技術實現的累進傳輸編碼(即採起逐步浮現的方式傳送多媒體圖像)。這 樣一種工做方式在多媒體數據瀏覽、醫學圖片遠程診斷時是很是必要的。另外,利用小波變換具備放大、縮小和平移的數學顯微鏡的功能,能夠方便地產生各類分辨 率的圖像,從而適應於不一樣分辨率的圖像I/O設備和不一樣傳輸速率的通訊系統。相比之下,利用KL變換進行壓縮編碼,只能對整幅圖像進行;而利用小波變換則 可以比較精確地進行圖像拼接,所以對較大的圖像能夠進行分塊處理,而後再進行拼接。顯然,這種處理方式爲圖像的並行處理提供了理論依據。
  
實 際上,因爲小波變換分析具備以上許多優勢,因此在最近頒佈的運動圖像壓縮標準MPEG4中的視覺紋理模式就支持視覺紋理和靜態圖像編碼。這種模式基於零高 度樹小波算法,在很是寬的比特率範圍內具備很高的編碼效率。除了具備很高的壓縮效率以外,它還提供了空間和質量的可縮放性,以及對任意形狀目標的編碼。其 空間可縮放性高達11級,質量的可縮放性具備連續性。小波公式以累進傳輸和時間上擴充靜態圖像分辨率金字塔的形式提供比特率可縮放的編碼。編碼的位流也可 以用於圖像分辨率層次抽樣。這種技術提供了分辨率的可縮放性,以便處理在交互應用場合普遍的觀察條件,以及把2D圖像映射到3D虛擬空間。函數

       小波變換以小波函數做爲函數展開的基底,在時域和頻域同時具備良好的局部特性,能夠在多尺度上對信號進行多分辨率的分析。在過去的不少年裏,小波變換在一 般的信號處理和圖像壓縮研究中被普遍地接受。在許多應用中,基於小波的方法(也叫子頻帶編碼)要賽過其餘編碼方法(好比基於DCT的)。由於不必對圖像 分塊而且基函數可變長度,小波編碼方法在高壓縮率時沒有方塊效應。基於小波的編碼對傳輸和解碼錯誤更具備魯棒性,有利圖像的逐步傳輸 (prograssivetransmission)。此外,它們更符合HVS的特色。由於它們自己固有的多尺度性質,小波編碼方法很適合那些重視可伸縮 性(scalability)和可容忍退化(tolerabledegradation)的應用。基於小波變換的圖像壓縮有着很是優越的特色。即壓縮比 高、壓縮速度快,壓縮後能保持信號與圖像的特徵基本不變,且在傳遞過程當中能夠抗干擾等等。基於小波變換的圖像壓縮是在二維離散小波變換的基礎上發展起來的 一種塔式快速算法。他的分解以及合成過程都是迭代運算,基本原理以下:對原始圖像在水平方向和垂直方向與2個濾波器(低通、高通)相卷積,能夠獲得4塊面 積爲原圖像1/4的子圖,分別爲水平方向低頻和垂直方向低頻(HH)、水平方向低頻和垂直方向高頻(HG)、水平方向高頻和垂直方向低頻(GH)、水平方 向高頻和垂直方向高頻(GG)。HG,GH,GG稱爲細節子圖,HH稱爲原圖像的低分辨率子圖,以上只是圖像的一級小波分解,對HH再作一樣的運算就能夠 獲得圖像的二級小波分解,以此類推,還能夠獲得三級小波分解,四級小波分解……以WOMAN圖像爲例,對其進行小波分解,過程如圖1所示。合成的過程與上 述分解過程相反下面咱們舉個例子來深刻的認識一下這種優越的壓縮算法。性能


function wt()

a=imread('C:\MATLAB7\work\2.jpg');

A=rgb2gray(a);

%顯示圖像

subplot(2,4,1);

imshow(uint8(A));

title('原始圖像');

axis square

disp('壓縮前圖像X的大小');

whos('A')

%對圖像用小波進行層小波分解

[c,s]=wavedec2(A,2,'bior3.7');

%提取小波分解結構中的一層的低頻係數和高頻係數

cal=appcoef2(c,s,'bior3.7',1);

%水平方向

ch1=detcoef2('h',c,s,1);

%垂直方向

cv1=detcoef2('v',c,s,1);

%斜線方向

cd1=detcoef2('d',c,s,1);

%各頻率成份重構

a1=wrcoef2('a',c,s,'bior1.3',1);

h1=wrcoef2('h',c,s,'bior1.3',1);

v1=wrcoef2('v',c,s,'bior1.3',1);

d1=wrcoef2('d',c,s,'bior1.3',1);

c1=[a1,h1;v1,d1];

%顯示分頻信息

subplot(2,4,2);

imshow(uint8(c1));

axis square;

title ('分解後低頻和高頻信息');

%進行圖像壓縮

%保留小波分解第一層低頻信息

%首先對第一層信息進行量化編碼

ca1=appcoef2(c,s,'bior3.7',1);

ca1=wcodemat(ca1,460,'mat',1);

%改變圖像高度並顯示

ca1=0.5*ca1;

subplot(2,4,3);

imshow(uint8(ca1));

axis square;

title('第一次壓縮圖像');

disp('第一次壓縮圖像的大小爲:');

whos('ca1')

%保留小波分解第二層低頻信息進行壓縮

ca2=appcoef2(c,s,'bior3.7',2);

%首先對第二層信息進行量化編碼

ca2=wcodemat(ca2,440,'mat',2);

%改變圖像高度並顯示

ca2=0.25*ca2;

subplot(2,4,4);

imshow(uint8(ca2));

axis square;

itle('第二次壓縮圖像');

disp('第二次壓縮圖像的大小爲:');

whos('ca2')

壓縮前圖像X的大小優化

 Name     Size                   Bytes  Classui

     512x512              3145728  uint8 array編碼

第一次壓縮圖像的大小爲:

 Name     Size                   Bytes  Class

 ca1    263x263              6392200  double array

第二次壓縮圖像的大小爲:

 Name     Size                   Bytes  Class

 ca2    139x139                1652680 double array

       由上述程序運行結果能夠發現小波變換在圖像壓縮領域的應用是頗有優點的。並且在當今圖像壓縮紛繁複雜的算法當中基於小波變換的圖像壓縮算法還有待於更好的優化。可以調試一個更優化的圖像壓縮算法對於圖像傳輸和圖像優化等方面是十分有價值的。

      因爲小波變換繼承了Fourier(餘弦變換和正弦變換均可以視爲Fourier變換的特例)分析的優勢,同時又克服它的許多缺點因此它在靜態和動態圖像 壓縮領域獲得普遍的應用,而且已經成爲某些圖像壓縮國際標準(如MPEG-4)的重要環節。固然,像其餘變換編碼同樣,在壓縮比特別高的時候,小波變換壓 縮量化後的重建圖像也會產生幾何畸變。但伴隨着人們對小波基和小波分析的認識的日益成熟相信對於小波變換在圖像壓縮方面的應用將會更加普遍。

相關文章
相關標籤/搜索