%
% eigen-face
%
D = dir('*.gif');
sz = size(D);
filenum = sz(1,1);
X = zeros(250*300,filenum);
Xavg = zeros(250*300,1);
for i=1:filenum
    X(:,i)=reshape(imread(D(i).name),300*250,1);
    Xavg = Xavg + X(:,i);
end
Xavg = Xavg/filenum;
for i=1:filenum
    X(:,i)=X(:,i)-Xavg;
end
[U,S,V]=svd(X,0);
plot(diag(S)); % the sigular values of X %
title('the singular values of training set');
for i=1:10
    filename = ['eigenface',int2str(i),'.tiff'];
    A = reshape(U(:,i),300,250)*S(i,i);
    imwrite(A,filename,'tiff');
end
for i = 1:10
    filename = ['generatedface',int2str(i),'.jpeg'];
    A =  zeros(300,250);
    for j=1:86
        A = reshape(U(:,j),300,250)*S(j,j)*randn(1)+A;
    %A =reshape(U(:,1),300,250)*S(1,1)*randn(1)+reshape(U(:,2),300,250)*S(2,2)*randn(1)+reshape(U(:,3),300,250)*S(3,3)*randn(1)+reshape(U(:,4),300,250)*S(4,4)*randn(1);
    end
    imwrite(A,filename,'jpeg');
end

    