基于OpenCV的人脸识别的算法研究与实现

2018-01-01 00:00:00肖阳
现代信息科技 2018年5期

摘 要:在科学技术高度发展的背景下,人脸识别技术已经广泛应用在各个领域之中,OpenCV是应用人脸识别的关键算法。基于此,本文将对基于OpenCV的人脸识别技术算法进行详细阐述,并以检测人脸、图像预处理、识别特征、特定人脸识别为切入点,深入探究基于OpenCV的人脸识别设计实现的方式,旨在充分发挥OpenCV的作用,扩大人脸识别技术的应用范围。

关键词:OpenCV;人脸识别;图像处理

中图分类号:TP391.41文献标识码:A文章编号:2096-4706(2018)05-0023-02

Research and Implementation of Face Recognition Algorithm Based on OpenCV

XIAO Yang

(School of Computer Science,Hubei University of Technology,Wuhan 430068,China)

Abstract:In the background of the high development of science and technology,face recognition technology has been widely used in various fields,and OpenCV is the key algorithm to apply face recognition. Based on this,this paper will elaborate the face recognition technology algorithm based on OpenCV,and explore the way of face recognition design based on OpenCV by detecting face,image preprocessing,recognition features and specific face recognition as the breakthrough point. It aims to give full play to the role of OpenCV and expand the application scope of the of face recognition technology.

Keywords:OpenCV;face recognition;image processing

0 引 言

OpenCV实际是一个来源图像处理算法库,其基础为C/C++编程,优点主要体现在独立于操作系统、跨平台、图像与硬件管理等方面。无论将OpenCV应用在商业领域还是非商业领域都是免费的,并且使用便捷、速度快,具有较强的扩展性,包括高层和底层的开发包等。以OpenCV为基础,将图像预处理技术应用其中,从而形成基于OpenCV的人脸识别系统。

1 基于OpenCV的人脸识别的算法研究

基于OpenCV的人脸识别的算法主要包括以下几种。

(1)高斯平滑技术。由于多种外界因素的存在,在获得图片、视频之后,常常会受到噪音的影响,这样的现象会导致图像在进行预处理的时发生数据被损坏、图像细节受到损坏等问题,而这会影响图像的整体质量。同时,在后期提取、识别以及检测图像的过程中,都会受到一定的干扰,所以必须去除采集图像过程中的噪音。在应用高斯平滑技术时,将其与自适应滤波法、中值滤波法等方式相比,无论是频率效果,还是空间域等,其效果都更加明显,同时在增强低频信息的同时,还能够将图像的轮廓边缘保留下来。

(2)对比度增强技术。应用对比度增强技术能够将图像中不同的亮点进行分层,在测量的过程中还能够统计各个点的像素,再将所得出的像素数据进行比较。通过这样的方式,能进一步扩大各个点与周围像素之间的差异,从而增强对比度。在这一过程中,可以选择局部标准差、局部均值等方式进行比较与强化,从而保证对比的效果[1]。

(3)Haar特征算法。实际上,Haar特征算法与广义Hough变换特征、IFT/SURF均以灰度图为基础。但是,Haar特征算法更适合应用于人脸识别,广义Hough更适合应用于人体识别,而IFT/SURF更加复杂,所以Haar在人脸识别算法中应用的更加广泛。

2 基于OpenCV的人脸识别的设计实现

2.1 检测人脸

人脸识别系统,就是通过摄像头对人脸的轮廓和特征进行识别,其基础技术为轮廓对称性检测方法,它可以在较为复杂的环境中获得关于人脸的信息,最终筛选出更完整的人脸图像,并将其转化为Mat数据类型。具体而言,系统基于摄像头,在动态的图像中获取一张静态的照片,同时锁定具体的位置;然后采用逐级处理技术对图片进行处理,同时以Haar-like为基础提取脸部信息;最后,将提取的脸部信息与数据库的信息进行对比,使用OpenCV归一化平方差的匹配,完成人脸识别。为了减少外界因素的影响,需要对图像进行预处理,并结合上文的方式对人脸图像进行识别和检测。

2.2 图像预处理

图像预处理的环节主要包含四个模块内容。

(1)高斯平滑处理。如上文所述,在采集人脸图像的过程中,常常会受到不同因素的影响,即不规则的噪音,所以需要使用高斯平滑技术进行处理。其二维高斯函数的公式为:G(x,y)=[(1/2πσ)e]-(x2+y2)/2πσ。在公式中,x、y为图像像素模板的坐标,σ为平滑度参数。数值越大说明平滑度越好。

(2)灰度变换。顾名思义,灰度变化就是将彩色的图像转化为灰色,降低识别的难度,即将图像中的RGB参数均调到灰度值,并使用加权平均法的方式完成转换。其公式为:Gray=0.299*red+0.587*green+0.114*blue。

(3)对比度增强。对高斯平滑技术和灰度变换处理的图像再次进行单独处理,即扩大各个像素点之间的差异,使其灰度差异更加明显,其标准差的计算公式为:

局部方差的公式为:

