根据上述视线特征参数提取的要求,本节介绍一种满足视线估计要求的特征参数提取方法,该方法流程如图5.2所示。
首先,亮瞳与暗瞳图像相减得到差分图像,对差分图像进行滤波处理,得到瞳孔区域。由于得到的瞳孔区域存在干扰,需要根据形状和大小对瞳孔区域进行滤波,去除伪瞳孔区域,保留真实的瞳孔区域。在检测到的瞳孔区域的基础上,检测瞳孔区域的边缘,并在瞳孔区域附近基于灰度搜索角膜反射。在暗瞳图像上角膜反射是一块连续的高亮度区域,根据灰度阈值就可以分割出角膜反射。然后在分割出的角膜反射区域的基础上,在区域内求质心来定位角膜反射中心。由于角膜反射对瞳孔边缘的影响,改变了瞳孔的边缘,影响了瞳孔中心的定位精度,所以需要对瞳孔边缘做滤波,从而消除角膜反射对瞳孔边缘轮廓的影响。根据瞳孔和角膜反射区域位置的几种关系,分别采取对应的滤波算法,消除虚假的瞳孔边缘,保留真实的瞳孔边缘。然后在真实的瞳孔边缘基础上,通过椭圆拟合定位瞳孔中心,得到亚像素的中心坐标。最后提取视线特征矢量,得到视线参数。特征提取过程示意图如图5.3所示。
图5.2 检测方法流程
5.1.2.1 瞳孔区域定位
人眼视线特征参数提取首先要进行瞳孔区域定位。定位瞳孔区域其实就是找到特征参数检测的区域,是整个视线特征参数检测的前提和基础。瞳孔定位的过程:首先将亮瞳图像(见图5.4a)与暗瞳图像(见图5.4b)相减,得到差分图像(见图5.4c),然后对差分图像滤波,得到瞳孔区域。
根据视线追踪硬件系统帧同步卡输出的信号,采用单片机系统控制光源,使之交替亮暗,产生亮瞳图像和暗瞳图像隔帧交替出现的视频序列。对相邻两帧亮暗瞳图像进行差分即可得到差分图像。为了在差分图像中找到瞳孔区域,经过大量的图像采集与分析实验可以得到如下规律:
1)暗瞳区域的灰度值个体差异很小,是一个比较稳定的瞳孔特征;
2)亮瞳区域的灰度值个体差异较大,但其与暗瞳区域的灰度差值在光源固定的前提下,不会小于一个固定的阈值;
3)在光源固定的前提下,尽管角膜反射区域的大小个体差异较大,但角膜反射区域的灰度值个体差异很小;
4)在室内使用的前提下,室内照明亮度的变化对亮瞳区域的灰度值和脸部其他区域的灰度值有影响,但对暗瞳区域的灰度值和角膜反射区域的灰度值几乎没有影响。
经过对50位以上的使用者进行的眼睛特征检测,其亮瞳、暗瞳和角膜反射的灰度值如图5.5所示。另外,也对100位和150位使用者分别进行了统计,发现统计数据分布特点与50位使用者的数据分布基本相同,上下限一致。其原因是本节采用主动近红外光源进行照明,并且加了对应波长的滤光片,使拍摄的人脸图像受光照影响很小,图像灰度稳定。
可以根据亮瞳图像、暗瞳图像、差分图像3幅图像中瞳孔和角膜反射特征的先验知识,对差分图像进行滤波处理,从而得到瞳孔区域。根据上述的实验规律,可以发现瞳孔区域主要有以下3个特征:
1)暗瞳很暗,像素的灰度接近于0。暗瞳现象是由于瞳孔与光源的特定位置造成的,其他脸部区域在红外光源照射下都没有这样低的灰度值,即使是最暗的眉毛和鼻孔。由于对红外光线有漫反射,所以其灰度也通常不为0。
2)亮暗瞳区域具有明显的较大的灰度差,这是其他区域所不具备的特征,也是亮暗瞳差分方案定位瞳孔的主要依据。
3)瞳孔区域附近必然有角膜反射,这也是基于红外光源帮助定位瞳孔的原因之一。
图5.3 眼睛特征提取过程示意图
因此可以依据上述瞳孔区域特征来进行瞳孔区域定位,即在可能的角膜反射区域附近搜索暗瞳很暗但亮暗瞳灰度差较大的瞳孔区域。由于角膜反射区域的特征是“突变的亮点”,即呈现亮度很高、梯度很大的区域。所以在暗瞳图像中,从灰度和梯度两个方面即可以判断出可能的角膜反射区域。
在初步判定瞳孔区域后,还需要精确定位瞳孔。由于瞳孔区域内亮瞳孔的灰度值不是均匀一致的(1个使用者的实验数据如图5.6所示),所以使用单一的阈值不能有效识别整个瞳孔区域。因此,我们采用双阈值加区域连通的两步方法来进行瞳孔区域判断。
图5.4 亮瞳、暗瞳和差分图像
图5.5 亮瞳、暗瞳和角膜反射灰度值的个体差异
图5.6 瞳孔区域内亮瞳的灰度值分布
在定位时,首先识别具有较强亮暗瞳特征的像素点。在差分图像中,同时满足暗瞳像素灰度Idi,j小于暗瞳灰度阈值T1且差分图像像素灰度(Ibij-Idij)大于差分图像瞳孔灰度严阈值T2两个条件的像素(i,j)的集合,即构成差分图像中判定出的瞳孔区域R1。这样在差分图像中,同时满足暗瞳像素灰度Idij小于暗瞳灰度阈值T1且差分图像像素灰度(Ibij-Idij)大于差分图像瞳孔灰度宽阈值T3两个条件的像素(i,j)的集合,即构成差分图像中可能的瞳孔区域R2。容易知道,R1⊆R2。接下来,在R2中搜索与R1连通的像素。对于R2中的像素(i,j),如果存在R1中的像素(p,q)与其相邻,则将这些像素与R1一起加入规则滤波后的差分图像瞳孔区域R3。即把那些与强亮暗瞳特征点连通的较弱特征点也作为瞳孔区域像素,将迭代搜索到的R3附近属于R2的像素加入R3,直至R3收敛,即
R3=R1
搜索
直到R3收敛
在以上基于规则的滤波基础上,对差分图像做进一步几何滤波来得到瞳孔区域。在有些视线追踪参考文献[4,5]中,先通过对连通区域的分析得到所有的团块集合,然后根据训练好的支持矢量机(SVM)来进行瞳孔的识别。参考文献[4,5]采集若干人眼的样本,经过剪切、旋转、尺度归一化等步骤,得到归一化的人眼训练样本。另外,采集若干非人眼样本,与人眼样本一起构成训练支持矢量机所需的正样本和负样本。然后训练支持矢量机(SVM)得到分类器,为了提高分类器的分类效果,要对训练好的支持矢量机分类器进行校正。用另外采集的若干人眼样本和非人眼样本,测试分类器,分类结果正确的样本丢弃,分类结果错误的样本加入训练样本重新训练分类器。此过程可以迭代,直至所有测试样本都分类正确。
而这里经过上述的基于规则的滤波已经过滤了多数的干扰点,在连通性分析之后,再进行几何滤波,就可以满足定位瞳孔的要求了,从而避免了支持矢量机的训练过程和识别误差。将面积、宽度、高度、宽高比满足条件的团块判断为瞳孔,如图5.7所示。滤波后的瞳孔区域为B。
搜索眼睛区域后,再校验眼睛区域的合理性。如果团块集合B中团块数量|B|=2,也就是正好得到左右2个瞳孔区域,即数量满足条件,则认为定位是正确的。如果不满足条件,则调整差分图像瞳孔灰度严阈值T2和差分图像瞳孔灰度宽阈值T3,再次进行规则滤波和几何滤波。当得到的瞳孔区域多于两个,即|B|>2时,则说明对于这个使用者来说,差分图像瞳孔阈值设置过低,“差分出了”一些伪瞳孔区域。此时,需提高差分图像瞳孔阈值T2、T3,要再次定位。相反地,当得到的瞳孔区域少于两个,即|B|<2时,则说明对于这个使用者来说,差分图像瞳孔阈值设置过高,“差分掉了”真正的瞳孔区域。此时,需要降低差分图像瞳孔阈值T2、T3,要再次定位。循环这个过程就可以搜索到最符合瞳孔特点的两个区域作为左右瞳孔区域。当重复滤波次数大于3时,则返回而不再进行之后的处理。
图5.7 滤波后的瞳孔区域
如果数量条件满足,则继续判断左右瞳孔距离‖bL-bR‖是否在瞳孔距离的下阈值与瞳孔距离的上阈值之间,若不满足,则返回而不再进行之后的处理。
在确定瞳孔区域后,还需要消除瞳孔运动对差分图像瞳孔区域的影响。瞳孔运动会造成亮暗瞳图像瞳孔区域不完全重合,使得差分图像瞳孔区域不完整。这是造成运动瞳孔定位误差的主要因素。这里,可通过迭代扩展的方式还原运动瞳孔区域,其规则如下:
R4=B
搜索
直到R4收敛
对得到的瞳孔区域B进行扩展,在与B边界相邻的像素中,迭代搜索暗瞳像素灰度Idij小于暗瞳灰度阈值T1的像素,并将其加入扩展后的瞳孔区域R4,直至R4收敛。至此,即得到精确的瞳孔区域。
5.1.2.2 角膜反射区域及瞳孔中心定位
视线参数检测需定位瞳孔中心和角膜反射中心,检测到瞳孔区域后,还需分割角膜反射点。在差分图像检测到瞳孔区域后,可以用暗瞳图像确定对应的瞳孔区域,在瞳孔区域R4附近搜索角膜反射。在R4附近小于距离阈值的像素集合中,搜索到的满足灰度Idij大于角膜反射灰度阈值条件的像素,作为初步判定的角膜反射区域R5的像素。由于外部光源有时会在瞳孔附近产生其他一些亮斑,因此还需要对R5进行连通性分析,排除干扰。最终,将找到的角膜反射特征——面积、宽高比,满足条件的团块判断为角膜反射区域。角膜反射区域Bpur如图5.8a所示。
定位角膜反射区域中心后,还要计算角膜反射区域中心。求角膜反射中心的方法一般有两种:一种是先求角膜反射的轮廓,然后对角膜反射边缘进行椭圆拟合,再通过拟合椭圆的中心估计角膜反射区域中心;另一种是通过质心来估计角膜反射区域中心。在相关视线追踪参考文献[7]中,首先对角膜反射区域进行二值分割,然后在二值图像中求角膜反射区域的质心,以质心作为角膜反射区域的中心。另外,参考文献[7]中通过500个样本对两种方法的效果进行了比较,结果是两种方法精度相当。由于角膜反射区域边界的不确定性,致使图像二值化时采用的阈值对最后的角膜反射区域中心的估计结果有较大影响。我们通过以下两种方法来减小角膜反射区域中心的估计误差。
(1)方法一
采用多个阈值先分别分割出多个角膜反射区域,然后将对各个区域分别求质心后的平均结果作为角膜反射区域中心。
(2)方法二
分割出多个角膜反射区域后,不在二值图像中,而是在暗瞳图像中求质心。这是因为角膜反射区域中心是角膜反射区域中最亮的部分,越往边界,亮度越低,这样就可以减小模糊的边界区域对质心定位的影响。其具体方法如下:
首先,采用多个阈值分别分割出多个角膜反射区域,即
然后,对各个区域分别求质心,并将各个区域质心的平均值作为角膜反射区域中心,求取质心公式如下:
(www.daowen.com)
式中,(ikc,jkc)分别为区域bpkur的质心;(ic,jc)为最后估计的角膜反射区域中心(见图5.8b)。
在确定瞳孔区域后,再检测差分图像瞳孔区域的边缘。对R4进行二值图像边缘检测。对于瞳孔区域中的像素,如果在其相邻的像素中存在不属于瞳孔的像素,则为边缘像素,R6为瞳孔边缘检测的结果(见图5.8c)。
角膜反射是造成瞳孔轮廓改变的主要因素,是影响瞳孔中心定位精度的主要因素之一。参考文献[8]中,通过初次椭圆拟合得到的椭圆边界对原始边缘进行滤波,按一定比例过滤掉距离椭圆边界比较远的原始边缘。通过这个迭代过程,就可以去除部分远离椭圆边界的干扰边缘,可以在一部分情况下减小角膜反射对瞳孔椭圆拟合的影响,但是该方法存在以下几个问题:
1)当角膜反射在瞳孔内部而不与瞳孔轮廓相交的情况下,会造成错误滤波,进而造成瞳孔中心定位的不准确;
2)有些使用者的角膜反射较大,而瞳孔较小,这种情况下该滤波算法不能有效地消除由角膜反射产生的边缘;
3)迭代方法效率较低,会增加处理时间。
为了有效消除角膜反射对瞳孔椭圆拟合的影响,首先应判断角膜反射与瞳孔椭圆的相对位置。当角膜反射与瞳孔椭圆相离时,角膜反射对瞳孔轮廓无影响,不需要进行滤波。当角膜反射与瞳孔椭圆相交或包含时,角膜反射改变瞳孔轮廓,需要进行滤波。理想的实心椭圆区域是一个有界严凸集,其边界是一个具有严格凸性的全局闭凸曲线。即使存在采样误差和离散误差,图像中瞳孔的边界也应该是一个全局闭凸曲线。正是由于角膜反射的存在,致使对瞳孔边界产生了较大的影响。通过对瞳孔边界求凸壳来还原瞳孔区域,然后用还原后的瞳孔区域去判断与角膜反射的位置关系。我们采用一种简单快速的凸壳检测算法进行检测,其时间复杂度为1lgN[9]。
R7=convex hull(R6) (5.5)
式中,R7为R6的凸壳;convex hull()为凸壳检测函数。
在此基础上,采用了一种基于径向距离的瞳孔边缘专用滤波算法——RDPEF算法。其规则如下:
如果R7∩bKpur≠Ø
否则
R7=R6
首先,判断通过凸壳算法(凸壳是指包含一个平面点集的最小凸区域)还原后的瞳孔区域R7与角膜反射区域bKpur的位置关系。当角膜反射区域与瞳孔椭圆相离时,则不进行滤波。当角膜反射区域bKpur与瞳孔椭圆R7相交或包含时,则进行滤波。
在瞳孔边缘R6中,以角膜反射中心(ic,jc)为圆心,在每一个半径方向上,如果存在两点(i,j)和(p,q),且(i,j)到角膜反射区域中心(ic,jc)的直线的斜率(j-jc)/(i-ic)与(p,q)到角膜反射区中心(ic,jc)的直线的斜率(q-jc)/(p-ic)相同。即(i,j)和(p,q)在同一半径方向上,那么远端边缘点为瞳孔形成的边缘,近端边缘点为角膜反射形成的边缘。过滤掉角膜反射形成的边缘后的瞳孔边缘如图5.8d所示。RDPEF算法示意图如图5.9所示。
接下来,利用椭圆拟合来定位瞳孔中心。在现有的一些文献资料中,参考文献[10]中采用在亮瞳图像中利用椭圆拟合来定位瞳孔中心,参考文献[11]中采用在暗瞳图像中利用椭圆拟合来定位瞳孔中心,参考文献[12]中采用等照度线的方法定位瞳孔中心。等照度线是图像中亮度相等的点连线。等照度线互相不交叉,可以用等照度线分割瞳孔区域。
本节的瞳孔检测在差分图像中用椭圆拟合来定位瞳孔中心,使噪声边缘更少。具体实施采用参考文献[13]中的最小二乘非迭代椭圆拟合算法。其椭圆拟合过程只需要6个以上的边缘点就可以对其进行拟合。边缘点不需要覆盖椭圆的各个象限。此方法适合滤波以后的瞳孔边缘。椭圆拟合的另一个好处是可以得到亚像素的中心坐标[14]。拟合得到的瞳孔椭圆
如图5.8e所示,瞳孔中心如图5.8b所示。视线特征矢量Lt为
式中,(Δx,Δy)为瞳孔中心到角膜反射的矢量像素,(Δx,Δy)=(ip,jp)-(ic-jc);amajor/aminor为瞳孔椭圆长短轴的比;θ为瞳孔椭圆长轴与垂直方向的夹角;(ic,jc)为角膜反射中心在图像中的位置(像素)。使用者1的部分数据见表5.1,其中Lt为注视屏幕像素点为(xG,yG)时对应的特征矢量。
表5.1 使用者1的部分数据
图5.8 人眼特征提取过程
接下来,校验瞳孔中心到角膜反射区域中心矢量的合理性。校验时,首先判断特征矢量长度‖(iP,JP)-(iC-jC)‖是否满足条件。如果不满足条件,则返回,不进行下面的处理;如果满足条件,则用本次使用者实际定位后的瞳孔灰度去设定差分图像瞳孔灰度阈值T2、
图5.9 边缘滤波RDPEF算法示意图
T3,最后的检测结果如图5.8f所示。
图5.9 (续)
以上参数提取过程是在相邻两帧中完成的,尽管在接下来的视频序列中可以重复进行以上的参数提取过程,以得到实时的视线参数。但是这样做有下面两个问题:
1)每次都要在整幅图像中搜索瞳孔,效率低、时间长,影响系统的实时性;
2)由于没有使用瞳孔的历史信息,所以使瞳孔定位的鲁棒性差,而且对外部光照、眼睛角度、眨眼等情况的适应性差,不能满足系统的鲁棒性要求。
在t-1时刻成功地进行特征参数提取后,在t时刻先在t-1时刻确定的瞳孔位置附近进行特征参数提取。如果不成功,则加大搜索范围。设置优先搜索范围可以加快搜索速度,减少平均特征参数提取的时间。这是因为人在正常注视屏幕信息的情况下,眼睛运动幅度较小,绝大多数的情况下都可以在上一时刻眼睛位置的附近找到这一时刻的眼睛位置。即遵循“照顾眼睛绝大多数运动情况”的原则,对于个别的较大范围运动,采取依次放大范围进行搜索的方式,这样可以大大提高平均搜索效率。
5.1.2.3 人脸定位
为了在下一帧搜索中更有效地找到双眼位置,需要定位人脸的位置,下一帧搜索时只在人脸中的可能区域内搜索眼睛。
根据双眼位置确定人脸位置,左眼坐标记为M=(xL,yL),右眼坐标记为N=(xR,yR),两眼之间距离记为2L,人脸位置为FLTFRTFRBFLB(见图5.10)。其推导过程如下:如图5.10所示,其中,,连接FRTN,作NH1⊥FRTH1,则∠FRTNH1=β=45°-α,则
则
整理得
同理可得,由
则
整理得
其他点类似可得,整理4点坐标为
图5.10 人脸区域
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。