PCA人脸识别及理论基础(更新版附源码)_

上传人:油条 文档编号:1457589 上传时间:2017-06-21 格式:PDF 页数:12 大小:445.33KB
返回 下载 相关 举报
PCA人脸识别及理论基础(更新版附源码)__第1页
第1页 / 共12页
PCA人脸识别及理论基础(更新版附源码)__第2页
第2页 / 共12页
PCA人脸识别及理论基础(更新版附源码)__第3页
第3页 / 共12页
PCA人脸识别及理论基础(更新版附源码)__第4页
第4页 / 共12页
PCA人脸识别及理论基础(更新版附源码)__第5页
第5页 / 共12页
点击查看更多>>
资源描述

《PCA人脸识别及理论基础(更新版附源码)_》由会员分享,可在线阅读,更多相关《PCA人脸识别及理论基础(更新版附源码)_(12页珍藏版)》请在金锄头文库上搜索。

1、1 PCA 与人脸识别及其理论基础 龚 勋( 2007-4-29) 1.1 问题描述1对于一幅图像可以看作一个由像素值组成的矩阵,也可以扩展开,看成一个矢量,如一幅 N*N 象素的图像可以视为长度为 N2的矢量,这样就认为这幅图像是位于 N2维空间中的一个点,这种图像的矢量表示就是原始的图像空间,但是这个空间仅是可以表示或者检测图像的许多个空间中的一个。不管子空间的具体形式如何,这种方法用于图像识别的基本思想都是一样的,首先选择一个合适的子空间,图像将被投影到这个子空间上,然后利用对图像的这种投影间的某种度量来确定图像间的相似度,最常见的就是各种距离度量。 1.1.1 K-L 变换1PCA 方

2、法是由 Turk 和 Pentlad 提出来的,它的基础就是 Karhunen-Loeve 变换 (简称 KL变换 ),是一种常用的正交变换。下面我们首先对 K-L 变换作一个简单介绍 : 假设 X 为 n 维的随机变量, X 可以用 n 个基向量的加权和来表示 : 1niiiX =式中 : i 是加权系数,i 是基向量,此式还可以用矩阵的形式表示 : 12 1 2(, , , )( , , , )TnnX =nullnull 取基向量为正交向量,即 Tj=1 0 ijij=TjI = 则系数向量为: TX= 综上所述, K-L 展开式的系数可用下列步骤求出 : 步骤一 求随即向量 X 的自相

3、关矩阵TREXX = ,由于没有类别信息的样本集的 均值向量,常常没有意义,所以也可以把数据的协方差矩阵 ()()TEx x = 作为K_L 坐标系的产生矩阵,这里 是总体均值向量。 步骤二 求出自相关矩阵或协方差矩阵 R 的本征值i 和本征向量i ,1(, , )in = null 步骤三 展开式系数即为TX= K_L变换的实质是建立了一个新的坐标系,将一个物体主轴沿特征矢量对齐的旋转 变换,这个变换解除了原有数据向量的各个分量之间相关性,从而有可能去掉那些带 有较少信息的坐标系以达到降低特征空间维数的目的。 1.1.2 利用 PCA 进行人脸识别 完整的 PCA 人脸识别的应用包括几个步骤

4、:人脸图像预处理;读入人脸库,训练形成特征子空间;把训练图像和测试图像投影到上一步骤中得到的子空间上;选择一定 的距离函数进行识别。下面详细描述整个过程(源码见 faceRec.m) 。 1. 读入人脸库 归一化人脸库后,将库中的每人选择一定数量的图像构成训练集,其余构成测试集。设归一化后的图像是 n*m,按列相连就构成 N=n*m 维矢量,可视为 N 维空间中的一个点,可以通过 K-L 变换用一个低维子空间描述这个图像。 2. 计算 K- L 变换的生成矩阵 所有训练样本的协方差矩阵为(以下三个等价) : 111. ( ) /2. ( ) /3. ()()MTTAkk xxkTAMTAixi

5、xiCxxMmmCAAMCxmmM=iii ( 1) 12 , ,., MA = , ii xx m = ,xm 是平均人脸 , M 训练人脸数,协方差矩阵AC 是一个 N*N的矩阵 , N 是ix 的维数。 为了方便计算特征值和特征向量,一般选用第 2个公式。根据 K - L 变换原理,我们所求的新坐标系即由矩阵TA Ai 的非零特征值所对应的特征向量组成。直接求 N*N大小矩阵AC 的特征值和正交归一特征向量是很困难的 , 根据奇异值分解原理(见段落 1.2.5和 1.2.6) ,可以通过求解TA Ai 的特征值和特征向量来获得TA Ai 的特征值和特征向量, 。 在计算得到AC 的所有非

6、零特征值 01 1,r null (从大到小排序, 1 rM n)维矩阵,则存在两个正交矩阵和一个对角阵: 12, , , TrA aa a U V=null 其中 01 1, ,rUuu u= null , 01 1, ,rVvv v= null ,01 1(, )rdiag = null ,且TUU I= ,TVV I= ,i 呈降序排列。 其中2i 为TAA*mm 和TA A*nn 的非零特征值,iu 和iv 分别是TAA 和TA A对应于2i 的特征向量。可得一个推论: 1UAV= 可以计算TA A 的特征值2i 及相应的正交归一特征向量iv 后,可由推论知TAA 的正交归一特征向量

