一种优化的自然光源下眼动视觉测量方法

2021-07-11 13:58陈加徐陆永华赵采仪梁立鹏
应用科技 2021年4期
关键词:人眼虹膜人脸

陈加徐,陆永华,赵采仪,梁立鹏

南京航空航天大学 机电学院,江苏 南京 210016

在开发一套基于眼球驱动与控制的电动病床位姿调节系统中,最重要的是将眼球的图像转化为可读的信息,即利用图像处理的方法实现对眼动数据的精确测量[1-5]。

近年来,随着深度学习在图像处理领域得到了广泛的应用,一些新的算法不断涌现。但是就眼动测量、注视点估计领域而言,精度与传统方法差距较大,目前还不具有实际应用价值[6-8],未来将在这方面开展进一步的研究。

国外眼动测量设备采用的方法主要是“瞳孔中心-角膜反射法”(pupil center corneal reflection,PCCR)[9]。该方法利用近红外光源照射人眼,结合亮暗瞳孔效应,进一步获取瞳孔区域并确定瞳孔中心位置。在对眼球状态的量化过程中,一般需要一个动点(随视线变化的点)和一个静点(在视线改变过程中保持不变的点)。PCCR 法的动点为瞳孔中心,静点为光源在角膜反射的光斑。

这种方法对硬件要求高,设备昂贵,并且通常需要一个安装有近红外光源的专用头盔。而本文需要开发一套针对瘫痪病人及老年人方便使用的系统。

本文采用优化的“虹膜中心-眼角点向量法”实现对眼动数据的测量。动点选取为虹膜中心点,静点选取内眼角点,由于系统面向的对象是四肢瘫痪病人,所以静点选取为内眼角点是合理且可行的。由于四肢瘫痪病人的特殊性,他们在眼球运动过程中,眼角点相对于脸部是一个绝对静止的点。该方法在系统的复杂度上要远远低于PCCR 法,仅需要一台带电荷耦合器件(charge coupled device,CCD)相机的笔记本即可实现自然光源下对眼动的测量。

1 虹膜中心-内眼角向量法

图1 为瘫痪病人在注视屏幕不同目标点时,眼睛相应的状态。红色圆点表示虹膜中心在眼眶中的位置,黄色圆点表示内眼角点在眼眶中的位置,箭头表示“虹膜中心-眼角点”向量。可以看到该眼动向量充分反映了瘫痪病人看向不同位置时的眼球状态。实现对该向量的测量将有助于反映病人内心的真实想法。图2 为眼动向量示意图。

图1 病人看向不同目标时眼球状态示意

图2 虹膜中心-内眼角向量示意

对眼动数据的测量关键是找到虹膜中心和眼角点的位置,计算公式为

式中:Xe、Ye为某种眼球状态下眼动向量的横、纵坐标,Xiris、Yiris为算法定位出的虹膜中心在原图坐标系中的横、纵坐标,Xcorner、Ycorner为算法定位出的内眼角点在原图所标系中的横、纵坐标。

基于上述分析,本文从人脸定位、人眼定位、虹膜中心定位和内眼角点定位等4 个方面,分析了经典的算法存在的问题和缺陷。在此基础上,提出了一种优化的自然光源下的眼动视觉测量方法。从笔记本CCD 相机获取的低分辨率图像,结合图像处理的方法,实现眼动测量的流程如图3 所示。

图3 眼动向量测量流程

2 人脸定位

目前主要的人脸检测方法采用的是基于Haarlike 特征的Adaboost 算法。

Haar-like 特征可以分为4 种:边缘特征、线性特征、圆心环绕特征和特定方向的特征。

对于一张人脸图像,可以用多个不同类型的Haar-like 特征来表示,每个Haar-like 特征值为

式中:fv(x)为第x个Haar-like 特征的特征值,wwhite为白色像素点的权重,wblack为黑色像素点的权重,p∈Rwhite为落在Haar-like 特征中白色区域的图像像素点,p∈Rblack为落在Haar-like 特征中黑色区域的图像像素点。

