在开发一套基于眼球驱动与控制的电动病床位姿调节系统中,最重要的是将眼球的图像转化为可读的信息,即利用图像处理的方法实现对眼动数据的精确测量[1-5]。
近年来,随着深度学习在图像处理领域得到了广泛的应用,一些新的算法不断涌现。但是就眼动测量、注视点估计领域而言,精度与传统方法差距较大,目前还不具有实际应用价值[6-8],未来将在这方面开展进一步的研究。
国外眼动测量设备采用的方法主要是“瞳孔中心–角膜反射法”(pupil center corneal reflection,PCCR)[9]。该方法利用近红外光源照射人眼,结合亮暗瞳孔效应,进一步获取瞳孔区域并确定瞳孔中心位置。在对眼球状态的量化过程中,一般需要一个动点(随视线变化的点)和一个静点(在视线改变过程中保持不变的点)。PCCR法的动点为瞳孔中心,静点为光源在角膜反射的光斑。
这种方法对硬件要求高,设备昂贵,并且通常需要一个安装有近红外光源的专用头盔。而本文需要开发一套针对瘫痪病人及老年人方便使用的系统。
本文采用优化的“虹膜中心–眼角点向量法”实现对眼动数据的测量。动点选取为虹膜中心点,静点选取内眼角点,由于系统面向的对象是四肢瘫痪病人,所以静点选取为内眼角点是合理且可行的。由于四肢瘫痪病人的特殊性,他们在眼球运动过程中,眼角点相对于脸部是一个绝对静止的点。该方法在系统的复杂度上要远远低于PCCR法,仅需要一台带电荷耦合器件(charge coupled device,CCD)相机的笔记本即可实现自然光源下对眼动的测量。
1 虹膜中心–内眼角向量法图1为瘫痪病人在注视屏幕不同目标点时,眼睛相应的状态。红色圆点表示虹膜中心在眼眶中的位置,黄色圆点表示内眼角点在眼眶中的位置,箭头表示“虹膜中心–眼角点”向量。可以看到该眼动向量充分反映了瘫痪病人看向不同位置时的眼球状态。实现对该向量的测量将有助于反映病人内心的真实想法。图2为眼动向量示意图。
|
Download:
|
| 图 1 病人看向不同目标时眼球状态示意 | |
|
Download:
|
| 图 2 虹膜中心–内眼角向量示意 | |
对眼动数据的测量关键是找到虹膜中心和眼角点的位置,计算公式为
| $ \begin{array}{*{20}{c}} {{X_{\rm{e}}} = {X_{{\rm{iris}}}} - {X_{{\rm{corner}}}}}\\ {{Y_{\rm{e}}} = {Y_{{\rm{iris}}}} - {Y_{{\rm{corner}}}}} \end{array} $ |
式中:Xe、Ye为某种眼球状态下眼动向量的横、纵坐标,Xiris、Yiris为算法定位出的虹膜中心在原图坐标系中的横、纵坐标,Xcorner、Ycorner为算法定位出的内眼角点在原图所标系中的横、纵坐标。
基于上述分析,本文从人脸定位、人眼定位、虹膜中心定位和内眼角点定位等4个方面,分析了经典的算法存在的问题和缺陷。在此基础上,提出了一种优化的自然光源下的眼动视觉测量方法。从笔记本CCD相机获取的低分辨率图像,结合图像处理的方法,实现眼动测量的流程如图3所示。
|
Download:
|
| 图 3 眼动向量测量流程 | |
目前主要的人脸检测方法采用的是基于Haar-like特征的Adaboost算法。
Haar-like特征可以分为4种:边缘特征、线性特征、圆心环绕特征和特定方向的特征。
对于一张人脸图像,可以用多个不同类型的Haar-like特征来表示,每个Haar-like特征值为
| ${f_v}(x) = {w_{{\rm{white}}}}\sum\limits_{p \in {R_ {\rm{white}}}} {p - {w_{{\rm{black}}}}\sum\limits_{p \in{R_{\rm{black}}}} p } $ |
式中:
经过实验,发现基于Haar特征的Adaboost算法在检测人脸时,会将一些非人脸目标识别为人脸,部分样本如图4所示。因此本文对该算法进行优化,采用基于肤色和Haar特征的Adaboost算法来进行人脸检测,以降低误检率。图5是该算法流程图。
|
Download:
|
| 图 4 人脸检测错误结果 | |
|
Download:
|
| 图 5 优化的人脸定位算法流程 | |
由于Adaboost算法检测出的人脸感兴趣区域(region of interest,ROI)是RGB三通道图像,为了进行肤色检测,需要将其转化为YUV(YCrCb)颜色空间,转换公式如下:
| $\left\{ {\begin{aligned} & {Y = 0.299R + 0.587G + 0.114B}\\ & {U = - 0.147R - 0.289G + 0.436B}\\ & {V = 0.615R - 0.515G - 0.100B} \end{aligned}} \right.$ |
根据前人经验统计模型,肤色YCrCb颜色空间中的Cr、Cb分量满足椭圆模型,利用opencv绘制出该椭圆模型,如图6所示。
|
Download:
|
| 图 6 肤色椭圆模型 | |
在将人脸ROI转化为YCrCb颜色空间后,只需要判断像素点的Cr、Cb分量对应的坐标是否在椭圆内部,即可判断该点是否是肤色,即
| ${{\varDelta}} = \left\{ {\begin{array}{*{20}{l}} {1,}\quad\quad{\;\eta ({C_{\rm{r}}},{C_{\rm{b}}}) = 255} \\ {0,}\quad\quad{\;\eta ({C_{\rm{r}}},{C_{\rm{b}}}) = 0} \end{array}} \right.$ |
式中:
经过对大量的样本进行分析发现,正确的人脸ROI中,肤色点占的比例一般大于0.6,图7是部分样本中肤色点占人脸ROI像素点的比例图。
|
Download:
|
| 图 7 肤色点占人脸ROI比例 | |
采用该算法进行人脸定位的效果如图8所示。
|
Download:
|
| 图 8 优化算法定位效果 | |
在得到原始图像后,即可进一步划分人眼ROI。主流的人眼检测算法采用的也是基于Haar-like特征的Adaboost方法,这种方法依然会存在将非人眼目标误检为人眼的情况。因此,本文采用先验知识法进行人眼定位。前人根据人脸面部器官比例关系,总结出“三庭五眼”的比例关系。
本文在此先验知识的基础上,结合自己的人眼与人脸外接矩形的比例关系,分割出人眼ROI如下:
| $\left\{\begin{aligned} & {{x_{\rm{L}}} = 0.13{w_{\rm{I}}}}\\ & {{h_{\rm{E}}} = 0.3{w_{\rm{I}}}}\\ & {{x_{\rm{L}}} = 0.13{w_{\rm{I}}}}\\ & {{x_{\rm{R}}} = {w_{\rm{I}}} - {w_{\rm{E}}} - 0.13{w_{\rm{I}}}}\\ & {{y_{\rm{L}}} = {y_{\rm{R}}} = 0.25{h_{\rm{I}}}} \end{aligned}\right. $ |
式中:xI、yI分别为人脸ROI在原图中的横、纵坐标,wI、hI分别为人脸ROI的宽、高,xL、yL分别为左眼ROI在人脸ROI中的横、纵坐标,xR、yR分别为右眼ROI相对于人眼ROI的横、纵坐标,wE、hE分别为人眼ROI的宽、高。
图9是采用先验知识法实现人眼定位的效果图。
|
Download:
|
| 图 9 优化的先验知识法定位人眼效果 | |
目前,虹膜中心定位的算法主要有霍夫变换法[10]、积分投影法[11]和等照度线曲率法[12]等。例如积分投影法,过分依赖于阈值化方法的选取和阈值的设置,对实现稳定的虹膜中心定位不够理想。因此,本文设计了一种优化的梯度中心法来定位虹膜重心,该算法的流程如图10所示。
|
Download:
|
| 图 10 优化的梯度重心法定位虹膜中心流程 | |
从数学角度来看,设函数f(x,y)在平面区域D内有一阶连续偏导数,则对于每一个点
| ${{{g}}_{\rm{g}}}(f) = {[\begin{array}{*{20}{c}} {{g_x}}&{{g_y}} \end{array}]^{\rm{T}}} = \left[ {\begin{array}{*{20}{c}} {{{\partial f} / {\partial x}}} \\ {{{\partial f} / {\partial y}}} \end{array}} \right] = \frac{{\partial f}}{{\partial x}}{{i}} + \frac{{\partial f}}{{\partial y}}{{j}}$ |
对于图像而言,图像灰度关于坐标(x,y)的函数不是连续的,对图像灰度计算X、Y方向上的偏导数需要采用差分方法,本文中采用中心差分方法。
以图像灰度对X求偏导数为例:
| $ \left\{ {\begin{array}{*{20}{l}} \displaystyle\frac{{\partial g(x,y)}}{{\partial x}} = {\Delta g(x,y) = g(1,y) - g(0,y),}\quad\quad{\;x = 0}\\ {\delta g(x,y) = \displaystyle\frac{{g(x + 1,y) - g(x - 1,y)}}{2},}\quad\quad{\;c - 1 > x > 0}\\ {\nabla g(x,y) = g(c - 1,y) - g(c - 2,y),}\quad\quad{\;x = c - 1} \end{array}} \right. $ |
式中:g(x,y)为图像坐标(x,y)处的灰度值;c为图像的列数。对于图像的左、右边界,分别采用向前差分和向后差分方法计算。
得到X方向和Y方向偏导数后,合成梯度大小为
| ${g_g}(x,y) = \sqrt {{{(\frac{{\partial g(x,y)}}{{\partial x}})}^2} + {{(\frac{{\partial g(x,y)}}{{\partial y}})}^2}} $ |
式中
计算动态阈值需要计算图像梯度的均值和标准差,均值
| $ \begin{aligned} &\quad\quad\ {\mu = \frac{1}{{r \times c}}\sum\limits_{i = 0}^{r - 1} {\sum\limits_{j = 0}^{c - 1} {{g_g}(i,j)} } }\\ & {\delta = \sqrt {\frac{1}{{r \times c}}\sum\limits_{i = 0}^{r - 1} {\sum\limits_{j = 0}^{c - 1} {{{({g_g}(i,j) - \mu )}^2}} } } } \end{aligned} $ |
X方向梯度归一化的方法如下:
| ${g_X} = \left\{ {\begin{array}{*{20}{l}} {\displaystyle\frac{{{g_X}}}{{{g_g}(x,y)}},}\quad\quad{{g_g}(x,y) > \xi } \\ {0,}\quad\quad{{g_g}(x,y) \leqslant \xi } \end{array}} \right.$ |
式中:
图11为梯度重心法定位虹膜中心的原理示意图。图中灰色圆形表示虹膜圆,矩形框表示人眼ROI矩形框。
|
Download:
|
| 图 11 优化算法定位虹膜中心示意 | |
对于图中虹膜边界上的一个点,其梯度方向是水平向右的,对于人眼ROI中的每一个像素点,都可以画出一条指向该点的矢量线,线的数量为
| $ n = r \times c - 1 $ |
可以看到,只有经过虹膜中心的线与梯度方向一致。数学上,对于矢量
| $ {{a}}\cdot{{b}}=\Vert {{a}}\Vert \Vert {{b}}\Vert {\rm{cos}}\theta $ |
式中
那么,对上述所有的像素点矢量线,计算其与梯度的点积,在矢量线长度一致的情况下,经过虹膜圆中心的矢量线显然会得到更大的结果。
得到图像梯度矢量域后,为了避免将非虹膜目标检测为虹膜中心的情况,同时考虑到虹膜区域是人眼ROI中最黑的区域,灰度值相对其他部分更低,根据灰度值对图像梯度矢量域取权重:
| $ \begin{aligned} & {{w_{{\rm{weight}}}} = 255 - g(i,j)}\\ & {{g_V} = \frac{1}{{r \times c}}\sum\limits_{i = 1}^{r \times c} {{w_{{\rm{weight}}}} \cdot {{({{{d}}_i} \cdot {{{{g}}_i}} )}^2}}} \end{aligned} $ |
式中
对人眼ROI梯度矢量域找到最大值,就是虹膜中心所在的位置:
| $({x_{{\rm{iris}}}},{y_{{\rm{iris}}}}) = \arg \max \;{{\rm{g}}_V}$ |
本文采用的优化梯度重心法定位虹膜中心的效果如图12所示。
|
Download:
|
| 图 12 优化的梯度重心法定位效果 | |
眼角点可视为角点,角点的检测算法有Harris角点法、KLT角点法和Susan角点法[12-13],其中,根据文献[13],Susan角点法在眼角点的定位上应用广泛。
在实验中,我们发现Susan角点法定位眼角点时,过分依赖于相似度阈值和非极大值抑制阈值的选取,即在不同光照条件、对比度情况下,需要设置不同的参数。该方法不能稳定地检测眼角点。因此在内眼角点的定位算法上,设计了一种优化的基于Dlib特征点定位的方法。
Dlib法一般用于人脸对齐等领域[14],本文中对该算法进行优化,应用到眼角点定位中。传统的Dlib特征点定位算法流程如图13所示,其人脸检测采用的是Dlib库中自带的人脸检测器。在实验过程中发现,该人脸检测器与特征点预测模型的加载十分耗时,无法实现实时的眼角点定位。
因此,本文将前述基于Haar-like特征的Adaboost算法应用到Dlib特征点定位算法中,并对Adaboost算法检测出的人脸ROI进行灰度化处理,输入特征点预测模型。传统的Dlib算法通常需要定位68个特征点,本文将特征点的数量降低为5个,大大提高了算法的运行效率。
|
Download:
|
| 图 13 传统Dlib人脸特征点定位算法流程 | |
采用传统Dlib算法与本文优化算法实现眼角点定位的效果图对比如图14所示。
|
Download:
|
| 图 14 不同算法眼角点定位效果对比 | |
本文实验将VS 2017作为开发平台,结合opencv和Dlib库函数,实现本文提出的优化算法,并与传统算法进行比较。运行环境配置为Dell Inspiron 15-3537,采集人脸图像的摄像头为笔记本自带的高清网络摄像头,编译环境均选择Release x64。
6.1 人脸定位算法比较人脸定位算法评价指标上,采用误检率进行评价:
| ${R_{{\rm{face}}}} = \frac{{{N_{{\rm{face}}}}}}{{{T_{{\rm{face}}}}}}$ |
式中:Rface为算法的误检率;Nface为误判为人脸的矩形框数;Tface为检测出的所有人脸框数。
经过对光照条件、人脸数量、肤色等不一致的样本进行统计分析,得到Adaboost算法的人脸平均误检率为15.8%;本文优化算法的人脸平均误检率为7.8%。本文基于肤色检测和Haar-like特征的Adaboost优化算法与传统算法相比,误检率降低了8%左右。
6.2 人眼定位算法比较人眼定位算法采用人眼检测正确率进行评价:
| ${R_{{\rm{eye}}}} = \frac{{{N_{{\rm{eye}}}}}}{{{T_{{\rm{eye}}}}}}$ |
式中:Reye为人眼检测正确率,Neye为正确检测的人眼框数,Teye为图像中所有的人眼数。
人眼定位算法比较试验依然是在上一步人脸检测基础上进行的。本文基于先验知识的优化人眼定位算法,只要人脸定位算法足够准确,便可以稳定、快速地定位人眼ROI位置,得到Adaboost算法的人眼检测正确率为77.86%;本文优化算法的人眼检测正确率为98.46%。本文优化算法比传统算法的人眼检测正确率提高了21%左右。
6.3 虹膜中心定位算法比较虹膜中心定位算法比较的样本集选取BioID FaceDataBase V1.2中的样本,该数据库的样本分辨率为384 px×286 px,样本格式为.pgm,并且提供了手动标记的左右眼中心坐标,方便我们进行算法的比较分析。
在虹膜中心定位算法中,由于不同样本中人脸距离摄像头的位置不一样,带来了双眼瞳距的不一致,对算法定位出的虹膜中心点与真实中心点的距离进行归一化处理:
| ${R_{{\rm{iris}}}} = \frac{{\sqrt[2]{{{{({C_{{\rm{e,}}x}} - {C_{{\rm{r}},x}})}^2} + {{({C_{{\rm{e,}}y}} - {C_{{\rm{r,}}y}})}^2}}}}}{{{d_{{\rm{iris}}}}}}$ |
式中:Riris为算法的准确度,Cr,x、Cr,y分别为手动标记虹膜中心在原图中的横、纵坐标,Ce,x、Ce,y分别为算法定位的虹膜中心在原图中的横、纵坐标,diris为手动标记的左、右眼虹膜中心欧氏距离。
传统的积分投影算法与本文的优化算法虹膜中心定位的平均误差如表1所示。尽管积分投影法的误差要低于本文优化算法,但由于经典算法的定位效果依赖于阈值的设置,不能实现稳定的定位效果。虹膜中心定位算法仍然推荐本文优化算法,两者误差仅为0.1左右。
|
|
表 1 传统算法与本文优化算法平均误差对比 |
由于内眼角点在人脸中并不是一个很明确的点,在医学上也没有标准的定义。内眼角点定位的准确性只能通过观察来判断,因此对于内眼角定位算法的比较,我们以算法的运行效率作为评价指标。
对于采集的原始人脸图像,对不同算法第一次编译运行正确定位出眼角点的运行时间进行统计,并取平均值,如表2所示。
|
|
表 2 单张图像第一次编译算法运行时间对比 |
由于程序编译的特殊性,对单张图片的处理需要加载人脸检测器、特征点预测模型等文件,经过试验统计,本文优化算法对相关资源文件的平均加载时间约为957 ms。当将算法应用到视频流时,预加载好资源文件,传统Dlib法视频帧处理算法平均用时203.3 ms,本文优化算法视频帧处理算法平均用时145 ms,每帧的运行时间提高了55 ms左右。
7 结论实现自然光源下对眼动向量的精确测量,是开发一套基于眼球驱动与控制的病床位姿调节系统的第一步。本文分析了经典的PCCR法应用到瘫痪病人眼动测量时的缺点,并基于“虹膜中心–内眼角”向量法,提出了一种面向瘫痪病人的优化且低成本的眼动测量方法。
1)根据眼动视觉测量方法的实现步骤,分别从人脸定位、人眼定位、虹膜中心定位和内眼角点定位几个方面,分析了经典的算法存在的问题,提出了本文的优化算法,并与传统算法进行比较。
2)实验表明,与传统算法相比,本文优化算法在人脸定位上将误检率降低了8%左右,人眼检测的准确率提高了21%左右,虹膜中心上提高了定位稳定性的同时,误差仅相差0.1左右;同时,视频帧眼角定位时间上缩短了55 ms左右,为实现一套实时准确的眼球驱动控制系统奠定了基础。
| [1] |
石建军, 许键. 眼动跟踪技术研究进展[J]. 光学仪器, 2019, 41(3): 87-94. ( 0)
|
| [2] |
姜婷婷, 吴茜, 徐亚苹, 等. 眼动追踪技术在国外信息行为研究中的应用[J]. 情报学报, 2020, 39(2): 217-230. DOI:10.3772/j.issn.1000-0135.2020.02.010 ( 0)
|
| [3] |
邓艳丽. 基于视觉的眼动特征研究[D]. 北京: 北京交通大学, 2017.
( 0)
|
| [4] |
朱琳, 王圣凯, 袁伟舜, 等. 眼动控制的交互式地图设计[J]. 武汉大学学报(信息科学版), 2020, 45(5): 736-743. ( 0)
|
| [5] |
梁梦颖. 基于眼动视频的注视点轨迹描述方法及应用研究[D]. 合肥: 安徽大学, 2020.
( 0)
|
| [6] |
ZHANG Yang, LYU Peihua, LU Xiaobo, et al. Face detection and alignment method for driver on highroad based on improved multi-task cascaded convolutional networks[J]. Multimedia tools and applications, 2019, 78(18): 26661-26679. DOI:10.1007/s11042-019-07836-2 ( 0)
|
| [7] |
HE Junfeng, PHAM K, VALLIAPPAN N, et al. On-device few-shot personalization for real-time gaze estimation[C]//Proceedings of 2019 IEEE/CVF International Conference on Computer Vision Workshop (ICCVW). Seoul, Korea (South): IEEE, 2019.
( 0)
|
| [8] |
GUO Tianchu, LIU Yongchao, ZHANG Hui, et al. A generalized and robust method towards practical gaze estimation on smart phone[C]//Proceedings of 2019 IEEE/CVF International Conference on Computer Vision Workshop (ICCV). Seoul, Korea (South): IEEE, 2019.
( 0)
|
| [9] |
PARK J H, PARK J B. A novel approach to the low cost real time eye mouse[J]. Computer standards & interfaces, 2016, 44: 169-176. ( 0)
|
| [10] |
TIMM F, BARTH E. Accurate eye centre localisation by means of gradients[C]//Proceedings of the 6th International Conference on Computer Vision Theory and Applications. Vilamoura, Algarve, Portugal: SciTePress, 2011: 125–130.
( 0)
|
| [11] |
AHMED N Y. Real-time accurate eye center localization for low-resolution grayscale images[J]. Journal of real-time image processing, 2021, 18(3): 193-220. ( 0)
|
| [12] |
VALENTI R, GEVERS T. Accurate eye center location and tracking using isophote curvature[C]//Proceedings of 2008 IEEE Conference on Computer Vision and Pattern Recognition. Anchorage, AK, USA: IEEE, 2008.
( 0)
|
| [13] |
DASGUPTA A, MANDLOI A, GEORGE A, et al. An improved algorithm for eye corner detection[C]//Proceedings of 2016 International Conference on Signal Processing and Communications (SPCOM). Bangalore, India: IEEE, 2016.
( 0)
|
| [14] |
张衡, 马明栋, 王得玉. 基于级联卷积网络的人脸特征点检测[J]. 南京邮电大学学报(自然科学版), 2019, 39(3): 104-110. ( 0)
|
2021, Vol. 48



0)