《基于MATLAB的小波分析應(yīng)用》課件第6章_第1頁
《基于MATLAB的小波分析應(yīng)用》課件第6章_第2頁
《基于MATLAB的小波分析應(yīng)用》課件第6章_第3頁
《基于MATLAB的小波分析應(yīng)用》課件第6章_第4頁
《基于MATLAB的小波分析應(yīng)用》課件第6章_第5頁
已閱讀5頁,還剩140頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第6章小波變換與圖像處理6.1圖像分解 6.2圖像重構(gòu)

6.3圖像去噪6.4圖像壓縮6.5圖像增強(qiáng)6.6圖像融合6.7圖像延拓

6.1圖像分解6.1.1圖像的小波分解

1.二維小波分解函數(shù)

MATLAB中實(shí)現(xiàn)了單尺度二維離散小波分解、多尺度二維離散小波分解、提取二維小波分解的高頻系數(shù)以及提取二維小波分解的低頻系數(shù)。

1)單尺度二維離散小波分解

MATLAB中實(shí)現(xiàn)單尺度二維離散小波分解的函數(shù)是dwt2,其調(diào)用格式有以下兩種:

(1)?[cA,cH,cV,cD]=dwt2(X,'wname')

(2)?[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D)其中,X是被分解的離散信號,wname為分解小波函數(shù),Lo_D和Hi_D分別為分解低通濾波器和高通濾波器,兩者長度必須相等。返回值cA、cH、cV和cD分別為低頻系數(shù)和高頻系數(shù)向量。可以按照格式[cA,cH,cV,cD]=dwt2(...,'mode',MODE),使用擴(kuò)展模式進(jìn)行信號的小波分解,參數(shù)MODE可以參考函數(shù)dwtmode。如果sx?=?size(X),lf?=?濾波器的長度,則size(cA)=size(cH)=size(cV)=size(cD)=sa;如果DWT的擴(kuò)展模式為周期,此時sa=ceil(sx/2);對于其他的模式,此時sa=floor((sx+lf-1)/2)。

2)多尺度二維離散小波分解

MATLAB中實(shí)現(xiàn)多尺度二維離散小波分解的函數(shù)是wavedec2,其調(diào)用格式有以下兩種:

(1)?[C,S]=wavedec2(X,N,'wname')

(2)?[C,S]=wavedec2(X,N,Lo_D,Hi_D)其中,N必須為嚴(yán)格的正整數(shù);wname為小波函數(shù);Lo_D和Hi_D分別為分解低通濾波器和高通濾波器。返回分解結(jié)構(gòu)[C,S],其中C的結(jié)構(gòu)為:

C=[A(N)|H(N)|V(N)|D(N)|...H(N-1)|V(N-1)|D(N-1)|...|H(1)|V(1)|D(1)]式中,A為低頻系數(shù);H為水平高頻系數(shù);V為垂直高頻系數(shù);D為斜線高頻系數(shù);所有向量均以列向量存儲在矩陣C中。矩陣S的結(jié)構(gòu)為:

S(1,:)=尺度N的低頻系數(shù)矩陣的大小;

S(i,:)=尺度N-i+2的高頻系數(shù)矩陣的大小,i=2,…,N+1;

S(N+2,:)=size(X)。其分解過程如圖6.1所示。圖6.1信號的多尺度二維小波分解

3)提取二維小波分解的高頻系數(shù)

MATLAB中實(shí)現(xiàn)提取二維小波分解的高頻系數(shù)的函數(shù)是detcoef2,其調(diào)用格式如下:

D=detcoef2(O,C,S,N)其中,[C,S]是信號的二維小波分解結(jié)構(gòu),尺度N必須為正整數(shù)且1≤N≤size(S,1)-2,O取值為?'h'('v'或'd'),當(dāng)O為?'h'?時,表示提取水平方向系數(shù),當(dāng)O為?'v'?時,表示提取垂直方向系數(shù),當(dāng)O為'd'時,表示提取斜線方向系數(shù)。

4)提取二維小波分解的低頻系數(shù)

MATLAB中實(shí)現(xiàn)提取二維小波分解的低頻系數(shù)的函數(shù)是appcoef2,其調(diào)用格式有以下4種:

(1)?A=appcoef2(C,S,'wname',N)

(2)?A=appcoef2(C,S,'wname')

(3)?A=appcoef2(C,S,Lo_R,Hi_R)

(4)?A=appcoef2(C,S,Lo_R,Hi_R,N)

appcoef2與detcoef2對應(yīng),用于提取二維小波分解的低頻系數(shù)。wname為小波函數(shù),Lo_R和Hi_R分別為低通濾波器和高通濾波器。格式(1)和(4)提取尺度N的低頻系數(shù),0≤N≤size(S,1)-2,格式(2)和(3)提取最后一尺度(N=size(S,1)-2)的低頻系數(shù)。

2.圖像的小波分解實(shí)例下面通過兩個例子說明如何對圖像進(jìn)行單尺度分解和多尺度分解,并提取多尺度分解的小波系數(shù)。

【例6-1】對圖像進(jìn)行單尺度分解。在本例中說明如何對圖像進(jìn)行單尺度分解。程序中調(diào)用函數(shù)dwt2對圖像進(jìn)行分解,并畫出圖像分解的低頻分量和水平、垂直和斜線方向的三個高頻分量,可以看出低頻分量表現(xiàn)了圖像的輪廓,而高頻分量表現(xiàn)了圖像的細(xì)節(jié)。程序代碼如下:%加載圖像loadtire;nbc=size(map,1);colormap(pink(nbc));%用小波函數(shù)db2對信號x進(jìn)行單層分解[cA1,cH1,cV1,cD1]=dwt2(X,'db2');figure(1);subplot(3,2,1);image(wcodemat(X,nbc));title('原始圖像');subplot(3,2,3);image(wcodemat(cA1,nbc));title('低頻系數(shù)圖像');subplot(3,2,4);image(wcodemat(cH1,nbc));title('水平高頻系數(shù)圖像');subplot(3,2,5);image(wcodemat(cV1,nbc));title('垂直高頻系數(shù)圖像');subplot(3,2,6);image(wcodemat(cD1,nbc));title('斜線高頻系數(shù)圖像');程序運(yùn)行結(jié)果如圖6.2所示。圖6.2單尺度圖像分解

