%% 学习目标:二维离散小波图像分解和重构
%% 装载图像
load belmont2;
%% 显示图像
figure(1)
image(X),title('原图')
colormap(map);
colorbar;
%% 执行图像的单层小波分解
[cA1,cH1,cV1,cD1] = dwt2(X,'bior3.7'); %单层二维离散小波变换
%% 由系数重构低频和高频部分
A1 = upcoef2('a',cA1,'bior3.7',1);
H1 = upcoef2('h',cH1,'bior3.7',1);
V1 = upcoef2('v',cV1,'bior3.7',1);
D1 = upcoef2('d',cD1,'bior3.7',1);
%% 显示低频和高频部分
figure(2);
colormap(map);
nbcol = size(map,1)
subplot(2,2,1),image(wcodemat(A1,nbcol)),title('低频A1')
subplot(2,2,2),image(wcodemat(H1,nbcol)),title('水平高频H1')
subplot(2,2,3),image(wcodemat(V1,nbcol)),title('垂直高频V1')
subplot(2,2,4),image(wcodemat(D1,nbcol)),title('对角高频D1')
%% 由小波逆变换恢复原图
Xsyn = idwt2(cA1,cH1,cV1,cD1,'bior3.7');
%% 检查单层重构效果
Err1=max(max(abs(X- Xsyn)))
%% 图像的多层二维小波分解
[C,S] = wavedec2(X,2,'bior3.7');
%% 提取系数的低频和高频部分
cA2 = appcoef2(C,S,'bior3.7',2);
%% 重构第二层的低频信号
A2 = wrcoef2('a',C,S,'bior3.7',2);
%% 重构第1、2层的高频信号
H1 = wrcoef2('h',C,S,'bior3.7',1);
V1 = wrcoef2('v',C,S,'bior3.7',1);
D1 = wrcoef2('d',C,S,'bior3.7',1);
H2 = wrcoef2('h',C,S,'bior3.7',2);
V2 = wrcoef2('v',C,S,'bior3.7',2);
D2 = wrcoef2('d',C,S,'bior3.7',2);
%% 显示多层二维分解结果
figure(3)
colormap(map);
subplot(2,4,1),image(wcodemat(A1,nbcol)),title('低频A1')
subplot(2,4,2),image(wcodemat(H1,nbcol)),title('水平高频H1')
subplot(2,4,3),;image(wcodemat(V1,nbcol)),title('垂直高频V1')
subplot(2,4,4),image(wcodemat(D1,nbcol)),title('对角高频D1')
subplot(2,4,5),image(wcodemat(A2,nbcol)),title('低频A2')
subplot(2,4,6),image(wcodemat(H2,nbcol)),title('水平高频H2')
subplot(2,4,7),image(wcodemat(V2,nbcol)),title('垂直高频V2')
subplot(2,4,8),image(wcodemat(D2,nbcol)),title('对角高频D2')
%% 重构原始图像信号
X0 = waverec2(C,S,'bior3.7');
%% 检查2层重构效果
Err2=max(max(abs(X-X0)))
%% 显示重构得到的图像
figure(4)
image(X0),colormap(map),title('重构后图像')
%% 大仙QQ:1960009019
%% 在线教育微信公众号:大仙一品堂