抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

课程名称:虚拟现实与数字娱乐
报告名称:眼球跟踪技术
日期:2021 年 5 月 20 日

一、简介

​ 眼球追踪是一项科学应用技术,主要是研究眼球运动信息的获取、建模和模拟。实现眼球追踪有三种方式:一是根据眼球和眼球周边的特征变化进行跟踪,二是根据虹膜角度变化进行跟踪,三是主动投射红外线等光束到虹膜来提取特征。获取眼球运动信息的设备可以是红外设备之外,也可以是图像采集设备,甚至可以是一般电脑或手机上的摄像头。

​ 目前的虚拟现实和增强现实交互方式仍然存在一些比较大的局限。3D手势操作很有前景,但手臂和肩膀很快就会感觉很累。疲惫的手臂会让人们的交互慢下来,并丢失追踪精度。声控适合于某些场景,但这种控制方式的响应速度很慢和不准确。头部运动现在正作为主要的控制方式,但不停地转动头部和倾斜脖子也会让人感到疲惫,并可能会造成脖子损伤。而眼球运动的精细肌肉则对疲劳免疫。并且眼动追踪技术的响应速度很快,对视线的追踪很准确

​ 在VR领域中,对人眼位置的检测能够为当前所处视角提供最佳的3D效果,使VR头显呈现出的图像更自然、延迟更小。同时,由于眼球追踪技术可以获知人眼的真实注视点,从而得到虚拟物体上视点位置的景深。眼球追踪与头部转动协同控制视角变化,可让人摆脱不自然头部转动产生的画面晃动。因此,眼球追踪技术被大部分VR研究者认为,这是解决VR头显设备眩晕问题的突破之处。

​ 通过“注视点渲染技术”(Foveated Rendering),眼动追踪技术可以节省设备的运算资源。在现实生活中,我们观看事物的时候,通常都是聚焦于某一个事物上,而边缘环境的分辨率则会大幅度降低。虚拟现实和增强现实系统可以通过对注视点的获取,只渲染焦点的全分辨率,对于其他边缘区域则以较低分辨率进行渲染,从而大幅度节省了运算资源。

​ 并且眼球追踪可以生成凝视数据,提供用户状态和眼动行为的信息。凝视数据可以用来准确地理解用户如何互动以及互动的原因,可以实现用户通过眼睛注视位置的移动和凝视时间来控制设备实现点击、滚动等功能(Gaze Interface);也可以通过凝视数据分析用户的注意力集中点以及分析用户的兴趣点等(Gaze Analysis)。

二、基本原理

​ 人看向不同方向时,眼部会有细微的变化,这些变化会产生可以提取的特征,计算机可以通过图像捕捉或扫描等方式,提取这些特征,从而实时追踪眼睛的变化。

​ 人类的眼球结构决定了,单眼的实现方向可以通过眼球中心和瞳孔的连线来得到,而瞳孔的位置可以通过对虹膜识别和提取中心点得到。而同时得到两只眼睛的实现方向,就可以通过两线交点得到用户的注视点。

​ 对于VR中的注视点提取,还有一个关键的问题,如下图,用户的成像屏幕可能在离自己较近的地方,但由于VR中立体视觉的应用,用户真正的注视点可能并不在成像屏幕上,我们可以通过结合虚拟现实环境中虚拟物体的深度信息,构建一条虚拟线,可以从眼睛的方向追踪到虚拟世界中用户正在注释的物体上。

图片alt

三、应用领域

​ 视线追踪技术在VR领域的应用方式有:

1. 图形渲染资源分配:

​ 通过使用VR中的眼动跟踪信息,可以执行所谓的“中心凹形渲染”,即在用户注视的方向分配更多的图形渲染资源。这样可以使得给定的渲染功率可以提供更高质量的输出,降低所需的处理能力,还可以创建一个更加身临其境的环境,在其中虚拟世界可以更紧密地表示现实世界。同时,这样的渲染方式还可以在VR虚拟环境中实现景深效果,更贴近人眼在现实世界中的成像特点。

图片alt

2. 数据预取:

​ 某些VR数据的读取和修改等操作需要一定的时间才能完成。如果用户在特定方向上扫视,那在用户选择要与之交互之前,数据读取可以在后台提前进行。

3. 多模式智能3D对象选择:

​ 对于VR中的虚拟场景,用户很难在杂乱的环境中选定特定的小对象。通过把视线信息与控制器输入组合结合,可以一定程度上消除选择歧义,让用户更准确地选择对象。

