人脸特征提取是人脸识别、疲劳检测、人机交互、监控系统等领域中的重要初始工作. 与人脸中其他部位相比, 眼睛具有较为突出和稳定的特征, 因此人眼定位是人脸和其他部位检测和提取的基础. 在人脸检测中, 眼睛的准确定位可以有效地提高检测效率和鲁棒性[1]. 此外, 眼睛图像的独特性及眼睛的运动特点是表情理解、行为识别等技术的关键线索[2].
目前, 人眼定位算法主要有: 基于外形的方法、基于统计学习的方法以及基于外貌特征的方法. 基于外形的方法主要有主动形状模型(Active Shape Model, ASM)[3]和边缘提取法[4], 主动形状模型通过选取合适的初始位置来获取人眼精确的特征点坐标; 边缘提取法先预处理数据, 然后对人眼边缘进行提取. 基于统计学习的方法主要有AdaBoost分类[5]和支持向量机(Support Vector Machine, SVM)[6], 这类方法通过模型从训练集学习特征形成分类器, 通常具有较好的鲁棒性, 在实际应用中易将人眼定位至灰度值变化较大的区域, 如眉毛区域[7]. 基于外貌特征的方法主要有滤波器响应法[8]和积分投影法[9], 滤波器响应法主要使用人眼特征点和外貌特征两种方式, 两者都是使用滤波器响应值检测人眼, 用于正面人脸定位效果比较好. 积分投影法是根据波峰和波谷的分布信息定位人眼, 定位速度快, 但是很容易受到光照强度的影响, 而且获得的人眼中心点并不准确. 积分投影函数(Integral Projection Function, IPF)是一种较常用的投影函数, 但是IPF不能反映出均值相同的情况下灰度值变化的特点并且易受眉毛的干扰. 针对这一问题, 文献[10]提出一种梯度积分投影函数(Gradient Integral Projection Function, GIPF)用于人眼定位, 该方法可以反映出人脸灰度值变化的特点并且抑制眉毛的干扰, 但是易受面部光照干扰. 针对GIPF易受光照影响的问题, 文献[11]提出一种改进梯度积分投影和形态学滤波相结合的人眼定位算法, 在抑制眉毛干扰的同时减弱了人眼定位时光照的影响, 但是得到的人眼中心点不够精准.
针对传统投影方法的这些问题, 本文提出一种基于多尺度自商图和改进的积分投影法的人眼定位方法. 采用多尺度自商图像排除了光照不均匀导致的干扰区域, 增强了算法的鲁棒性. 另外, 对积分投影法做出改进, 过滤掉眉毛, 突出人眼位置; 根据分割出的左眼窗口和右眼窗口的尺寸来获取较为精准的人眼中心点.
1 多尺度自商图在进行人眼定位时, 光照变化的问题是最困难的问题之一. 自商图像能够对面部的光照效果进行偏移, 为这一问题提供了解决办法. 对于一幅给定的图像I(x, y), 可以看做是由入射图像L(x, y)和反射图像R(x, y)构成, 入射光照射在反射物体上, 通过反射物体的反射形成反射光进入人眼. 则定义图像I(x, y)的自商图像 R(x, y)为:
$R\left( {x,y} \right) = \frac{{I\left( {x,y} \right)}}{{L\left( {x,y} \right)}} = \frac{{I\left( {x,y} \right)}}{{F\left( {x,y} \right) \otimes I\left( {x,y} \right)}}$ | (1) |
其中, L(x, y)是I(x, y)平滑后的版本;
$F\left( {x,y} \right) = \lambda \exp \left[ {{{ - \left( {{x^2} + {y^2}} \right)} / {{c^2}}}} \right]$ | (2) |
其中, c是高斯函数的尺度参数;
$\iint {F\left( {x,y,c} \right)}{{dxdy}} = 1$ | (3) |
当c比较小的时候, 能较好地保持图像边缘的细节信息, 但是对光照的偏移效果较差; 当c比较大的时候, 能够有效地消除人脸光照, 但是细节保持较差. 为了在人脸图像的保真率和光照反射率之间达到平衡, 根据文献[12], 本文采用多尺度自商图. 多尺度自商图定义如下:
${R_M}\left( {x,y} \right) = \frac{{I\left( {x,y} \right)}}{{\displaystyle\sum\limits_k^K {{w_k}\left[ {F\left( {x,y,{c_k}} \right) \otimes I\left( {x,y} \right)} \right]} }}$ | (4) |
其中,
图1中给出YaleB人脸数据库中的3幅不同方向光照的照片, 图2为图1经过处理后得到的多尺度自商图像. 由图2可知, 经过处理得到的多尺度自商图已经消除不同方向的光照影响, 同时保持了人脸重要器官的信息, 有利于后续的人眼定位.
2 改进的积分投影法
传统的积分投影法对图像进行人眼定位时, 大致分为两步: (1)人眼初定位: 首先对人脸图像进行二值化, 然后对二值化图像进行水平积分投影, 最后根据波谷的分布信息来分割人眼区域; (2)人眼最终定位: 对分割出的人眼区域先进行二值化, 再进行垂直积分投影, 根据波谷的分布信息直接获取虹膜中心所在列, 从而定位虹膜中心.
本文提出一种改进的积分投影法的人眼定位方法. 在人眼初定位时, 针对积分投影法对二值化的人脸图像进行水平投影后难以区分眼睛和眉毛的问题, 做出改进: 对中值滤波后的行梯度图进行水平积分投影, 过滤掉眉毛, 得到人眼区域; 在人眼最终定位时, 针对积分投影法对二值化的人眼区域进行垂直积分投影后无法获取精准的人眼中心的问题, 做出改进: 对经过Sobel算子滤波后的人眼区域进行垂直积分投影并对垂直积分投影曲线进行高斯函数拟合, 分割出左眼和右眼, 根据左眼图像和右眼图像的尺寸来获取精准的人眼中心点.
2.1 人眼初定位人眼中心所在行的灰度值在虹膜和巩膜的交界处变化较大, 而眉毛中心所在行的灰度值变化较小. 一维行梯度算子能够突出图像水平方向的局部灰度变化, 因此, 选择两个方向相反且长度相同的行梯度算子作用人脸图像, 突出人眼水平方向的局部灰度变化, 同时抑制眉毛的响应. 行梯度图的计算公式如下:
${R_g}\left( {x,y} \right) = {l_1} * {R_M}\left( {x,y} \right) + {l_2} * {R_M}\left( {x,y} \right)$ | (5) |
其中,
为了消除行梯度图中存在的噪声和边缘响应, 对行梯度图进行中值滤波, 行梯度图中值滤波后的结果如下:
$\textit{S} \left( {{x,y}} \right) = {R_g}\left( {x,y} \right) \otimes m\left( {x,y} \right)$ | (6) |
其中,
由于积分投影法在光照不均匀的情况下对二值化的人脸图像进行水平投影后, 难以区分眼睛和眉毛, 而中值滤波后的行梯度图可以过滤眉毛, 故本文对中值滤波后的行梯度图进行水平投影, 水平积分投影函数如下:
$H\left( y \right) = \int_{{x_1}}^{{x_2}} {g\left( {x,y} \right)} dx$ | (7) |
其中,
由于人眼中心点所在行的灰度变化最大, 故本文方法的水平积分投影函数在人眼中心点所在行出现最大值. 考虑到人脸倾斜可能导致两只眼睛的上(下)边界不在同一水平线上, 将水平积分投影函数的最大值位置作为人眼中心点的水平位置, 从最大值位置开始分别向前、后两个方向寻找水平积分投影函数值为最大值1/2的位置作为人眼区域的上、下两条边界, 完成人眼的初定位. 为了给人眼的最终定位节省运算时间, 将检测出来的双眼区域从人脸上分割出来, 如图10所示.
2.2 人眼最终定位
二值化图像就是把彩色图像、灰度图像等转换为图像的边缘, 体现了图像中灰度分布的不连续性, 可以很好地反映图像中目标的轮廓、形状信息且不受光照变化的影响, 故为了提取人眼区域的竖直特征, 本文采用边缘算子进行检测. 相较于其他边缘算子, Sobel算子[13]兼容了抗噪性好和计算量小的优点, 本文采用Sobel算子对图10中人眼区域进行滤波, Sobel算子为:
${\textit{S}_{y}} = \left[ {\begin{array}{*{20}{c}} 1&2&1 \\ 0&0&0 \\ { - 1}&{ - 2}&{ - 1} \end{array}} \right]$ | (8) |
滤波结果为:
$\textit{G} \left( {x,y} \right) = {\textit{S}_{y}} * E\left( {x,y} \right)$ | (9) |
其中, E(x, y)是人眼区域图像.
人眼滤波图如图11所示. 由图11可知, 通过Sobel滤波, 人眼的竖直特征被有效地凸显, 有利于后续左眼和右眼的分割.
为了精确定位人眼位置, 还需要对人眼滤波图进行垂直积分投影来确定左眼和右眼垂直方向上的位置. 垂直积分投影函数如下:
$V\left( x \right) = \int_{{y_1}}^{{y_2}} {g\left( {x,y} \right)} dy$ | (10) |
其中,
大量实验表明, 由于虹膜和巩膜周围的灰度变化复杂, 人眼滤波图的垂直积分投影曲线在两眼区域大致呈现两个高斯分布的趋势. 因此, 本文对人眼滤波图垂直积分投影曲线进行二阶高斯函数拟合[14,15], 拟合结果如图12所示.
曲线高斯拟合后的第1个波峰对应左眼中心点, 第2个波峰对应右眼中心点. 对两条高斯分布曲线分别取两个标准差内的范围作为两个眼睛窗口的垂直方向上的范围, 由此分割出左眼和右眼.
传统的投影方法可以得到虹膜中心, 但眼睛的中心往往不是虹膜的中心, 这是因为虹膜的位置会随着视线方向的改变而改变. 为了得到左眼和右眼中心点的位置, 需要对分割出的左眼和右眼图像进行尺寸计算. 设分割出的左眼图像分辨率为
为了验证本算法的可行性和准确性, 本文采用YaleB人脸数据库和JAFFE人脸数据库进行了仿真实验. YaleB人脸数据库包含38个人在9种姿态、64种光照条件下的21 888张图像, 可用于考察本文算法对光照的适应性. JAFFE人脸库中包含215张图像, 通过该人脸数据库可以考察本文算法对人脸表情的适应性.
3.2 度量标准实验采用文献[16]提出的度量标准. 将手工标注的左右眼中心点设置为
位置相对误差的定义为:
$err = \frac{{\max \left( {{d_l},{d_r}} \right)}}{{{d_{lr}}}}$ | (11) |
阈值err=0.25表示人眼中心位置偏离真实位置的最大允许误差, err越小表示定位越精确.
3.3 测试结果实验一. 分别采用IPF、GIPF、文献[11]以及本文中的方法在JAFFE人脸数据库上进行实验, 各类方法的实验结果见表1.
由表1可知, 相同标准下, 即err<0.25条件下, 本文算法在JAFFE数据库的人眼定位性能相对于IPF以及GIPF均有提高, 与文献[11]的算法性能相当.
实验二. 对IPF、GIPF、文献[11]以及本文中的方法进行研究, 并在光照复杂的YaleB人脸数据库上进行实现. 经过实验对比, 4种方法的实验结果见表2.
由表2可知, 当选择err<0.25作为度量标准时, 定位准确率最低的IPF也达到了84.75%, 这是因为err<0.25意味着检测到的两只眼睛的位置离真实位置均在半只眼睛宽度以内, 这种标准非常宽松. 随着度量标准的提高, IPF的准确率快速下降, 这是由于IPF受眉毛和噪声的影响极易产生多个波谷; 而GIPF可以消除眉毛的干扰并且对噪声并不敏感, 在err<0.15的精度下的准确率比IPF高31%. 但是, 受限于复杂光照和边缘响应的影响, GIPF的准确率在err<0.10的精度下快速下降; 而文献[11]改进的GIPF能够有效地减弱光照和边缘响应的影响, 在err<0.10的精度下的准确率比GIPF高14.5%. 当选择err<0.05作为度量标准时, IPF、GIPF的准确率较低并且文献[11]的准确率快速下降, 而本文方法的准确率比文献[11]高10.5%, 这是由于人的眼球发生转动时, 本文方法定位的人眼中心是人眼外接矩形的中心点, 而不是虹膜中心, 从而保证了定位人眼中心点位置的精度. 为了更好地展示人眼中心点定位结果准确率, 给出了人眼中心定位准确率与相对误差的分布图, 如图13所示.
在算法耗时方面, IPF和GIPF方法的平均耗时为0.080 21 s和0.194 33 s, 文献[11]的平均耗时为0.464 12 s, 本文方法的平均耗时为0.486 14 s. 本文方法的平均耗时和文献[11]差不多, 但是大于IPF和GIPF, 这是由于采用了自商图像消除人脸光照以及人眼最终定位时采用了高斯函数拟合. 但是, IPF、GIPF和文献[11]只能得到粗略的人眼中心点位置, 而本文方法可以获得较为精准的人眼中心点位置.
图14给出了本文算法的部分定位结果, 图中用红色十字表示定位的眼睛中心点位置, 在不同数据库下都能成功定位.
4 结论
传统投影方法对人脸边缘和光照适应性差, 并且获得的人眼中心点并不准确. 针对此问题, 本文提出了一种基于多尺度自商图和改进的积分投影法的人眼定位算法. 该算法通过多尺度自商图消除了光照对人眼定位的影响, 大大提高了算法的鲁棒性; 通过改进的积分投影法克服了眉毛的影响, 抑制了人脸图像的边缘响应, 获得了较为精准的人眼中心点位置. 从YaleB人脸数据库和JAFFE人脸数据库的测试结果看, 本文算法的准确率优于传统的投影方法.
[1] |
王小玉, 张亚洲, 陈德运. 基于多块局部二值模式特征和人眼定位的人脸检测. 仪器仪表学报, 2014, 35(12): 2739-2745. |
[2] |
常胜江, 孟春宁, 韩建民, 等. 人眼检测技术研究进展. 数据采集与处理, 2015, 30(6): 1131-1146. |
[3] |
Hansen DW, Ji Q. In the eye of the beholder: A survey of models for eyes and gaze. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2010, 32(3): 478-500. DOI:10.1109/TPAMI.2009.30 |
[4] |
刘号. 基于嵌入式平台的瞳孔定位算法研究[硕士学位论文]. 武汉: 华中师范大学, 2017.
|
[5] |
梅小华, 金福江. 基于改进的Adaboost算法的眼睛精确定位. 控制工程, 2013, 20(4): 680-683. DOI:10.3969/j.issn.1671-7848.2013.04.023 |
[6] |
Kim H, Jo J, Toh KA, et al. Eye detection in a facial image under pose variation based on multi-scale iris shape feature. Image and Vision Computing, 2017, 57: 147-164. DOI:10.1016/j.imavis.2016.10.003 |
[7] |
陈叶飞, 苏剑波. 非学习模式下的类Haar特征快速人眼定位. 控制理论与应用, 2016, 33(4): 479-485. DOI:10.7641/CTA.2016.50241 |
[8] |
Sirohey SA, Rosenfeld A. Eye detection in a face image using linear and nonlinear filters. Pattern Recognition, 2001, 34(7): 1367-1391. DOI:10.1016/S0031-3203(00)00082-0 |
[9] |
荔小虎, 唐晶磊. 基于肤色匹配和积分投影结合的人眼定位方法研究. 自动化应用, 2018(12): 59-61. DOI:10.3969/j.issn.1674-778X.2018.12.026 |
[10] |
孟春宁, 白晋军, 张太宁, 等. 基于梯度积分投影和最大期望算法的人眼定位. 光电子·激光, 2012, 23(10): 1971-1976. |
[11] |
王金海, 吴立平, 崔军. 基于改进GIPF和形态学滤波的快速人眼定位方法. 天津工业大学学报, 2015, 34(1): 55-58, 63. DOI:10.3969/j.issn.1671-024X.2015.01.012 |
[12] |
赵全友, 潘保昌, 郑胜林, 等. 光照和表情变化的人眼鲁棒性定位方法. 光电子·激光, 2009, 20(5): 690-693. DOI:10.3321/j.issn:1005-0086.2009.05.029 |
[13] |
Liu Y, Zheng CW, Zheng Q, et al. Removing Monte Carlo noise using a Sobel operator and a guided image filter. The Visual Computer, 2018, 34(4): 589-601. DOI:10.1007/s00371-017-1363-z |
[14] |
Al-Nahhal I, Dobre OA, Basar E, et al. A fast, accurate, and separable method for fitting a gaussian function [tips & tricks]. IEEE Signal Processing Magazine, 2019, 36(6): 157-163. DOI:10.1109/MSP.2019.2927685 |
[15] |
聂玉峰, 王震海. 数值方法简明教程. 北京: 高等教育出版社, 2011. 82–85.
|
[16] |
鹿艳晶, 方加娟. 基于改进多块局部二进制模式的人眼定位算法. 现代电子技术, 2017, 40(11): 58-60, 64. |