% ========================================================================= % Math 336 - Image Processing - Laboratory 6 % % Warmup Exercise(s): Image Compression % Test the compression of the function imwrite. % % Blocked (8x8) wavelet transform replacing DCT. % % Marty Kandes % Computational Science Research Center / Department of Physics % San Diego State University % Fall 2008 % ------------------------------------------------------------------------- clear all; close all; clc; % Clear Matlab workspace. F = imread('lena.jpg'); % Read in the image. F = im2double(F); % Convert image to double. F = mat2gray(F); % Normalize grayscale image. imwrite(F,'lenaq90.jpg','jpg','Quality',90); % Write image to file with quality = 90%. imwrite(F,'lenaq75.jpg','jpg','Quality',75); % Write image to file with quality = 75%. imwrite(F,'lenaq50.jpg','jpg','Quality',50); % Write image to file with quality = 50%. imwrite(F,'lenaq25.jpg','jpg','Quality',25); % Write image to file with quality = 25%. INFO = imfinfo('lena.jpg'); % Get image info for the original image. INFOQ90 = imfinfo('lenaq90.jpg'); % Get image info for the quality = 90% image. INFOQ75 = imfinfo('lenaq75.jpg'); % Get image info for the quality = 75% image. INFOQ50 = imfinfo('lenaq50.jpg'); % Get image info for the quality = 50% image. INFOQ25 = imfinfo('lenaq25.jpg'); % Get image info for the quality = 25% image. [M,N] = size(F); % Get dimensions of the image. B = 8; % Set blocksize. B x B. A = zeros(B,B); % Preallocate block of the image. H = zeros(B,B); % Preallocate block of the wavelet transform. for J = 1:B:N % for I = 1:B:M % A = F(I:1:I+B-1,J:1:J+B-1); % Get current image block. H = haarmtx(B); % Build Haar transform matrix. A = H*A*H'; % Apply 2D Haar transform on image block. %A = im2bw(A,graythresh(A)); % Binary threshold the image block. A = mat2gray(A); % Grayscale threshold / rescaling. F(I:1:I+B-1,J:1:J+B-1) = A; % Put transformed block back in image. end; % end; % imshow(F); % imwrite(F,'lenahwtqgray.jpg','jpg'); % for J = 1:B:N % for I = 1:B:M % A = F(I:1:I+B-1,J:1:J+B-1); % Get current image block. H = haarmtx(B); % Build Haar transform matrix. A = H'*A*H; % Apply 2D inverse Haar transform on image block. F(I:1:I+B-1,J:1:J+B-1) = A; % Put transformed block back in image. end; % end; % figure; % imshow(F); % imwrite(F,'lenaihwtqgray.jpg','jpg'); % % =========================================================================