基于实时视频的人脸识别技术研究

2021-09-22 06:13程卫月
电子技术与软件工程 2021年15期
关键词:库中邻域直方图

程卫月

(黑龙江工商学院 黑龙江省哈尔滨市 150025)

1 引言

人脸识别被认为是认证身份信息最好的技术之一,在众多领域中均有应用,人脸的可变性和相似性[1,2]给研究人员造成了许多难题,同时人脸图像在复杂背景下,如光照等因素的干扰下,具有不易获取性[3]。针对上述问题,主要针对人脸识别对光照的鲁棒性实现了在实时视频中识别人脸图像,整个部分一共分为四部分,人脸检测,预处理,特征提取和分类识别。

2 人脸识别相关原理

2.1 AdaBoost算法

AdaBoost算法[4]是用来训练出区分人脸图像和非人脸图像的弱分类器,通过弱分类器的加权组合从而得到强分类器,该算法需要和Haar-like特征、积分图方法和级联分类器[5]结合在一起,其中Haar-like特征主要用于检测;积分图主要用来提高Haar-like特征值的计算速度;级联分类器用来将强分类器串联到一起,通过增加强分类器的个数来降低误识率,通过降低强分类器的阈值来提高检测率。

2.2 LBP算子

LBP算子[6]的基础模型被定义在3×3邻域内,位于邻域中心的像素与其周围临近的8个像素进行比较,如果周围的像素值小于邻域中心的像素值,则标记为0,否则标记为1,组成的最终结果用于表示邻域中心像素的LBP值。

LBP算子的基础模型,不仅固定了范围而且覆盖的区域比较小,所以在圆形LBP算子[7]中将正方形邻域改进为圆形邻域,其周围的采样点在图像中的坐标可以根据其具体位置计算出,但是得到的坐标未必是整数,所以使用双线性插值来得到该点的像素值。

2.3 最近邻分类器

最近邻分类器[8]的基本思想是,在给定的测试样本中,找出训练样本中与之LBP特征值最靠近一个训练样本,然后根据这个“邻居”的特征进行预测。使用卡方检验[9]来计算输入样本与人脸库图像直方图的最短距离。

3 基于LBP特征的人脸识别

3.1 人脸检测

在实时视频中每10ms抓取一帧图像,并利用MFC中的OnTime()函数来周期性的调用Haar检测器进行检测。其检测算法流程如下:

(1)灰度色彩转换;

(2)收缩图像:对获取到大小为640×480的帧图像进行缩小两倍操作;

(3)直方图均衡化:通过equalizeHist()函数来实现;

(4)检测单个人脸:通过调用cvHaarDetectObjects()函数来实现检测的过程,将帧图像中最大的人脸,保存在矩形数组中。

(5)检测人眼[10]:在保存人脸图像的矩形数组中进行检测,在检测人眼时,为提高检测效率,需将检测范围缩小至人脸图像的左上角和右上角。该方法提高了检测的准确率,但效率也随之降低,所以根据实际情况来选择是否进行人眼检测。

(6)标记出人脸区域:根据上一步得到的矩形数组,利用每一矩形的坐标来确认标记矩形的坐标。

(7)得到新图像,重复以上步骤。

3.2 预处理

应用几何变换、直方图均衡化、平滑和椭圆掩码来实现人脸图像的预处理的过程。

几何变换是为了将人脸对齐,根据两眼之间的角度、两眼之间的距离在人脸图像中的比例、人眼与人脸图像最上方的距离得到仿射矩阵,再利用仿射变换[11]公式得到几何变换后的人脸图像,其中仿射变换如公式(1)所示。

直方图均衡化是为了增强图像局部的对比,该过程是通过拉伸图像中像素的强度来实现的。为了避免左右脸的光照不均匀的情况,分别对左脸、右脸进行直方图均衡化在与整个脸部融合。

平滑是用来减少人脸图像中的像素噪声,为了减少人脸图像中像素噪声的影响,在人脸图像上使用双边滤波器来完成该操作。

椭圆掩码的过程是绘制一个椭圆区域,将该椭圆区域应用在人脸图像中,为之后的特征提取删除一些没有用的人脸区域。

3.3 特征提取

将人脸图像划分为8×8的子区域,对每个子区域提取LBP特征,首先根据采样点的个数和位置确定每个采样点的坐标,分别对每个采样点进行向上取整和向下取整,从而得到与采样点最近的四个坐标,再利用双线性插值来确定该采样点的像素值,具体过程如公式(2)所示。

遍历整个人脸图像,比较采样点像素值和邻域中心的像素值来确定邻域中心的LBP值,在遍历图像时,为了防止图像的溢出,对人脸图像右侧和下侧宽为1的区域不进行处理。

3.4 分类识别

