www.pudn.com > facerecognitionmatlab.rar > FaceRecognize.m


function [OriginI,index]=FaceRecognize(inputface,databasepath,database); 
%人脸识别;inputface为待识别人脸文件的路径,database为人脸库; 
%OriginI:识别出来的人在数据库中的人脸;index:识别出来的人在数据库中的序号; 
load('D:\wavelet.dat','-mat');%载入W; 
load('d:\database1.dat','-mat');%载入WI; 
info = imfinfo(inputface,'bmp'); 
%读图;得到I; 
I = rgb2gray(imread(inputface,'bmp')); 
%计算人脸特征WI_In; 
step=10; 
for num=1:12 
for v=1:5 
    for u=1:8 
        %得到对应某个k的Wk; 
 %       for x1=1:info.Width 
  %          for x2=1:info.Height 
   %             Wk(x1,x2)=W(v,u,x1,x2); 
   %        end 
   %     end 
        %计算变换结果WIk; 
%        WIk=CalculateWIk(I,Wk,info.Width,info.Height,step); 
        for x1=1:info.Width/step 
            for x2=1:info.Height/step 
                WI_In(num,v,u,x1,x2)=WI(num,v,u,x1,x2); 
            end 
        end 
    end 
end 
end 
load('d:\database.dat','-mat');%载入WI; 
%与数据库中的人脸比对,找出最相像的人; 
index=0; 
Emin=realmax; 
step=10; 
for num=1:12 
    %从数据库中取出一个WI_In1; 
    index=0; 
    Emin=realmax; 
    for x1=1:info.Width/step 
        for x2=1:info.Height/step 
            for v=1:5 
                for u=1:8 
                    WI_In1(v,u,x1,x2)=WI_In(num,v,u,x1,x2); 
                end 
            end 
        end 
    end 
for num1=1:12 
    %从数据库中取出一个WI_Database; 
    for x1=1:info.Width/step 
        for x2=1:info.Height/step 
            for v=1:5 
                for u=1:8 
                    WI_Database(v,u,x1,x2)=WI(num1,v,u,x1,x2); 
                end 
            end 
        end 
    end 
    %比对,计算E; 
    Enum=E(WI_In1,WI_Database,info.Width/step,info.Width/step); 
    %保存最小的E及对应的inde; 
 
    if Enum