经过实验,发现基于Haar 特征的Adaboost 算法在检测人脸时,会将一些非人脸目标识别为人脸,部分样本如图4 所示。因此本文对该算法进行优化,采用基于肤色和Haar 特征的Adaboost 算法来进行人脸检测,以降低误检率。图5 是该算法流程图。

图4 人脸检测错误结果

图5 优化的人脸定位算法流程

由于Adaboost 算法检测出的人脸感兴趣区域(region of interest,ROI)是RGB 三通道图像,为了进行肤色检测,需要将其转化为YUV(YCrCb)颜色空间,转换公式如下:

根据前人经验统计模型,肤色YCrCb 颜色空间中的Cr、Cb分量满足椭圆模型,利用opencv 绘制出该椭圆模型,如图6 所示。

图6 肤色椭圆模型

在将人脸ROI 转化为YCrCb 颜色空间后,只需要判断像素点的Cr、Cb分量对应的坐标是否在椭圆内部,即可判断该点是否是肤色,即

式中:Δ=1表示像素点是肤色点;Δ=0表示像素点不是肤色点;η(Cr,Cb)表示椭圆模型中(Cr,Cb)坐标处的灰度值,0 表示黑色,255 表示白色。

经过对大量的样本进行分析发现,正确的人脸ROI 中,肤色点占的比例一般大于0.6,图7 是部分样本中肤色点占人脸ROI 像素点的比例图。

图7 肤色点占人脸ROI 比例

采用该算法进行人脸定位的效果如图8 所示。

图8 优化算法定位效果

3 人眼定位

在得到原始图像后,即可进一步划分人眼ROI。主流的人眼检测算法采用的也是基于Haarlike 特征的Adaboost 方法,这种方法依然会存在将非人眼目标误检为人眼的情况。因此,本文采用先验知识法进行人眼定位。前人根据人脸面部器官比例关系,总结出“三庭五眼”的比例关系。

本文在此先验知识的基础上,结合自己的人眼与人脸外接矩形的比例关系,分割出人眼ROI如下:

式中:xI、yI分别为人脸ROI 在原图中的横、纵坐标,wI、hI分别为人脸ROI 的宽、高,xL、yL分别为左眼ROI 在人脸ROI 中的横、纵坐标,xR、yR分别为右眼ROI 相对于人眼ROI 的横、纵坐标,wE、hE分别为人眼ROI 的宽、高。

图9 是采用先验知识法实现人眼定位的效果图。

图9 优化的先验知识法定位人眼效果

4 虹膜中心定位

目前,虹膜中心定位的算法主要有霍夫变换法[10]、积分投影法[11]和等照度线曲率法[12]等。例如积分投影法,过分依赖于阈值化方法的选取和阈值的设置,对实现稳定的虹膜中心定位不够理想。因此,本文设计了一种优化的梯度中心法来定位虹膜重心,该算法的流程如图10 所示。

图10 优化的梯度重心法定位虹膜中心流程

从数学角度来看,设函数f(x,y)在平面区域D内有一阶连续偏导数,则对于每一个点 (x,y)∈D,都可以得到该点处的梯度:

对于图像而言,图像灰度关于坐标(x,y)的函数不是连续的,对图像灰度计算X、Y方向上的偏导数需要采用差分方法,本文中采用中心差分方法。

以图像灰度对X求偏导数为例:

式中:g(x,y)为图像坐标(x,y)处的灰度值;c为图像的列数。对于图像的左、右边界,分别采用向前差分和向后差分方法计算。

一是各工程项目部领用工程材料时,均以工程管理部填列的大料单为依据,在特别情况发生时,存在超出限额部分未及时办理审批手续的情况;二是工程管理部的大料单以设计管理部的设计图纸为依据编制,领料单一出,就将材料悉数领出,存在未用材料存于企业仓库或散于工地现场的情况,不利于施工企业采购资金的安排和材料存放安全;三是单个工程完工后办理退料时,工程项目部往往将尚未用完的的散件直接退回,未能按照节约原则在下一个工程中进行充分利用,存在不愿领用可改造使用的散件而领用整件再分割使用的情况.