【例6-2】對圖像進(jìn)行多尺度分解并提取圖像分解的低頻和高頻小波系數(shù)。在本例中說明如何進(jìn)行圖像的多尺度分解并提取圖像分解的低頻和高頻小波系數(shù)。程序中首先利用函數(shù)wavedec2對圖像進(jìn)行2層分解,然后利用函數(shù)detcoef2提取小波分解的高頻系數(shù),再利用函數(shù)appcoef2提取小波分解的低頻系數(shù)。程序代碼如下:loadtire;%用小波函數(shù)db1對信號進(jìn)行2尺度分解[c,s]=wavedec2(X,2,'db1');sizex=size(X)sizec=size(c)val_s=s%提取尺度2的所有方向的高頻系數(shù)[chd2,cvd2,cdd2]=detcoef2('all',c,s,2);sizecd2=size(chd2)%提取尺度1的所有方向的高頻系數(shù)[chd1,cvd1,cdd1]=detcoef2('all',c,s,1);sizecd1=size(chd1)%提取尺度2的低頻系數(shù)ca2=appcoef2(c,s,'db1',2);sizeca2=size(ca2)%提取尺度1的低頻系數(shù)ca1=appcoef2(c,s,'db1',1);sizeca1=size(ca1)nbc=size(map,1);colormap(pink(nbc));figure(1);subplot(221);image(wcodemat(X,nbc));title('原始圖像');subplot(223);image(wcodemat(ca2,nbc));title('尺度2的低頻系數(shù)');subplot(224);image(wcodemat(ca1,nbc));title('尺度1的低頻系數(shù)');figure(2);subplot(231);image(wcodemat(chd2,nbc));title('尺度2水平方向的高頻系數(shù)');subplot(232);image(wcodemat(cvd2,nbc));title('尺度2垂直方向的高頻系數(shù)');subplot(233);image(wcodemat(cdd2,nbc));title('尺度2斜線方向的高頻系數(shù)');subplot(234);image(wcodemat(chd1,nbc));title('尺度1水平方向的高頻系數(shù)');subplot(235);image(wcodemat(cvd1,nbc));title('尺度1垂直方向的高頻系數(shù)');subplot(236);image(wcodemat(cdd1,nbc));title('尺度1斜線方向的高頻系數(shù)');程序運(yùn)行結(jié)果如圖6.3和圖6.4所示。sizex=200232sizec=146400val_s=50585058100116200232sizecd2=5058sizecd1=100116sizeca2=5058sizeca1=100116圖6.3原始圖像以及尺度1和2的低頻系數(shù)圖6.4尺度1和2的高頻系數(shù)6.1.2圖像的平穩(wěn)小波分解

1.二維平穩(wěn)小波變換函數(shù)

MATLAB的二維平穩(wěn)小波變換函數(shù)為swt2,其調(diào)用格式為:

(1)?SWC=swt2(X,N,wname')

(2)?[A,H,V,D]=swt2(X,N,'wname')

(3)?SWC=swt2(X,N,Lo_D,Hi_D)

(4)?[A,H,V,D]=swt2(X,N,Lo_D,Hi_D)

Swt2用于二維離散平穩(wěn)小波變換,即對信號X進(jìn)行N尺度小波分解。wname是正交小波函數(shù),Lo_D和Hi_D分別為低通和高通正交小波分解濾波器,它們的長度必須相等。N必須為嚴(yán)格的正整數(shù)。對于1≤i≤N,A(:,:,i)保存的是第i層的近似信號的系數(shù),H(:,:,i)、V(:,:,i)和D(:,:,i)分別保存的是第i層水平、垂直和對角線方向的細(xì)節(jié)信號的系數(shù),SWC=[H(:,:,1:N);V(:,:,1:N);D(:,:,1:N);A(:,:,N)]。

2.圖像的平穩(wěn)小波變換實(shí)例下面舉例說明函數(shù)swt2的用法。程序代碼如下:

%加載圖像

loadtire;

nbc=size(map,1);

colormap(pink(nbc));

cod_X=wcodemat(X,nbc);

subplot(221)image(wcodemat(cod_X,nbc));title('原始圖像');%使用小波函數(shù)sym4進(jìn)行3尺度SWT分解[ca,chd,cvd,cdd]=swt2(X,3,'sym4');fork=1:3%第k層圖像

cod_ca=wcodemat(ca(:,:,k),nbc);cod_chd=wcodemat(chd(:,:,k),nbc);cod_cvd=wcodemat(cvd(:,:,k),nbc);cod_cdd=wcodemat(cdd(:,:,k),nbc);decl=[cod_ca,cod_chd;cod_cvd,cod_cdd];subplot(2,2,k+1)image(wcodemat(decl,nbc));title(['SWT分解:第',num2str(k),'層近似信號','和細(xì)節(jié)信號']);end程序運(yùn)行結(jié)果如圖6.5所示。圖6.5二維平穩(wěn)小波分解6.1.3二維小波包分解

1.二維小波包分解函數(shù)

MATLAB中實(shí)現(xiàn)了二維小波包分解以及提取小波包分解樹結(jié)點(diǎn)系數(shù)。

1)二維小波包分解

MATLAB中實(shí)現(xiàn)二維小波包分解的函數(shù)是wpdec2,其調(diào)用格式有以下兩種:

