基于PCA人脸识别算法的实现

主成分分析为一种统计学中特征提取方法,在实际中应用的非常广泛。PCA是通过提取原始数据的主元来减少数据的冗余,使数据在低维度的空间中被处理,同时它还能很好保持了原始数据的绝大部分信息,有效的解决了由于空间维数过高而导致的一系列问题。如下将详细介绍如何使用PCA算法进行人脸识别。

基于PCA人脸识别算法的实现的图1

图4.2 基于PCA的人脸识别算法实现原理图

在本环节中主要分为两个阶段,分别为:

1.读入系统人脸数据库,并将图像变换为相应的灰度图像。

2.同时将变换后的二维人脸灰度图像变换为一维人脸向量矩阵。

一个大小为M*N的二维人脸图像可以看成长度为MN的人脸图像列向量。为了将二维人脸图像变为以为列向量,我们采取的措施为:首先计算出人脸图像的大小,然后将人脸图像经行转置,最后按列依次取出取出所有灰度值形成大小为MN的一维向量,其实整个阶段的效果相当于将图像的灰度值按行取出依次连接成一维图像向量。

本环节完成后将会产生由一维图像向量组成的矩阵T。

本环节主要包括三个阶段,分别为:

1.对图像矩阵T进行规范化

首先计算出图像矩阵中一维列向量的平均值m,然后对图像矩阵的每一列都减去平均值形成规范化的图像矩阵A。

2. 计算特征脸

人脸训练图像的协方差矩阵为 C=AAT ,其中人脸训练样本为 A=[Φ1,...,ΦP]

,维度为 M×N×P ,则协方差矩阵C的维度为 ()(MN)2 。这就出现问题,C的维度过高,在实际中直接计算它的特征值和特征向量非常困难。因此,本文使用奇异值分解定理来解决这个问题。

奇异值分解定理:

假设B为 n×m 维秩为p的矩阵,则存在两个正交矩阵和一个对角矩阵:

正交矩阵为 U=[u1,u2,...,up]∈R(n2×n2) (4.19)

V=[v1,v2,...,vp]∈R(m×m) (4.20)

其中 UTU=I (4.21)

VTV=I (4.22)

对角矩阵为 ∧=diag[λ1,λ2,...,λp]∈R(m×m) λ1≥λ2...≥λp

则可以得到 B=U∧(1/2)VT ,而且 BBT 和 BTB 有共同的非零特征值, ui 和 vi 分别为 BBT 和 BTB 对应特征值的正交特征向量。

由上述定理可以得到 U=BV∧(−1/2) (4.23)

则可以由协方差矩阵 C=AAT ,构造出矩阵 L=ATA∈R(m×m) ,从而容易求出L的特征值和特征向量,再根据上述(4-23)式可以求得协方差C的特征值和特征向量。

实际上我们并不需要协方差所有的特征值和特征向量, m个(m<M,M为特征值的数目)个特征值足够用于人脸识别。所以,实际操作中,只取L的前m个最大特征值对应的特征向量用于计算特征脸。

在本环节,本文通过直接构造 L=ATA∈R(m×m) ,来计算出L的特征值,再挑选L特征值大于100的作为C的特征值,最后通过C的特征值计算出它的特征向量,从而形成特征脸。

3.人脸识别

人脸识别过程分为训练和测试两个阶段。在训练阶段,主要是提取数据库人脸图像的特征,并形成特征库。在测试阶段,主要是提取待识别图像的特征和计算提取的特征和特征库中特征之间的距离测度,并输出最小距离测度对应的人脸图像作为结果。

具体步骤如下:

1.训练阶段

将规范化的图像矩阵A中的每一列向量投影到特征子空间,形成特征库。

2.测试阶段

1假设测试人脸图像为Y,在人脸识别前,先对其进行标准化,即 Φ=Y−Ψ 。

2把标准化后的人脸图像向特征子空间进行投影得到向量 Ω=UTΦ 。

3本文使用最近领法分类器欧几里德距离[14,15]进行判决分类。测试图像与每个人脸图像间的距离为 εk=‖R−Rk‖(k=1,2,…,P) ,并将最小距离对应的训练图像作为测试图像的匹配图像。

基于PCA人脸识别算法的实现的图2

最后, 有相关需求欢迎通过公众号"320科技工作室"联系我们

默认 最新
当前暂无评论,小编等你评论哦!
点赞 7 评论 收藏
关注