www.gusucode.com > matlab编程人脸识别程序 > matlab编程人脸识别程序/程序/Recognition.m

    function OutputName = Recognition(TestImage, m, A, Eigenfaces)


ProjectedImages = [];
Train_Number = size(Eigenfaces,2);
for i = 1 : Train_Number
    temp = Eigenfaces'*A(:,i); %e将每个样本投影到特征空间
    ProjectedImages = [ProjectedImages temp]; 
end

%%%%%%%%%%%%%%%%%%%%%%%% 从测试人脸库计算提取特征
InputImage = imread(TestImage);
temp = InputImage(:,:,1);

[irow icol] = size(temp);
InImage = reshape(temp',irow*icol,1);
Difference = double(InImage)-m; 
ProjectedTestImage = Eigenfaces'*Difference; % 将待测样本投影到特征空间

%%%%%%%%%%%%%%%%%%%%%%%% 按照欧式距离取最小的原则得出匹配的人脸


Euc_dist = [];
for i = 1 : Train_Number
    q = ProjectedImages(:,i);
    temp = ( norm( ProjectedTestImage - q ) )^2;
    Euc_dist = [Euc_dist temp];
end
%选取最小欧式距离的人脸
[Euc_dist_min , Recognized_index] = min(Euc_dist);
%获取该人脸的数字代号
OutputName = strcat(int2str(Recognized_index),'.jpg');