
% 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(:))