样本训练:调用FaceRecognizer类的train(_in_src,_in_labels)函数进行训练,其中_in_src表示人脸库中经预处理后的人脸图像数组,_in_lables为_in_src对应的标签数组,相同标签的人脸图像表示是同一个人,该训练过程就是利用上述提取出人脸库中的人脸图像的特征,并保存在相应的LBP直方图中。

分类识别:人脸识别就是预测的过程,利用FaceRecognizer类的predict()函数进行预测,根据输入的图像返回人脸库中某一图像的标签号,表示这个标签号对应的人脸图像与输入的图像最为相似,如果返回值为-1表示并没有在人脸库中找到该人脸图像。该过程主要利用最近邻分类器计算出输入的图像直方图与人脸库中的每一个人脸图像直方图的距离,计算过程如公式(3)所示,最终输出距离最小的人脸图像标签号。

4 实验结果与分析

4.1 实验环境

开发环境选择OpenCV3.0和MFC两个环境实现的人脸识别,所有的功能都是在人脸库中实现的,人脸库的设计中,每一个文件夹内包含了一个人的多张人脸图像,并且同一个文件夹内人脸图像的标签号都是相同的。其中ORL人脸数据库,一共包含40个不同的人,每人的10张图像都是通过改变面部表情和拍摄角度获得的,并且所有的人脸图像维持在20%的尺度变化,选取每人的5张人脸图像用于训练,另外的5张人脸图像用于测试。对于笔者自己的数据库是通过在实时视频中拍照获取的,每个文件夹内包含了同一个人脸图像,大致在5张左右。

4.2 实验结果

人脸检测的过程是检测实时视频中最大的人脸区域,并用矩形标记出该人脸区域,具体结果如图1所示。

图1:人脸检测结果图

对人脸库中的所有人脸图像进行预处理,并将结果保存在预处理文件夹内。部分人脸图像经预处理之后的结果如图2所示。

图2:预处理结果图

对人脸库中的所有人脸图像进行特征提取操作,并将结果保存在特征提取文件夹内。部分人脸图像经过特征提取后的结果如图3所示。

图3:体征提取结果图

根据人脸库的训练结果或模型对实时视频中检测到的人脸图像进行识别,并输出人脸库中与之最为相似的人脸名字,人脸识别的结果如图4所示。

图4:人脸识别结果图

4.3 实验结果分析

为了验证本系统的性能,在多种环境下对其进行了测试。在整个过程中,保证实时视频中出现的人脸均来自本文的人脸库,其中绝大部分人脸都是正脸,并且脸部基本不存在遮挡物。人脸检测结果如表1所示,表示了不同检测器情况下的检测时间,最终检测结果可以看出haarcascade_frontalface_alt2.xml(本文采用的检测器)检测率最高、误检率最低并且检测时间最少。

表1:不同检测器的检测对比

人脸识别的实验共进行三次,每次进行识别的人脸是随机的,由于从人脸检测到人脸识别都是在实时视频的环境下实现的,所以在人脸角度稍有改变可能都使人脸识别的结果改变,所以规定在5秒内出现人脸识别结果出现次数最多的作为本次最终的人脸识别结果,该人脸识别的最终测试结果如表2所示。

虽然使用的训练样本比较少,但是表2的结果表明了它在一定程度上具有较高的识别率,只有在夜晚室外也就是光线较弱的条件下,表现出来的结果才稍差一些,虽然LBP算子在一定程度上解决了光照条件的问题,但是在光线很弱的情况下,人脸的纹理特征丢失比较严重,导致此时的识别率无法达到预期的效果。

根据表2的数据结果,可以得到本系统识别率为89.09%,平均识别时间为103.51毫秒,这一数据表明了本实时视频系统的人脸识别检测率和识别率都比较高,在生活中具有一定的实用性。

表2:人脸识别性能测试表

5 结语

针对人脸识别在光照条件下的鲁棒性问题进行研究,主要实现了基于AdaBoost算法的人脸检测, AdaBoost算法可以根据训练样本训练出若干个的弱分类器,并将这些弱分类器加权组合成更强的强分类器,最终的检测结果利用矩形标记出来。实现了基于LBP算子的特征提取,圆形LBP算子具有的最大优点是灰度不变性,通过比较邻域中心与周围像素的关系,避免了光照变化带来的灰度影响;实现了基于最近邻分类器的分类识别,在训练样本中找到和测试样本距离最近的样本特征来完成预测,最终的识别结果在检测到的人脸图像的右上方标记出来。

猜你喜欢
库中邻域直方图
符合差分隐私的流数据统计直方图发布
动物城堡
动物城堡
稀疏图平方图的染色数上界
用直方图控制画面影调
基于邻域竞赛的多目标优化算法
智能盘库在自动化立体库中的探索和应用
关于-型邻域空间
基于空间变换和直方图均衡的彩色图像增强方法
基于直方图平移和互补嵌入的可逆水印方案