www.gusucode.com > MATLAB代码,模式识别,人脸识别实验,K-L变换提取人脸特征 > MATLAB代码,模式识别,人脸识别实验,K-L变换提取人脸特征/K_L变换/kl.m
[TrainX,TrainClass] = com_ReadDB('D:\模式识别\ORL\','1,2,3,4,5'); %从数据库中读取图片信息每个人的前5幅,第一个参数为数据库路径 m=mean(TrainX,2); %计算样本的均值 Q=[]; for i=1:200 Q=[Q TrainX(:,i)-m]; end R=Q'*Q; [V,D] = eig(R); U=Q*V*D^(-0.5); W=U(:,150:200); %通过取不同的特征向量获得不同的识别率 Ty=W' * TrainX; [TrainX1,TrainClass1] = com_ReadDB('D:\模式识别\ORL\','6,7,8,9,10'); %从数据库中读取图片信息每个人的后5幅 Ty1=W' * TrainX1; compare=0; %记录比较成功次数 for j=1:200 for i=1:200 a(i) =norm(Ty(:,i)-Ty1(:,j),2); end min=a(1); order=1; for i=2:200 if a(i)<min min=a(i); order=i; end end ju1=TrainClass(order,1); ju2=TrainClass1(j,1); if ju1{1}==ju2{1} %必须将cell类型转换成字符型再作比较,否则会出错 compare=compare+1; end end disp('成功识别率为:');disp(compare/200); %输出识别的成功率