APP下载

基于多尺度自商图和改进积分投影法的人眼定位①

2022-01-06徐立杰朱建鸿

计算机系统应用 2021年11期
关键词:中心点人眼灰度

徐立杰, 朱建鸿

(江南大学 物联网工程学院, 无锡 214122)

人脸特征提取是人脸识别、疲劳检测、人机交互、监控系统等领域中的重要初始工作.与人脸中其他部位相比, 眼睛具有较为突出和稳定的特征, 因此人眼定位是人脸和其他部位检测和提取的基础.在人脸检测中, 眼睛的准确定位可以有效地提高检测效率和鲁棒性[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)为:

其中,L(x,y)是I(x,y)平滑后的版本; ⊗是卷积运算;F(x,y)是平滑滤波核, 即:

其中,c是高斯函数的尺度参数; λ由归一化函数决定:

当c比较小的时候, 能较好地保持图像边缘的细节信息, 但是对光照的偏移效果较差; 当c比较大的时候, 能够有效地消除人脸光照, 但是细节保持较差.为了在人脸图像的保真率和光照反射率之间达到平衡,根据文献[12], 本文采用多尺度自商图.多尺度自商图定义如下:

其中,wk表示第k个平滑滤波核分量平滑的权值, 通常wk=1/K;ck表示第k个平滑滤波核函数的尺度参数.本文通过实验得到, 当K=3,c取20, 40, 80时效果较好.

图1中给出YaleB人脸数据库中的3幅不同方向光照的照片, 图2为图1经过处理后得到的多尺度自商图像.由图2可知, 经过处理得到的多尺度自商图已经消除不同方向的光照影响, 同时保持了人脸重要器官的信息, 有利于后续的人眼定位.

图1 原始图像

图2 多尺度自商图

2 改进的积分投影法

传统的积分投影法对图像进行人眼定位时, 大致分为两步: (1)人眼初定位: 首先对人脸图像进行二值化, 然后对二值化图像进行水平积分投影, 最后根据波谷的分布信息来分割人眼区域; (2)人眼最终定位: 对分割出的人眼区域先进行二值化, 再进行垂直积分投影, 根据波谷的分布信息直接获取虹膜中心所在列, 从而定位虹膜中心.

本文提出一种改进的积分投影法的人眼定位方法.在人眼初定位时, 针对积分投影法对二值化的人脸图像进行水平投影后难以区分眼睛和眉毛的问题, 做出改进: 对中值滤波后的行梯度图进行水平积分投影, 过滤掉眉毛, 得到人眼区域; 在人眼最终定位时, 针对积分投影法对二值化的人眼区域进行垂直积分投影后无法获取精准的人眼中心的问题, 做出改进: 对经过Sobel算子滤波后的人眼区域进行垂直积分投影并对垂直积分投影曲线进行高斯函数拟合, 分割出左眼和右眼, 根据左眼图像和右眼图像的尺寸来获取精准的人眼中心点.

2.1 人眼初定位

人眼中心所在行的灰度值在虹膜和巩膜的交界处变化较大, 而眉毛中心所在行的灰度值变化较小.一维行梯度算子能够突出图像水平方向的局部灰度变化,因此, 选择两个方向相反且长度相同的行梯度算子作用人脸图像, 突出人眼水平方向的局部灰度变化, 同时抑制眉毛的响应.行梯度图的计算公式如下:

其中,l1是行梯度算子, 如图3所示;l2是与l1方向相反且长度相同的行梯度算子; *是相关运算;l1*RM(x,y)反映了水平方向上从虹膜到巩膜的灰度变化, 如图4(b)所示;l2*RM(x,y)反映了水平方向上从巩膜到虹膜的灰度变化, 如图4(c)所示;Rg(x,y)反映了水平方向上从巩膜到虹膜到巩膜的灰度变化, 如图4(d)所示.由图4(d)可以看出,Rg(x,y)中亮度较大的部分对应脸部区域中局部变化突出的眼睛和鼻子部分, 其中眼睛区域特征被有效地增强.这样的处理可以突出眼部信息, 减弱眉毛的干扰.

