ImageVerifierCode 换一换
格式:DOC , 页数:15 ,大小:1.09MB ,
资源ID:4715755      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-4715755.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于PCA的人脸特征提取和识别.doc)为本站会员(gnk289057)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

基于PCA的人脸特征提取和识别.doc

1、工 程 设 计 报 告设计题目:基于 PCA 的人脸特征抽取及识别学 院: 电子工程学院 专 业: 智能科学与技术 姓名: 钟佩 学号: 02085156 时 间: 2011 年 11 月 指导教师: 缑水平 目录摘要 .31PCA 进行特征抽取和识别的方法及理论基础 31.1 K-L 变换 .31.2 利用 PCA 进行人脸识别 41.3 PCA 的理论基础 .41.3.1 投影 .41.3.2 PCA 的作用及其统计特性 51.3.3 特征脸 .61.3.4 图片重建 .71.3.5 奇异值分解(SVD) 71.3.6 利用小矩阵计算大矩阵特征向量 .81.3.7 图片归一化 .82结果

2、.91.识别率 .92.特征脸 .93.人脸重构 .103参考文献 104 附录 matlab 源码 114.1 人脸识别 114.2 特征人脸 .124.3 人脸重建 .14摘要对于一幅图像可以看作一个由像素值组成的矩阵,也可以扩展开,看成一个矢量,如一幅N*N 象素的图像可以视为长度为N2 的矢量,这样就认为这幅图像是位于N2 维空间中的一个点,这种图像的矢量表示就是原始的图像空间,但是这个空间仅是可以表示或者检测图像的许多个空间中的一个。不管子空间的具体形式如何,这种方法用于图像识别的基本思想都是一样的,首先选择一个合适的子空间,图像将被投影到这个子空间上,然后利用对图像的这种投影间的某

3、种度量来确定图像间的相似度,最常见的就是各种距离度量。在本文中,我们将讨论PVA算法来对人脸进行特征抽取和识别。1 PCA 进行特征抽取和识别的方法及理论基础1.1 K-L 变换PCA 方法是由Turk 和Pentlad 提出来的,它的基础就是Karhunen-Loeve 变换(简称KL变换),是一种常用的正交变换。下面我们首先对K-L 变换作一个简单介绍:假设X 为n 维的随机变量, X 可以用n 个基向量的加权和来表示 :式中: i 是加权系数, i 是基向量,此式还可以用矩阵的形式表示:取基向量为正交向量,即则系数向量为: = T X综上所述,K-L 展开式的系数可用下列步骤求出:步骤一

4、求随即向量X 的自相关矩阵 ,由于没有类别信息的样本集的 均值向量,常常没有意义,所以也可以把数据的协方差矩阵 作为K-L 坐标系的产生矩阵,这里 是总体均值向量。步骤二 求出自相关矩阵或协方差矩阵R 的本征值 和本征向量 ,步骤三 展开式系数即为 = T XK_L 变换的实质是建立了一个新的坐标系,将一个物体主轴沿特征矢量对齐的旋转变换,这个变换解除了原有数据向量的各个分量之间相关性,从而有可能去掉那些带有较少信息的坐标系以达到降低特征空间维数的目的。1.2 利用 PCA 进行人脸识别完整的PCA 人脸识别的应用包括几个步骤:人脸图像预处理;读入人脸库,训练形成特征子空间;把训练图像和测试图

5、像投影到上一步骤中得到的子空间上;选择一定的距离函数进行识别。下面详细描述整个过程(源码见faceRec.m)。1. 读入人脸库归一化人脸库后,将库中的每人选择一定数量的图像构成训练集,其余构成测试集。设归一化后的图像是n*m,按列相连就构成 N=n*m 维矢量,可视为N 维空间中的一个点,可以通过K-L 变换用一个低维子空间描述这个图像。2. 计算 K- L 变换的生成矩阵所有训练样本的协方差矩阵为(以下三个等价):是平均人脸, M 训练人脸数,协方差矩阵 CA 是一个N*N的矩阵, N 是x i的维数。为了方便计算特征值和特征向量,一般选用第2个公式。根据K - L 变换原理,我们所求的新