(1)?T=wpdec2(X,N,'wname',E,P)

(2)?T=wpdec2(X,N,'wname')

T=wpdec2(X,N,'wname',E,P)返回矩陣X利用小波包'wname'進(jìn)行N層分解的小波包樹T。

T=wpdec2(X,N,'wname')等價于T=wpdec2(X,N,'wname','shannon')。參數(shù)E是熵的類型,P是一個可選參數(shù)。其關(guān)系如表6-1所示。表6-1E與P的關(guān)系

2)提取小波包結(jié)點(diǎn)系數(shù)

MATLAB中實(shí)現(xiàn)提取小波包結(jié)點(diǎn)系數(shù)的函數(shù)是wpcoef,其調(diào)用格式有以下兩種:

(1)?X=wpcoef(T,N)

(2)?X=wpcoef(T)

X=wpcoef(T,N)返回和小波包樹T結(jié)點(diǎn)N相關(guān)的系數(shù)。如果N不存在,則X=[]。X=wpcoef(T)等價于X=wpcoef(T,0)。

2.圖像的小波包分解實(shí)例下面通過一個例子說明對圖像進(jìn)行小波包分解,首先調(diào)用函數(shù)wpdec2進(jìn)行圖像分解,然后調(diào)用函數(shù)wpcoef提取小波包分解系數(shù),就可以將圖像根據(jù)需要的分辨率分解為低頻和高頻部分。程序代碼如下:

%加載圖像

loadwoman

%X包含加載的圖像%使用小波包db2進(jìn)行兩層分解%使用默認(rèn)熵shannont=wpdec2(X,2,'db2');figure(1);plot(t);%提取結(jié)點(diǎn)(1,0)的系數(shù)%單擊結(jié)點(diǎn)(1,0)cfs=wpcoef(t,[10]);nbc=size(map,1);colormap(pink(nbc));figure(2);subplot(211);image(wcodemat(X,nbc));title('原始圖像');subplot(212);image(wcodemat(cfs,nbc));title('結(jié)點(diǎn)(1,0)系數(shù)');程序運(yùn)行結(jié)果如圖6.6和圖6.7所示。圖6.6小波包分解樹結(jié)構(gòu)

圖6.7原始圖像以及結(jié)點(diǎn)(1,0)系數(shù)6.2圖像重構(gòu)6.2.1圖像的小波分解重構(gòu)

1.圖像的小波分解重構(gòu)

MATLAB中實(shí)現(xiàn)了單尺度二維離散小波逆變換、多尺度二維小波重構(gòu)、二維小波分解的低頻或高頻重構(gòu)、二維小波分解系數(shù)的直接重構(gòu)以及二維小波分解單尺度重構(gòu)。

1)單尺度二維離散小波逆變換

MATLAB中實(shí)現(xiàn)單尺度二維離散小波逆變換的函數(shù)是idwt2,其調(diào)用格式有以下5種:(1)?X=idwt2(cA,cH,cV,cD,'wname')(2)?X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R)(3)?X=idwt2(cA,cH,cV,cD,wname',S)(4)?X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S)(5)

X=idwt2(...,'mode',MODE)其中,輸入?yún)?shù)wname是小波函數(shù),Lo_R和Hi_R分別為重構(gòu)低通濾波器和高通濾波器,兩者長度必須相等。[cA,cH,cV,cD]是信號的單尺度小波分解結(jié)構(gòu),返回值向量X為單尺度重構(gòu)后的信號,如果設(shè)sa=size(cA)=size(cH)=size(cV)=size(cD),濾波器的長度為lf,則size(X)=SX,此時若DWT拓展模式為周期,則SX=2*SA;若為其他模式,則SX=2*size(cA)-lf+2。格式(5)中的MODE的值參考函數(shù)dwtmode。

2)多尺度二維小波重構(gòu)

MATLAB中實(shí)現(xiàn)多尺度二維小波重構(gòu)的函數(shù)是waverec2,其調(diào)用格式有以下兩種:

(1)?X=waverec2(C,S,'wname')

(2)?X=waverec2(C,S,Lo_R,Hi_R)其中,wname是小波函數(shù),Lo_R和Hi_R分別為重構(gòu)低通濾波器和高通濾波器,兩者長度必須相等。[C,S]是信號的小波分解結(jié)構(gòu),向量X為重構(gòu)后的信號。

3)小波分解的低頻或高頻重構(gòu)

MATLAB中實(shí)現(xiàn)函數(shù)小波分解的低頻或高頻重構(gòu)的函數(shù)是wrcoef2,其調(diào)用格式有以下4種:

(1)?X=wrcoef2('type',C,S,'wname',N)

(2)?X=wrcoef2('type',C,S,Lo_R,Hi_R,N)

(3)?X=wrcoef2('type',C,S,'wname')

(4)?X=wrcoef2('type',C,S,Lo_R,Hi_R)其中,[C,S]是二維信號的小波分解結(jié)構(gòu),wname為所調(diào)用的小波函數(shù),Lo_D和Hi_D分別為重構(gòu)低通濾波器和高通濾波器,type是指選擇進(jìn)行重構(gòu)信號的低頻或高頻部分,取值為'a'或'h'(或'v'、'd')。當(dāng)type取值為'a'時,表示對信號的低頻部分進(jìn)行重構(gòu),此時N可以為0;當(dāng)type取值為'h'(或'v'、'd')時,表示對信號的高頻部分進(jìn)行重構(gòu),此時N取值為正整數(shù)。當(dāng)type='a'時,0≤N≤size(S,1)-2;當(dāng)type='h'(或'v'、'd')時,1≤N≤size(S,1)-2。

4)小波分解系數(shù)的直接重構(gòu)

MATLAB中實(shí)現(xiàn)小波分解系數(shù)的直接重構(gòu)的函數(shù)是upcoef2,其調(diào)用格式有以下6種:

