% Image conpression using singular value decomposition. % K. Ming Leung, 04/27/03 clear all; flowersTiff = imread('flowers.tif'); % read in color image imshow(flowersTiff); pause; flowersGray = rgb2gray(flowersTiff); % convert to grayscale imshow(flowersGray); pause; % show grayscale image flowers = double(flowersGray); % convert to numbers [U, S, V] = svd(flowers); % svd decomposition dS = diag(S), % singular values M = zeros(size(flowers)); for k= 1:min(size(S)) M = M+S(k,k)*U(:,k)*V(:,k)'; % compose image incrementally image(M); % display image title(['First ',num2str(k),' singular values']); shg; pause(0.1); end % If we keep only the first 50 singular values and vectors, % the compressed image has only 2% of the original size