胡 锴, 穆平安, 黄世龙
(上海理工大学 光电信息与计算机工程学院,上海 200093)
视线追踪技术是一种在人机交互方面具有发展前景的一项计算机视觉技术[1],通过使用视线追踪技术,可以帮助手臂残疾的人士完成计算机的使用[2],为人们提供一种新的人机交互方式。另外,视线追踪在注意力检测、商品广告吸引力评价[3]、人类行为学分析等方面也具有较好的发展前景。本文对基于角膜反射法[4~6]的视线追踪系统进行研究,在此基础上对瞳孔中心的定位算法进行改进,并提出一种基于径向基插值法的视线落点校正方法来对视线落点进行校正,以此来提高视线落点追踪的精度。
视线追踪系统的硬件主要有:1个摄像头、5个波长850 nm的红外LED、显示屏和计算机。
摄像头位于屏幕前方,调整摄像头方向使其对准使用者眼部区域,实验环境演示如图1所示。
图1 实验环境演示图
摄像机输出图像的分辨率为640 pixel×480 pixel,摄像机镜头为焦距16 mm,视角20°的500万像素无畸变镜头。红外LED功率均为0.1 W,其中4个红外LED分别位于显示器屏幕的4个角上,称为参照LED,1个红外LED位固定在摄像头镜头下方位置,称为摄像头LED。摄像头内装有1个850 nm的窄带滤波片,只允许波长850 nm左右的红外辐射通过。测试者头部距离屏幕距离约40 cm,屏幕尺寸为34 cm×19 cm,分辨率为1 920 pixel×1 080 pixel。
红外辐射源在角膜上形成的反射光斑也被称为普尔钦斑,该斑亮度高,易于识别和定位,并且在850 nm波长的红外辐射照射下,虹膜区域的成像比可见光照射下的成像更加清晰,虹膜与瞳孔的灰度图像对比度更为明显,有利于后续瞳孔区域的定位和瞳孔中心计算。
通过摄像头获得图像后,为了通过图像中的信息计算视线在屏幕上的落点,首先需要在图像中定位出瞳孔区域,然后在瞳孔区域中定位瞳孔中心点和参照LED的反射光斑的位置[7~9]。
瞳孔区域定位如图2所示。首先对获取的一帧图像进行灰度化,再采用基于Hcar-like特征的AdaBoost级联人眼检测分类器进行人眼检测,获得人眼图像如图2(a)所示;再对获取的人眼区域采用经验阈值进行二值化,使得瞳孔区域和其他区域分离出来,如图2(b);对于阈值处理之后的图像,进行开运算去除睫毛的干扰,然后对图像中连通域的面积进行筛选,确定出瞳孔部分的连通域,如图2(c)所示;最后以该连通域的重心为中心,截取出瞳孔区域图像如图2(d)。
图2 瞳孔区域定位
对于瞳孔中心的定位:首先对第3.1节获得的图像进行基于经验阈值的二值化,将瞳孔和其他区域分离开,如图3(a);之后对其进行边缘检测获得边缘轮廓图像,如图3(b),可以看到除了瞳孔边缘轮廓外,还有反射光斑的边缘和其他噪声的边缘;通过轮廓的面积筛选出瞳孔边缘轮廓如图3(c),从图3(c)中可以观察到,由于反射光斑的干扰,导致部分边缘出现向内凹陷的情况;如果直接对边缘进行最小二乘法椭圆拟合会使得瞳孔中心定位产生较大的误差。为了提高瞳孔中心定位精度,本文提出一种基于距离的边缘点筛选方法剔除瞳孔的伪边缘。
图3 瞳孔轮廓提取
图4 轮廓各点与图像中心距离
用这种方法对瞳孔中心进行定位,见图5。瞳孔边缘点进行筛选后获得的边缘图像如图5(a)所示,可见通过该方法将内凹的边缘轮廓成功的剔除了。最后对图5(a)中的点进行最小二乘椭圆拟合,获得椭圆的中心位置如图5(b)所示。
图5 瞳孔中心定位
对于4个参照LED反射光斑的定位:首先对瞳孔区域图像进行基于经验阈值的二值化,将红外反射光斑和其余区域分离开如图6所示。
图6 亮斑的定位
定位其中面积最大的亮点,最大面积的亮点对应摄像头LED,因为该LED离人眼最近,所以形成的反射光斑也最大,为了剔除其余由于眼镜反光带来的干扰亮斑的影响,只对该亮点上方一定面积的矩形区域进行检测,来定位4个参照LED的反射光斑。计算这5个LED光斑的重心来获得它们的所对应的位置坐标。
获得4个参照LED反射光斑所对应的坐标和瞳孔中心坐标之后,通过交比不变性原理[10]计算视线的落点。
交比不变性是射影几何中一项重要的基本定理,原理如下:如图7所示,过点P放射出4条直线分别与直线l相交于A、B、C、D等4点, 与直线l1相交于A1、B1、C1、D1等4点。则存在如下交比不变关系:
图7 交比不变性原理
(A,D;B,C)=(A1,D1;B1,C1)
(1)
其中:
(2)
(3)
图8是视线落点计算模型,主要由3个平面构成,一是显示器屏幕平面,其中RI1、RI2、RI3、RI4为屏幕四角上的参照LED;二是角膜反射平面,在这里将角膜反射面理想化成了一个完美的平面,V1、V2、V3、V4为4个参照LED在角膜上的反射光斑;三是摄像机成像平面,U1、U2、U3、U4是参照LED的反射光斑在摄像机成像面上所成的像。P0为瞳孔中心,连接瞳孔中心和眼球球心形成一条直线,这条直线为眼球的光轴[11],将光轴的方向视为视线的方向,延长光轴直线交屏幕平面于点P,则P点即可视为视线的落点,P1为瞳孔中心在成像平面上所成的像。
图8 视线落点计算模型
由于角膜平面上的各点是屏幕平面上各点的映射,将交比不变性原理推广到三维空间中,则角膜平面上各点和屏幕平面上对应各点之间存在交比不变关系。同理,角膜平面上各点和摄像机成像平面上对应各点之间也存在交比不变关系。
图9 成像平面交比模型
(4)
(5)
获得了成像平面上参照LED组成的四边形两条边上四点的交比值,再计算屏幕平面上对应4点的交比值,通过这两对平面之间的交比不变性,计算视线的落点。
图10是屏幕平面交比模型,设屏幕长为w,高为h,P=(xp,yp)是4个是视线的落点,e是屏幕对角线交点,过点P做竖直线和水平线交直线段RI1RI2和RI2RI4于点N1、M1,过点e做竖直线和水平线与RI1RI2和RI2RI4于点N2和M2,则可知基点对RI1RI2和基点对RI2RI4的交比值如下:
图10 屏幕平面交比模型
(6)
(7)
由交比不变性,屏幕平面上边缘各点和角膜平面上对应点之间存在相同的交比,角膜平面上各点和摄像机成像平面上对应的各点之间存在相同的交比,则屏幕平面和成像平面之间存在如下关系:
(8)
(9)
由此即可计算的视线的粗略落点。
该系统预测的视线落点和实际的视线落点之间存在较大的误差,这个误差主要由两个原因导致的:一是由于角膜表面是个球面[12],而在视线落点计算模型中将其视为一个理想平面;二是由于人眼视轴和光轴之间存在一个夹角,且该角的大小因人而异[13],但该视线计算模型中未对视轴和光轴进行区分。为了提高视线落点追踪系统的精度,需要通过两次校正来减小误差[14]。
为了消去角膜表面并非平面而导致的误差,需要将参照LED的光斑位置映射到平面反射时的光斑位置。如图11所示,Uri是参照LED在眼角膜上的实际反射光斑;Uvi是经过映射之后的虚拟光斑;这里i=1,2,3,4;Up为瞳孔中心,Ur0是摄像头LED的反射光斑。摄像头LED发出的红外辐射照射在角膜上,再经角膜反射进入摄像头,因为该LED在角膜上的入射和反射光路近乎平行,所以可以将该LED的光斑位置视为角膜和假想平面的切点,而切点位置不变,即可通过公式(10)校正其余光斑的位置,通常α>1,α<2.5。
图11 Alpha参数校正
Uvi=Ur0+αi(Uri-Ur0)
i=1,2,3,4
(10)
为了获得每个参照LED所对应的参数αi,依次注视屏幕角上的每个LED光源,由于此时人眼直视LED,因此瞳孔中心点Up会与该LED的虚拟光斑Uvi重合,此时可以通过公式(11)获得对应参照LED的参数αi,
i=1,2,3,4
(11)
对于之后的每一帧图像采用公式(10)对光斑位置进行校正从而完成映射。
为校正视轴和光轴夹角所产生的误差,通过在预测的视线落点上添加一个位移矢量来其进行校正[15]:将屏幕均分为Y轴向6行X轴向8列共48个区域,将每个区域的中心作为校准点,依次注视每个校准点的中心以获得每个点位置处的预测视线落点和实际视线落点的误差值,将误差值分解为X向误差和Y向误差,图12为屏幕上每个校准点的X向误差。
图12 校准点的X轴向误差
目前关于视线落点追踪系统的校正研究效果较好的方法为基于区域的矢量校正法[16],视线落在哪个区域里,就用该区域的误差矢量来对视线落点进行校正,当视线落在某个区域的中心时,误差最小,当视线落点在区域的边界时,误差较大。
本文提出基于插值的矢量校正方法:对平面内48个误差值进行二维插值获得插值曲面,使用该曲面对视线落点进行校正。基于高斯函数的径向基插值方法[17],获得的48个视线注视点为中心,建立48个高斯径向基函数:
φi(x,y)=e[(x-xi)2+(y-yi)]1/2
i=1,2…48
(12)
式中:xi和yi分别是第i个校准点的X坐标和Y坐标。
曲面插值函数为48个径向基函数的线组合:
(13)
(14)
令φi,p=φi(xp,yp),i=1,2,3…48,则上式方程组可以改写成式(15):
(15)
将式(15)代入公式(13)即可得到落点的X向坐标校正函数,图13为获得的插值曲面。同理,可计算得到落点的Y向坐标校正函数。以插值曲面对应的值作为校正值,对视线落点的X向和Y向坐标进行校正。
图13 X向误差插值曲面
本文采用4种不同的校正方式对视线落点进行校正,并对校正后误差的大小进行比较,4种校正方式包括:不对视线落点进行校正,只进行α参数校正,进行α参数校正后进行基于区域的矢量校正,再进行基于插值的矢量校正。测试者共10人,每位测试者用每种校正方式校正视线落点后,计算屏幕上随机分布的60个位点处的误差大小,计算并且保留60个位点的X向和Y向误差的平均值。图14为10个被试4种校正方式校正后X向误差的对比图。
由图14可知基于插值的校正算法相较于基于区域的校正算法而言,对于X向误差的校正效果更好;10个被试几种方法校正前后误差都减小了,但减小的幅度呈现出明显的离散性,这种离散性主要是由于未进行校正的被试误差呈现离散性导致的,推测是由于被试头部与屏幕距离不一,使得10个被试间α参数相差较大导致的。
图14 X向误差对比
表1为4种校正方法对注视点的X向和Y向坐标进行校正之后,预测的视线落点和实际视线落点之间误差的平均值和方差。
表1 平均误差和方差对比
基于插值的校正相对于基于区域的校正而言,X向误差减小了35.8%,Y向误差减小了53.3%,方差也相应的明显减小,追踪效果更加稳定。
对于经过插值矢量校正之后的视线追踪系统,计算可得视线落点的X向平均误差为1.64 mm,Y向平均误差为1.70 mm。对于视线方向角的平均误差X向为14′5″,Y向为14′36″。
本文主要对基于角膜反射法的视线追踪系统的视线落点校正方法进行了研究,首先使用人眼检测算法对人眼区域进行定位,再对连通域进行筛选定位瞳孔区域,对于瞳孔中心的定位,采用了轮廓点剔除的方法以提高定位的抗干扰能力,之后应用交比不变性原理计算出视线在屏幕上的粗略落点,在误差校准方面,应用高斯径向基插值的方法,来对视线落点的X向和Y向坐标进行校正。实验结果表明:改方法校正后X向误差降低了35.8%,Y向误差降低了53.3%,该方法可以有效地提高视线追踪系统的精度。但该算法的视线落点校正过程过于复杂、耗时,有待进一步优化。