(1)?Y=upcoef2(O,X,'wname',N,S)

(2)?Y=upcoef2(O,X,Lo_R,Hi_R,N,S)

(3)?Y=upcoef2(O,X,'wname',N)

(4)?Y=upcoef2(O,X,Lo_R,Hi_R,N)

(5)?Y=upcoef2(O,X,'wname')

(6)?Y=upcoef2(O,X,Lo_R,Hi_R)其中,wname為所調(diào)用的小波函數(shù),Lo_D和Hi_D分別為重構(gòu)低通濾波器和高通濾波器。O取值為?'a'?或?'h'?(或?'v'、'd'),當(dāng)O取值為?'a'?時,表示對信號的低頻部分進(jìn)行重構(gòu);當(dāng)O取值為?'h'(或?'v'、'd')時,表示對信號的高頻部分進(jìn)行重構(gòu)。N為嚴(yán)格的正整數(shù)。格式(1)和(2)表示對信號X進(jìn)行重構(gòu)并返回中間長度為S的部分。格式(5)和(6)中,N取值為1。

5)二維小波分解單尺度重構(gòu)

MATLAB中實(shí)現(xiàn)二維小波分解單尺度重構(gòu)的函數(shù)是upwlev2,其調(diào)用格式有以下兩種:

(1)?[NC,NS,cA]=upwlev2(C,S,'wname')

(2)?[NC,NS,cA]=upwlev2(C,S,Lo_R,Hi_R)其中,[C,S]是信號的小波分解結(jié)構(gòu),wname是小波函數(shù),Lo_R和Hi_R分別為低通和高通重構(gòu)濾波器。函數(shù)返回分解結(jié)構(gòu)[C,S]的第n步重構(gòu),即[NC,NS]是尺度n-1的分解結(jié)構(gòu),cA是尺度n的低頻系數(shù)矩陣。

2.圖像的小波分解重構(gòu)實(shí)例下面通過幾個例子說明如何進(jìn)行圖像的小波分解重構(gòu)。

【例6-3】對圖像的單尺度分解進(jìn)行重構(gòu)。在本例中說明如何對圖像的單尺度分解進(jìn)行重構(gòu)。程序中首先調(diào)用函數(shù)dwt2對圖像進(jìn)行單尺度分解,然后調(diào)用函數(shù)idwt2對圖像進(jìn)行重構(gòu)。程序代碼如下:

loadwoman;

sX=size(X);

%使用小波函數(shù)db4進(jìn)行信號的單層分解

[cA1,cH1,cV1,cD1]=dwt2(X,'db4');圖6.8單尺度二維小波重構(gòu)

%進(jìn)行小波函數(shù)的重構(gòu)

A0=idwt2(cA1,cH1,cV1,cD1,'db4',sX);

%檢查重構(gòu)誤差

ans=max(max(abs(X-A0)))

nbc=size(map,1);

colormap(pink(nbc));

subplot(121);

image(wcodemat(X,nbc));

title('原始圖像');

subplot(122);

image(wcodemat(A0,nbc));

title('重構(gòu)圖像');程序運(yùn)行結(jié)果如圖6.8所示。

ans=3.4176e-010圖6.8單尺度二維小波重構(gòu)

【例6-4】對圖像的多尺度小波分解重構(gòu)低頻或高頻信號。在本例中說明如何對圖像的多尺度小波分解重構(gòu)低頻或高頻信號。首先使用函數(shù)wavedec2對圖像進(jìn)行多尺度分解,然后使用函數(shù)wrcoef2重構(gòu)低頻和高頻信號。程序代碼如下:

loadwoman;

%對信號用小波函數(shù)sym5進(jìn)行二尺度分解

[c,s]=wavedec2(X,2,'sym5');

%對小波分解結(jié)構(gòu)[c,s]的低頻系數(shù)進(jìn)行尺度1和尺度2上的重構(gòu)

a1=wrcoef2('a',c,s,'sym5',1);

a2=wrcoef2('a',c,s,'sym5',2);

%對分解結(jié)構(gòu)[c,s]的高頻系數(shù)進(jìn)行'h'、'v'、'd'三個方向上尺度2上的重構(gòu)

hd2=wrcoef2('h',c,s,'sym5',2);

vd2=wrcoef2('v',c,s,'sym5',2);

dd2=wrcoef2('d',c,s,'sym5',2);

%所有的圖像都有相同的大小sX=size(X)sa1=size(a1)shd2=size(hd2)nbc=size(map,1);colormap(pink(nbc));subplot(3,2,1);image(wcodemat(X,nbc));title('原始圖像');subplot(3,2,2);image(wcodemat(a1,nbc));title('尺度1的低頻圖像');subplot(3,2,3);image(wcodemat(a2,nbc));title('尺度2的低頻圖像');subplot(3,2,4);image(wcodemat(hd2,nbc));title('尺度2的水平高頻圖像');subplot(3,2,5);image(wcodemat(vd2,nbc));title('尺度2的垂直高頻圖像');subplot(3,2,6);image(wcodemat(dd2,nbc));title('尺度2的斜線高頻圖像');程序運(yùn)行結(jié)果如圖6.9所示。sX=256256sa1=256256shd2=256256圖6.9二維小波系數(shù)的單支重構(gòu)

【例6-5】通過小波分解系數(shù)進(jìn)行小波重構(gòu)。在本例中說明如何通過小波分解系數(shù)進(jìn)行小波重構(gòu)。首先使用函數(shù)dwt2對信號進(jìn)行小波分解,然后利用函數(shù)upcoef2對高頻和低頻系數(shù)進(jìn)行小波重構(gòu)。程序代碼如下:

loadwoman;

%使用小波函數(shù)db4對信號進(jìn)行二層分解