4. 自动头显校准:

​ 获取用户眼睛注视位置,可以使得头显设备可以更好地调整自己的图像输出参数,以获得最佳的用户舒适度。

5. 平衡操作:

前庭眼反射是一种众所周知的自动反应,会把眼球运动与前庭系统的变化联系起来。获取眼睛运动和头显运动将可以对用户前庭系统的可能状态进行判断,可能可以实现在VR使用期间减少晕动症。

四、具体算法

1. 视线估计方法综述:

​ 视线估计系统是典型的机器视觉系统,即让机器通过图像或者视频数据,计算出使用者的视线方向。视线估计方法根据对人体的侵害性可以分为侵入式视线估计方法和非侵入式视线估计方法。

​ 侵入式视线估计方法包括机械记录法、电流记录法、电磁感应法和反射光记录法。这些方法大多具有较高的测量精度,但是由于在测试过程中与被测试者产生身体接触,而且设备复杂昂贵,作用距离短,因此降低了使用舒适性和应用范围。所以在实际应用领域中,这些方法逐渐被其更加舒适自然的非侵入视线估计方法所取代。

​ 非侵入式视线估计技术由于能够兼顾精度舒适性,并且适合嵌入到产品中,具有广泛的应用前景和实用价值,因此是目前研究的主要方向。但是这种基于图像信息的视线估计方法的精度容易受到诸如图像分辨率、光照环境、使用者个体差异和头部运动等因素的影响。非侵入式视线估计方法通常使用摄像机或照相机记载眼部运动,包括:

​ 1. 基于角膜反射光斑方法

​ 2. 基于神经网络的映射函数方法

​ 3. 基于投影变换方法

​ 基于角膜反射光斑方法需要外加照明光源,由于角膜的凸型结构,当视线发生变化时,角膜对来自固定光源发出的光的反射光斑也是变化的。利用相机采集到的角膜上反射光斑的分布就能得到眼球运动信息,进而得到视线方向。这种方法精度较高,是目前比较常用视线测量方法之一。日本开发的眼控鼠标就是基于这种原理。这种方法的缺点是外加光源对测试者有一定的干扰性,视线估计精度也容易受到环境光线的影响。

图片alt

​ 上图给出了基于神经网络的映射函数进行视线估计的神经网络结构,将眼睛区域图像作为神经网络的输入,并利用高斯编码处理输出单元得到视线方向估计。这种方法并不借助眼睛的生理解剖模型,而是利用整幅图像的信息构造与注视点之间的单一映射。但是这类方法不仅需要大量的训练样本,而且样本维数较大,因此网络训练时间较长。同时训练好的网络缺少一定的适应能力,外界条件稍有改变都会显著影响映射的结果,因此不具备良好的推广性。

​ 根据眼球结构和成像原理,人们提出了多种用于视线估计的3D模型。在Le Grand模型中,光轴定义为从瞳孔中心到角膜曲率中心的连线。在Wang的模型中,视线近似认为是眼球中心与虹膜中心连线。基于投影变换的视线估计方法只要根据二维图像信息求出视线在3D空间中的方向,再根据测试者和相机的相对位置,就可以得到视线在空间中的位置。但这类方法对头部和眼睛运动比较敏感,如果图像分辨率较低,则会极大的影响最终结果,同时这种方法涉及的模型较为复杂,计算量较大。

​ 上述方法中,精度较高的基于角膜反射光斑方法需要外加光源照射眼睛区域,存在一定的侵入性伤害性,对测试距离和测试环境也有严格的限制;映射方法适合处理注视与否问题,但是作为视线估计方法精度较低,而且缺少适应能力,外界条件稍有改变都会显著影响映射的结果;基于投影变换方法涉及的模型较为复杂计算量较大,而且要求图像具有较高的分辨率。

​ 我阅读的论文针对上述方法中的不足,提出了一种结合了投影变换和神经网络的视线方向估算方法。在无特殊光源和头部固定装置的条件下仅使用单相机作为采集设备。计算模拟结果表明该算法可以有效地提高人眼视线估计精度。

2. 视线估计流程:

​ 视线估计系统工作流程图如下:

图片alt

​ 本次技术点分析,我针对以上的流程重点学习了虹膜定位视线估计的原理和算法。

4. 虹膜定位

