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 个评论
回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!