[c,s]=wavedec2(X,2,'db4');

siz=s(size(s,1),:);%提取尺度1的低頻系數(shù)ca1=appcoef2(c,s,'db4',1);%對尺度1的低頻部分進(jìn)行重構(gòu)a1=upcoef2('a',ca1,'db4',1,siz);%提取尺度1的水平方向高頻系數(shù)chd1=detcoef2('h',c,s,1);%對尺度1的水平方向高頻部分進(jìn)行重構(gòu)hd1=upcoef2('h',chd1,'db4',1,siz);%提取尺度1的垂直方向高頻系數(shù)cvd1=detcoef2('v',c,s,1);%對尺度1的斜線方向高頻部分進(jìn)行重構(gòu)dd1=upcoef2('d',cdd1,'db4',1,siz);nbc=size(map,1);colormap(pink(nbc));subplot(321);image(wcodemat(X,nbc));title('原始圖像');subplot(323);image(wcodemat(a1,nbc));title('尺度1的低頻系數(shù)重構(gòu)圖像');subplot(324);image(wcodemat(hd1,nbc));title('尺度1的水平高頻系數(shù)重構(gòu)圖像');subplot(325);image(wcodemat(vd1,nbc));title('尺度1的垂直高頻系數(shù)重構(gòu)圖像');subplot(326);image(wcodemat(dd1,nbc));title('尺度1的斜線高頻系數(shù)重構(gòu)圖像');程序運(yùn)行結(jié)果如圖6.10所示。圖6.10二維小波分解系數(shù)的直接重構(gòu)

【例6-6】對小波多尺度分解進(jìn)行重構(gòu)。在本例中說明如何對小波多尺度分解進(jìn)行重構(gòu),即重構(gòu)原圖像(包括低頻和高頻)。首先使用函數(shù)wavedec2對圖像進(jìn)行多尺度分解,然后調(diào)用函數(shù)waverec進(jìn)行圖像的重構(gòu)。程序代碼如下:

loadwoman;

[c,s]=wavedec2(X,2,'sym4');%使用小波函數(shù)sym4對信號進(jìn)行二尺度分解

a0=waverec2(c,s,'sym4');%進(jìn)行小波函數(shù)的重構(gòu)%檢查重構(gòu)誤差ans=max(max(abs(X-a0)))nbc=size(map,1);colormap(pink(nbc));subplot(121);image(wcodemat(X,nbc));title('原始圖像');subplot(122);image(wcodemat(a0,nbc));title('重構(gòu)圖像');程序運(yùn)行結(jié)果如圖6.11所示。ans=2.0984e-010圖6.11多尺度二維小波重構(gòu)

【例6-7】對小波分解進(jìn)行單尺度重構(gòu)。在本例中說明如何對小波分解進(jìn)行單尺度重構(gòu),即獲得小波分解向上一個尺度的重構(gòu)。首先使用函數(shù)wavedec2對圖像進(jìn)行多尺度分解,然后調(diào)用函數(shù)upwlev2進(jìn)行分解結(jié)構(gòu)向上一尺度的重構(gòu)。程序代碼如下:

loadtire;

%用小波函數(shù)db1進(jìn)行二尺度分解

[c,s]=wavedec2(X,2,'db1');

sc=size(c)

val_s=s%分解結(jié)構(gòu)[c,s]的向上一個尺度的重構(gòu)圖6.12小波分解的單尺度重構(gòu)[nc,ns]=upwlev2(c,s,'db1');snc=size(nc)val_ns=nsca1=appcoef2(nc,ns,'db1',1);nbc=size(map,1);colormap(pink(nbc));subplot(121);image(wcodemat(X,nbc));title('原始圖像');subplot(122);image(wcodemat(ca1,nbc));title('尺度1的小波分解低頻系數(shù)');程序運(yùn)行結(jié)果如圖6.12所示。圖6.12小波分解的單尺度重構(gòu)6.2.2圖像的平穩(wěn)小波重構(gòu)

1.二維平穩(wěn)小波重構(gòu)函數(shù)

MATLAB中二維平穩(wěn)小波重構(gòu)函數(shù)為iswt2,其調(diào)用格式為:

(1)?X=iswt2(SWC,'wname')

(2)?X=iswt2(A,H,V,D,'wname')

(3)?X=iswt2(SWC,Lo_R,Hi_R)

(4)?X=iswt2(A,H,V,D,Lo_R,Hi_R)

iswt2函數(shù)用于二維離散平穩(wěn)小波重構(gòu)。wname是正交小波函數(shù),Lo_D和Hi_D分別為低通和高通正交小波重構(gòu)濾波器,它們的長度必須相等。

2.圖像的平穩(wěn)小波重構(gòu)實(shí)例下面舉例說明函數(shù)iswt2的用法。程序代碼如下:

loadtire;

%使用小波函數(shù)sym4進(jìn)行三尺度SWT分解

swc=swt2(X,3,'sym4');

%使用小波函數(shù)sym4進(jìn)行三尺度SWT分解

[ca,chd,cvd,cdd]=swt2(X,3,'sym4');

%使用swc進(jìn)行重構(gòu)

a0=iswt2(swc,'sym4');

%使用ca、chd、cvd和cdd進(jìn)行重構(gòu)圖6.13二維平穩(wěn)小波重構(gòu)

a0bis=iswt2(ca,chd,cvd,cdd,'sym4');

%檢驗(yàn)重構(gòu)誤差

err=max(max(abs(X-a0)))

errbis=max(max(abs(X-a0bis)))

nbc=size(map,1);

colormap(pink(nbc));

subplot(221);

image(wcodemat(X,nbc));

image(wcodemat(a0,nbc));

title('用swc重構(gòu)后的信號');

subplot(224);

image(wcodemat(a0bis,nbc));

