基于视频流的实时清晰人脸图像识别的实现
2011-06-07祝敏,刘伟,周航,俞路,郭挺
祝 敏,刘 伟,周 航,俞 路,郭 挺
(1.西安交通大学电子与信息工程学院,陕西 西安 710049;2.西安交通大学苏州研究院,江苏 苏州 215123;3.苏州少士电子科技有限公司,江苏 苏州 215128)
0 引言
人脸检测技术近年来发展迅速,应用的领域也越来越广。如智能视频监控、高级人机交互、视频会议等,从之前的人脸识别到现在数码相机中普遍使用的人脸自动对焦技术,还有最近社交网站上应用的自动“圈人”功能,都是人脸检测技术直接或间接的应用。
目前,在监控领域人脸检测技术并没有得到很广泛的应用,主要原因是检测过程中需将所有监控录像进行保存,这样实时人脸检测并不具非常必要性,然而将所有录像进行保存需要巨大存储空间,硬件成本会极大提高。为节约成本,业界通常使用的方法有两点:一是缩短录像存储的时间(一般为一周),二是降低监控存储录像的分辨力(多为QCIF等)。所以这样保存的视频资料可能整个过程中只有那么几帧是清晰的,实际也就造成了资源的浪费,其实可以探寻在视频流中直接识别人脸,并且将其中分辨力较高清晰可辨识的一帧或某几帧人脸图像进行保存,这样就能大大减少存储所需要的空间,而且提高保存资料的质量。
因此,在对速度要求比较高的实时监控系统中,采用快速有效的人脸图像识别方法显得尤为重要。笔者在肤色检测[1-4]的基础上,采用 AdaBoost算法进行人脸识别的方法,速度上比单独使用AdaBoost算法进行人脸识别有显著提高,加上对检测到的人脸区域再进行倒谱域的清晰度判断,将人脸识别效率大大提高。
1 肤色检测
肤色是人体表面的重要特征,利用肤色进行检测可以忽略一些个别的人体特征,而只需要对这一统一的特征进行检测,这样就降低了算法的难度和复杂度。肤色在YCbCr空间具有聚类的特性[4],即肤色在该颜色空间的分布比较集中,不同种族之间的肤色差异主要是由亮度引起的,而与Cb,Cr分量无关。YCbCr色彩空间的优点是将亮度分量与色度分量分离开来,这样就使其受亮度变化的影响较小,降低了两者的相关性。
本文采用的是Rein-Lien Hsu提出的基于YCbCr空间的加入亮度补偿的肤色模型[1]。Rein-Lien Hsu通过研究发现肤色在YCbCr色彩空间并不完全由Cb与Cr决定,Y的取值同样也会影响肤色区域的形状。通过一些非线性变换,将肤色在YCbCr的分布映射到YCb'Cr'中,在YCb'Cr'色彩空间中,肤色在Cb'-Cr'二维平面上的分布相对很集中,其形状类似于一个椭圆,所以可以用椭圆模型来描述这种分布。
用以下两个公式来描述椭圆模型
通过肤色建模得到二值化图像以后,要想得到肤色区域,需对二值化图像进行连通,将一个个的孤立的像素点连接起来,形成一个连通域。得到一系列的连通区域后,由于这些区域可能包括肤色区域以及与肤色颜色相近的背景区域。在复杂背景下,有可能存在很多与人脸肤色相近的非人脸区域被分割出来(如手、胳膊等),这就需对这些肤色区域作进一步的处理。首先对分割出来的皮肤区域进行腐蚀与膨胀操作,除去噪声对肤色分割的影响;然后进行滤波,去除孤立的噪声点;人脸区域是具有一定大小的,可以设置分割区域的大小为整个图像的1/100,因为如果区域太小,即使通过下一步检测到人脸,也是难以辨识的;最后将得到的肤色区域的外接矩形求出,设置为感兴趣区域(Region of Interest,ROI),再将得到的ROI作为参数传递给人脸识别部分,检测该区域中是否包含人脸。
2 人脸识别
人脸识别模块采用的AdaBoost算法是一种迭代运算方法,AdaBoost算法在训练弱分类器过程中,对人体面部特征的提取,采用的是Haar特征。Haar特征在灰度图像中便于计算,容易提取。Haar特征分为边缘特征、线性特征、中心特征和对角线特征,这些特征组合成特征模板。弱分类器就是对组合成的特征模板进行训练的。Adaboost算法通常首先选择大量的Haar特征,通过训练和测试选出比较好的特征,然后由这些特征获得图像的矩形特征,并由这些矩形特征构成简单的弱分类器,最后通过训练由一系列弱分类器通过权重系数组合出一系列强分类器,最终用于人脸识别[5]。
单独使用AdaBoost算法进行人脸识别,存在两个问题:
1)由于需对整幅图像进行窗口搜索,检测速度受高复杂度运算影响;
2)由于该算法使用的是人体的面部特征进行匹配,如果在图片中出现类似人体面部特征的区域,就会造成误检。
所以,采用肤色检测结合AdaBoost算法进行人脸识别,可以有效减小搜索区域,只需对肤色特征区域进行匹配即可,大大降低了对整帧图片进行全窗口搜索的运算复杂度。同时对于图像中出现的类似人体脸部特征的区域,由于在肤色检测过程中可能已经抛弃,所以该方法也有效减少了AdaBoost的误检情况。
图1a为单独使用AdaBoost算法进行人脸识别的结果,图1b为将肤色检测与AdaBoost算法相结合进行人脸识别的结果。
图1 AdaBoost算法和该算法与肤色检测结合对人脸识别结果的对比
对比可见,单独使用AdaBoost进行人脸检测时,产生了误检,在原本只有一个面部的图像中检测到了2个面部,而使用肤色检测与AdaBoost算法相结合的方法,则正确检测出了人脸,比单独使用AdaBoost算法进行人脸识别精度高,因此本文选择肤色检测与Adaboost算法相结合的方式进行人脸识别。
3 清晰度判断
在经过人脸识别之后,可以发现有些面部不太清晰的图片中人脸也被识别出来,但清晰度不够将导致人脸识别困难。所以该部分的目的是对检测到的人脸区域进行清晰度检测[6-7]。设定一个清晰度得阈值T,如果检测到的人脸区域在清晰度检测后,其清晰度高于T,则认为该人脸是清晰可识别的;若低于设定阈值T,则认为该人脸不可识别,放弃该图片,重新从视频流中获得一帧图像进行检测。
判定图像清晰度得方法主要有倒谱域方法、Sobel算子方法和小波变换方法等。本文中采用倒谱域方法。倒谱(cepstrum)是指一种信号的傅里叶变换谱经对数运算后再进行的傅里叶反变换。由图5可以看出,清晰图像的倒谱图像都集中于一点。在倒谱域内,模糊图像的倒谱可分解为清晰图像的倒谱和点扩散函数的倒谱的线性叠加。而点扩散函数的倒谱为一些散列的点。所以模糊图像的倒谱域可以看作是清晰图像的倒谱和点扩散函数的倒谱的简单叠加。如图2 a-d,b-e,c-f对比所示,模糊图像的倒谱图中的高能量亮点散布在整幅图中。
图2 3幅清晰度不同的图及其倒谱图对比
可见,清晰度越高的图片,其倒谱图中亮点分布越集中;清晰度越低的图片,其倒谱图中亮点分布越分散。
二值化倒谱域中亮点的平均能量E可定义为
式中:权值W(i,j)定义为点(i,j)到中心点(ic,jc)的距离,C(i,j)定义为点(i,j)的二值化实倒谱值,即
式(3)中:Cep(i,j)为点(i,j)的倒谱值,T为选取的二值化阈值,这里取180。
对同一幅待评价图像来说,当T值一定时,图像越清晰,E值越小。通过预先设定好阈值E0值,根据公式计算图像的E值,当图像的E值大于E0时,认为该图像是清晰的,反之,则认为图像不清晰,需重新采集。
4 实验结果
实验中开发工具为Visual Studio 2008+OpenCV2.1。对人脸检测模块测试采用摄像头拍摄的两段视频:第一段是正面的清晰的场景,第二段是人由背对摄像头慢慢转至正面面向摄像头。视频的大小都是640×480,对这两段视频处理结果如图3所示。
图3 对两段视频的处理结果
表1 得到清晰正面图像的计算时间比较
因此可得出结论:处理具有正面人脸的图像时,速度很快,完全可以达到实时要求,得到的图像也是刚转到正面时所抓拍的第一张图片,而头部转至正面之前的图像均被丢弃。处理时间主要是人脸从背对摄像头转至正对摄像头的时间。
另外,在实验中还发现,当一帧图片检测不到肤色区域、检测不到人脸或者人脸不清晰时,那么它随后的几帧图像都有相同的情形,所以可以设定一个跳过的帧数N来实现跳帧操作,以跳过那些不能检测到肤色区域、人脸或图像不清晰的图像帧,从而进一步提高获取清晰图像的速度。
5 总结
本文通过将肤色检测、人脸检测和清晰度3种方法相结合结合,实现了在视频流中截取清晰正面的人脸图像。通过将肤色检测和人脸检测结合,避免了单独使用肤色或人脸检测误检率高的问题,通过增加清晰度检测方法,摒弃了视频中不清晰的帧,只保存视频流中的清晰图像,极大减小了存储所需空间,实现了一定应用领域的视频监控实时人脸识别。
[1]HSU R,MOHAMED A,JAIN A K.Face detection in color images[J].IEEE Trans.Pattern Analysis and Machine Intelligence,2007,24(5):696-706.
[2]HEISELE B,SERRE T,PRENTICE S,et al.Hierarchical classification and feature reduction for fast face detection with support vector machines[J].Pattern Recognition,2003,36(9):2007-2017.
[3]GUO D,ZHANG H J.Boosting for fast face recognition[EB/OL].[2010-09-18].http://research.microsoft.com/pubs/69834/tr-2001-16.ps.
[4]周敬利,王志强,陈加忠,等.基于肤色分割、区域分析和模板分布的人脸检测研究[J].计算机工程与应用,2004,40(16):61-64.
[5]凌旭峰,杨杰,叶晨洲.彩色序列图像的人脸检测和识别系统[J].电子学报,2003,31(4):544-547.
[6]李科,刘允才.视频运动图像中人脸清晰度的分析与捕捉[J].微型电脑应用,2010,26(4):40-41.
[7]陈晓娟,陈淑荣.实时视频图像的清晰度检测算法研究[J].微型机与应用,2010,26(17):36-38.