图3 行梯度算子

图4 行梯度图计算结果

为了消除行梯度图中存在的噪声和边缘响应, 对行梯度图进行中值滤波, 行梯度图中值滤波后的结果如下:

其中,m(x,y)是中值滤波器, 本文选择 5 ×5的滤波模板.S(x,y)的三维表示如图5所示.由图5可以看出, 经过中值滤波后, 行梯度图中的噪声被有效地抑制并且边缘响应非常弱.

图5 三维图

由于积分投影法在光照不均匀的情况下对二值化的人脸图像进行水平投影后, 难以区分眼睛和眉毛, 而中值滤波后的行梯度图可以过滤眉毛, 故本文对中值滤波后的行梯度图进行水平投影, 水平积分投影函数如下:

其中,g(x,y)表示该像素点的灰度值;x1和x2表示行梯度图中像素点的横坐标.以图6中人脸原图为例, 图7、图8分别为IPF的水平积分投影曲线和GIPF的水平积分投影曲线, 由于人脸光照较为复杂以及噪声的干扰, IPF的水平积分投影曲线出现了多处波谷, 根据波谷信息难以区分眼睛和眉毛; GIPF水平投影曲线虽然突出显示了人眼中心点所在行的位置信息, 但是仍然受到周围波峰的干扰, 并且边缘响应较大; 相比之下,本文方法的水平积分投影曲线平滑了曲线, 使得波峰值更为突出并且抑制了边缘响应, 如图9所示.

图6 人脸原图

图7 IPF的水平积分投影曲线

图8 GIPF的水平积分投影曲线

图9 本文方法的水平积分投影曲线

由于人眼中心点所在行的灰度变化最大, 故本文方法的水平积分投影函数在人眼中心点所在行出现最大值.考虑到人脸倾斜可能导致两只眼睛的上(下)边界不在同一水平线上, 将水平积分投影函数的最大值位置作为人眼中心点的水平位置, 从最大值位置开始分别向前、后两个方向寻找水平积分投影函数值为最大值1/2的位置作为人眼区域的上、下两条边界, 完成人眼的初定位.为了给人眼的最终定位节省运算时间,将检测出来的双眼区域从人脸上分割出来, 如图10所示.

图10 人眼区域

2.2 人眼最终定位

二值化图像就是把彩色图像、灰度图像等转换为图像的边缘, 体现了图像中灰度分布的不连续性, 可以很好地反映图像中目标的轮廓、形状信息且不受光照变化的影响, 故为了提取人眼区域的竖直特征, 本文采用边缘算子进行检测.相较于其他边缘算子, Sobel算子[13]兼容了抗噪性好和计算量小的优点, 本文采用Sobel算子对图10中人眼区域进行滤波, Sobel算子为:

滤波结果为:

其中,E(x,y)是人眼区域图像.

人眼滤波图如图11所示.由图11可知, 通过Sobel滤波, 人眼的竖直特征被有效地凸显, 有利于后续左眼和右眼的分割.

图11 人眼滤波图

为了精确定位人眼位置, 还需要对人眼滤波图进行垂直积分投影来确定左眼和右眼垂直方向上的位置.垂直积分投影函数如下:

其中,y1和y2表示人眼滤波图中像素点的纵坐标.

大量实验表明, 由于虹膜和巩膜周围的灰度变化复杂, 人眼滤波图的垂直积分投影曲线在两眼区域大致呈现两个高斯分布的趋势.因此, 本文对人眼滤波图垂直积分投影曲线进行二阶高斯函数拟合[14,15], 拟合结果如图12所示.

图12 拟合结果

曲线高斯拟合后的第1个波峰对应左眼中心点,第2个波峰对应右眼中心点.对两条高斯分布曲线分别取两个标准差内的范围作为两个眼睛窗口的垂直方向上的范围, 由此分割出左眼和右眼.