​ 由于我们在进行视线分析时需要获取瞳孔位置,因此我们在进行人眼定位之后,需要进行虹膜的定位(虹膜中心既是瞳孔)。东方人的虹膜颜色大都为黑色或深褐色,灰度值较低,和皮肤、巩膜的灰度值差异较大,因此利用恰当的阈值二值化分割出虹膜区域是最直观简单的方法。二值化计算代价小、速度快,非常具有实用价值。从输入图像 $f$ 到输出图像 $f’$ 的二值变换可以表示为(其中 $T$ 是阈值):

图片alt

​ 选择恰当的阈值是图像分割和提取虹膜的关键,但是由于图像的噪声、环境光强的变化或其他一些因素,采用恒定的阈值对所有的图像进行去二值化处理是不合理的,对每幅图像找到一个全局自适应阈值分割虹膜区域比较合理。

​ 自适应阈值可以通过图像灰度的直方图找到。灰度直方图是灰度级的函数,它表示图像中具有每种灰度级的像素的个数,反映图像中每种灰度出现的频率。在得到图像直方图后,图像阈值由以下公式计算:
$$
\theta_e = \frac{H}{3}        
H = \frac{\sum(gN_g)}{\sum N_g}
$$
​ 其中 $g$ 为像素灰度, $N_g$ 为图像中灰度为 $g$ 的像素个数, $\theta_e$ 为图像阈值。当某一个像素的灰度值低于 $\theta_e$ 时,则令该像素灰度为0,反之为1。然后利用形态学算子(比如闭操作),将虹膜区域中可能存在的空隙填满。

​ 二值化后的图像中虹膜区域的像素值都为0,将图像像素值沿纵向进行累加,以最小值对应的水平位置为中心,用边长为图像宽度的矩形窗口完成对虹膜的定位。

图片alt

​ 在对虹膜进行定位之后,通常我们还需要对虹膜进行椭圆拟合,拟合时可以使用Hough变换。

​ Hough变换是1962年由Paul Hough提出的用来检测直线的一种方法,其本质上是一种聚类方法,通过建立图像空间与参数空间的对应关系,将图像空间像素点转化到参数空间,图像空间中的同在一条曲线上的点对应参数空间相交于一点的多条曲线,通过在参数空间统计交点分布来确定图像空间曲线参数。

​ 在拟合参数过程中还使用到了RANSAC方法,RANSAC方法的核心思想是:先随机取出少量的点来构造一个解,然后验证这个解的可靠性,多次重复这个过程,选出最可靠的结果作为最终的拟合结果。这样做就可以从包含大量异常点的数据中得到较为可靠的模型参数。RANSAC的基本假设是:数据是由“内点’’、“外点’’和“噪声点’’组成,其中“内点”分布符合某种数学模型,而“外点”不符合这种数学模型,其余的可以视为“噪声点”。

​ 我阅读的论文中,基于改进的RANSAC方法的虹膜轮廓拟合算法步骤如下:

​ (1)从虹膜的边缘图像中随机选择5个点,并验证是否每条边缘中至少有一个点被选中,如果不是,则重复步骤(1)。

​ (2)用这5个点拟合出唯一的一个椭圆,如果不能拟合,则返回(1)。

​ (3)计算所有数据点与(2)中拟合出的椭圆方程的距离,根据给定的阈值,距离大于阈值的划分为“外点”,反之为“内点”;

​ (4)重复(1)—(3)k次,记录下所有满足下面两个条件的椭圆:

​ (1)“内点”个数占所有数据个数的比重大于25%的椭圆对应的随机点组合

​ (2)短半轴 $b$、长半轴 $a$ 和虹膜半径 $R$ 满足 $\alpha R>a>b>\beta R$,$\alpha$ 和 $\beta$ 为自定义的合理阈值。

​ (5)计算(4)中得到的所有椭圆方程对其内点的误差平方和,取误差平方和最小的椭圆所对应的内点作为数据点,用最小二乘法重新拟合椭圆作为最终结果。

5. 基于中心投影的视线估计

​ 人眼模型:

图片alt