(4)二值化。二值化是针对灰度值而言的,就是使用255或者0表示人脸图像中像素点的灰度值,使图像仅有白色和黑色,从而以最快、最简单的方式对灰度特征进行处理。本文对二值化进行处理采用的方式为:将图像的灰度依据相关的规律切割成若干个模块,每一个模块的阈值设定为T,对其进行赋值,即255或者0,进而完成二值化。剩余的模块同样采用这样的方式进行二值化,每一个阈值T的计算公式为:T=a*E+b*P+c*Q,其中a、b、c均属于自由参数,E表示平均值,P表示平方差,Q表示均方根值[2]。

2.3 识别特征

第一,Haar-like特征方式。目前,人脸检测的方式包括统计、知识,Haar-like属于前者。Haar包括对角线特征、中心特征、线性特征、边缘特征四部分,作为判定的基本元素,其特征图模块由白色和黑色构成,例如:某模板的特征值为F,其数值是由白色矩形像素与黑色矩形像素之差而获得的。在识别人脸特征的过程中,系统会将图片划分为若干个小窗口,计算机根据各个区域所对应的特征,使用分类器对特征进行详细地筛选,从而做出更加准确的判断。在分析识别的过程中,系统可以根据窗口设置的类型和矩形的位置与大小,从对应的图像中获取有价值的信息集合。例如:在一个尺寸为24×24像素的窗口中,就具有十万以上的矩形特征[3]。

第二,积分图的方式。积分图只需要对图像进行一次识别,就能够计算出所在区域的像素之和,这样的方式能够更快速地获取图像信息,提高工作的效率与质量。实际上,积分图的原理为:(x,y)位置所处的I(x,y),正是原图像上方所有像素之和,其公式为:

具体而言,构建积分图算法的过程为:(1)使用s(x,y)表示行为方向的和,初始为0=(x,-1)s;(2)使用I(x,y)表示积分图像,初始化结果为0=(-1,y)I;(3)对图像进行扫描,并使用公式:s(x,y)=s(x,y-1)+f(x,y)、I(x,y)=I(x-1,y)+s(x,y),对每一个像素点的行方向进行累加,并得出最终的数值;(4)对图像进行遍历,当结果与其右下角像素相等时,便可完成积分图的工作。此时,需要对图像中任何矩阵P区域对应的四个点进行确定,其公式为:Psum=I(α)+I(β)-[I(γ)+I(δ)]。

第三,AdaBoost算法。实际上是基于Boosting算法而生成的,属于强学习的算法之一,在对人脸特征进行识别时,需要对Haar特征的分类进行反复训练,从而在经过多次迭代之后,形成一个级联体系的分类器,对人脸图像进行多层判断,从而完成识别。

2.4 特定人脸识别

为识别特定人脸,需以OpenCV中的模板匹配为基础,利用归一化平方差算法,计算待识别人脸与模板人物面部特征的匹配度。算法公式如下:

R(x,y)=[Σx’,y’T(x’,y’)-I(x+x’,y+y’)2]/[Σx’,y’T(x’,y’)2·Σx’,y’I(x+x’,y+y’)2]

上述公式中,T代表模板人脸,I代表待识别人脸,R则代表模板与待识别人脸的匹配情况。将T与I均输入计算机后,计算机可随即运行上述算法,最终得到R(x,y)值。通过对R(x,y)值的观察,即可得到特定人脸的最终识别结果。

为评估以OpenCV为基础的人脸识别算法的应用效果,本课题采用实验的方式,选取人物A作为样本,观察了计算机的人脸识别结果。测试流程及效果如下:第一,在计算机界面点击“开启视频”键,初始化摄像头,使其开始识别人脸;第二,人脸检测3s后,系统提示人脸识别未成果。分析发现,导致该问题发生的原因,可能与人脸模板中无与人物A特征值相关的数据有关;第三,点击“添加”键,将人物A的人脸特征值输入系统中,绘制并生成模板;第四,重新返回主界面,开启摄像头,2s后系统提示,人脸识别成功。此时,该人物的姓名等相关信息均已呈现在计算机界面,证实了OpenCV的应用价值。

3 结 论

综上所述,基于OpenCV的人脸识别算法有多种形式,均发挥着自身的优势,并推动技术的发展。以此为基础,应用基于OpenCV的人脸识别能够对人脸进行准确、快速的检测,对检测的图像进行预处理,并且可以识别脸部的特征,实现了人脸识别的价值,获得了优异的效果,并有效扩大了该项技术的应用范围,为人们的生产生活带来了更多的便利。所以,为了充分实现基于OpenCV的人脸识别技术,可以将文中的方式应用在实际中。

参考文献:

[1] 张若伟,石琳.基于OpenCV的人工神经网络人脸面部表情识别研究 [J].电脑知识与技术,2017(23):151-153.

[2] 张俊,李鑫,赵莎莎,等.基于嵌入式平台和OPENCV的人脸识别系统设计 [J].电脑知识与技术,2016(4):195-197.

[3] 陈凯文,文进宇,黄涛,等.基于OpenCV的人脸识别门禁系统的设计与实现 [J].电脑与信息技术,2015(6):33-35.

作者简介:肖阳(1986-),男,汉族,上海人,研究生。研究方向:计算机。