matlab 实现基于 PCA 的人脸识别算法
实验者:guodw3
一、问题描述
在一个 yale 人脸库中,有 15 个人,每人有 11 幅图像。要求选定每一个人的
若干幅图像组成样本库,由样本库得到特征库。再任取 yale 图像库的一张图片,
识别它的身份。
对于一幅图像可以看作一个由像素值组成的矩阵,也可以扩展开,看成一个
矢量。如一幅N*N象素的图像可以视为长度为N
2
的矢量,这样就认为这幅图像是
位于N
2
维空间中的一个点,这种图像的矢量表示就是原始的图像空间,但是这个
空间仅是可以表示或者检测图像的许多个空间中的一个。不管子空间的具体形式
如何,这种方法用于图像识别的基本思想都是一样的,首先选择一个合适的子空
间,图像将被投影到这个子空间上,然后利用对图像的这种投影间的某种度量来
确定图像间的相似度,最常见的就是各种距离度量。因此,本次采用PCA算法确
定一个子空间,最后使用最小距离法进行识别,并用matlab实现。
二、PCA 原理和人脸识别方法
1)K-L 变换
K-L 变换以原始数据的协方差矩阵的归一化正交特征矢量构成的正交矩阵作
为变换矩阵,对原始数据进行正交变换,在变换域上实现数据压缩。它具有去相
关性、能量集中等特性,属于均方误差测度下,失真最小的一种变换,是最能去
除原始数据之间相关性的一种变换。
PCA 则是选取协方差矩阵前 k 个最大的特征值的特征向量构成 K-L 变换矩阵。
2)主成分的数目的选取
保留多少个主成分取决于保留部分的累积方差在方差总和中所占百分比(即
累计贡献率),它标志着前几个主成分概括信息之多寡。实践中,粗略规定一个
百分比便可决定保留几个主成分;如果多留一个主成分,累积方差增加无几,便
不再多留。
3)人脸空间建立
假设一幅人脸图像包含 N 个像素点,它可以用一个 N 维向量 Γ 表示。这样,
训练样本库就可以用 Γi(i=1,...,M)表示。协方差矩阵 C 的正交特征向量
就是组成人脸空间的基向量,即特征脸。
将特征值由大到小排列:λ
1
≥λ
2
≥...≥λ
r
,其对应的特征向量为 μ
k
。这样
每一幅人脸图像都可以投影到由 u
1
,u
2
,...,u
r
张成的子空间中。因此,每一幅人
脸图像对应于子空间中的一点。同样,子空间的任意一点也对应于一幅图像。