​ 眼球是一个复杂的天然光学器件。眼球的形状近似球形,眼球壁外层的前 1/6 为角膜,其余 5/6 为白色的巩膜。角膜是透明的,其折射率约为1.367,它是光束进入眼睛的门户。角膜后面的空间称为前房,其中充满折射率与水相近的水状液。前房之后有一中心带圆孔的彩色盘状膜,称为虹膜虹膜的中心圆孔即为瞳孔。虹膜后面是晶状体,它的外形如双凸透镜,并附着在睫状肌上。睫状肌的伸缩能调节晶状体的曲率,以达到调节焦距的目的。晶状体后面的空间称为后房,后房充满一种胶性透明体,叫玻璃体。玻璃体的折射率约为1.336,其透明外膜与视网膜紧贴着。

​ 从几何光学的角度来看,眼睛是一个由多界面组成的复杂的共轴光学系统。瞳孔可以看作光圈,角膜、晶状体等可以看作透镜系统,眼底视网膜就是感光底片。进入眼睛的光线通过一系列界面的折射,最后成像于视网膜。与光学设备不同的是:光学设备通常是通过改变透镜之间距离来改变焦距,而眼睛是靠调节晶状体的弯曲程度来改变眼睛焦距。

​ 下文是 Wang J G 等人提出的眼球模型。该模型将眼球视为一个半径为 R 的标准球体,并可以围绕着其中心转动。虹膜位于球体的前端,其轮廓是一个半径为 r 的圆盘状椭球,眼球中心到虹膜所在平面的距离为 d 。基于这个模型,Wang 等人提出了单眼视线估计方法双眼视线估计方法,其精度在非侵入视线估计方法中仅次于基于角膜反射光斑的方法。这两种方法的思想都是将视线估计问题转化为求解空间中具有圆形特征物体的姿态问题,通过虹膜在图像上的椭圆轮廓求出其在三维空间中所在平面,并将虹膜平面的法向量作为对视线方向的估计。在双眼视线估计问题中,Wang充分利用双眼视线交汇一点的眼动模式作为约束条件求出注视点的空间位置。在单眼视线估计中,由于缺少了这个约束条件,所以还必须知道屏幕距离测试者的距离,才能得到注视点的位置。

图片alt

​ Wang的方法虽然在理论上非常完美,但是实验效果却不是很理想。总的来说Wang的方法存在以下两个问题:

​ 第一,在计算过程中涉及到空间中锥方程求解以及解的可能性的讨论等问题,计算较为复杂繁琐

​ 第二,方法的精度受到图像分辨率限制,如果不能保证得到足够多的虹膜边缘像素,视线估计精度会大大降低。

​ 因此我阅读的论文中针对上述问题提出了新的方法。

​ 当人眼正视前方时,虹膜的轮廓接近圆形,而当视线方向发生偏移的时候,虹膜轮廓的在相机中所成像的形状会发生形变,成为一个椭圆。该方法利用这一点,依据虹膜轮廓的畸变程度得到视线方向的初步估计。

​ 为了避免Wang方法中的复杂计算,我们将视线方向的立体角分解成两个角度:一个为人眼分别注视目标和注视相机时两个视线方向之间的夹角$\theta$;另一个为视线在图像平面的投影与像平面水平坐标轴之间的夹角$\gamma$。

图片alt

​ 考虑任意一个过眼球中心和相机的平面,假设视线在这个平面上发生偏转(如下图),虹膜 $\overline {DJ}$ 在物平面的投影 $\overline {BC}$ 可以表示为:

图片alt

​ 可以看出 $ \overline {BC}$ 同时也是物平面上虹膜轮廓拟合椭圆的短轴。虹膜中心在物平面上的偏移量可以表示为

图片alt

​ 其中 $R$ 为眼球半径,$r$ 为虹膜半径, $l$ 为物距,$R$、$r$ 和 $\alpha$ 之间关系满足 $sin \alpha = r/R$ ,通常把 $r/R$ 的值看作一个固定的解剖结构常量,约为0.4。

​ 第二个角度 $\gamma$ ,可以从像平面上的虹膜轮廓拟合的椭圆方程得到。当视线方向发生偏转时,虹膜轮廓拟合椭圆的短轴就是视线在像平面上的投影,因此第二个角度 $\gamma$ 就是椭圆短轴与图像坐标系中水平轴的夹角。

图片alt

​ 从上图可以发现,当第一个角度 $\theta$ 确定,而第二个角度 $\gamma$ 相差 $\pi$ 时,虹膜的畸变程度是一样的,无法给出正确的注视方向,因此还需要借助其他信息处理这个歧义问题。Wang在2001的文章中提出一种基于眼角点位置的判断方法,其原理是:假设眼球中心不改变,并认为视线方向是由眼球中心指向虹膜中心,因此不管视线如何改变,从眼球中心到两个眼角的距离应该是近似相等的。这样就可以唯一确定眼球中心,从而确定视线方向。