得到X方向和Y方向偏导数后,合成梯度大小为

式中gg(x,y)为图像坐标(x,y)处的梯度大小。

计算动态阈值需要计算图像梯度的均值和标准差,均值 μ反应了图像的亮度,标准差 δ反映了图像像素值与均值的离散程度:

X方向梯度归一化的方法如下:

式中:gX为图像X方向的梯度,ξ为计算动态阈值得到的梯度阈值。Y方向梯度归一化方法同理。

图11 为梯度重心法定位虹膜中心的原理示意图。图中灰色圆形表示虹膜圆,矩形框表示人眼ROI 矩形框。

图11 优化算法定位虹膜中心示意

对于图中虹膜边界上的一个点,其梯度方向是水平向右的,对于人眼ROI 中的每一个像素点,都可以画出一条指向该点的矢量线,线的数量为

可以看到,只有经过虹膜中心的线与梯度方向一致。数学上,对于矢量a和矢量b的点积有如下定义:

那么,对上述所有的像素点矢量线,计算其与梯度的点积,在矢量线长度一致的情况下,经过虹膜圆中心的矢量线显然会得到更大的结果。

得到图像梯度矢量域后,为了避免将非虹膜目标检测为虹膜中心的情况,同时考虑到虹膜区域是人眼ROI 中最黑的区域,灰度值相对其他部分更低,根据灰度值对图像梯度矢量域取权重:

式中wweight为权重值,越黑的区域权重值越大。

对人眼ROI 梯度矢量域找到最大值,就是虹膜中心所在的位置:

本文采用的优化梯度重心法定位虹膜中心的效果如图12 所示。

图12 优化的梯度重心法定位效果

5 内眼角点定位

眼角点可视为角点,角点的检测算法有Harris角点法、KLT 角点法和Susan 角点法[12-13],其中,根据文献[13],Susan 角点法在眼角点的定位上应用广泛。

在实验中,我们发现Susan 角点法定位眼角点时,过分依赖于相似度阈值和非极大值抑制阈值的选取,即在不同光照条件、对比度情况下,需要设置不同的参数。该方法不能稳定地检测眼角点。因此在内眼角点的定位算法上,设计了一种优化的基于Dlib 特征点定位的方法。

Dlib 法一般用于人脸对齐等领域[14],本文中对该算法进行优化,应用到眼角点定位中。传统的Dlib 特征点定位算法流程如图13 所示,其人脸检测采用的是Dlib 库中自带的人脸检测器。在实验过程中发现,该人脸检测器与特征点预测模型的加载十分耗时,无法实现实时的眼角点定位。

图13 传统Dlib 人脸特征点定位算法流程

因此,本文将前述基于Haar-like 特征的Adaboost算法应用到Dlib 特征点定位算法中,并对Adaboost算法检测出的人脸ROI 进行灰度化处理,输入特征点预测模型。传统的Dlib 算法通常需要定位68 个特征点,本文将特征点的数量降低为5 个,大大提高了算法的运行效率。

采用传统Dlib 算法与本文优化算法实现眼角点定位的效果图对比如图14 所示。

图14 不同算法眼角点定位效果对比

6 实验结果及分析

本文实验将VS 2017 作为开发平台,结合opencv和Dlib 库函数,实现本文提出的优化算法,并与传统算法进行比较。运行环境配置为Dell Inspiron 15-3537,采集人脸图像的摄像头为笔记本自带的高清网络摄像头,编译环境均选择Release x64。

6.1 人脸定位算法比较

人脸定位算法评价指标上,采用误检率进行评价:

式中:Rface为算法的误检率;Nface为误判为人脸的矩形框数;Tface为检测出的所有人脸框数。

经过对光照条件、人脸数量、肤色等不一致的样本进行统计分析,得到Adaboost 算法的人脸平均误检率为15.8%;本文优化算法的人脸平均误检率为7.8%。本文基于肤色检测和Haar-like特征的Adaboost 优化算法与传统算法相比,误检率降低了8%左右。

