'Applying MATLAB's idwt2 several times

I am using MATLAB to apply the Discrete Wavelet Transform on an image. I am applying it several times (3) in order to get a 3 level transform. I am using the dwt2 function provided by MATLAB in order to compress and idwt2 to make the decompression. The problem is that I do not know how to decompress several times, as in apply idwt2 several times to the previous received output, as it returns a matrix. Take for example:

x = idwt2(scaled3, vertical3, horizontal3, diagonal3, Lo_R, Ho_R);

How should idwt2 be applied to x?



Solution 1:[1]

% Multi-level reconstruction from DWT coefficients
% The variable "coefs" is what you get when you perform forward dwt2() 
% on the image you're decomposing. It is a long row 
% vector that has cA- approximation details, cH -horizontal details, cV- 
% vertical details, cD-diagonal details
L=3;                  % For db 3-level reconstruction for example
k=size(image,1)/2^L;  % I am assuming a square sized image where both 
                      % dimensions  are equal
for level=0:(L-1)
s=k*2^level;
if level==0
    cA=reshape(coefs(1,1:s^2),s,s);
    figure;imshow(cA,[])
end
cH=reshape(coefs(1,(s^2+1):2*s^2),s,s);
figure;imshow(cH,[])
cV=reshape(coefs(1,(2*s^2+1):3*s^2),s,s);
figure;imshow(cV,[])
cD=reshape(coefs(1,(3*s^2+1):4*s^2),s,s);
figure;imshow(cD,[])

I_rec=idwt2(cA,cH,cV,cD,"db1");
figure;imshow(I_rec,[])
cA=I_rec;       % The recosntructed image is the approximation detail-cA 
                %  for next levels of reconstruction
end

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1