赞
踩
使用增强识别能力的低维特征表示对人脸识别系统是非常重要的.线性判别分析(LDA)是一种较为普遍的用于特征提取的分类方法.但是将LDA 直接用于人脸识别会遇到维数问题和"小样本"问题.人们经过研究通过多种途径解决了这两个问题并实现了基于LDA 的人脸识别.本文对几种基于LDA 的人脸识别方法做了理论上的比较和实验数据的支持,这些方法包括Eigenfaces,Fisherfaces,DLDA,VDLDA 及VDFLDA.通过比较分析得出VDFLDA 是其中最好的一种方法.
clear all clc close all start=clock; sample_class=1:40;%样本类别 sample_classnum=size(sample_class,2);%样本类别数 fprintf('程序运行开始....................\n\n'); for train_samplesize=3:8; train=1:train_samplesize;%每类训练样本 test=train_samplesize+1:10;%每类测试样本 train_num=size(train,2);%每类训练样本数 test_num=size(test,2);%每类测试样本数 address=[pwd '\ORL\s']; %读取训练样本 allsamples=readsample(address,sample_class,train); %先使用PCA进行降维 [newsample base]=pca(allsamples,0.9); %计算Sw,Sb ;sw 类内 [sw sb]=computswb(newsample,sample_classnum,train_num); %读取测试样本 testsample=readsample(address,sample_class,test); best_acc=0;%最优识别率 %寻找最佳投影维数 for temp_dimension=1:1:length(sw) vsort1=projectto(sw,sb,temp_dimension); %训练样本和测试样本分别投影 tstsample=testsample*base*vsort1; trainsample=newsample*vsort1; %计算识别率 accuracy=computaccu(tstsample,test_num,trainsample,train_num); if accuracy>best_acc best_dimension=temp_dimension;%保存最佳投影维数 best_acc=accuracy; 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');
[1]张燕昆, and 刘重庆. "一种新颖的基于LDA的人脸识别方法(英文)." 红外与毫米波学报 22.5(2003):327-330.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。