6、坐标系即由矩阵AA T 的非零特征值所对应的特征向量组成。直接求N*N 大小矩阵C A 的特征值和正交归一特征向量是很困难的, 根据奇异值分解原理(见段落1.2.5和1.2.6),可以通过求解A TA的特征值和特征向量来获得A TA的特征值和特征向量。在计算得到 C A 的所有非零特征值 (从大到小排序, 1 r n)维矩阵,则存在两个正交矩阵和一个对角阵:其中 ,且UU T= I ,VV T= I , i呈降序排列。其中 i2为AA T 和A TA 的非零特征值, ui 和v i 分别是AA T 和A TA对应于 i2的特征向量。可得一个推论:可以计算 A TA的特征值 i2及相应的正交归一

7、特征向量 i v 后,可由推论知AAT 的正交归一特征向量 注意,协方差矩阵 的特征值为: i2/ M 。1.3.6 利用小矩阵计算大矩阵特征向量高阶矩阵的特征向量可以转化为求低阶矩阵的特征向量:设:A 是秩为r 的m*n(mn)维矩阵, ,是一个矩阵,现在要求C x的特征值及特征向量,可通过先求小矩阵 的特征向量 和特征值,两者之间有以下关系:显然,C x = AAT 的特征向量是A v i (注意没有单位化), 亦为其特征值。结论:1.2.5 与1.2.6 的方法计算协方差矩阵的特征向量,特征值的结果是一致的,只是要注意1.2.5 中的特征值要除以M,1.2.6 中的特征向量要单位化。1.

8、3.7 图片归一化图片标准化通常是一个整体概念,要求把图片归一到均值为0,方差为1 下情况下。这个概念类似于一般正态分布向标准正态分布的转化:命题 4 若X N(, 2 ),则所以要对一组图片中的一张 X i 进行归一化(标准化),只需要减去均值,除以方差就可以了。均值 ,方差为2结果1.识别率2.特征脸均均均3.人脸重构3 参考文献1 数字图像处理与机器视觉Visual C+与Matlab实现 张铮 王艳平 薛桂香著4 附录 matlab 源码4.1 人脸识别% FaceRec.m% PCA 人脸识别修订版,识别率88% calc xmean,sigma and its eigen deco

9、mpositionallsamples=;%所有训练图像for i=1:40for j=1:5a=imread(strcat(D:ORLs,num2str(i),num2str(j),.pgm);% imshow(a);b=a(1:112*92); %b是行矢量 1N,其中N10304,提取顺序是先列后行,即从上到下,从左到右b=double(b);allsamples=allsamples; b; % allsamples 是一个M * N 矩阵,allsamples 中每一行数据代表一张图片,其中M200endendsamplemean=mean(allsamples); % 平均图片,1

10、 Nfor i=1:200 xmean(i,:)=allsamples(i,:)-samplemean; % xmean 是一个M N 矩阵,xmean每一行保存的数据是“每个图片数据-平均图片”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 0)%

11、base(:,i) = dsort(i)(-1/2) * xmean * vsort(:,i); % base 是Np 阶矩阵,除以dsort(i)(1/2)是对人脸图像的标准化(使其方差为1)% i = i + 1; %xmean * vsort(:,i)是小矩阵的特征向量向大矩阵特征向量转换的过程%end% 以下两行add by gongxun 将训练样本对坐标系上进行投影,得到一个 M*p 阶矩阵allcoorallcoor = allsamples * base; % allcoor 里面是每张训练人脸图片在 M*p 子空间中的一个点,即在子空间中的组合系数accu = 0; %下面的

12、人脸识别过程中就是利用这些组合系数来进行识别% 测试过程for i=1:40for j=6:10 %读入40 x 5 副测试图像a=imread(strcat(D:ORLs,num2str(i),num2str(j),.pgm);b=a(1:10304);b=double(b);tcoor= b * base; %计算坐标,是1p 阶矩阵for k=1:200mdist(k)=norm(tcoor-allcoor(k,:);end;%三阶近邻dist,index2=sort(mdist);class1=floor( (index2(1)-1)/5 )+1;class2=floor(index2

13、(2)-1)/5)+1;class3=floor(index2(3)-1)/5)+1;if class1=class2 elseif class1=class2class=class1;elseif class2=class3class=class2;end;if class=iaccu=accu+1;end;end;end;accuracy=accu/200 %输出识别率4.2 特征人脸% eigface.mfunction = eigface()% calc xmean,sigma and its eigen decompositionclose all;clc;clear all;all

