①小波基本概念
②圖像壓縮
③圖像消噪
④圖象增強
⑤圖象平滑處理
二:小波基本概念
小波定義:設 ,其傅立葉變換為 ,當 滿足允許條件,即完全重構條件或恒等分辨條件. 時,我們稱 為一個基本小波或母小波,將母函數(shù) 經伸縮和平移后,得 。 我們稱其為一個小波序列。其中a為伸縮因子,b為平移因子。
小波變換是一種信號的時間——尺度分析方法,他具有多分辨率分析的特點,而且在時頻兩域都具有表征信號局部特征的能力,是一種窗口大小固定不變但其形狀可變,時間窗和頻率窗都可變的時頻局部化分析方法。即再低頻部分具有較高的頻率分辨率和時間分辨率,在高頻部分具有較高的時間分辨率和較低的頻率分辨率,很適合探測正常信號中夾帶的瞬態(tài)反?,F(xiàn)象并展示其成分,所以被譽為分析信號的顯微鏡。
波分析是把信號分解成低頻al和高頻dl兩部分,在分解中,低頻al中失去的信息由高頻dl捕獲。在下一層的分解中,又將al分解成低頻a2和高頻d2兩部分,低頻a2中失去的信息由高頻d2捕獲,如此類推下去,可以進行更深層次的分解。
二維小波函數(shù)是通過一維小波函數(shù)經過張量積變換得到的,二維小波函數(shù)分解是把尺度j的低頻部分分解成四部分:尺度j+1的低頻部分和三個方向(水平、垂直、斜線)的高頻部分。
三:圖像壓縮
對于圖像來說,如果需要進行快速或實時傳輸以及大量存儲,就需要對圖像數(shù)據進行壓縮。在同樣的通信容量下,如果圖像數(shù)據壓縮后在傳輸,就可以傳輸更多的圖像信息。例如,用普通的電話線傳輸圖像信息。圖像壓縮研究的就是尋找高壓縮比的方法且壓縮后的圖像要有合適的信噪比,在壓縮傳輸后還要恢復原信號,斌且在壓縮、傳輸、恢復的過程中,還要求圖像的失真度小。這就是圖像壓縮的研究問題。
圖像數(shù)據往往存在各種信息的冗余、如空間冗余、信息熵冗余 、視覺冗余 和結構冗余等等。所謂壓縮就是去掉各種冗余,保留對我們有用的信息。圖像壓縮的過程常稱為編碼。相對的,圖像的恢復當然就是解碼了。
圖像壓縮的方法通??煞譃橛惺д婢幋a和無失真編碼兩大類:
無失真編碼方法如改進的霍夫曼編碼。
有失真編碼方法的還原圖像較之原始圖像存在著一些誤差,但視覺效果是可以接受的。常見的方法有預測編碼、變換編碼、量化編碼、信息熵編碼、分頻帶編碼和結構編碼等等。
而將小波分析引入圖像壓縮的范疇也是一個重要的手段,并且有著它自己的特點。它的特點在于壓縮比高、壓縮速度快,壓縮后能保持信號與圖像的特征基本不變,且在傳遞過程中可以抗干擾等等。
下面我們就舉一個粒子來說明怎樣用小波分析進行圖像壓縮。
例如現(xiàn)在有一個二維圖像(文件名為),我們利用二維小波分析來進行圖像壓縮。
由原理可知,一個圖像作小波分解后,可得到一系列不同分辨率的子圖像,不同分辨率的子圖像對應的頻率是不相同的。高分辨率(高頻)子圖像上大部分點的數(shù)值都接近于0,越是高就越是明顯。而對于一個圖像來說,表現(xiàn)一個圖像的最主要的部分是低頻部分,所以最簡單的壓縮方法是利用小波分解去掉圖像的高頻部分而只保留低頻部分。
程序大致如下:
clear
%裝入圖像
load wbarb;
%顯示圖像
syms X;
subplot(221);
image(coast);
colormap(map)
title('原始圖像');
axis square
disp('壓縮前圖像X的大小');
whos('coast')
%對圖像用小波進行層小波分解
[c,s]=wavedec2(X,2,'bior3.7');
%提取小波分解結構中的一層的低頻系數(shù)和高頻系數(shù)
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,'bior3.7',1);
h1=wrcoef2('h',c,s,'bior3.7',1);
v1=wrcoef2('v',c,s,'bior3.7',1);
d1=wrcoef2('d',c,s,'bior3.7',1);
c1=[a1,h1;v1,d1];
%顯示分頻信息
subplot(222);
image(c1);
axis square;
title ('分解后低頻和高頻信息');
%進行圖像壓縮
%保留小波分解第一層低頻信息
%首先對第一層信息進行量化編碼
ca1=appcoef(c,s,'bior3.7',1);
ca1=wcodemat(ca1,440,'mat',0);
%改變圖像高度并顯示
ca1=0.5*ca1;
subplot(223);
image(ca1);
colormap(map);
axis square;
title('第一次壓縮圖像');
disp('第一次壓縮圖像的大小為:');
whos('ca1')
%保留小波分解第二層低頻信息進行壓縮
ca2=appcoef2(c,s,'bior3.7',2);
%首先對第二層信息進行量化編碼
ca2=wcodemat(ca2,440,'mat',0);
%改變圖像高度并顯示
ca2=0.25*ca2;
subplot(224);
image(ca2);
colormap(map);
axis square;
title('第二次壓縮圖像');
disp('第二次壓縮圖像的大小為:');
whos('ca2')
輸出結果如圖:
Name
Size
Bytes
class
壓縮前圖像
X
256×256
524288
Double array
第一次壓縮圖像
Ca1
135×135
145800
Double array
第二次壓縮圖像
Ca2
75×75
45000
Double array
在這里可以看出,第一次壓縮我們是提取原始圖像中小波分解第一層的低頻信息,此時壓縮效果較好,壓縮比較小(約為1/3大?。?。第二次壓縮實提取第一層分解低頻部分的低頻部分(即第二層的低頻部分),其壓縮比較大(約為1/12),壓縮效果在視覺上也基本過得去。
上面的保留原始圖像中低頻信息的壓縮辦法只是一種最簡單的壓縮辦法。它不需經過其他處理即可獲得較好的壓縮效果。當然,對于上面的例子我們還可以只提取小波分解的第三、第四層的低頻信息。從理論上說,我們可以獲得任意壓縮比的壓縮圖像。只不過在對壓縮比和圖像質量都有較高要求時,它就不如其他編碼方法了。
下面我們在舉一個例子,這一次用 中函數(shù)來對上圖進行壓縮。
Clear;
%裝入圖形信號
load wbarb;
%顯示圖像
subplot(221);
image(X);
colormap(map);
title('原始圖像');
disp('壓縮前圖像的大小');
whos('X');
axis square;
%對圖像進行壓縮
%對圖像用db3小波進行二層小波分解
[c,s]=wavedec2(X,5,'db3');
[thr,sorh,keepapp]=ddencmp('cmp','wv',X);
[Xcomp,cxc,lxc,perf0,perfl2]=wdencmp('gbl',c,s,'db3',5,thr,sorh,keepapp);
%將壓縮后的圖像于原始圖像相比較
subplot(222);
image(Xcomp);
colormap(map);
title(' 壓縮后的圖像');
disp('壓縮后圖像的大小');
whos('Xcomp')
%顯示有關參數(shù)
disp('小波分解系數(shù)中值為0的系數(shù)個數(shù)百分比');
disp(perf0);
disp('壓縮后剩余能量百分比');
disp(perfl2);
輸出結果如下:
小波分解系數(shù)中值為0的系數(shù)個數(shù)百分比:49.8088
壓縮后剩余能量百分比:99.9754
總之,是事無絕對。一種壓縮圖像的方法不可能盡善盡美。要想很好的進行圖像的壓縮,就需要綜合的利用多種其他技術,特別是數(shù)據編碼和解碼算法。