俞文静,张明军,李梓瑞,赖冬宜
(广州大学华软软件学院,广州510990)
人脸检测技术近年来得到了高速的发展[1],尤其基于视频流的人脸检测技术,是图像处理领域最成熟、应用最广的一项技术,相应的思想、算法、框架和技术都比较完备和成熟。然而现实应用中,由于物理设备成本高、易受各种成像环境限制等因素影响,大多数字成像系统获得的图像分辨率并不高,尤其远距离小人脸、多人脸的精准检测仍是人脸检测领域的一个难点,远距离拍摄,在无法获得人脸特征的情况下,如何解决在拍摄得到的待识别图像中进行人脸检测的难度大、误检率高的问题已成为人脸检测研究领域的一个关键问题。超分辨率图像重建[2]就是利用同一场景下的一幅或多幅具有互补信息的模糊、变形以及噪声污染的低分辨率图像来重建一副高分辨率图像。其目的是弥补硬件不足,从软件角度提高图像分辨率及质量,基于超分辨率技术的特点,将该技术应用到远距离小人脸检测中,可以将无法获得人脸特征的小人脸图像进行超分辨率重建与恢复预处理后再进行人脸检测与识别。
本文在建立基于图像超分辨率恢复的远距离小人脸、多人脸检测模型的基础上,结合人脸图像中的结构信息,以及传统的凸集投影(Projection Onto Convex Sets,POCS)算法只能得到低对比度、低信噪比、边缘模糊的图像特点,设计了基于人脸特征增强的改进POCS小人脸超分辨率恢复算法,仿真实验表明经过超分辨率放大恢复后的图像应用Dlib人脸检测模型进行人脸检测,可以大大提高小人脸的检测精确度。
本文针对在实际应用中小人脸检测难度大、误检率高的问题[5],结合图像超分辨率恢复以及人脸图像结构信息特点,建立基于图像超分辨率恢复的远距离小人脸、多人脸检测模型:将远距离拍摄的无法获得人脸特征并检测不到的小人脸、多人脸视频图像进行人脸图像增强预处理,包括直方图均衡化、图像降噪和边缘增强处理,再将处理后的图像作为POCS超分辨率图像重建的输入并进行图像超分辨率处理,最后将处理后的图像应用Dlib模型进行人脸检测,并得到检测结果。
图1 小人脸检测模型图
为了从低分辨率小人脸图像中更好地获取各个小人脸的结构信息,本文算法先对低分辨率图像进行图像增强预处理,主要通过直方图均衡化方法调节图像因光照、模糊等原因对图像的干扰,通过图像降噪和边缘检测优化加强人脸结构信息表达。
直方图均衡化[3]通过将原始图像中分布不均衡的灰度分量进行调整,使灰度值在整个直方图中近于均匀分布,可使图像的灰度动态范围和明暗对比度得到提高,图像的细节得到增强。
对于灰度级范围为[ ]0,L-1的数字图像,其直方图可表示为一个离散函数:
其中nK是第k级灰度值rK的像素个数。也就是说,横坐标代表了灰度值rK,纵坐标代表了该灰度级的个数nK。实际应用中,通常要先对直方图进行归一化,假设灰度图像的维数是M×N,MN表示图像的像素总数,则归一化直方图可以表示为:
本文图像降噪采用均值滤波,先定义一个固定大小和参数的滤波器模板,该模板通过邻域平均法计算中心像素点,对整幅图像进行滤波,以达到图像降噪的效果。本文使用算数均值滤波器。令Sxy表示中心点在(x,y)处,大小为m×n的滤波器窗口。算术均值滤波器计算中心点领域像素均值并赋给中心点的过程可以表示为:
边缘检测通过检测图像中亮度变化梯度大的像素点识别图像的边缘部分,可大幅度地减少原始图像中的无效数据量,保留了图像重要的结构属性。本文选择Sobel边缘检测算子,它包含两组3×3的矩阵,分别为横向及纵向模板,可分别检测图像的垂直边缘和水平边缘。在人脸图像中,人脸边缘及五官结构一般都与皮肤像素值不同,并且在人脸检测中并不关心皮肤的纹理特征。Sobel算子恰好对细纹理不敏感,因此可大幅度减少与人脸特征无关的信息,这大大减少了之后的算法数据信息量。
本文将以下两个模板(见公式(4)-(5))与图像作平面卷积来检测图像边缘,就可以分别获得图像横向及纵向的亮度差分近似值。
检测水平边沿横向模板Gx:
检测垂直边沿纵向模板Gy:
图像中每一个像素点的横向和纵向梯度近似值的大小可用以下公式来计算:
通常,为了提高效率,使用不开平方的近似值表示为:
凸集投影法(Projection Onto Convex Sets,POCS)[4-5]是超分辨率重建方法的重要理论方法之一。该方法以其强大的先验知识包含能力,成为图像复原领域中的一种主要方法,并得到了很好的应用。其基本原理是:把高分辨率图像的每一个约束条件定义为向量空间的一个凸集合,所求高分辨率图像包含于这些集合中,取得这些集合的交集,就可得到超分辨率图像的解。基本POCS算法的流程描述为:先利用插值预估超分辨率图像,也就是建立参考帧,然后根据观察图像和参考帧进行图像配准,从而指导图像修正,直到可接受的重建图像。
本文为了更好地突出人脸图像的结构特点,对基本的POCS算法进行了改进,将原始小人脸图像增强处理,更加能够突出人脸结构特征,再将该图像作为POCS算法的低分辨图像的输入,其次,应用双三次样条插值放大,并利用中值滤波进行优化得到高分辨图像初始值Y1,最后本文采用最小绝对差分配准则的块匹配算法进行图像配准,将观测图像YK与Y1进行配准,当图像配准不满足要求时,进行图像赋值投影和矫正,直到符合迭代要求,就停止迭代,输出结果。改进的POCS算法流程如图2所示。
图2 本文改进POCS算法流程图
本文算法[6]中利用待采样点周围16个点的灰度值作三次插值,不仅考虑到4个直接相邻点的灰度影响,而且考虑到各邻点间灰度值变化率的影响,可以得到更接近高分辨率图像的放大效果,式(11)为双三次插值公式,其中A、B、C均为矩阵,分别如式(9)-(11)所示,且式(9)、(11)中的数学表达函数S(x)如式(12)所示,在优化插值的基础上,修改像素间的偏差距离,能使图像最大地保持边缘细节信息;
本文实验重点研究了小人脸图像中的人脸检测问题,实验物理环境:64位的Windows 10操作系统PC一台,8GB内存,CPU为Intel Core i5-6300HQ,GPU为NVIDIA GeForce GTX 950M,主要软件环境有Python 3.6版本、OpenCV 3.1版本、TensorFlow 2.0版本、NVID⁃IA显卡加速库CUDA 10.0版本,人脸检测算法采用的是Dlib模型人脸检测算法。
本文试验中,人脸图像增强部分所用到的算法均源于Python的自带模型库。小人脸图像依次经过了直方图均衡化、均值滤波和边缘增强的处理,以处理后的图像作为改进POCS算法的输入,对图像进行了重建。实验选择了一组具有部分遮挡的集体毕业照录像中的帧作为原图输入,原始图像大小650×340像素,总人脸数为132,分别采用三次样条插值算法、基本POCS算法以及本文改进的算法分别进行2倍、4倍大小放大,再利用原图和三种算法得到的超分辨率图像分别在Dlib人脸检测模型算法中进行小人脸检测,其中4倍检测效果分别如下图3(a)-(d)所示。
图3 原图及三种超分辨率图像小人脸检测效果图
由图3(a)-(d)中原图及三种超分辨率图像小人脸检测效果图可以看出,由于原图像素较小,在人脸较小的情况下,无法获取人脸特征,利用Dlib人脸检测模型检测不到人脸,因此,本文实验中分别用三次样条插值、基本POCS以及本文所提出的改进POCS算法进行4倍放大后,再进行人脸检测,都可以检测到小人脸。此外,实验进一步将原图根据三种算法进行了2倍重建后人脸检测测试,根据实验中的检测,对检测数据进行统计,如表1所示。
表1 测试结果对比
由表1的测试数据分析可以看出,通过三次插值2倍重建的图像检测不到,4倍重建的图像检测率为52.27%,基本POCS算法重建2倍图像检测率为57.58%,而4倍重建图像检测率较高达到了90.90%,本文提出的POCS算法重建2倍图像检测率为68.94%,而本文改进算法的4倍重建检测率达到了93.94%。从对比结果可以看出,图像的超分辨率重建可以有效提高小人脸图像的人脸检测率,并且随着人脸图像重建倍数的增大,检测率精准率越高,本文提出的改进算法在与三次样条插值以及基本的POCS算法的对比中,可以看出本文的算法在重建倍数越高的情况下,检测率越高,在同等条件下比三次样条插值以及基本的POCS算法都有更好的表现。
本文结合传统图像增强技术和图像超分辨率重建算法,针对实际应用中视频流小人脸检测难度大、误检率高的问题,结合人脸图像结构信息及特点,提出了基于图像超分辨率的小人脸检测模型,并设计了应用于小人脸精准检测的改进POCS图像超分辨率算法,最后用重建后的图像进行Dlib人脸检测模型进行人脸检测。本文的研究重点有以下几点:
(1)结合人脸图像结构信息以及图像超分辨率恢复算法的特点,提出了基于改进图像超分辨率的小人脸检测模型。
(2)设计了应用于小人脸精准检测的改进POCS超分辨率重建算法,该算法首先对原图进行图像增强(直方图均衡化、图像降噪、边缘增强)处理,以获取各个小人脸结构信息,在此基础上将增强处理后的图像作为POCS超分辨率算法的基础帧,并在传统的POCS算法中利用三次样条插值和中值滤波进行边缘优化超分辨率放大,并不断与观测图像进行配准,进行图像矫正。
(3)将重建后的图像进行Dlib人脸检测模型人脸检测:本文分别采用三次样条插值算法、基本POCS算法以及本文改进的算法分别进行2倍、4倍大小重建后人脸检测,实验结果表明本文的超分辨率重建算法可以有效提高小人脸图像的人脸检测率,并且随着人脸图像重建倍数的增大,检测率精准率越高,