资源描述:
《基于pca的人脸识别(orl人脸库)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、江南大学实验报告课程名称:计算机视觉基础学院:物联网工程学院班级:计算机1206学号:1030412612姓名:王成义同组同学学号姓名:付聪+计算机1205+1030412522实验日期:2015/5/28实验名称:PCA人脸识别.1、实验目的1、熟悉人脸识别的方法原理。2、熟悉特征脸法识别人脸的方法。3、了解主成分分析在模式识别中的应用。2、实验内容/步骤内容:1.使用老师提供的人脸库图片(20个人×每人10张图片)。图片名规则****.bmp,(前2位代表第几个人,后2位代表这个人的第几张图片;例0305.bmp
2、代表第3个人的第5张图片)2.对于每个人的相片,使用10张中的前7张作为training图片,剩下的3张作为testing图片。3.利用PCA进行分类识别,给出最后的识别正确率(也即testing图片(20人*3张=60张)有多少张能被正确识别)。步骤:1、将ORL人脸库分成两个库ORL_TRAIN(训练库20*7)和ORL_TEST(测试库20*3)。2、将训练库中的图片构造成一个训练集,根据老师所讲的PCA算法原理对训练集进行处理。3、对测试图片进行和训练集同过程处理。4、用最近邻分类器进行分类。5、求出识别率。
3、3、实验源程序3.1、pca_of_wchy_main.m:主函数functionpca_of_wchy_main()%%%%%%%%%构造训练集%%%%%%%%%%%%%%%%path='ORL_TRAIN';File=dir([path,'*.bmp']);dsize=length(File);%读取数据库图片数量pic=zeros(dsize,15*15);%加载样本图像到X*(15*15)的矩阵中fori=1:dsizeImage1=imread(strcat(path,File(i).name));Ima
4、ge2=imresize(Image1,[15,15]);pic(i,:)=double(reshape(Image2,1,[]));end;TrainSamples=pic';smalle=10.^(-5);%一个小数字阈值trsize=size(TrainSamples,2);%训练样本总数Nx=TrainSamples;xm=mean(x,2);x=x-repmat(xm,1,trsize);%训练样本及中心化%%%%%%%%%PCA%%%%%%%%%%%%%%%%[weexplain]=pca_of_wchy
5、(x'*x);r=length(find(e>smalle));w=w(:,1:r);e=e(1:r);w=x*w*diag(1./sqrt(e));%SVD方法求解PCAx0=w'*x;%将训练样本投影到PCA子空间,这里,w即为W_pca%%%%%%%%%%%%%%%测试%%%%%%%%%%%%%%%%%%%%%error_recognition=0;right_recognition=0;path_test='ORL_TEST';File_test=dir([path_test,'*.bmp']);dsize
6、_test=length(File_test);%读取数据库图片数量fori=1:dsize_testImage=imread(strcat(path_test,File_test(i).name));ImageI=double(imresize(Image,[15,15]));phi_test=zeros(1,15*15);phi_test(1,:)=double(reshape(ImageI,1,[]));TestSamples=phi_test';tesize=size(TestSamples,2);%测试样本
7、总数xt0=w'*(TestSamples-repmat(xm,1,tesize));%同样地,将测试样本投影到PCA子空间%%%%%%%%%%%%用自己写的最近邻分类器进行分类,并计算识别正确和错误的数量%%%%%%%%%%%%%%%%%%wchy=Min(x0,xt0);%%最近邻分类器函数Imagess=imread(strcat(path,File(wchy).name));wchy_classifer_tr_name=File(wchy).name;wchy_classifer_te_name=File_t
8、est(i).name;%%%%%%%%%%%%因图片名前两位一致的分为同一类,故比较前两位的差异判断识别是否正确%%%%%%%%%%%%%ifstrcmpi(wchy_classifer_tr_name(1,1:2),wchy_classifer_te_name(1,1:2))==0error_recognition=error_recogn