DWT image compression using linear algebra

1 次查看(过去 30 天)
Hi All,
I'm performing a DWT image compression on the cameraman image according to the following equation: Compressed image = H * original image * H^T; where H is the transformation matrix and H^T is its transpose. The operation can be divided into two steps: the first part (Row = H * original image) computes the row transformation and then (Column = Row*H^T); where the column transformed image is the compressed one.
Original_image = imread('cameraman.tif');
Image_double = im2double(Original_image); % Convert it to double
figure;imshow(Image_double);
n=256;
H = ConstructHaarWaveletTransformationMatrix(n); % Transformation matrix from matlab file exchange
Compressed = H*Image_double*H'; %Haar wavelet transformation
C1 = H*Image_double; % row transformation
C2 = C1*H'; % column transformation
The output from the row transformation gives me values larger than one and smaller than zero, but I still need the range to be between zero and one as the original image. So here's what I did:
C11 = C1 + (-min(C1(:))*ones(n,n)); % shift the values by the minimum
C11 = C11/max(C11(:)); % scale
C22 = C11*H';
Unfortunately when I decompress the image according to the following: Decompressed_image = H' * C22 *H; the image is distorted with 0.0067 ssim.
How I can get back my clear image and remove the distortion/ noise. Shall I perform some sort of filtering or shall I subtract something from the decompressed image?
Thanks a lot in advance.

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Wavelet Toolbox 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by