本文主要研究内容
本文对于目前教室考勤的需求,在MATLAB软件上,运用AdaBoots人脸检测、PCA人脸识别算法仿真设计学生教室考勤系统,以便解决在考勤过程中造成的时间浪费,效率低下,影响课堂秩序与进度的一系列问题。该设计的主要内容如下图1-1:
图1-1 系统流程图
(1)人脸定位检测
检测所获得的图像中是否有人脸的存在,若有则将人脸与其背景做出区分,并用矩形在图像中圈出人脸所在的大概位置信息。
(2)人脸图像预处理
对上一步检测出的人脸图像进行预处理,如灰度变换、尺寸归一化等。
(3)人脸特征提取
对每个人不同表情姿态的人脸特征进行提取,存入到函数中,以便后续调用。
(4)人脸特征匹配
识别预处理后的人脸图像,将其特征与上步操作提取的特征进行配对,若相似度高,则证明此学生身份,并且输出该学生信息。
一、基于Viola-Jones算法的人脸检测
3.1 引言
人脸识别功能的首要步骤是对人脸进行检测,确定输入的图像中是否存在人的面貌特征,若存在便用矩形框标注并返回其位置大小。检测人脸的方法包含两大类,一类是基于知识的方法,将图像进行分割,根据人脸的五官特征及器官之间的位置关系来判断是否为人脸;另一类是基于统计的方法,把人的面貌看作整体,从大量人脸图像样本构造的人脸模式空间中找出相似度,来判断是否为人脸。详细方法如下图3-1所示。
图3-1 人脸检测方法
3.2 算法原理
Viola-Jones算法是由Paul Viola和Michael Jones两位合作提出的一种物体检测算法,并于2001年以《Rapid Object Detection using a Boosted Cascade of Simple Features》的名称发表在International Journal of Computer Vision上,这种算法原理简单,耗费时间少,因此受到了广大学者的追捧。该算法的主要核心思想为四个方面:通过Haar-like特征描述人脸的共有属性;通过积分图快速获取特征;使用Adaboost分类器进行训练;使用
cascade分类器快速将非人脸窗口排除。
Haar-like特征最早由Papageorgiou C.等提出(《A general framework for object detection》),Rainer Lienhart 和Jochen Maydt在V-J算法提出之后又通过对角特征对其进行了延申(《An extended set of Haar-like features for rapid object detection》)。Haar特征是计算机视觉领域中一种常用的特征描述算子,本文用来描述人脸的共有属性,可以理解为只有黑白两种矩形的卷积模板,比如鼻子一般属于脸部的高光区域,会比周围的脸颊要亮很多,其模板的Haar特征值便为鼻子部分的像素脸颊部分的像素之和。
Adaboost分类器是一种迭代的算法,根据同一个训练集训练出不同的分类器,然后将其中类似于分类能力不是特别强,正确概率略低的弱分类器集合起来,构成强分类器。
cascade分类器就是将多个强分类器进行级联组成一个级联分类系统,在此系统中,输入的图像依次通过这几个强分类器,前期通过比较简单,可筛选掉比较明显的非人脸图像,后期便逐渐复杂,因为只有经过前期强分类器筛选出的图像才能进入后期检测,当图像通过整个系统的强分类器时,证明此图像中包含人脸。
二、人脸图像预处理
4.1 引言
在实际环境中,图像采集会受到不同因素的影响,如太阳光线、灯光照射的强度,人脸与摄像头之间的距离长短、角度大小,以及不同硬件设备的物理配置等,而这些因素或多或少都会对人脸识别的结果造成干扰,因此需要对采集的图像数据进行预先处理,改善质量,使其达到统一的标准,以便于系统的识别。
4.2 人脸图像的灰度变换
一般采集到的人脸图像一般都是彩色图像,因彩色图像占用内存空间较大,不方便运用图像处理的算法进行操作,所以需要将彩色图像转化成灰度图像,从而提高算法的运算速度。彩色图像一般用RGB三基色来表示,由红(R)、蓝(B)、绿(G)这三种颜色按照不同的比例组合在 一起,色彩随机,公式如下:Y=r[R]+g[G]+b[B] (4-1)
当三基色的r、g、b都为0时,Y表示黑色光,当r、g、b都为最大值255时,Y表示白色光,而灰度则表示为黑色光到白色光之间不同级别的深度,灰度图像没有色彩信息,它的每个像素点只保留一个数值,只反映图像亮度,因此灰度划分的越细致,重现的原灰度图越准确,经过灰度变换后的人脸图像在保留有了效特征信息的同时,也去除了冗余的彩色信息,提高了识别的准确度。如下图所示为彩色图像灰度变换的结果。
图4-1 人脸图像灰度变换图
4.3 人脸图像的归一化
由于人脸图像在获取的过程中会有拍摄角度不同、镜头与人脸之间的距离不同等问题,导致人脸图像的大小、倾斜角度等情况的出现,因此我们要把图像的大小、偏移角度等进行统一,采用图像尺寸归一化的方法,即将图像做几何校正。对于拍摄角度不同的图像归一化,要使图像人脸的眼睛在水平线上,对图像进行适当旋转,把多余地方裁剪掉。对于人脸大小不同的图像需将图像按长宽比例缩放即可。归一化后的图像如下图所示。
图4-2 人脸图像归一化
三、基于MATLAB的教室人脸考勤系统的设计与仿真
6.1 界面总体设计
在MATLAB中搭建GUI界面包括:控件添加、属性设置、回调函数设置,本设计通过鼠标点击按钮来实现相应操作,该设计的GUI界面如图6-1所示:
图6-1 总体设计
6.2 系统框架设计
本设计主要有六部分组成:读入人脸图像、人脸检测、图像预处理、人脸识别、输出识别信息、考勤统计,其设计框架如下图6-2所示:
图6-2 设计框架
6.3 结果展示
我们通过设定一个班级条件来对该系统运行结果进行展示。设定某班级共有10名同学,他们的个人信息分别为:17040441001李沁(女),17040441002迪丽热巴(女)、17040441003刘亦菲(女)、17040441004艾玛沃特森(女)、17040441005王俊凯(男)、17040441006杨幂(女)、17040441007王凯(男)、17040441008邓伦(男)17040441009肖战(男),17040441010杨颖(女)。
首先,需要分别建立他们的人脸库,后续运用PCA算法从人脸库中提取特征值信息,进行个人信息的匹配。为方便特征信息的提取,需将图片的大小格式进行统一,全部更改为92*112的分辨率。如下图所示为学号为17040441006杨幂(女)的人脸库,其他同学同上操作,在此不一一列举。
图6-3 人脸库
然后我们开始对教室考勤进行仿真,现假设,17040441001李沁(女)、17040441002迪丽热巴(女)、17040441003刘亦菲(女)、17040441004艾玛沃特森(女)、17040441005王俊凯(男),17040441006杨幂(女)这六名同学进行了打卡,而剩余四名同学因某种原因没有打卡,现以17040441006杨幂同学为例,操作步骤及结果显示如下:
(1)初始化
点击初始化按钮,每次重新启动对程序进行初始化操作。如下图所示。
图6-4 数据初始化
(2)载入图像
点击载入图像按钮,将要识别的人脸显示在axes1控件中,如下图所示。
图6-5 载入图像
(3)人脸检测
点击人脸定位按钮,通过V-J算法进行对载入图像的人脸判断及定位,标记并显示到axes2控件中。如下图所示。
图6-6 人脸定位
(4)人脸识别
点击人脸识别按钮,运用基于PCA的人脸识别算法将人脸库特征提取并进行匹配,并在状态显示去中显示出该同学的信息。如下图所示。
图6-7 人脸识别结果显示
(5)打卡统计
如上操作,当学号为17040441001、17040441002、17040441003、17040441004、17040441005、17040441006的六名同学都打完卡后,点击打卡统计按钮,显示本次课程的打卡结果,如下图所示。
图6-8 打卡统计结果
(6)出勤率统计
如若该课程每周上5节课,而学号为17040441001、17040441002、17040441003、17040441004、17040441005、17040441006的同学分别打卡了1次、2次、3次、4次、0次、5次,点击出勤率统计那么统计他们的周出勤率结果如下图所示。
图6-9 周出勤率统计结果
五、结论
此次毕业设计以高校教室考勤现状为研究点,为解决传统考勤方式所引起的耗时长、效率低等问题,在MATLAB平台上,设计出了一个教室人脸考勤仿真系统,该系统界面功能比较完整,识别准确率较高,较好的解决了传统考勤所带来的弊端问题。本系统应用的主要技术及步骤有,先建立好要识别人脸的人脸库,然后对测试的图像进行图像灰度变换、归一化操作,使得图像容易识别,接着运用AdaBoots检测算法检测出人脸,运用PCA识别算法、欧氏距离对图像进行识别,最后得出识别结果及打卡时间,并统计考勤结果。
在写论文的过程中,通过不断查阅资料,搜索相关知识,使得我对Matlab这款强大的软件及论文中涉及到的相关算法的原理及公式有了更深刻的了解。通过不断努力,此次设计的功能基本得到了实现,但美中不足的是,本设计只适用于小班考勤,人数太多系统容易崩,造成识别结果不准确,未能把MATLAB软件和数据库软件连接起来,以储存多数学生的考勤情况,也未能实现考勤数据以EXCEL形式保存的功能,因此还需要进一步的研究与开发。