www.gusucode.com > 人脸识别源代码 采用Matlab编写源码程序 > Ultimate_Face_Recognition/eigen.m

    %displays eigenfaces and the mean face if the database is not EMPTY
%partially taken from the software karhunenloeve.m
%Author:Alex Chirokov
%Available at
%http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=6995&objectType=file

close all
if(exist('fdata.dat')==2)
        try
        load('fdata.dat','-mat');
       matrice=zeros(size(data{1,1},1),fnumber);
        for ii=1:fnumber
            matrice(:,ii)=double(data{ii,1});
            imsize=[250 250];
            nPixels = imsize(1)*imsize(2);
            matrice2=double(matrice)/255;
            avrgx = mean(matrice2')';
           for i=1:fnumber 
            matrice2(:,i) = matrice2(:,i) - avrgx;
           end
            
            imshow(reshape(avrgx, imsize)); title('mean face')
        end


cov_mat = matrice2'*matrice2;

[V,D] = eig(cov_mat); 

V = matrice2*V*(abs(D))^-0.5;


for ii=1:fnumber
figure,imshow(ScaleImage(reshape(V(:,ii),imsize))); 
end
bdrfacerec

        catch
disp('Mean face and eigenfaces cannot be shown!!!')
disp('Possible Reasons:')
disp(' ')
disp('1--> Check the size of the new image and stored image(s) if you change the imresize line at bdrfacerec.m')
disp('2--> Database is empty')
disp('3--> There is only one person in your database. Please add atleast one person more to see the average of faces')
       pause
       
        bdrfacerec
 end
else
    clc
    disp(' CORRESPONDING FACE DATABASE NOT FOUND !!!')
    disp(' ')
    disp(' Press any key to continue ')
        pause
bdrfacerec
end