传统的投影方法可以得到虹膜中心, 但眼睛的中心往往不是虹膜的中心, 这是因为虹膜的位置会随着视线方向的改变而改变.为了得到左眼和右眼中心点的位置, 需要对分割出的左眼和右眼图像进行尺寸计算.设分割出的左眼图像分辨率为m×n, 右眼图像分辨率为p×q.若m和n均为偶数, 则左眼的中心点坐标为(m/2,n/2); 若m为偶数,n为奇数, 则左眼的中心点坐标为(m/2,(n+1)/2); 若m为奇数,n为偶数, 则左眼的中心点坐标为((m+1)/2,n/2); 若m为奇数,n为奇数, 则左眼的中心点坐标为((m+1)/2,(n+1)/2).若p和q均为偶数, 则右眼的中心点坐标为(p/2,q/2); 若p为偶数,q为奇数, 则右眼的中心点坐标为(p/2,(q+1)/2); 若p为奇数,q为偶数, 则右眼的中心点坐标为((p+1)/2,q/2); 若p为奇数,q为奇数, 则左眼的中心点坐标为((p+1)/2,(q+1)/2).通过该方法得到的中心点不仅更接近眼睛的真实中心, 而且具有更好的抗干扰能力.

3 实验结果及评价

3.1 数据集

为了验证本算法的可行性和准确性, 本文采用YaleB人脸数据库和JAFFE人脸数据库进行了仿真实验.YaleB人脸数据库包含38个人在9种姿态、64种光照条件下的21 888张图像, 可用于考察本文算法对光照的适应性.JAFFE人脸库中包含215张图像, 通过该人脸数据库可以考察本文算法对人脸表情的适应性.

3.2 度量标准

实验采用文献[16]提出的度量标准.将手工标注的左右眼中心点设置为和, 检测到的左右眼中心点位置为和.为与之间的欧几里得距离,为与之 间 的 欧 几 里 得 距 离.是和之 间 的欧几里得距离.

位置相对误差的定义为:

阈值err=0.25表示人眼中心位置偏离真实位置的最大允许误差,err越小表示定位越精确.

3.3 测试结果

实验一.分别采用IPF、GIPF、文献[11]以及本文中的方法在JAFFE人脸数据库上进行实验, 各类方法的实验结果见表1.

表1 JAFFE数据库的实验结果准确率对比(%)

由表1可知, 相同标准下, 即err<0.25条件下, 本文算法在JAFFE数据库的人眼定位性能相对于IPF以及GIPF均有提高, 与文献[11]的算法性能相当.

实验二.对IPF、GIPF、文献[11]以及本文中的方法进行研究, 并在光照复杂的YaleB人脸数据库上进行实现.经过实验对比, 4种方法的实验结果见表2.

表2 YaleB数据库的实验结果准确率对比(%)

由表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所示.

图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给出了本文算法的部分定位结果, 图中用红色十字表示定位的眼睛中心点位置, 在不同数据库下都能成功定位.

图14 部分定位效果图

4 结论

传统投影方法对人脸边缘和光照适应性差, 并且获得的人眼中心点并不准确.针对此问题, 本文提出了一种基于多尺度自商图和改进的积分投影法的人眼定位算法.该算法通过多尺度自商图消除了光照对人眼定位的影响, 大大提高了算法的鲁棒性; 通过改进的积分投影法克服了眉毛的影响, 抑制了人脸图像的边缘响应, 获得了较为精准的人眼中心点位置.从YaleB人脸数据库和JAFFE人脸数据库的测试结果看, 本文算法的准确率优于传统的投影方法.

猜你喜欢

中心点人眼灰度
田志强
基于二值化灰度图像的大豆蛋白液喷雾相对雾化程度的研究
天津港智慧工作平台灰度发布系统和流程设计
Scratch 3.9更新了什么?
Arduino小车巡线程序的灰度阈值优化方案
如何设置造型中心点?
磨课,一段痛苦与快乐交织的过程
闪瞎人眼的,还有唇
看人,星光璀璨缭人眼
寻找视觉中心点