title('用ca、chd、cvd和cdd重構(gòu)后的信號');程序運(yùn)行結(jié)果如圖6.13所示。

err=

3.4140e-010

errbis=

3.4140e-010圖6.13二維平穩(wěn)小波重構(gòu)6.2.3圖像的小波包分解重構(gòu)

1.圖像的小波包分解重構(gòu)

MATLAB中實(shí)現(xiàn)了二維小波包分解重構(gòu)以及小波包分解樹結(jié)點(diǎn)系數(shù)的重構(gòu)。

1)二維小波包分解重構(gòu)

MATLAB中實(shí)現(xiàn)二維小波包分解重構(gòu)的函數(shù)是wprec2,其調(diào)用格式如下:

X=wprec2(T)其中,參數(shù)T是小波包分解的樹結(jié)構(gòu)。

2)小波包分解樹結(jié)點(diǎn)系數(shù)的重構(gòu)

MATLAB中實(shí)現(xiàn)小波包分解樹結(jié)點(diǎn)系數(shù)的重構(gòu)的函數(shù)是wprcoef,其調(diào)用格式如下:

X=wprcoef(T,N)

X=wprcoef(T)等價于X=wprcoef(T,0)。

2.圖像的小波包分解實(shí)例下面通過兩個例子說明如何使用MATLAB進(jìn)行圖像的小波包分解樹結(jié)構(gòu)重構(gòu)和小波包分解的單結(jié)點(diǎn)重構(gòu)。

【例6-8】對小波包分解的樹結(jié)構(gòu)進(jìn)行重構(gòu)。在本例中說明如何對小波包分解的樹結(jié)構(gòu)進(jìn)行重構(gòu)。程序中首先調(diào)用函數(shù)wpdec2對信號進(jìn)行小波包分解,然后使用函數(shù)wprec2進(jìn)行重構(gòu)。程序代碼如下:%加載信號loadwoman;%X包含加載的圖像%使用小波包db2進(jìn)行二層分解圖6.14二維小波包重構(gòu)t=wpdec2(X,2,'db2');%使用默認(rèn)熵shannonrex=wprec2(t)subplot(211);image(X);colormap(map);title('原始信號');subplot(212);image(rex);colormap(map);title('重構(gòu)后的信號');程序運(yùn)行結(jié)果如圖6.14所示。圖6.14二維小波包重構(gòu)

【例6-9】對小波包分解的某一結(jié)點(diǎn)系數(shù)進(jìn)行重構(gòu)。在本例中說明如何對小波包分解的某一結(jié)點(diǎn)系數(shù)進(jìn)行重構(gòu)。程序中首先調(diào)用函數(shù)wpdec2對信號進(jìn)行小波包分解,然后使用函數(shù)wprcoef對小波包分解結(jié)點(diǎn)系數(shù)進(jìn)行重構(gòu)。程序代碼如下:圖6.15重構(gòu)小波包結(jié)點(diǎn)

%當(dāng)前的擴(kuò)展模式是zero-padding

%裝載信號

loadleleccum;x=leleccum;

%使用db2小波包對信號x進(jìn)行三層分解

wpt=wpdec(x,3,'db2');subplot(211);plot(x);title('原始信號');%重構(gòu)小波包結(jié)點(diǎn)(2,1)rcfs=wprcoef(wpt,[21]);subplot(212);plot(rcfs);title('重構(gòu)小波包結(jié)點(diǎn)(2,1)');程序運(yùn)行結(jié)果如圖6.15所示。圖6.15重構(gòu)小波包結(jié)點(diǎn)6.3圖像去噪6.3.1圖像閾值去噪函數(shù)

1.閾值獲取函數(shù)

MATLAB中實(shí)現(xiàn)閾值獲取的函數(shù)有ddencmp、thselect、wbmpen和wdcbm2四個。函數(shù)wdcbm2的調(diào)用格式有以下兩種:

(1)?[THR,NKEEP]=wdcbm2(C,S,ALPHA)

(2)?[THR,NKEEP]=wdcbm2(C,S,ALPHA,M)2.閾值去噪函數(shù)函數(shù)wthcoef2的調(diào)用格式有下面4種:(1)?NC=wthcoef2('type',C,S,N,T,SORH)(2)?NC=wthcoef2('type',C,S,N)(3)?NC=wthcoef2('a',C,S)(4)?NC=wthcoef2('t',C,S,N,T,SORH)6.3.2圖像閾值去噪實(shí)例

【例6-10】圖像閾值去噪實(shí)例1。在本例中使用函數(shù)wdcbm2獲取圖像去噪閾值,然后采用函數(shù)wdencmp實(shí)現(xiàn)圖像去噪。程序代碼如下:

loadwoman;

%產(chǎn)生含噪信號

init=2055615866;

randn('seed',init);

x=X+18*randn(size(X));nbc=size(map,1);%使用sym4小波進(jìn)行三層分解wname='sym4';lev=3;[c,s]=wavedec2(x,lev,wname);%使用wdcbm2獲得去噪閾值alpha=3;m=3.5*prod(s(1,:));[thr,nkeep]=wdcbm2(c,s,alpha,m)%對信號進(jìn)行去噪sorh='s';xd=wdencmp('lvd',c,s,wname,lev,thr,sorh);圖6.16圖像小波閾值去噪colormap(pink(nbc));figure(1);subplot(2,2,1);image(wcodemat(X,nbc));title('原始信號');去噪后的信號subplot(2,2,2);image(wcodemat(x,nbc))title('含噪信號');subplot(2,2,3)image(wcodemat(xd,nbc))title('去噪后的信號');程序運(yùn)行結(jié)果如圖6.16所示。圖6.16圖像小波閾值去噪