14、samples=;%所有训练图像for i=1:40for j=1:5a=imread(strcat(D:ORLs,num2str(i),num2str(j),.pgm);% imshow(a);b=a(1:112*92); % b 是行矢量 1N,其中N 10304 ,提取顺序是先列后行,即从上到下,从左到右b=double(b);allsamples=allsamples; b; % allsamples 是一个M * N 矩阵,allsamples 中每一行数据代表一张图片,其中M200endendsamplemean=mean(allsamples); % 平均图片,1 Nfor i=

15、1:200 xmean(i,:)=allsamples(i,:)-samplemean; % xmean 是一个M N 矩阵,xmean每一行保存的数据是“每个图片数据-平均图片”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 0)% base(:,i

16、) = dsort(i)(-1/2) * xmean * vsort(:,i); % base 是Np 阶矩阵,除以dsort(i)(1/2)是对人脸图像的标准化% i = i + 1; % xmean * vsort(:,i)是小矩阵的特征向量向大矩阵特征向量转换的过程%endbase = xmean * vsort(:,1:p) * diag(dsort(1:p).(-1/2);% 生成特征脸,并显示出来for (k=1:p),temp = reshape(base(:,k), 112,92);if(k21)figure(1);subplot(4,5,k),imshow(mat2gray(

17、temp);elseif(k41)figure(2);subplot(4,5,(k-20),imshow(mat2gray(temp);elseif(k61)figure(3);subplot(4,5,(k-40),imshow(mat2gray(temp);elseif(k81)figure(4);subplot(4,5,(k-60),imshow(mat2gray(temp);elseif(k101) figure(5);subplot(4,5,(k-80),imshow(mat2gray(temp); elseif(k121)figure(6);subplot(4,5,(k-100),i

18、mshow(mat2gray(temp); elseif(k141)figure(7);subplot(4,5,(k-120),imshow(mat2gray(temp);elseif(k161)figure(8);subplot(4,5,(k-140),imshow(mat2gray(temp); elseif(k181)figure(9);subplot(4,5,(k-160),imshow(mat2gray(temp);else(k200)figure(10);subplot(4,5,(k-180),imshow(mat2gray(temp);endendavg = reshape(sa

19、mplemean, 112,92);subplot(4,5,20),imshow(mat2gray(avg),title(平均脸);%将模型保存save(D:ORLmodel.mat, base, samplemean);4.3 人脸重建% Reconstruct.mfunction = reconstruct()close all;clear all;clcload D:ORLmodel.mat;%计算新图片在特征子空间中的系数img = D:ORLs23.pgma=imread(img);b=a(1:112*92); % b 是行矢量 1N,其中N 10304 ,提取顺序是先列后行,即从上

20、到下,从左到右b=double(b);b=b-samplemean;c = b * base; % c 是图片 a 在子空间中的系数, 是1*p 行矢量% 根据特征系数及特征脸重建图figure(1)subplot(1,6,1),imshow(img);% 前15 个t = 15;temp = base(:,1:t) * c(1:t);temp = temp + samplemean;subplot(1,6,2),imshow(mat2gray(reshape(temp, 112,92);% 前50 个t = 50;temp = base(:,1:t) * c(1:t);temp = temp

21、 + samplemean;subplot(1,6,3),imshow(mat2gray(reshape(temp, 112,92);% 前100 个t = 100;temp = base(:,1:t) * c(1:t);temp = temp + samplemean;subplot(1,6,4),imshow(mat2gray(reshape(temp, 112,92);% 前150 个t = 150;temp = base(:,1:t) * c(1:t);temp = temp + samplemean;subplot(1,6,5),imshow(mat2gray(reshape(temp, 112,92);% 前199 个t = 199;temp = base(:,1:t) * c(1:t);temp = temp + samplemean;subplot(1,6,6),imshow(mat2gray(reshape(temp, 112,92);

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报