pca人脸识别特征脸源代码

% FaceRec.m ??????%CQUPT

% PCA??识别率88%?

% calc xmean,sigma and its eigen decomposition

allsamples=[];%所有训练图片

m=0;

for i=1:40

for j=1:5

a=imread(strcat ('e:\ORL\s', num2str(i),'\', num2str(j),'.pgm'));

b=a(1:112*92);%b是行矢量1*N,N=10304,提取顺序是先列后行,

%即从上到下,从左到右

b=double(b);

allsamples=[allsamples;b];%allsamples是一个M*N矩阵,allsamples中每一行数据代 %表一张图片,其中M

end

end

samplemean=mean(allsamples);%平图片,1*N

for i=1:200 xmean(i,:)=allsamples(i,:)-samplemean;%allsamples是一个M*N矩阵,allsamples中每一行保存

%的数据是“每个图片数据—平均图片”

end;

%获取特征植及特征向量

sigma=xmean*xmean';% M* M矩阵

[v d]=eig(sigma);

d1=diag(d);

%按特征值大小以降序排列

dsort=flipud(d1);

vsort=fliplr(v);

%以下选择90%的能量

dsum=sum(dsort);

dsum_extract=0;

p=0;

while(dsum_extract/dsum

p=p+1;

dsum_extract=sum(dsort(1:p));

end

p=199;

% (训练阶段)计算特征脸形成的坐标系

base = xmean' * vsort(:,1:p) * diag(dsort(1:p).^(-1/2));

%生成特征脸

for(k=1:p)

temp=reshape(base(:,k),112,92);

newpath=['e:\orl\test\' int2str(k) '.jpg'];

imwrite(mat2gray(temp), newpath);

m=m+1;

subplot(10,20,m),imshow(mat2gray(reshape(temp, 112,92))); end

avg = reshape(samplemean, 112,92);

imshow(avg);

title('训练图库')

imwrite(mat2gray(avg), 'e:\orl\test\average.jpg');

%将模型保存

save('e:\orl\test\model.mat', 'base', 'samplemean');

% FaceRec.m ??????%CQUPT

% PCA??识别率88%?

% calc xmean,sigma and its eigen decomposition

allsamples=[];%所有训练图片

m=0;

for i=1:40

for j=1:5

a=imread(strcat ('e:\ORL\s', num2str(i),'\', num2str(j),'.pgm'));

b=a(1:112*92);%b是行矢量1*N,N=10304,提取顺序是先列后行,

%即从上到下,从左到右

b=double(b);

allsamples=[allsamples;b];%allsamples是一个M*N矩阵,allsamples中每一行数据代 %表一张图片,其中M

end

end

samplemean=mean(allsamples);%平图片,1*N

for i=1:200 xmean(i,:)=allsamples(i,:)-samplemean;%allsamples是一个M*N矩阵,allsamples中每一行保存

%的数据是“每个图片数据—平均图片”

end;

%获取特征植及特征向量

sigma=xmean*xmean';% M* M矩阵

[v d]=eig(sigma);

d1=diag(d);

%按特征值大小以降序排列

dsort=flipud(d1);

vsort=fliplr(v);

%以下选择90%的能量

dsum=sum(dsort);

dsum_extract=0;

p=0;

while(dsum_extract/dsum

p=p+1;

dsum_extract=sum(dsort(1:p));

end

p=199;

% (训练阶段)计算特征脸形成的坐标系

base = xmean' * vsort(:,1:p) * diag(dsort(1:p).^(-1/2));

%生成特征脸

for(k=1:p)

temp=reshape(base(:,k),112,92);

newpath=['e:\orl\test\' int2str(k) '.jpg'];

imwrite(mat2gray(temp), newpath);

m=m+1;

subplot(10,20,m),imshow(mat2gray(reshape(temp, 112,92))); end

avg = reshape(samplemean, 112,92);

imshow(avg);

title('训练图库')

imwrite(mat2gray(avg), 'e:\orl\test\average.jpg');

%将模型保存

save('e:\orl\test\model.mat', 'base', 'samplemean');


相关内容

  • 工程实践课程设计报告
  • 1.人脸识别的具体实现 一个完整的人脸识别系统由以下几个环节组成,人脸检测,特征提取,和分类识别.人脸检测即为从输入的静止图像或序列图像中检测图像是否包含人脸.因为本次实验主要是验证PCA和KNN算法的精度,所以选择的图像都是包含人脸的图像.实验中采用PCA算法对特征进行提取,用KNN算法对实验结果 ...

  • 人脸识别-设计说明
  • 人脸识别设计说明 开发环境:XP\win7+VS2008+OpenCV+Access数据库. 1. 建立人脸库模块: 主要执行的是void CdlgCreateFaceDB::OnBnClickedbtnopenimg() 可以从"静态图像"与"USB 摄像头视频&qu ...

  • 二维线性判别分析
  • 二维线性判别分析 摘要 线性判别分析(LDA )是一个常用的进行特征提取和降维的方法.在许多涉及到高维数据,如人脸识别和图像检索的应用中被广泛使用.经典的LDA 方法固有的限制就是所谓的奇异性问题,即当所有的散列矩阵是奇异的时,它就不再适用了.比较有名的解决奇异性问题的方法是在使用LDA 方法之前先 ...

  • PCA主成分分析原理及应用
  • 主元分析(PCA)理论分析及应用 什么是PCA? PCA是Principal component analysis的缩写,中文翻译为主元分析/主成分分析.它是一种对数据进行分析的技术,最重要的应用是对原有数据进行简化.正如它的名字:主元分析,这种方法可以有效的找出数据中最"主要" ...

  • 人脸识别方法的综述与展望
  • 计算机与数字工程 第33卷24 人脸识别方法的综述与展望 艾英山 张德贤 (河南工业大学机电工程系 郑州 450052) Ξ 摘 要 综述了人脸识别理论的概念和研究现状, , 最后对人脸识别研究中的有关问题提出了我们的看法. 关键词:人脸自动识别 面部特征提取中图分类号:TP391. 41 for ...

  • 人脸识别概述及识别的基本方法与流程
  • 论坛里面经常有人问关于识别,特别是关于人脸识别的一些事情,今天特吧人脸识别的基本概念,以及大概步骤给大家介绍一下,让大家对人脸识别有一个综合的认识.(信息整理收集于网上) 人脸识别(Face Recognition)是一种依据人的面部特征(如统计或几何特征等),自动进行身份鉴别蝗一种技术,它综合运用 ...

  • 人脸识别的基本方法
  • 人脸识别的基本方法 人脸识别的方法很多,以下介绍一些主要的人脸识别方法. (1)几何特征的人脸识别方法 几何特征可以是眼.鼻.嘴等的形状和它们之间的几何关系(如相互之间的距离).这些算法识别速度快,需要的内存小,但识别率较低. (2)基于特征脸(PCA)的人脸识别方法 特征脸方法是基于KL变换的人脸 ...

  • 人脸识别方法的研究与实现
  • 人脸识别方法的研究与实现 目 录 第一章 绪论 第一节 课题背景 一 课题的来源------------------------------------------------------------------------------1 二 人脸识别技术的研究意义----------------- ...

  • 人脸识别考勤系统解决方案
  • 人脸识别考勤系统解决方案 一. 人脸识别行业背景 严格规范的员工考勤管理是现代企事业单位提高管理效益的重要保证, 而传统的以打卡.刷卡为代表的考勤产品,存在着替代打卡,效率低下,不易统计,管理和使用维护成本高等弊端. 指纹识别产品在考勤中的大规模应用,部分解决了代打卡的问题,但是超过5%左右的人群天 ...