% test SVD on digital image by doing the SVD on image blocks clear clc I = imread('Peppers.bmp'); I = double(I); Irec1 = zeros(256); Irec12 = zeros(256); Irec123 = zeros(256); Irec1234 = zeros(256); for i = 1 : 8 : 249 for j = 1 : 8 : 249 temp = I(i:(i+7), j:(j+7)); [U, S, V] = svd(temp); Vtranspose = V'; iter1 = S(1,1)*U(:,1)*Vtranspose(1,:); iter2 = S(2,2)*U(:,2)*Vtranspose(2,:); iter3 = S(3,3)*U(:,3)*Vtranspose(3,:); iter4 = S(4,4)*U(:,4)*V(4,:); iter12 = iter1 + iter2; iter123 = iter1 + iter2 + iter3; iter1234 = iter1 + iter2 + iter3 + iter4; Irec1(i:(i+7), j:(j+7)) = iter1; Irec12(i:(i+7), j:(j+7)) = iter12; Irec123(i:(i+7), j:(j+7)) = iter123; Irec1234(i:(i+7), j:(j+7)) = iter1234; end end subplot(2,2,1), imshow(Irec1,[]) subplot(2,2,2), imshow(Irec12,[]) subplot(2,2,3), imshow(Irec123,[]) subplot(2,2,4), imshow(Irec1234,[])