基于pca的人脸识别

最近两个星期都在研究pca的人脸识别,一直都对pca有些不是很理解,首先是关于协方差矩阵的问题,开始的时候,我认为可以把一幅100*100的图片看出1*10000懂得矢量,50个样本,但是在看人家的代码的时候发现在求解协方差矩阵的时候,人家是使用样本与样本间求的,后来我在计算机视觉群里面询问,终于把问题给解决了,首先假如A是10000*50的图像数据,矩阵的列是样本(表示一幅图像),假如求矩阵A的协方差矩阵,应该为求AA'得协方差(因为协方差是维与维的关系,现在我们的图像是10000维),这样AA'就是一个10000*10000的矩阵,这未免太多了,对于求其特征值和特征向量是很困难的,因此有人给出了一个小技巧(trick),就是先求A'A的的特征值和特征向量,我们发现其实AA'和A'A的特征值是相同的(当然是包含关系),举个例子,

clear,clc
S=fix(rand(3,5)*50);      %3为样本的个数,5为样本的维数
S=S-repmat(mean(S),3,1);  %样本中心化
S=S';
C1=S*S';
C2=S'*S
%C=(S*S')./(size(S,2)-1); %样本的协方差矩阵
[P,Lambda]=eig(C1)        %对协方差矩阵进行特征值分解
[P1,Lambda1]=eig(C2)

结果为:

%%************

C2 =


  1.0e+003 *


    0.5514   -0.6259    0.0744
   -0.6259    1.0468   -0.4209
    0.0744   -0.4209    0.3464




P =


    0.7885    0.0322   -0.3100   -0.3302    0.4148
    0.0487   -0.6597   -0.5790    0.4651   -0.1039
   -0.4122   -0.5407   -0.0142   -0.6803    0.2734
    0.4432   -0.4197    0.4729   -0.1887   -0.6068
    0.0974   -0.3085    0.5873    0.4198    0.6117




Lambda =


  1.0e+003 *


   -0.0000         0         0         0         0
         0   -0.0000         0         0         0
         0         0    0.0000         0         0
         0         0         0    0.3487         0
         0         0         0         0    1.5960




P1 =


    0.5774    0.6410   -0.5057
    0.5774    0.1174    0.8080
    0.5774   -0.7585   -0.3023




Lambda1 =


  1.0e+003 *


   -0.0000         0         0
         0    0.3487         0
         0         0    1.5960

%%***********************

我们发现AA'和A'A的特征值的确有部分是相同的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值