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))

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