图片alt

​ 在我阅读的论文中,作者通过对大量实验数据的统计,发现当视线发生偏转时,虹膜中心位移要大于瞳孔中心位移,但事实上,瞳孔就是虹膜中心的圆孔。产生这一现象的原因是由于眼球特殊的结构,在角膜与虹膜之间有一个充满无色液体的空腔结构叫做前房,虹膜就紧贴在前房的后面。前房的形状是中间厚,两边薄,可以将其看作是一个凸透镜。因此我们看到的虹膜实际上是虹膜的虚像,并且由于像场弯曲,使得瞳孔的虚像位于虹膜虚像的后方。因此当视线发生转动时,虹膜中心位移要大于瞳孔中心位移
​ 依据这个规律,作者提出一种从两个可能解中找出真实解的方法。由虹膜中心和瞳孔中心的坐标可以得到向量 $\overline {O_{pupil} O_{iris} }$ ,将这个向量与两个可能的视线方向向量 $\overline {v(\gamma)}$做内积,y的真实解应满足条件 $<\overline{v(\gamma)},\overline{O_{pupil} O_{iris}}>0$。并且通过作者的实验结果分析,对于视线角(相对于注视相机)在5°​以上的情况,这种方法可以完全正确的找出正确解;对于视线角(相对于注视相机)在5°以下的情况,这种方法准确度在92%左右。

图片alt

五、应用中的细节设计问题

1. 碰撞检测的范围

​ 基于目前眼球追踪技术,无法做到100%准确识别出注视物体,会存在一定的误差。因此视线与物体进行碰撞检测时,不应该将视线视为一个无限细的射线进行检测,一般需要设置一定的扩展范围,最好是将视线设置为一个圆锥形。

图片alt

2. 碰撞检测并不等同于注视

人眼有两种常见的运动模式:眼跳和注视。检测到视线物体的碰撞和用户在注视这个物体并不是等同的。

​ 眼跳的速度非常快,这时检测到视线和物体的碰撞,产生交互是没有必要的。视线落在某个物体上超过一定的时间才是注视,因此在交互设计中,一般需要通过一定的延迟判定才能认为是注视。

图片alt

3. 避免米达斯接触

​ 在眼球追踪技术应用中,还有一个问题:米达斯接触问题。

​ 所谓米达斯接触(Midas Touch)问题(米达斯是希腊神话中的一位能点石成金的国王)指的是由于用户视线运动的随意性而造成计算机对用户意图识别的困难。用户有时只是单纯地观察一个物体,而不希望引发该物体对应的功能。

​ 为了解决这个问题,一般不会采用注视后马上触发功能的方式,而是使用以下两种方式:

1. 延迟触发:在被观察物体上,显示一个不影响正常浏览的时间进度条,当进度条完成设定时间的计时时,产生触发行为。

2. 二次眼控触发:在被观察物体旁边,显示“真正的”触发元素,用户余光可以看到,但不影响观察主体。当需要触发时,看那个“真正的”触发元素即可。

4. 与其他输入工具结合

​ 在VR应用中,只用眼睛进行所有交互并不是最好的交互模式,结合其他输入工具,如手柄、语音、手势等进行多重交互,才是比较自然的。

​ 比如在一个菜单界面上,眼睛的运动轨迹能够反应在菜单项中,使选项处于待激活状态,此状态下不触发场景切换或其他功能,然后配合语音交互或者特定手势交互,才触发功能,这种多重交互协作方式将会有效得避免误触。

References:

[1] 张雯.人眼注视方向识别的数字图像处理技术研究[D]. 博士, 南开大学, 2011. [学位论文]

[2] Rachel Albert, Anjul Patney, David Luebke, and Joohwan Kim. 2017. Latency Requirements for Foveated Rendering in Virtual
Reality. ACM Trans. Appl. Percept. 14, 4, Article 25 (September 2017), 13 pages.

[3] Linus Franke,1 Laura Fink,1 Jana Martschinke,1 Kai Selgrad2 and Marc Stamminger1[Lq1] .Time-Warped Foveated Rendering for Virtual Reality Headsets[J].COMPUTER GRAPHICS forum, 2021,Volume 40 :110-123. [期刊]

评论