【例6-11】圖像閾值去噪實(shí)例2。在本例中首先使用函數(shù)wpcoef獲取圖像的小波包分解系數(shù),接著估計噪聲方差,然后使用函數(shù)wpbmpen獲取小波包去噪閾值,最后使用函數(shù)wpdencmp實(shí)現(xiàn)圖像去噪。程序代碼如下:

loadwoman;

%產(chǎn)生含噪信號

init=2055615866;

randn('seed',init);

x=X+18*randn(size(X));%對圖像進(jìn)行小波包分解%使用coif2分解到第三層wname='coif2';lev=3;tree=wpdec2(x,lev,wname);%估計噪聲標(biāo)準(zhǔn)差det1=[wpcoef(tree,2)wpcoef(tree,3)wpcoef(tree,4)];sigma=median(abs(det1(:)))/0.6745;%選擇去噪的閾值alpha=1.1;thr=wpbmpen(tree,sigma,alpha);%使用上面的閾值對圖像去噪keepapp=1;xd=wpdencmp(tree,'s','nobest',thr,keepapp);%畫出原始圖像和去噪后的圖像圖6.17圖像小波包去噪nbc=size(map,1);colormap(pink(nbc));subplot(2,2,1);image(wcodemat(X,nbc));title('原始信號');去噪后的信號subplot(2,2,2);image(wcodemat(x,nbc))title('含噪信號');subplot(2,2,3)image(wcodemat(xd,nbc))title('去噪后的信號');程序運(yùn)行結(jié)果如圖6.17所示。圖6.17圖像小波包去噪

【例6-12】圖像閾值去噪實(shí)例3。在本例中對小波分解系數(shù)使用函數(shù)wthcoef2進(jìn)行閾值處理,然后利用閾值處理后的小波系數(shù)進(jìn)行小波重構(gòu)達(dá)到去噪的目的。程序代碼如下:

%加載原始信號

loadwoman;

%產(chǎn)生含噪圖像

init=2055615866;randn('seed',init);[c,s]=wavedec2(x,3,'sym4');%設(shè)置尺度向量n=[1,2,3];%設(shè)置閾值向量p=[150,120,60];%對高頻系數(shù)進(jìn)行閾值處理nc=wthcoef2('d',c,s,n,p,'s');%對新的分解結(jié)構(gòu)進(jìn)行重構(gòu)rx=waverec2(nc,s,'sym4');nbc=size(map,1);colormap(pink(nbc));subplot(2,2,1);image(wcodemat(X,nbc));title('原始信號');subplot(2,2,2);image(wcodemat(x,nbc))title('含噪信號');subplot(2,2,3)image(wcodemat(rx,nbc))title('去噪后的信號');程序運(yùn)行結(jié)果如圖6.18所示。圖6.18圖像閾值處理6.4圖像壓縮6.4.1圖像壓縮概述圖像能夠進(jìn)行壓縮的主要原因如下:

(1)原始圖像信息存在著很大的冗余度,數(shù)據(jù)之間存在著相關(guān)性,如相鄰像素之間色彩的相關(guān)性等,消息中這些冗余信息將會產(chǎn)生額外的編碼。如果去掉冗余信息,就會減少消息所占的空間。

(2)在多媒體系統(tǒng)的應(yīng)用領(lǐng)域中,人眼作為圖像信息的接收端,其視覺對于邊緣急劇變化不敏感(視覺掩蓋效應(yīng)),以及人眼對圖像的亮度信息敏感,而對顏色分辨率弱等,因此在高壓縮比的情況下,解壓縮后的圖像信號仍比較滿意。6.4.2圖像壓縮實(shí)例在本節(jié)中將通過三個例子說明如何進(jìn)行圖像壓縮。

【例6-13】圖像壓縮實(shí)例1。在本例中使用函數(shù)wdcbm2獲取圖像壓縮閾值,然后采用函數(shù)wdencmp實(shí)現(xiàn)圖像壓縮。程序代碼如下:

loadjulia;

nbc=size(map,1);

%使用haar小波進(jìn)行三層分解wname='haar';lev=3;[c,s]=wavedec2(X,lev,wname);圖6.19圖像壓縮%使用wdcbm2獲得壓縮閾值alpha=1.5;m=3.5*prod(s(1,:));[thr,nkeep]=wdcbm2(c,s,alpha,m);%對信號進(jìn)行壓縮xd=wdencmp('lvd',c,s,wname,lev,thr,'h');colormap(pink(nbc));figure(1);subplot(1,2,1);image(wcodemat(X,nbc));title('原始信號');subplot(1,2,2)image(wcodemat(xd,nbc))title('壓縮后的信號');程序運(yùn)行結(jié)果如圖6.19所示。圖6.19圖像壓縮

【例6-14】圖像壓縮實(shí)例2。在本例中使用函數(shù)ddencmp獲取圖像壓縮閾值,然后采用函數(shù)wdencmp實(shí)現(xiàn)圖像壓縮。程序代碼如下:

loadjulia;

nbc=size(map,1);

%使用haar小波進(jìn)行三層分解

wname='haar';lev=3;

[c,s]=wavedec2(X,lev,wname);

%使用ddencmp獲得壓縮閾值[thr,nkeep]=ddencmp('cmp','wv',X)%對信號進(jìn)行壓縮xd=wdencmp('gbl',c,s,wname,lev,thr,'s',1);colormap(pink(nbc));figure(1);subplot(1,2,1);image(wcodemat(X,nbc));title('原始信號');subplot(1,2,2)image(wcodemat(xd,nbc))title('壓縮后的信號');程序運(yùn)行結(jié)果如圖6.20所示。圖6.20圖像壓縮

【例6-15】圖像壓縮實(shí)例3。在本例中首先使用函數(shù)ddencmp獲得圖像壓縮閾值,然后才用函數(shù)wpdencmp對圖像進(jìn)行小波包壓縮。程序代碼如下:

%加載原始圖像

loadmask;

