
1 简介使用增强识别能力的低维特征表示对人脸识别系统是非常重要的.线性判别分析(LDA)是一种较为普遍的用于特征提取的分类方法.但是将LDA 直接用于人脸识别会遇到维数问题和小样本问题.人们经过研究通过多种途径解决了这两个问题并实现了基于LDA 的人脸识别.本文对几种基于LDA 的人脸识别方法做了理论上的比较和实验数据的支持,这些方法包括Eigenfaces,Fisherfaces,DLDA,VDLDA 及VDFLDA.通过比较分析得出VDFLDA 是其中最好的一种方法.2 部分代码clear all clc close all startclock; sample_class1:40;%样本类别 sample_classnumsize(sample_class,2);%样本类别数 fprintf(程序运行开始....................\n\n); for train_samplesize3:8; train1:train_samplesize;%每类训练样本 testtrain_samplesize1:10;%每类测试样本 train_numsize(train,2);%每类训练样本数 test_numsize(test,2);%每类测试样本数 address[pwd \ORL\s]; %读取训练样本 allsamplesreadsample(address,sample_class,train); %先使用PCA进行降维 [newsample base]pca(allsamples,0.9); %计算Sw,Sb ;sw 类内 [sw sb]computswb(newsample,sample_classnum,train_num); %读取测试样本 testsamplereadsample(address,sample_class,test); best_acc0;%最优识别率 %寻找最佳投影维数 for temp_dimension1:1:length(sw) vsort1projectto(sw,sb,temp_dimension); %训练样本和测试样本分别投影 tstsampletestsample*base*vsort1; trainsamplenewsample*vsort1; %计算识别率 accuracycomputaccu(tstsample,test_num,trainsample,train_num); if accuracybest_acc best_dimensiontemp_dimension;%保存最佳投影维数 best_accaccuracy; end end %---------------------------------输出显示---------------------------------- fprintf(每类训练样本数为%d\n,train_samplesize); fprintf(最佳投影维数为%d\n,best_dimension); fprintf(FisherFace的识别率为%.2f%%\n,best_acc*100); fprintf(程序运行时间为%3.2fs\n\n,etime(clock,start)); end fprintf(程序运行结束....................\n\n);3 仿真结果4 参考文献[1]张燕昆, and 刘重庆. 一种新颖的基于LDA的人脸识别方法(英文). 红外与毫米波学报 22.5(2003):327-330.