6.2 人眼定位算法比较

人眼定位算法采用人眼检测正确率进行评价:

式中:Reye为人眼检测正确率,Neye为正确检测的人眼框数,Teye为图像中所有的人眼数。

人眼定位算法比较试验依然是在上一步人脸检测基础上进行的。本文基于先验知识的优化人眼定位算法,只要人脸定位算法足够准确,便可以稳定、快速地定位人眼ROI 位置,得到Adaboost算法的人眼检测正确率为77.86%;本文优化算法的人眼检测正确率为98.46%。本文优化算法比传统算法的人眼检测正确率提高了21%左右。

6.3 虹膜中心定位算法比较

虹膜中心定位算法比较的样本集选取BioID FaceDataBase V1.2 中的样本,该数据库的样本分辨率为384 px×286 px,样本格式为.pgm,并且提供了手动标记的左右眼中心坐标,方便我们进行算法的比较分析。

在虹膜中心定位算法中,由于不同样本中人脸距离摄像头的位置不一样,带来了双眼瞳距的不一致,对算法定位出的虹膜中心点与真实中心点的距离进行归一化处理:

式中:Riris为算法的准确度,Cr,x、Cr,y分别为手动标记虹膜中心在原图中的横、纵坐标,Ce,x、Ce,y分别为算法定位的虹膜中心在原图中的横、纵坐标,diris为手动标记的左、右眼虹膜中心欧氏距离。

传统的积分投影算法与本文的优化算法虹膜中心定位的平均误差如表1 所示。尽管积分投影法的误差要低于本文优化算法,但由于经典算法的定位效果依赖于阈值的设置,不能实现稳定的定位效果。虹膜中心定位算法仍然推荐本文优化算法,两者误差仅为0.1 左右。

表1 传统算法与本文优化算法平均误差对比

6.4 内眼角定位算法比较

由于内眼角点在人脸中并不是一个很明确的点,在医学上也没有标准的定义。内眼角点定位的准确性只能通过观察来判断,因此对于内眼角定位算法的比较,我们以算法的运行效率作为评价指标。

对于采集的原始人脸图像,对不同算法第一次编译运行正确定位出眼角点的运行时间进行统计,并取平均值,如表2 所示。

表2 单张图像第一次编译算法运行时间对比 ms

由于程序编译的特殊性,对单张图片的处理需要加载人脸检测器、特征点预测模型等文件,经过试验统计,本文优化算法对相关资源文件的平均加载时间约为957 ms。当将算法应用到视频流时,预加载好资源文件,传统Dlib 法视频帧处理算法平均用时203.3 ms,本文优化算法视频帧处理算法平均用时145 ms,每帧的运行时间提高了55 ms 左右。

7 结论

实现自然光源下对眼动向量的精确测量,是开发一套基于眼球驱动与控制的病床位姿调节系统的第一步。本文分析了经典的PCCR 法应用到瘫痪病人眼动测量时的缺点,并基于“虹膜中心-内眼角”向量法,提出了一种面向瘫痪病人的优化且低成本的眼动测量方法。

1)根据眼动视觉测量方法的实现步骤,分别从人脸定位、人眼定位、虹膜中心定位和内眼角点定位几个方面,分析了经典的算法存在的问题,提出了本文的优化算法,并与传统算法进行比较。

2)实验表明,与传统算法相比,本文优化算法在人脸定位上将误检率降低了8%左右,人眼检测的准确率提高了21%左右,虹膜中心上提高了定位稳定性的同时,误差仅相差0.1 左右;同时,视频帧眼角定位时间上缩短了55 ms 左右,为实现一套实时准确的眼球驱动控制系统奠定了基础。

猜你喜欢
人眼虹膜人脸
双眼虹膜劈裂症一例
有特点的人脸
一起学画人脸
基于轮廓匹配和多项式拟合的虹膜分割算法
人眼X光
人眼为什么能看到虚像
三国漫——人脸解锁
“刷眼”如何开启孩子回家之门
闪瞎人眼的,还有唇
看人,星光璀璨缭人眼