7、1iiiuAv= 注意,协方差矩阵 ()/TACAAM= i 的特征值为:2/iM 。 1.2.6 利用小矩阵计算大矩阵特征向量 高阶矩阵的特征向量可以转化为求低阶矩阵的特征向量: 设: A 是秩为 r 的 m*n( mn)维矩阵,TXCAA=*mm ,是一个矩阵,现在要求XC 的特征值及特征向量,可通过先求小矩阵TA A*nn 的特征向量 01 1, ,rvv vnull 和特征值 01 1,r null ,两者之间有以下关系: TiiiA Av v = A 左乘( ) ( )Tii iAAAv Av = 显然,TXCAA= 的特征向量是iA v (注意没有单位化) , 01 1,r nul

8、l 亦为其特征值。 结论:1.2.5 与 1.2.6 的方法计算协方差矩阵的特征向量,特征值的结果是一致的,只是要注意 1.2.5 中的特征值要除以 M,1.2.6 中的特征向量要单位化。 1.2.7 图片归一化 图片标准化通常是一个整体概念,要求把图片归一到均值为 0,方差为 1 下情况下。 这个概念类似于一般正态分布向标准正态分布的转化: 命题 4 若2(, )XN ,则 (0,1)XZN= 所以要对一组图片中的一张iX 进行归一化 (标准化) , 只需要减去均值, 除以方差就可以了。均值MXiimXM=,方差为 ()()TXXDEXm Xm = 1.3 参考文献 1 邓楠 , 基于主成份

9、分析的人脸识别 , 西北大学硕士学位论文, 2006.06 2 R.O. Duda, P.E. Hart, and D.G. Stork, Pattern Classification, seconded. John Wiley & Sons, 2001. 3 Sami Romdhani .Face Image Analysis using a Multiple Feature Fitting Strategy. PhD Thesis, University of Basel, Switzerland, January 2005. 4 Sami Romdhani .FACE RECOGNITI

10、ON USING PRINCIPAL COMPONENTS ANALYSIS. 1.4 附录 matlab 源码 1.4.1 人脸识别 % FaceRec.m % PCA 人脸识别修订版,识别率 88 % calc xmean,sigma and its eigen decomposition allsamples=;%所有训练图像 for i=1:40 for j=1:5 a=imread(strcat(e:ORLs,num2str(i),num2str(j),.jpg); % imshow(a); b=a(1:112*92); % b 是行矢量 1 N,其中 N 10304,提取顺序是先列

11、后行,即从上到下,从左到右 b=double(b); allsamples=allsamples; b; % allsamples 是一个 M * N 矩阵, allsamples 中每一行数据代表一张图片,其中 M 200 end end samplemean=mean(allsamples); % 平均图片, 1 N for i=1:200 xmean(i,:)=allsamples(i,:)-samplemean; % xmean 是一个 M N 矩阵, xmean每一行保存的数据是“每个图片数据 -平均图片” end; % 获取特征值及特征向量 sigma=xmean*xmean; %

12、 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) = dsort(i)(-1/2) * xmean * vsort(:,i); % base是 N p阶矩阵, 除以 dsort(i)(1/2)是对人脸图像的标准化(使其方差为 1) % 详见基于 PCA 的人脸识别算法研究

13、 p31 % i = i + 1; % xmean * vsort(:,i)是小矩阵的特征向量向大矩阵特征向量转换的过程 %end % 以下两行 add by gongxun 将训练样本对坐标系上进行投影 ,得到一个 M*p 阶矩阵 allcoor allcoor = allsamples * base; % allcoor 里面是每张训练人脸图片在 M*p 子空间中的一个点,即在子空间中的组合系数, accu = 0; % 下面的人脸识别过程中就是利用这些组合系数来进行识别 % 测试过程 for i=1:40 for j=6:10 %读入 40 x 5 副测试图像 a=imread(strc

14、at(e:ORLs,num2str(i),num2str(j),.jpg); b=a(1:10304); b=double(b); tcoor= b * base; %计算坐标,是 1 p 阶矩阵 for k=1:200 mdist(k)=norm(tcoor-allcoor(k,:); end; %三阶近邻 dist,index2=sort(mdist); class1=floor( (index2(1)-1)/5 )+1; class2=floor(index2(2)-1)/5)+1; class3=floor(index2(3)-1)/5)+1; if class1=class2 & c

15、lass2=class3 class=class1; elseif class1=class2 class=class1; elseif class2=class3 class=class2; end; if class=i accu=accu+1; end; end; end; accuracy=accu/200 %输出识别率 1.4.2 特征人脸 % eigface.m function = eigface() % calc xmean,sigma and its eigen decomposition allsamples=;%所有训练图像 for i=1:40 for j=1:5 a=imread(strcat(e:ORLs,num2str(i),num2str(j),.jpg); % imshow(a); b=a(1:112*92);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号