%----------------------------------------------------------%
小波图像分解 Matlab 程序 - V2.0版
小波图像重构 Matlab 程序 - V2.0版
%----------------------------------------------------------%
%----------------------------------------------------------%
小波重构矩阵 Matlab 程序 - V3.0版
%----------------------------------------------------------%
function xrec=mywaverec2(coef,scf,recdim,wname)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 函数 MYWAVEREC2() 对输入的分解系数矩阵x进行 recdim 层重构,得到重构矩阵 xrec
% 输入参数:y —— 分解系数矩阵;
% recdim —— 重构级数;
% wname —— 重构所用的小波函数
% 输出参数:xrec —— 重构矩阵。
%
% Copyright by Zou Yuhua ( chenyusiyuan ), Version: 3.0, Date: 2008-07-08
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 求小波函数对应的重构滤波器组系数
[Lo_R,Hi_R] = wfilters(wname,'r');
% 通过小波系数矩阵求出图像的分解级数 decdim
[yr,yc]=size(coef); % 小波系数矩阵 coef 是一个细胞矩阵(cell matrix),其中有 yr 个子矩阵,yc=1
decdim=(yr-1)/3; % 图像的 N 级分解会产生 1 个低频矩阵,N*3 个高频矩阵
if decdim<recdim
error(['Reconstruction level can not larger than decomposition level ( declev = ',num2str(decdim),' )'])
end
rcA=coef{1};
for i=1:recdim % 依次获取第 decdim 级至第(decdim - recdim + 1)级的高频系数矩阵
rcV=coef{(i-1)*3+2};
rcH=coef{(i-1)*3+3};
rcD=coef{(i-1)*3+4};
rcA=myidwt2(rcA,rcV,rcH,rcD,Lo_R,Hi_R,scf(i+2,:)); % 第 N 级重构得到第 N-1 级低频系数矩阵
end
xrec=rcA; % 重构结束后得到的矩阵 rcA 即为输出矩阵 xrec
plotxrec(decdim,recdim,xrec)