matlab 圖像小波變換

function xiaobo()
%小波嘗試
close all
clear
clc
I=imread('lena.jpg'); 
figure,imshow(I);

%%小波分解一層
[cA1,cH1,cV1,cD1]=dwt2(I,'haar');%只是分解一層
figure
title '小波一層分解'
subplot(2,2,1)
imagesc(cA1)
title('Approximation')
subplot(2,2,2)
imagesc(cH1)
title('Horizontal')
subplot(2,2,3)
imagesc(cV1)
title('Vertical')
subplot(2,2,4)
imagesc(cD1)
title('Diagonal')
%%小波分解二層
[cA2,cH2,cV2,cD2]=dwt2(cA1,'haar');%對上層低頻進行分解
figure
title '小波二層分解'
subplot(2,2,1)
imagesc(cA2)
title('Approximation')
subplot(2,2,2)
imagesc(cH2)
title('Horizontal')
subplot(2,2,3)
imagesc(cV2)
title('Vertical')
subplot(2,2,4)
imagesc(cD2)
title('Diagonal')

%%小波分解三層
[cA3,cH3,cV3,cD3]=dwt2(cA2,'haar');%對上層低頻進行分解
figure
title '小波三層分解'
subplot(2,2,1)
imagesc(cA3)
title('Approximation')
subplot(2,2,2)
imagesc(cH3)
title('Horizontal')
subplot(2,2,3)
imagesc(cV3)
title('Vertical')
subplot(2,2,4)
imagesc(cD3)
title('Diagonal')

%%小波第一次重構生成第三層低頻
% cA3=zeros(size(cA3));%%處理將低頻信息置0,那麼重建的圖像就會沒低頻信息
% cD3=zeros(size(cA3)); 
A0=idwt2(cA3,cH3,cV3,cD3,'haar');
figure;imshow(uint8(A0))
%%小波第二次重構生成第二層低頻
% cD2=zeros(size(cD2));
A0=imresize(A0,size(cH2));%使維度一樣,因爲重建可能會有所差別
A1=idwt2(A0,cH2,cV2,cD2,'haar');
figure;imshow(uint8(A1))
%%小波第三次重構生成原圖
% cD1=zeros(size(cD1));
A2=idwt2(A1,cH1,cV1,cD1,'haar');
figure;imshow(uint8(A2))

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章