?? example2_6_1.m
字號:
load noiswom; %裝載圖像信號
whos
[swa,swh,swv,swd] = swt2(X,1,'db1'); %完成圖像的單層次小波分解
whos %觀察各個系數向量的結構
figure(1);
map = pink(size(map,1)); %顯示低頻和高頻系數
colormap(map)
subplot(2,2,1), image(wcodemat(swa,192));
title('Approximation swa')
subplot(2,2,2), image(wcodemat(swh,192));
title('Horiz. Detail swh')
subplot(2,2,3), image(wcodemat(swv,192));
title('Vertical Detail swv')
subplot(2,2,4), image(wcodemat(swd,192));
title('Diag. Detail swd')
A0 = iswt2(swa,swh,swv,swd,'db1'); %通過平穩小波逆變換重構圖像
err = max(max(abs(X-A0))) %檢查重構誤差
nulcfs = zeros(size(swa)); %從第三步中產生的系數swa、swh、swv和swd構造第一層的低頻和高頻(A1、H1、V1和D1)部分
A1 = iswt2(swa,nulcfs,nulcfs,nulcfs,'db1');
H1 = iswt2(nulcfs,swh,nulcfs,nulcfs,'db1');
V1 = iswt2(nulcfs,nulcfs,swv,nulcfs,'db1');
D1 = iswt2(nulcfs,nulcfs,nulcfs,swd,'db1');
figure(2); %顯示第一層的分解結果
colormap(map)
subplot(2,2,1), image(wcodemat(A1,192));
title('Approximation A1')
subplot(2,2,2), image(wcodemat(H1,192));
title('Horiz. Detail H1')
subplot(2,2,3), image(wcodemat(V1,192));
title('Vertical Detail V1')
subplot(2,2,4), image(wcodemat(D1,192));
title('Diag. Detail D1')
[swa,swh,swv,swd] = swt2(X,3,'db1'); %采用db1來完成多尺度二維離散平穩小波分解
clear A0 A1 D1 H1 V1 err nulcfs %觀察swa,swh,swv,swd的存儲結構
whos
figure(3); %顯示多尺度二維平穩小波分解結果
colormap(map)
kp = 0;
for i = 1:3
subplot(3,4,kp+1), image(wcodemat(swa(:,:,i),192));
title(['Approx. cfs level ',num2str(i)])
subplot(3,4,kp+2), image(wcodemat(swh(:,:,i),192));
title(['Horiz. Det. cfs level ',num2str(i)])
subplot(3,4,kp+3), image(wcodemat(swv(:,:,i),192));
title(['Vert. Det. cfs level ',num2str(i)])
subplot(3,4,kp+4), image(wcodemat(swd(:,:,i),192));
title(['Diag. Det. cfs level ',num2str(i)])
kp = kp + 4;
end
mzero = zeros(size(swd)); %從系數中重構第3層的低頻信號
A = mzero;
A(:,:,3) = iswt2(swa,mzero,mzero,mzero,'db1');
H = mzero; V = mzero; %重構第1、2、3層的高頻信號
D = mzero;
for i = 1:3
swcfs = mzero; swcfs(:,:,i) = swh(:,:,i);
H(:,:,i) = iswt2(mzero,swcfs,mzero,mzero,'db1');
swcfs = mzero; swcfs(:,:,i) = swv(:,:,i);
V(:,:,i) = iswt2(mzero,mzero,swcfs,mzero,'db1');
swcfs = mzero; swcfs(:,:,i) = swd(:,:,i);
D(:,:,i) = iswt2(mzero,mzero,mzero,swcfs,'db1');
end
A(:,:,2) = A(:,:,3) + H(:,:,3) + V(:,:,3) + D(:,:,3); %通過第3層的低頻部分和第1、2、3層的高頻部分重構第1、2層的低頻部分
A(:,:,1) = A(:,:,2) + H(:,:,2) + V(:,:,2) + D(:,:,2);
figure(4); %顯示第1、2、3層的低頻和高頻部分
colormap(map)
kp = 0;
for i = 1:3
subplot(3,4,kp+1), image(wcodemat(A(:,:,i),192));
title(['Approx. level ',num2str(i)])
subplot(3,4,kp+2), image(wcodemat(H(:,:,i),192));
title(['Horiz. Det. level ',num2str(i)])
subplot(3,4,kp+3), image(wcodemat(V(:,:,i),192));
title(['Vert. Det. level ',num2str(i)])
subplot(3,4,kp+4), image(wcodemat(D(:,:,i),192));
title(['Diag. Det. level ',num2str(i)])
kp = kp + 4;
end;
thr = 44.5; %閾值消噪
sorh = 's';
dswh = wthresh(swh,sorh,thr);
dswv = wthresh(swv,sorh,thr);
dswd = wthresh(swd,sorh,thr);
clean = iswt2(swa,dswh,dswv,dswd,'db1');
thr = 44.5;
sorh = 's';
dswh = wthresh(swh,sorh,thr);
dswv = wthresh(swv,sorh,thr);
dswd = wthresh(swd,sorh,thr);
clean = iswt2(swa,dswh,dswv,dswd,'db1');
figure(5); %對比消噪前后的圖像
colormap(map)
subplot(1,2,1), image(wcodemat(X,192));
title('Original image')
subplot(1,2,2), image(wcodemat(clean,192));
title('De-noised image')
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -