APP下载

基于OpenCV的人脸检测

2019-11-28刘卫华吴丹

科技创新与应用 2019年31期
关键词:人脸检测

刘卫华 吴丹

摘  要:随着智能设备的不断发展,人脸检测技术应用于越来越多的领域,极大的丰富和方便了人们的生活,具有很大的商业价值和研究意义。文章研究了AdaBoost人脸检测算法的原理和性能,通过使用OpenCV和VS2012实现了图像及视频中人脸检测的目的,检测结果表明AdaBoost算法具有良好的实时检测性能和较强的准确性。

关键词:OpenCV;人脸图像预处理;AdaBoost算法;人脸检测

中图分类号:TP181         文献标志码:A         文章编号:2095-2945(2019)31-0018-02

Abstract: With the continuous development of intelligent devices, face detection technology is applied in more and more fields, thus greatly enriching and facilitating people's life, so it has great commercial value and research significance. The principle and performance of AdaBoost face detection algorithm are emphatically studied. The purpose of face detection in image and video is realized by using OpenCV and VS2012. The detection results show that AdaBoost algorithm has good real-time detection performance and accuracy.

Keywords: OpenCV; image preprocessing; AdaBoost algorithm; face detection

1 概述

随着科技的发展和人类社會的进步,计算机视觉及光电技术的发展也日新月异,人们的需求更加趋于智能化,例如智能P图软件的使用、刷脸支付的应用、刷脸进站等,促进了人脸检测技术产生和发展。人脸检测技术的应用领域非常广泛,利用其可以预测车站、景区的客流量;方便公安信息化管理;也可以结合其他技术实现人脸识别,应用于军事、安防等领域。在实践过程中,人脸检测技术会受到外在环境的复杂背景、人们不同的穿着打扮、肤色五官差异、表情光线变化等因素的干扰容易出现误差。为了尽可能减轻外界因素对人脸检测的影响,缩短检测时间并且实现精确检测,研究提高人脸检测的快速性和准确性是非常有意义的。

现实生活中获取到的图像通常受光照、拍摄背景、天气等因素的影响,图像质量并不高,为了满足后续操作的要求,需要对图像进行预处理。对于包含了很多噪声的图像,可以采用高斯滤波、中值滤波等方式处理图像,以降低噪声对图像的影响,提高图像质量;对于一些亮度过大或者光线过于昏暗的图像,可以采用直方图均衡化的方式调整图像的亮度;此外,通过边缘检测的方式将图像中大量不重要的信息去除,只保留图像中重要的内容,可以有效提高图像处理的速率;为了灵活对图像进行缩放,可以采用图像变换的方式处理图像。

2 AdaBoost人脸检测算法研究

haar-like特征用来表示人脸信息,并且使用“积分图”实现对人脸特征数目的快速统计,积分计算是用遍历的方式,该方式可以只用一次就准确快速的求出图像内所有区域的像素和;adaboost算法首先使用haar-like特征表示出人脸,但是此时得到的人脸特征值并不精确,然后通过增加阈值的方式设计出弱分类器,对特征值进行筛选,此时得到的人脸特征值还是比较粗糙,因此将弱分类器并联起来组成强分类器,经过强分类器筛选之后的特征值非常接近真实的人脸特征值,为了增加检测速度,以级联的形式将已获得的强分类器串联成最终的分类器[1]。

3 利用OpenCV实现人脸检测

在OpenCV系统中,已经存在的程序可以完成对haar-like特征分类器的训练,训练完成之后形成的级联分类器会储存在xml文件中,待检图像读入Open-CV后,只要通过训练好的级联分类器的筛选,就可以检测到人脸。检测过程中调用了多种函数,detectAndDraw( )函数可以索引用于使用不同颜色绘制找到的人脸;因为分类器基于灰度图像工作,因此使用cvtColor()函数将彩色图像转换成灰度图,减少运算量,然后使用resize( )函数调整图像大小,将图像缩小之后能够加快检测速度,检测结束后再将图像比例恢复至原图大小;之后通过equalizeHist( )实现直方图均衡化,因为haar-like特征是通过矩形区域做差得到的,这些区域之间很容易受到光照影响出现偏差,通过直方图均衡化可以很好的解决这个问题,所以对图像进行直方图均衡化处理非常重要;detectMultiScale( )用来扫描输入图像中所有尺度上的人脸,被成功定位的目标将以边界矩形的形式返回到向量目标中,使用rectangle( )将人脸用不同颜色的椭圆绘制出来。

4 人脸检测结果及分析

4.1 单目标人脸检测结果

在对单目标人脸图像进行检测时,选择了一副人脸较清晰的灰度图,检测结果表明,OpenCV系统对于只有一个人脸目标并且人脸清晰的图片具有良好的检测效果,能够准确无误的检测到人脸目标。单目标人脸校测结果如图1所示:

4.2 多目标人脸检测结果

在对多目标人脸图像进行检测时,选择了一副亮度好并且人脸较为明显的图像,检测结果表明,对于光照充足、人脸清晰的多目标图像,OpenCV系统能够准确的检测到人脸。多目标人脸检测结果如图2所示:

4.3 视频中人脸检测结果

在对视频中的人脸目标进行检测时,通过打开摄像头获取视频信息,选择了光线较暗的环境,并且通过面部转动、面部部分遮挡的做法提高检测难度。检测结果表明,对于视频序列,在弱光環境、面部轻微转动以及部分遮挡的情况下,OpenCV系统可以准确检测到人脸目标。

5 结束语

本文阐述了AdaBoost算法构建级联分类器的原理,并通过OpenCV系统实现了对图像和视频中人脸的检测,充分证明了AdaBoost算法具有良好的实时检测性能和较强的准确性。然而,在真实的生活场景中,需要检测的图像或视频中的人脸往往存在光线过于昏暗模糊不清、面部旋转角度过大裸露部分较少、背景颜色与肤色过于相近等问题,导致人脸目标的漏检和误检问题。例如在车站、广场等人流比较密集的地方,获取到的图像或视频中的人脸信息会因为距离太远模糊不清,或者因为人群密集部分人脸被遮挡,在这种情况下人脸很难准确被检测,那么就会导致对人流量的估计并不准确。

因此,人脸检测算法还有很大的改进空间,需要尽可能减少外部环境因素对人脸检测的干扰,并且提高检测程序的运行效率,争取对面部信息较少、光线条件差的图像及视频中的人脸也能够实现快速、准确的检测。

参考文献:

[1]陈博华,戴少鹏.基于OpenCV的图像处理方法[J].电子技术与软件工程,2015(19):23-42.

[2]李娥.人脸检测方法综述[J].信息技术与信息化,2018(04):10-13.

[3]宋宇.基于支持向量机的人脸检测[D].四川大学,2005:17-24.

[4]聂然.基于OpenCV的人脸检测与跟踪算法实现[D].2017:8-15.

[5]梁英丽.基于视频监控的人脸识别的研究[D].华北电力大学,2011.

[6]陈海涛,潘静.基于Adaboost人脸检测技术浅析[J].电子世界,2018,No.546(12):93-94.

[7]孙志.基于OpenCV的人脸识别算法实验平台研究与实现[D].吉林大学,2014.

[8]王淑玲.基于ZYNQ实现实时人脸检测技术的研究[D].南京理工大学,2014.

[9]石浩然.基于嵌入式系统人脸识别的分析与研究[D].内蒙古大学,2015.

猜你喜欢

人脸检测
JNI技术在基于OpenCV的人脸与微笑检测中的应用
基于人脸特征定位的SNS网站应用组件研究与设计
基于Android平台的人脸识别系统设计与实现
基于Matlab的人脸检测实验设计
基于JSeg和显著性检测的服装图像分割方法