Matlab PCA+SVM 人脸识别( 一) 分类: Matlab 模式识别计算机视觉 2014-05-23 20:12 3260 人阅读评论(20) 收藏举报 PCA 人脸识别 SVM 主成分分析支持向量机目录(?) [+] 概述: 编程平台: Matlab ; 数据: ORL 人脸库。 pgm 格式的图片。 40 人,每人 10 幅图, 图像大小为 112*92 像素。图像本身已经经过处理, 不需要进行归一化和校准等工作; 下载地址第三段的两个都是下载链接数据处理:主成分分析法( PCA );有关算法原理可以参考这里分类器: 支持向量机( SVM )。人脸识别算法步骤概述: 1 、读取训练数据集; 2 、主成分分析法降维并去除数据之间的相关性; 3 、数据规格化(去除数据单位因素对分类造成的影响,这个对此实验造成的影响不大); 4 、 SVM 训练(选取径向基和函数); 5 、读取测试数据、降维、规格化; 6 、用步骤 4 产生的分类函数进行分类(多分类问题,采用一对一投票策略,归位得票最多的一类); 7 、计算正确率。准备工作: 下载人脸库如果你用的不是 ORL 人脸库,可能还需要先进行人脸检测把 Matlab 的左上角当前路径( current folder ) 的保存的路径,或者用 addpath('...... ') 设置编程实现: 读取数据: 文件,若 flag=0 ,表述读取原文件的前五幅图作为训练数据,若 flag=1 ,表述读取原文件的后五幅图作为测试数据,数据存入 f_matrix 中,每一行为一个文件,每行为 112*92 列。[plain] view plain copy 1. function [f_matrix,realclass] = ReadFace(npersons,flag) 2.%读取 ORL 人脸库照片里的数据到矩阵 3.%输入: 4.% nPersons- 需要读入的人数,每个人的前五幅图为训练样本,后五幅为验证样本 5.% imgrow- 图像的行像素为全局变量 6.% imgcol- 图像的列像素为全局变量 7.% flag- 标志,为 0表示读入训练样本,为 1表示读入测试样本 8.%输出: 9.%已知全局变量: imgrow=112; imgcol=92; 10. global imgrow; 11. global imgcol; 12. realclass=zeros(npersons*5,1); 13. f_matrix=zeros(npersons*5,imgrow*imgcol); 14. for i=1:npersons 15. facepath='E:\ORL_face\s'; 16. facepath=strcat(facepath,num2str(i)); 17. facepath=strcat(facepath,'\'); 18. cachepath=facepath; 19. for j=1:5 20. facepath=cachepath; 21. if flag==0 %读入训练样本图像的数据 22. facepath=strcat(facepath,'0'+j); 23. else %读入测试样本数据 24. facepath=str
Matlab PCA SVM人脸识别(一) 来自淘豆网m.daumloan.com转载请标明出处.