算法流程:
本系统运用PCA算法来实现人脸特征提取,然后通过计算欧式距离来判别待识别测试人脸,本个系统框架图如下:
图: 人脸识别系统框架图
整个系统的流程是这样的,首先通过图像采集建立人脸库,这个人脸库里的人脸图像必须是格式及像素统一的,然后针对库里的人脸进行人脸训练,利用PCA进行人脸特征提取,获取特征矩阵向量组,将测试人脸投缘到特征子空间中,运用欧氏距离,在人脸库里查找相应的人脸图像,并输出。
下载:MATLAB平台人脸识别[合影识别,分割多个人脸,GUI界面].zip_matlab人脸识别-专业指导文档类资源-CSDN下载
算法介绍
基于PCA算法的人脸特征提取
2.1PCA的基本原理
PCA中文全称主成分分析 法(Principal Component Analysis)[6]。掌握事物间主要区别的,运用统计学的分析方法,它可以是复杂的问题得到简化,找到物质之间的本质区别,用事物的主要影响因素来解决问题。计算主成分的主要目的是用来降维,也就把将高维空间数据降到低维空间中去。这种线性变化经常被用到数据的压缩和分析中。它就是以K-L变换为基础,运用它的正交变换可以降低数据的运算量。
在这个系统中,库内人脸读入后被变成为灰度数值图像,把这些数值矩阵按行或者按列排练构成一个原始图像空间,运用K-L变换有效的提取人脸图像的特征,这是为下面的小空间模式匹配奠定基础,这个原始图像空间是维数较高的矩阵,通过K-L变换后获得一组新的正交基。分析比较人脸训练样本中的一些统计特征,保留主要的特征向量,减少向量矩阵的维数,获得了维数较小的人脸空间。在参与训练的人脸样本中,一种是不一样人脸组成的总体散分布矩阵,另一种是同个人脸的不同表情的平均图片或者说是类间散布矩阵。第一种的运用对人脸图像的背景光线的要求很高,后者可以很好的避免光线带来的的干扰,且有减少计算量的作用。选择的正交基的原则是取大去小,所谓的大、小就是特征值的的大小,特征值的数值反应一个人脸的基本特征轮廓,在主要成分分析中就是以它主要能量特征值对应的向量来做基底,用这个方法可以很好的进行人脸重构,重构的人脸必须是参与算法的人脸图像,否则实现重建的效果较差。
通过降维后,就可以获得特征空间,将待识别人脸图像进行旋转变换,可以有效的降低维数[9]。也就是用特征空间的向量的线性代数运算来表示。这样就可以把人脸识别这个过程转换成m维空间坐标系数分类问题,至于如何分类可以采用简单的距离进行判断。
2.2 基于PCA的特征提取
PCA人脸识别特征提取有几个过程:人脸图像获取和处理;构造人脸库并且训练形成特征子空间;提取特征值和特征向量。下面对整个PCA提取特征过程中的步骤做一个详细的描述。
- 人脸图像获取和处理,构造人脸库
通过拍照的方式,在背景设定的环境下,拍取人脸图像,然后对人脸样本采取前期的处理,其中包括人脸图像格式的变换,是否需要灰度处理等等。这些都要根据算法需求来对图像进行前期的预处理。PCA算法运用的统计学原理中的K-L变换的原理,对图像背景要求一致,而对光线的要求也一般,前期只要保证图像像素和格式一致就可以。最后保存图像,建立人脸库。
2.训练人脸库
人脸图像获取后,要放进人脸库,把人脸库统一配置后,选取每个人若干图片参与训练,变成训练矩阵。假定格式统一的人脸图像的像素为n*m,采取变换转化为一维矩阵,然后按行相连构成N=m*n维数的的矢量,每个人脸图像都可以视为N维空间中的一点,运用K-L变换可以将这个图像转换到底维的空间当中去,这样描述更加具体。
3.计算人脸图像的生成矩阵
采用训练后的人脸图像构成样本集,产生协方差矩阵可以用以下几种方法求出来(三种等价):
协方差矩阵 是一个大小为N*N的合成矩阵(其中N表示 的维数),A 表示每个人脸灰度图像减去平均人脸图像后按列构成的的矩阵, 是平均人脸图像,M表示人脸库内参与训练的人脸数。
鉴于公式的复杂性,一般选择第二个公式来计算人脸特征值和特征向量。
4.提取特征值和特征向量
在我们获得协方差矩阵后,需要求出其特征值和特征向量,由于PCA的理论基础是K-L变换,而我们所求的K-L变换的新坐标系是由N*N维的矩阵 的特征值和特征量组成,直接求 的这两个参数难度高计算量非常大,下面介绍两种方法:
(1)奇异值分解原理
前几个值比较大他们包涵了矩阵的A的大部分信息,U的列向量(左奇异向量)是 的特征向量,V的列向量(右奇异向量)是 的特征向量[11]。
(2)小矩阵计算大矩阵特征向量原理
在求高维矩阵特征向量时,可以用统计学的方法,将它变换为求转化为求低维矩阵的特征向量:
注意:以上两种求解协方差矩阵的特征值和特征向量的方法,结果是一致的[12]。
2.3 相似性测度
人脸样本在用PCA算法获取人脸特征后,转换为特征空间内的一点。所以样本之间的区分性可以运用角度或者距离的计算来比较实现。常见的匹配的算法有夹角余弦、街区距离、和欧式距离等等,下面具体的描述下欧式距离这个测度。
欧式距离的定义:欧式距离(Eudidean distance)是一个普遍使用的距离定义,它说明某种物质在多维空间的真实距离。欧式距离看作是衡量物质的相似程度的依据,两个点的距离差越小就越一样。
假如x,y是两幅维数一样的图像,它们的维数都是是M*N,则它在一个设定空间的表示如下:
式中 为图像x,y的第(k,1)个像素点。则图像间的欧式距离可表示如下为:
根据上述式子,一副M*N的图像可以看作M*N维欧式空间中的一个点,而图像的坐标用图像的一个像素的灰度值表示。
三、 程序仿真及调试结果
3.1人脸库的生成
人脸库的建立可以运用目前现有的ORL人脸数据库、JAZZ人脸数据库等,这些人脸库内的人脸都是按某个标准建立,所以在设计人脸之前,必须针对需要,来选择。或者你也可以自己构造人脸数据库,库内人脸可以采用拍照等方式来获取。不过要进行一些前期处理,以满足系统要求。本系统是收集互联网上的图像获取图像,然后实现格式以及大小一致
图: 部分人脸图像截图
上图就是部分人脸库内人脸图像截图。这个人脸库分为测试人脸库和训练人类库,在训练人脸库内的所有人脸数目有二十张,十个人的,一个人有两张图像,不同的表情。在测试人脸库内有10张人脸,这10张人脸是在训练库内挑选的10个人脸表情。每张人脸图像的大小为180*200,格式为JPG。因为本系统针对的图像格式要求必须为JPG格式的图像。我把这20张图片的命名,用数字1-20来代替,以便后面在识别阶段,可以读出对应的数字,类似人的名字
3.2特征提取和人脸重建的仿真分析
(1) 根据PCA算法的获取人脸库特征值分布图
特征提取首先把库内待训练的人脸图像,读入matlab转换成灰度图像,进而将人脸图像按行排列,构成协方差矩阵,这个协方差矩阵里面,每一行都代表一个人脸,所以求这个协方差矩阵的特征值和特征向量,也就是求每个人脸的特征,每个特征值对应的特征向量,构成了特征向量子空间,下图中曲线的就是库内所有人脸图像进行特征提取获得特征值后,按特征值大小排列,由图可以看出,每张人脸图像对应特征值大小的区别性很大,只要提取数值较高的特征值对应的特征向量来组成特征子空间即可,大大的减少了特征矩阵的向量的数量,这样可以降低计算量,提高特征提取的运算速率。也为后面的人脸识别系统运行提高速度。
图: 特征值分布图
3.3 模板匹配及识别的仿真分析
对比图4-6和图4-7这两幅图像,可以看出本系统可以很好的匹配库内人脸,这匹配过程是先测试人脸投影到特征子空间中,这 样便可以 让这张图像成为多维空间中的一点,通过计算其与每个人脸图像的欧式距离,然后对比找出最小欧式距离的人脸,这样就可以匹配到相应的人脸图像。
- GUI界面仿真
库外人脸判别