收藏 分享(赏)

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

上传人:gnk289057 文档编号:4715755 上传时间:2019-01-08 格式:DOC 页数:15 大小:1.09MB
下载 相关 举报
基于PCA的人脸特征提取和识别.doc_第1页
第1页 / 共15页
基于PCA的人脸特征提取和识别.doc_第2页
第2页 / 共15页
基于PCA的人脸特征提取和识别.doc_第3页
第3页 / 共15页
基于PCA的人脸特征提取和识别.doc_第4页
第4页 / 共15页
基于PCA的人脸特征提取和识别.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

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营业执照举报