% EIGEN FACES files = dir('faces/*.gif'); N = size(files,1); im = im2double(imread(sprintf('faces/%s',files(1).name))); [n,m] = size(im); k = n*m; FS = zeros(k,N); for i = 1:N im = im2double(imread(sprintf('faces/%s',files(i).name))); FS(:,i) = reshape(im,[],1); end FS = FS - repmat(mean(FS,2),1,N); [U,S,V] = svd(FS,0); s = diag(S); colormap gray figure(1); for i = 1:40 subplot(4,10,i); subimage(mat2gray(reshape(U(:,i),n,[]))); axis off; end figure(2) r = rand(4,1); i = r(1)*s(1)*U(:,1) + r(2)*s(2)*U(:,2) + r(3)*s(3)*U(:,3) + r(4)*s(4)*U(:,4); i = i ./ sum(r(:)); imshow(mat2gray(reshape(i,n,[]))); min(i(:)) max(i(:))