玄 冉,姜明明,王忠祥,米世新,刘涵玉
(山东农业工程学院,山东 淄博 255000)
伴随着高新技术及传感器的普及和应用,生物识别已经逐渐被揭开神秘的面纱,作为生物识别的一项重要分支,人脸识别已经成为研究领域的热门话题。生物识别在安全保障等众多领域被广泛应用,具有不易伪造、方便快捷、防伪性能好等优点。本设计为基于人脸识别的门禁系统,可以将疑似人员设置为库内人员,当小区里的人需要外出时进行人脸采集与人脸定位,然后与库内人脸进行比对;当识别为库内人员的时候,发出疑似人员不可外出的警示,否则提示可以放开门禁给以通行。
人脸识别,是利用摄像机采集到的含有人体面部的图像[1],通过相关技术进行检测,主要识别人体面部特征信息加以分辨,最终实现人类个体分类识别的一项技术。
综上,可以大体将人脸识别的过程分为四个步骤,如图1所示。
图1 人脸识别流程图
1)图像采集。人体面部表情采集易受到环境因素的影响,不容易实现,人脸图像可以通过摄像头进行记录,许多著名实验室会通过严格控制图像采集的位置,规范地创建包括姿态、表情变化在内的人脸库,通过人脸库进行相应的研究。
2)人脸检测。主要用于面部识别的预处理,它能通过处理将面部的位置标出。人脸检测的目的是透过面部丰富的特征信息筛选出有用的特征,由于环境条件的干扰是随机的,必须将原始采集到的图像进行图像预处理。图像预处理的方法有中值滤波、灰度拉伸、归一化处理及锐化等[2]。
3)特征提取。针对筛选出的最有利分类的特征信息,进行适当降维,保留最有效的特征信息。
4)分类识别。将采集的面部特征信息整合成数据,再与数据库比对匹配,当相似度到达一定阈值,则将数据库匹配的结果输出。其本质就是根据特征相似关系确定人物信息。
PCA 是缩写,展开以后就是Principal Component Analysis[3]。利用统计学原理,可以按照一定的原则,找到它们之间的不同进行分类,简化计算步骤,提高计算机的运行速率。将图形进行信息处理主要是为了降维,也就是将三维立体的人体图像特征转换到二维当中。正是由于它的这个功能,这项技术也被广泛地运用在图像压缩的处理当中,其最主要的依据是KL变换。这样就可以达到合并数据、简化数据的效果。
在整个前期图像输入过程中,都是以灰度值来进行统计的,即使其变成0~255灰度范围内的像素点。当把所有的像素点进行分类统计以后,其会构成一个矩阵,输入到之前已经创建好的一个坐标空间中,然后经过KL变换,就可以很容易地找到需要的信息,这就为之后图像处理简便化奠定了基础。因为此时已经收集到的数据其实是三维的,然后经过统计学,保留最主要区别的特征进行降维就可实现想要的结果。在PCA中,主要利用这个构成的向量作为基底。
经过这项处理之后就能得到特征空间了,接下来的任务就是旋转使维数降低[4]。
这个部分具体包括下面讲述的几个环节:捕捉输入图像,创建模板库和特征空间,获得特征值及对应向量。以下是有关这三个部分的详细介绍。
1)第一部分。利用摄像机进行图像采集和捕捉。首先,将采集到的图像进行预处理得到属性信息,判断是否需要进行二值化,本文采用的算法是KL算法,KL算法在线性算法中能量集中效率最高,图像压缩后均方误差最低。此种变换方式最主要的限制条件就是背景要一致,完全可以构建一个简单的模板库。
2)第二部分。在上述步骤完成以后,多放几张同一个人的图片进去,这就构成了一个训练矩阵。因为格式是相同的,KL 变换之后就变成一维的,那么每个照片都能够统计为一个点,这样就使得整个空间更简化了。
3)第三部分。上述步骤完成后,继续进行下一步,将结果创建一个样本集,那么出现的协方差矩阵如下。
CA为 矩阵。A是在进行灰度二值化后与平均矩阵差值。Xi是平均人脸图像,M为被测人员数量。
在上述CA得到以后,还要找到人和对应的特征向量。因为本文用到的算法以KL 为基础,且最后得到的CA是n×n维的矩阵,因此可以直接求对应的特征值和特征向量。但直接计算的话,其计算是非常复杂的,下面会介绍一些相对比较简单的办法。
2.3.1 特征值分解
从这个式子就能够很容易得到它们的关系。那就是CA=AAT的特征向量是A⋅vi。
在这里需要特别提到的是:运用上述提及到的方法,最终得到的计算结果是相同的,这也间接证明了确实起到了简化计算的效果。
制作这个界面一般可以通过命令创建[6],也可以通过MATLAB提供的图形用户界面开发环境GUIDE中的图形用户界面开发工具的GUI创建方式制作,本文侧重于后者。
在进行编程的时候,必须要有一个整体的认识[7],每一部分做什么都要安排得清清楚楚,这样的话,在真正编写的时候才不至于忙乱。具体的整个系统的设计流程,如图2所示。
图2 人脸识别系统框架图
GUI界面的使用在编写程序的时候主要有两大块[8],分别是模板库的显示和被测图片的显示。
3.3.1 人脸库采集
在一开始进行模板库的创建时,一般使用的都是ORL人脸数据库,在创建的时候参照了一定的标准。如果这些库里面都没有适合的,就需要自己去拍照,自己去创建,但是需要对其进行预处理。
整个数据库由两部分组成,一部分是模板库,一部分则是被测人脸库。在被测库里面有10 个人的照片,每个人不同表情的照片各两张,照片格式大小完全一样。
3.3.2 特征提取仿真分析
特征值分布图,如图3所示。特征提取之前,最重要的是先要把模板库里面的图像导入到MATLAB 里面,然后进行变换,组成协方差矩阵。在这个里面,要把每一个点的特征值和特征向量计算出来,就构成了所谓的特征分布图。每个图像的特征值差别非常大,但是在这个过程当中必须将其对应到子空间,这样才能大大降低计算量,也可以节约时间,对后续过程中的优化也是一个非常有优势的举措。
图3 特征值分布图
3.3.3 库外判别分析
对疑似病例人员进行人脸采集、入库、训练,得到每个人的人脸特征值[9]。本设计为提取人脸特征值,特征值与样本库里面的人脸特征值进行一一对比,设置一个判断阈值。当属于阈值内,则判定为库内人员,即疑似人员;否则为非疑似病例,提示可以放行。
通过对实验结果的分析可以发现,本设计利用MATLAB 数字图像处理相关技术及PCA 算法进行人脸识别,在一定程度上能解决疫情期间人员管控的相关问题。MATLAB仿真结果表明:人脸识别的准确率可以达到80%,它可以有效解决人员流窜问题,有效地避免人力物力资源的浪费,本文所设计的系统对疫情防控是实用的。