nbc=size(map,1);%使用wpdencmp進(jìn)行小波壓縮圖6.21圖像小波包壓縮%使用ddencmp獲取閾值[thr,sorh,keepapp,crit]=ddencmp('cmp','wp',X);%使用閾值進(jìn)行小波包壓縮[xc,treed,perf0,perfl2]=wpdencmp(X,sorh,3,'db3',crit,thr,keepapp);subplot(211);colormap(pink(nbc));image(wcodemat(X,nbc))title('原始圖像');subplot(212);image(wcodemat(xc,nbc))title('壓縮后的圖像');程序運(yùn)行結(jié)果如圖6.21所示。圖6.21圖像小波包壓縮6.5圖像增強(qiáng)圖像增強(qiáng)的主要目的是提高圖像的視覺質(zhì)量或者凸顯某些特征信息。無論對人眼理解還是基于計算機(jī)可視化技術(shù)的高級圖像分析,圖像增強(qiáng)都非常有用。需要知道的是圖像增強(qiáng)技術(shù)不能增加圖像數(shù)據(jù)本身包含的信息,但是可以凸顯特定特征,在處理后更容易識別,進(jìn)而有利于特定的應(yīng)用。通常圖像增強(qiáng)的目的主要有:放大圖像中感興趣結(jié)構(gòu)的對比度,增加可理解性;減少或抑制圖像中混有的噪聲,提高視覺質(zhì)量。小波變換可以將圖像分解為各個尺度上的子帶圖像,因此可以對感興趣的部分進(jìn)行增強(qiáng)以實(shí)現(xiàn)圖像增強(qiáng)的目的。下面通過一個例子說明在MATLAB中實(shí)現(xiàn)圖像增強(qiáng)的方法。

【例6-16】圖像增強(qiáng)實(shí)例。因?yàn)閳D像分解的低頻部分體現(xiàn)了圖像的輪廓,圖像分解的高頻部分表現(xiàn)為圖像的細(xì)節(jié)和混入的噪聲,因此在本例中對低頻部分進(jìn)行增強(qiáng),對高頻部分進(jìn)行衰減,結(jié)果顯示達(dá)到了圖像增強(qiáng)的目的。程序代碼如下:loadnoiswom;nbc=size(map,1);%使用haar小波進(jìn)行2層分解wname='haar';lev=2;[c,s]=wavedec2(X,lev,wname);sizec=size(c);fori=1:sizec(2)

if(c(i)>180)圖6.22圖像增強(qiáng)

c(i)=1.2*c(i);

elsec(i)=0.8*c(i);endendrx=waverec2(c,s,'haar');colormap(pink(nbc));subplot(1,2,1);image(wcodemat(X,nbc));

title('原始信號');

subplot(1,2,2)

image(wcodemat(rx,nbc))

title('增強(qiáng)后的信號');程序運(yùn)行結(jié)果如圖6.22所示。由于原始圖像含有噪聲,因此將低頻系數(shù)進(jìn)行放大,高頻系數(shù)進(jìn)行縮小,從圖6.22可以看出達(dá)到了去除噪聲、增強(qiáng)圖像輪廓的目的。圖6.22圖像增強(qiáng)6.6圖像融合6.6.1圖像融合概述

MATLAB中實(shí)現(xiàn)了對圖像進(jìn)行融合。實(shí)現(xiàn)圖像融合的函數(shù)是wfusimg,它的調(diào)用格式有以下3種:

(1)?XFUS=wfusimg(X1,X2,WNAME,LEVEL,AFUSMETH,DFUSMETH)

(2)?[XFUS,TXFUS,TX1,TX2]=wfusimg(X1,X2,WNAME,LEVEL,AFUSMETH,DFUSMETH)

(3)?wfusimg(X1,X2,WNAME,LEVEL,AFUSMETH,DFUSMETH,FLAGPLOT)

XFUS=wfusimg(X1,X2,WNAME,LEVEL,AFUSMETH,DFUSMETH)返回將原始圖像X1和X2融合后的圖像XFUS,參數(shù)LEVEL是指X1和X2分解的層次,參數(shù)WNAME指定分解小波。矩陣X1和X2的大小必須相同,AFUSMETH和DFUSMETH分別定義了低頻和高頻分量的融合方法。

[XFUS,TXFUS,TX1,TX2]=wfusimg(X1,X2,WNAME,LEVEL,AFUSMETH,DFUSMETH)除了返回矩陣XFUS外,還返回了分別和XFUS,X1以及X2相關(guān)的三個類WDECTREE的對象。

wfusimg(X1,X2,WNAME,LEVEL,AFUSMETH,DFUSMETH,FLAGPLOT)同時畫出TXFUS、TX1和TX2三個對象。通常融合方法包括如下幾種:

(1)簡單融合法:AFUSMETH和DFUSMETH的有效取值包括?'max','min','mean','img1','img2'?或?'rand'。

(2)參數(shù)獨(dú)立方法:AFUSMETH/DFUSMETH?=struct('name',nameMETH,'param',paramMETH)。其中nameMETH的取值有以下幾種:●?'UD_fusion':上-下融合;●?'DU_fusion':下-上融合;●?'LR_fusion':左-右融合;●

'RL_fusion':右-左融合;●?'UserDEF':用戶自定義的融合。6.6.2圖像融合實(shí)例在本節(jié)中將舉兩個例子說明如何進(jìn)行圖像融合。

【例6-17】將兩幅不同的圖像進(jìn)行融合。本例中將兩幅不同的圖像使用不同的方法進(jìn)行融合,首先使用取細(xì)節(jié)和近似信號的平均值進(jìn)行融合,可以看到融合后的圖像擁有兩幅圖像的特征,接著使用取細(xì)節(jié)信號的最小值和近似信號最大值的融合方法,發(fā)現(xiàn)融合后的圖像較模糊。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論