本发明一般及眼睛跟踪控制,更具体地,涉及便于眼睛跟踪控制校准的系统和方法。
背景技术:
由相机和显示器组成的眼睛跟踪系统跟踪用户的眼睛运动,以确定显示器上的位置,该显示器上的位置是用户视线的目标。用户视线在屏幕上的位置,用于控制显示器上存在的应用程序。相机相对于显示器的位置是预定的。
附图说明
通过举例的方式说明一些实施例但不限于附图。
图1是根据一些示例实施例的一个示例计算装置的装置图,该示例计算装置耦合到能够便于眼睛跟踪控制的对接装置;
图2是根据一些示例实施例的另一示例计算装置的装置图,该另一示例计算装置耦合到能够便于眼睛跟踪控制的对接装置;
图3A-3D是根据一些示例实施例的示例计算装置的装置图,该示例计算装置能够便于眼睛跟踪控制;
图4是根据一些示例实施例的示例软件构架的框图,该示例软件构架用于便于眼睛跟踪控制;
图5是根据一些示例实施例的示例数据流的框图,该示例数据流用于便于眼睛跟踪控制;
图6A-6B是根据一些示例实施例的示意图,该示意图描述与显示器有关的眼睛跟踪技术;
图7是根据一些示例实施例的便于眼睛跟踪校准的示例方法的流程图;
图8是根据一些示例实施例的最小化成本函数的示例方法的流程图,该成本函数与便于眼睛跟踪校准有关;
图9A-9B示出了根据一些示例实施例的计算的校准前后的视线坐标;
图10是根据一些示例实施例的以计算机系统示例形式的机器的框图,该计算系统有一套指令,可以让该机器执行在此讨论的任何一个或多个方法。
具体实施例
以下阐述了便于眼睛跟踪控制校准的示例系统和方法。在下面的描述中,出于解释的目的,详细陈述了许多具体的细节,以助于对具体实施例有透彻的理解。但是,对于本领域技术人员显而易见的是,不需要这些具体细节也能使用本技术。
计算装置的用户可以通过用户的眼睛运动与在计算装置上显示的对象和应用程序交互并控制该对象和该应用程序。计算装置上的或耦合到该计算装置的设备上的相机捕捉的用户的眼睛和/或面部的图像,可采用计算机视觉算法,例如眼睛跟踪和视觉检测算法进行分析。例如,可以处理所捕捉的图像,以提取与该用户的眼睛和/或面部的特征有关的信息。然后,计算装置可使用所提取的信息来确定该用户的眼睛的位置,并估算与该用户相关联的视线信息。用户的视线信息可以是对用户正在观看的位置的估算,并可包括如用户的视线、注视点信息(例如,用户正在观看的显示器上的位置)、用户视线的方向等信息。例如,计算装置也许能够估算用户正在观看显示器上的哪个图标。用户正在观看的位置的估算可用于指示一个或多个对象、应用程序等,以执行特定操作。例如,根据用户正在观看的计算装置的显示器上的位置,用户可指导并控制对象在屏幕上的运动,包括控制滚动功能、在虚拟游戏中对象的运动、控制指针和光标的位置等。对用户正在观看的位置的估算还可用于分析显示在屏幕上似乎要吸引用户的注意力的区域或对象,或者,该估算可用于研究用户观看的图形用户界面上的对象。例如,眼睛跟踪信息表示吸引用户注意力的区域或对象,通过眼睛跟踪信息,可改进应用程序用户界面的设计,因而当与应用程序交互时,用户可以有更好的体验。
当用户开始使用计算装置时,可进行用户校准过程,以计算与该用户相关联的校准参数。可考虑这些校准参数以准确地确定用户的眼睛的位置并估算该用户正在观看的该显示器上的位置。还可考虑该校准参数以确定三维(3-D)空间(例如,视线)中作为三维矢量的用户的眼睛视线的方向。在这种情况下,在用户视线的方向确定过程中,可以使用关于硬件几何结构(例如相机参数、屏幕相对于相机的位置或它们的任何合适的组合)。
图1是示例计算装置102的装置图100。该计算装置102与对接装置104耦合,该对接装置104能够便于眼睛跟踪控制。该计算装置102可以是任何类型的计算装置,包括但不限于智能电话、掌上电脑(PDA)、移动电话、平板电脑、电子阅读器、电视机、笔记本电脑、台式计算机、显示装置、头盔式显示器或它们的任何合适的组合。在眼睛跟踪控制的过程中,用户可用一只或两只手握住计算装置102来使用该计算装置102,或当该计算装置102放置在支架上或支撑在表面上时,用户可使用该计算装置102。
对接装置104可与计算装置102以任何方式耦合,例如通过计算装置102上的通用串行总线(USB)接口、计算装置102上的微型USB端口等。虽然图1中描述的对接装置104设置在计算装置102的底部,但是本领域的普通技术人员可理解该对接装置104可位于相对于该计算装置102的任何合适位置。该对接装置104可包括相机模块108和一个或多个LED(发光二极管)106。出于解释的目的,整个本发明描述和记载了LED 106。然而,对本领域的普通技术人员显而易见的是可使用任何合适的发光源(例如,红外激光器)。
该对接装置104可包括任何数量的红外LED 106,该红外LED 106可以任何方式放置在该对接装置104中的合适位置(例如,倾斜一定角度,使其指向用户的面部)。在一个特定的实施例中,一个或多个LED 106可以与一个或多个相机同步,同步的方式是:当该一个或多个相机正在抓帧时,打开该一个或多个LED 106,否则关闭。在一些实施例中,如果没有检测到任何运动,或者如果该对接装置104和/或计算装置102进入睡眠模式,可关闭LED。
在一些实施例中,该对接装置104还可包括适合类型的通滤波器(例如,有源的、机械的、高通的、带通的等)。在一些实施例中,使用了阻止800nm以下的光并允许800nm以上的光通过的高通滤波器。在一些实施例中,红外带通滤波器可能仅允许800-900nm的光进入该相机模块108的一个或多个相机中。
该相机模块108包括一个或多个前置摄像头,该前置摄像头以任何方式放置在对接装置104中的任何合适位置(例如,倾斜一定角度,使其指向用户的面部),且可用于捕捉用户的眼睛和/或面部的图像。一个或多个相机可被放置在与LED 106保持合适距离的位置,以优化红外光的适宜捕捉。在一些实施例中,计算装置102上的相机与立体声模式的相机模块108结合使用。在一些实施例中,相机模块108可包括以下各项中的任何一项或多项:以合适的每秒帧速率(例如,,以每秒30帧的高清)运行的黑白(例如,单色)、彩色(例如,RGB(红绿蓝))或IR-RGB(红外-红绿蓝)传感器、没有红外线屏蔽过滤器而有适合的视野和景深(如,移动设备情况下约30-80cm,电视机情况下约2-5m)的镜头等。相机模块108中的一个或多个相机可被定位成使该一个或多个相机朝向用户的面部倾斜。
相机捕捉的图像可以由眼睛跟踪软件来旋转,图像的处理可适于补偿输入方向(input orientation),或它们的任何合适的组合。例如,眼睛跟踪软件可使用计算装置102上的传感器(例如,加速度计,磁力计等)探测计算装置102的方向并旋转该图像,或应用预处理设置来补偿该装置的方向,从而可以适当地处理该图像。
LED 106发出光(例如,红外光),该光可以聚焦并集中朝向用户的眼睛。LED 106发出的光在用户的瞳孔中和角膜上映出,并由相机模块108中的相机记录。在一些示例实施例中,LED 106与一个或多个相机同步,这样当一个或多个相机正在抓取图像时,LED 106才亮。在一些示例实施例中,采用红外通过滤过器过滤掉800nm以下的可见光,这样的过滤可提高图像质量。相机模块108中的一个或多个相机的镜头的视野和景深可允许用户进行移动,以适应用户不同的头部姿势。眼睛跟踪控制软件可以分析相机模块108拍摄的图像,以提供用户正在观看的计算装置102的显示器上的位置的屏幕坐标(例如,(x,y)或(x,y,z))。这些坐标可用于很多应用(例如,滚动、移动对象、选择图标、玩游戏等等)。
LED 106和相机模块108可以任何方式打开和/或关闭,例如通过利用外部滑块、计算装置102或对接装置104的侧面上或背面上的专用开关按钮,由屏幕上的应用程序或数字按钮控制,由计算装置102和/或对接装置104的运动或震动控制、由语音命令、屏幕上的电容式按钮、触摸板(多个),生物信号(例如,肌电图(EMG),脑电图(EEG))等)、远程控制、手势和/或人物姿势,或它们的任何合适的组合控制。这样,在一些示例实施例中,仅当LED 106和相机打开时(例如,当用户正在使用眼睛跟踪功能时),眼睛跟踪组件才会消耗功率。
在一些实施例中,当相机位于计算装置102的底部(如,与用户的视角(perspective)有关)时,眼睛跟踪功能被优化。用户可使与对接装置104耦合的计算装置102旋转,以正确地定位该相机模块108,使其位于计算装置102的底部。在一些实施例中,根据计算装置102和对接装置104的方向,计算装置102的一个或多个加速计和/或磁力计、LED、通滤波器和相机打开和/或关闭。例如,从用户的角度看,当计算装置102和对接装置104旋转,使相机模块108位于计算装置102的顶部时,LED和相机可关闭。
当在预定的时间(例如,5-10秒)内不能探测出用户的面部时,LED和相机可关闭,且当探测出用户的面部或用户的面部部分(如,用户的眼)时,LED和相机可再次打开。
图2是计算设备202的另一实施例的装置图200,该计算设备与能便于眼睛跟踪控制的对接装置204耦合。图2所示的实施例的操作可以与图1所示的实施例的操作类似,并且可包含图1描述的任何一个或组合特征。然而,如图2所示,对接装置204可与LED 206集成,且可使用计算装置202的相机模块(代替或增加与对接装置204集成的相机模块208)。在使用USB、微USB接口或专用端口将计算装置202与对接装置204耦合的一些实施例中,由于计算装置202的相机用于捕捉图像,因而图2描述的配置可更快地传送来自相机的图像。当同时使用一个或多个前置和后置摄像头时,可使用用于眼睛跟踪控制的前置摄像头。
图3A-3D是示例计算装置的装置图,该计算装置能够便于眼跟踪控制。图3A-3C所示的实施例的操作与图1所示的实施例的操作类似,并且可包含图1描述的任何一个或组合特征。然而,LED和相机模块集成到计算装置中(而不是成为对接装置的一部分)。图3A-3C分别描述了计算装置300、310和320,在不同的示例配置中,LED 302、312和322和相机模块304、314和324集成到计算装置300、310和320中(与用户的视角有关)。
计算装置300、310和320上的LED 302、312和322和相机模块304、314和324可位于计算装置300、310、320上的多个配置的任何一个中。图3A示出了LED 302和相机模块304位于计算装置300的底部。图3B示出了LED 312位于计算装置310的一侧,而相机模块314位于计算装置310的相对一侧。图3C示出了LED 322和相机模块324位于计算装置320的同一侧。
图3D展示了眼睛跟踪装置。其中,相机模块334和LED 332未与计算装置330的屏幕连接。当眼睛跟踪装置相对于显示屏不在固定的位置时,可用附加校准来补偿。
图4是便于眼睛跟踪控制的示例软件架构400的框图。软件架构400的任何一个或多个组件可在计算装置(例如,计算装置102、202、300、310、320或330)的控制处理单元(CPU)上,或在CPU和计算装置的图形处理单元(GPU)的组合上运行。在一些示例实施例中,软件架构400的一个或多个组件在专用芯片上运行。该软件可作为后台程序(例如,作为操作系统(OS)的一部分或在网页浏览器内),并可提供其他应用程序可以访问的应用程序接口(API)。API可以触发事件,或使用其他一些类似机制将用户正在观看的屏幕上的位置的信息发送给其他应用程序。本领域的普通技术人员将理解到,图4所示的示例软件架构400可包括更多或更少的元件。
软件架构400可分成不同的层。底层可以包括对应各自的硬件的相机模块480和照明模块490。为了进行相机操作,比如打开相机、捕捉图像、控制相机属性、触发传感器以抓取图像,或者它们任何合适的组合,相机层可以包括相机控制模块460,该相机控制模块460负责与每个相机通信。相机控制模块460还可以包括电路,以处理由相机模块480传送的图像。例如,相机控制模块460可以包括处理器(例如,内部存贮程序(ISP),该处理器可以优化图像质量,检测图像上感兴趣的区域,裁剪由相机模块480传送的图像等。相机层还可以包括相机和光同步模块470,该相机和光同步模块470与相机和发射源(例如,红外线发射源)同步,因而以这样的方式控制光:改进用户的眼睛的跟踪、提高视线精度、最小化能量消耗,或它们的任意组合。在一些示例实施例中,根据眼睛跟踪引擎或相机控制模块460发出的参数降低或增加光的数量,采用眼睛跟踪算法来优化照明。在一些示例实施例中,相机层被配置为在相机触发输出的频率上闪光(例如,红外线LED)。在一些示例实施例中,这种同步通过使用由相机层提供的一个或多个触发信号到相机模块480和照明模块490来实现。
一旦相机模块480的传感器捕捉到图像,图像被发送到眼睛跟踪电路,以进一步处理(例如,眼睛特征的检测和视线方向或注视点的计算)。在一些实施例中,相机层将图像传送给相机控制模块460,相机控制模块460在将图像传送到眼睛跟踪层之前处理该图像。在眼睛跟踪层中,眼睛探测和跟踪模块440可处理图像以找到特征,例如眼睛区域位置、瞳孔中心、瞳孔大小、角膜反射位置、眼角、虹膜中心、虹膜大小或它们任何合适的组合。在视线估算阶段,视线估算模块430可使用这些特征,视线估算模块430可能是负责计算用户的注视点。视线估算模块430还可计算用户的眼睛的光轴和视轴,并基于用户的具体特征校准该计算。
API层可用于眼睛跟踪层与使用眼睛视线信息的应用程序之间的通信。API模块420可发送眼睛跟踪层计算的数据,例如注视点的坐标、用户的眼睛方向的三维(3D)矢量、瞳孔大小、闪烁速率或它们任何合适的组合。该API模块420还可接受来自眼睛跟踪层的应用程序的命令(例如,启动和/或停止眼睛跟踪引擎、查询特定信息、改变眼睛跟踪引擎工作的模式等)。应用程序模块410可以连接到眼睛跟踪器的API模块420,并为了任何合适的目的使用眼睛视线信息(例如,控制应用程序或游戏、以供将来使用而记录眼睛数据、确定驾驶员的睡意水平、测量一个人对特定对象的兴趣,或它们任何合适的组合)。
图5是用于便于眼睛跟踪控制的示例数据流的框图。一个或多个相机和照明模块510(例如,通过红外LED提供照明)可捕捉用户一个眼睛或多个眼睛的图像。眼睛特征探测模块520可使用所捕捉的数据探测眼部特征(例如,眼(多个)、瞳孔、角膜反射的位置等)。使用探测到的眼部特征,视线估算模块530可估算用户的注视点,然后通过眼睛控制模块540,该用户的注视点可用于控制应用的各方面。
当用户刚开始使用眼睛跟踪功能时,可进行校准过程,以计算特定于用户的校准参数(例如,光轴与视轴之间的垂直和水平偏移)和/或计算映射函数的参数,该映射函数可以将图像坐标系统上的眼睛特征映射到屏幕坐标系统。然后通过视线估算算法,这些校准参数以及面部和眼睛的信息用于估算用户正在观看的屏幕上的位置和/或用户的视线的位置。可使用任何适合的校准过程以计算特定于用户的校准参数。特定于用户的校准参数可包括任何有关的参数,例如光学角度与视觉角度之间的偏移、角膜半径、角膜中心与瞳孔中心之间的距离等。在一些实施例中,可使用通用的回归多项式以将图像数据映射到屏幕坐标系统,且该校准参数可包括该多项式的系数。
在保证估算的视线坐标(gaze coordinates)的准确性的同时,为了允许用户移动,可以使用硬件校准设置,使3-D空间中的硬件组件的相对尺寸、位置和特征是已知的,包括屏幕大小、一个或多个相机相对屏幕的位置和相对角度、光源的位置、固有相机参数等等。
图6A和6B是眼睛跟踪技术系统610相对于屏幕620的示意图。屏幕620可以是具有高度h和宽度w的矩形屏幕。眼睛跟踪技术系统610包括一个或多个光源L1—Ln。在图6A中,O是坐标系统XYZ的中心。在一些实施例中,一个或多个相机和一个或多个光源L1—Ln相对于中心O的位置是已知的。在一些实施例中,屏幕620相对于中心O的位置是已知的。在一些实施例中,一些相机参数是已知的,包括焦距、光学中心等等。使用已知的参数,可以确定未知的值。
在一些实施例中,如上所述,眼睛跟踪系统可嵌入到屏幕中,或者可以装载在屏幕上的特定位置中。在这种情况下,硬件组件是固定的,对于硬件校准来说一次测量可能是足够的。当眼睛跟踪装置不固定到屏幕时,用户可能需要手动测量以及输入该装置与该屏幕之间的距离,以使眼睛跟踪软件在用户校准后可以正确计算屏幕上的视线坐标。
眼睛跟踪系统可以捕捉关于用户的眼睛和面部特征的信息,包括瞳孔中心、瞳孔椭圆(pupil ellipse)、角膜反射、眼角、面部方向等。瞳孔中心是位于被探测瞳孔的中心的点。瞳孔椭圆是(圆形)瞳孔图像的椭圆表示法(elliptical representation)。瞳孔椭圆的偏心率与一角度有关,该角度是用户视线的方向与相机和眼睛的连线之间的角度。角膜反射是从角膜反射的光。当已知光源L与相机O之间的关系时,相对于瞳孔中心测量的光源的角膜反射的位置,可以用于识别视线方向。
在用户校准过程中,可以在屏幕上显示一个或多个对象,当它们正被显示时,用户可以观看这些对象。如果在任何给定时间两个或多个校准对象被显示,则系统可以识别用户正在观看哪一个,通过例如将校准对象所循的路径与当他们观看对象时眼睛所循的路径进行对比。在一些实施例中,当用户被指示观看屏幕的一部分时,例如屏幕的角部,光源处等等,用户校准可以发生。当校准对象被显示时,眼睛跟踪软件捕捉眼睛信息,包括瞳孔中心、瞳孔椭圆、角膜反射、眼角、面部方向等等。
图6B示出了要在3-D空间中相对于原点O计算的眼睛特征,这样可以计算视轴,并且视轴可以与屏幕平面相交。角膜反射在图像平面上的位置g可以与3-D空间中光源L的位置结合使用,根据一个或多个相机以及相机的固有参数,计算3-D空间中角膜中心C的位置。例如,可以从每个光源L经由角膜到每个相机来跟踪光线。每个光源相机对提供单独的光线,并且识别角膜表面上的点。通过在这些点之间进行三角测量,可以确定角膜半径和C的位置。当使用多个相机或光源时,可以提高测量的准确性。
瞳孔中心在图像平面上的位置p可以与3-D空间中角膜中心C的位置、眼睛和空气的光学性质以及相机的固有参数结合使用,以计算3-D空间中瞳孔中心E的位置。例如,相机捕捉瞳孔的图像,但是瞳孔中心的实际位置与图像直接指示的位置不同,因为瞳孔位于角膜的后方,并且光在角膜与空气的交界处被折射。因此,考虑到该折射,瞳孔中心的显示位置(apparent position)要调整。
3-D空间中瞳孔中心E的位置和角膜中心C的位置定义一个矢量,称为光轴。实际视线,也可称为视轴,具有相对于光轴的角偏移,该角偏移可以通过用户校准来计算。x和y方向上的角偏移称为α和β,并且通常在水平方向上大约5°,在垂直方向上大约1.5°,但是这些值是针对个人的,因此需要基于每个用户来计算。
通过要求用户观看屏幕上和3-D空间中的已知位置上显示的校准目标序列,可以计算α和β(在硬件校准的设置中,屏幕相对于相机(多个)的位置和大小是已知的,因此3-D空间中校准目标的位置是已知的)。
一旦视轴已知,则光线可以与屏幕平面相交。相交点提供用户正在观看的屏幕上的视线坐标。在用户校准过程中,也可以计算其它眼睛参数,例如角膜半径或瞳孔中心与角膜中心之间的距离,以提高屏幕上的视线坐标的计算的准确性(由于角膜中心的较佳估算,和所产生的光轴和视轴)。否则,可以使用平均值(例如,角膜半径为7.8mm)。
为了减少硬件设置的人工测量的需要,在用户特定校准参数的计算期间,在保证头部运动的公差(tolerance)的同时,可以计算3-D空间中屏幕相对于眼睛跟踪装置的位置和方向。
本文描述的视线估算包括校准过程中硬件参数的这种计算(该硬件参数用于计算用户特定参数),并且在用户特定校准之前硬件设置未知的情况下可能是相关的。例如,它可用于眼睛跟踪装置是外围设备的情况下,或者在用户能够将眼睛跟踪装置连接到不同类型的计算装置(例如,笔记本电脑、计算机屏幕、平板电脑等)的情况下。用户可以将该外围设备放置在相对于计算装置的各种位置。在每一种情况下,硬件配置(例如,眼睛跟踪装置相对于屏幕的位置和角度)可以不同,并且用户可能另外需要对每个不同的计算装置进行硬件校准(例如人工测量某些预定义元素之间的距离,诸如装置的左上角、屏幕的左上角、装置与屏幕之间的角度等)。
在上述用户校准期间,要校准的未知量的总集合可以包括任何未知信息,例如眼睛参数(例如,光轴和视轴α和β之间的偏移、角膜半径Rc、瞳孔中心与角膜中心之间的距离h、折射率n等)和硬件参数(例如,3D空间中相对于眼睛跟踪装置S的屏幕位置和方向、以及屏幕大小(宽度w、高度h))。在校准之前已知的信息可以包括光源相对于一个或多个相机L1—Ln的位置、一个或多个相机的相机参数(例如,焦距、光学中心等)等等。
在一些示例实施例中,屏幕大小(w,h)可以是已知的,或者可以通过软件(例如,通过操作系统API)以编程方式获取,并用作现有已知的信息。在一些实施例中,一些眼睛参数可以采用常数值以减小未知量的维度空间。
图7是便于眼睛跟踪校准的示例方法700的流程图。在操作702中,在计算系统的显示设备上显示用户特定校准目标组中的一个用户特定校准目标。用户特定校准目标可以以任何合适的方式显示。
在操作704中,在显示校准目标的同时,收集与所显示的校准目标相关联的眼睛信息。眼睛信息的收集可以包括检测和存储信息,例如瞳孔中心、瞳孔椭圆、虹膜中心、虹膜椭圆、由相机(多个)捕捉的图像(多个)上的角膜反射等等。在一些实施例中,如果要校准的唯一的眼睛参数是α和β,则在该阶段可以计算3D空间中相对于相机的瞳孔中心(多个)和角膜中心(多个)。
在操作706中,眼睛跟踪应用程序确定要显示的校准目标组是否已经被显示。如果存在该校准目标组中的附加校准目标还未被显示,则眼睛跟踪应用程序返回操作702以呈现下一个校准目标,并且相应地收集与该校准目标相关联的眼睛信息(操作704)。
在操作708中,当校准目标组内的所有校准目标已经被显示时,眼睛跟踪应用程序使用所收集的图像数据(例如,眼睛信息)计算眼睛参数和几何参数。可以计算眼睛参数和几何参数以最小化成本函数F。成本函数F使用所估算的注视坐标(使用眼睛参数和几何参数计算)并使用校准目标的坐标计算度量(metric)。成本函数F可以通过使用该眼睛参数组计算3-D空间中的角膜中心(多个)和瞳孔中心(多个)来计算度量。使用当前眼睛参数组的α和β来计算光轴和视轴。在示例实施例中,计算3-D空间中眼睛的视轴会聚的点。计算会聚点与校准目标之间的几何关系(例如,平面P、旋转和变换矩阵RT、线性或非线性映射H等)并将其存储为几何参数。在另一示例性实施例中,可以计算使给定校准目标的所有视轴之间的距离最小化的3-D点c。计算每个目标i的点Ci与校准目标之间的几何关系(例如,平面P、旋转和变换矩阵RT、线性或非线性映射H等)并将其存储为几何参数。在又一示例实施例中,全局优化找到使视线与校准目标的理论3-D位置之间的累积距离最小化的变换。该变换可以包括平面P、旋转和变换矩阵RT以及线性或非线性映射H,并且被存储为几何参数。在一些示例实施例中,上述全局优化还通过同时最小化所有校准参数的成本函数F来优化眼睛参数EP。
在操作710中,使用操作708中所计算的眼睛参数和几何参数来计算后续眼睛跟踪阶段的视线坐标。使用视轴和几何参数(例如,作为视轴与平面P的交点)来计算视线坐标(也称为注视点(PoR))。
图8是最小化成本函数的示例方法800的流程图。该成本函数与便于眼睛跟踪校准有关。方法800能够执行图7的操作708中描述的优化例程(optimization routine)。该优化例程用于计算计算眼睛参数(EP)组和几何参数(GP)组。该计算眼睛参数(EP)组和几何参数(GP)组根据视轴的会聚点与校准目标之间的距离最小化成本函数F。
在操作802中,从给定眼睛参数组中计算所收集的样本组的视轴。例如,在该操作中,使用当前眼睛参数组(例如角膜半径以及瞳孔中心与角膜中心之间的距离)的其它参数,可以计算3-D空间中的瞳孔中心(多个)和角膜中心(多个)。
使用当前眼睛参数,为每个样本计算3-D空间中视轴会聚的点(操作804)。可替代地或另外地,使用当前眼睛参数,可以为每个样本计算沿着单个眼睛(或每只眼睛)的视轴的用户视线。例如,操作704中显示的样本的眼睛信息和对象位置数据,可以被存储以及使用当前眼睛参数被重新估算,以生成用户视线的方向的更新估算。
找到会聚点(convergence point)与校准目标坐标之间的几何关系(操作806)。可选地或另外地,用户视线的当前估算与屏幕平面的当前估算的交集可用作所估算的3-D聚集点,并且可以找到所估算的3-D聚集点与校准目标坐标之间的几何关系。该几何关系可以包括找到代表3-D空间中屏幕的平面P、旋转和变换矩阵RT、非线性映射H等等。在一些示例性实施例中,通过最小化每个目标i的会聚点(或相交点)ci与屏幕位置和方向的给定变换M的理论目标位置T之间的累积距离来计算几何关系。例如,下面的等式可以用于确定几何参数GP。
GP=min{Transformation M(Σi|M(Ti)-ci|}
找到的关系存储为几何参数。
在操作808中,使用视轴和几何参数GP计算视线坐标。在一些示例性实施例中,视线坐标被计算为视轴与平面P的交点。
在操作810中,计算成本函数F。成本函数F可以基于视线坐标与校准目标坐标之间的误差度量。
在操作812中,如果成本函数F未被最小化,并且尚未达到最大迭代次数,则算法更新操作814中的眼睛参数和几何参数,使成本函数F最小化,并返回到操作802。
在操作816中,如果成本函数F最小化,则返回使成本函数F最小化的所计算的眼睛参数组和几何参数组。
图9A示出了对于给定校准目标的眼睛参数和几何参数的计算的起始点。对于给定眼睛参数组,相对于装置902计算视觉的视线向量904。然后估算由初始几何参数定义的给定屏幕位置906,并且计算基于理论目标位置908与注视点910之间的屏幕上的距离的度量。该度量将被最小化以减小视线坐标与理论目标位置908之间的距离。
图9B示出了方法800所描述的过程的结束部分。一旦度量已经被优化,所计算的眼睛参数组(例如,每只眼睛的视轴和光轴之间的偏移)和几何参数组(例如,相对于装置902的屏幕位置和方向)使给定校准目标的视线坐标与理论目标位置908之间的距离最小化。
尽管图9A-9B示出了使用用户的两只眼睛的两个视轴的会聚点来确定在3D空间中显示器相对于相机的位置的实施例,但是也可构思使用单眼的实施例。例如,一旦眼睛的α和β已知,且从眼睛的图像中可以准确地确定眼睛的视轴,则每当用户观看所显示的对象时,显示器表面上的点是确定的。通过确定对象在平面显示器上的位置(例如,三个非共线点),可以确定几何参数(例如,显示器的平面)。此外,当这些点与显示器的边缘之间的距离和方向已知时,也可以确定显示器的方向。在一些示例性实施例中,使用三个以上的显示对象。例如,附加对象可以使用,以增加所确定的几何参数的置信度(confidence),或以提供将在校准参数确定过程中使用的附加数据,或两者。
在此某些具体实施例被描述为包括逻辑或若干组件、模块或机制。模块可以构成软件模块(比如,体现在机器可读媒体上或传输信号中的代码)或者硬件模块。硬件模块是有形单元,该单元能够进行某些操作并且可以以某种方式进行配置或安排。在一些具体实施例中,一个或多个计算机系统(比如,单机、客户端或服务器计算机系统)或者计算机系统(比如,一个处理器或一组处理器)的一个或多个硬件模块可以通过软件(比如,应用程序或应用程序部分)配置成硬件模块,该硬件模块运转以执行此处所述描述的某些操作。
在各种实施例中,硬件模块可以机械化或电子化实现。例如,硬件模块可以包括专有电路或逻辑电路,该专有电路或逻辑电路被永久配置(例如,作为专用处理器,例如现场可编程门阵列(FPGA)或特定用途集成电路(ASIC)),以执行某些操作。硬件模块还可以包括可编程逻辑或电路(例如,被包含在通用处理器或其他可编程处理器内),该可编程逻辑或电路通过软件临时配置以执行某些操作。应当理解的是,决定在在专用且永久配置的电路里或在临时配置的电路(例如,通过软件配置)里,机械化执行硬件模块,可能是出于成本和时间的考虑。
因此,术语“硬件模块”应被理解为包含有形实体,即一种物理构造的、永久配置的(如,硬连线的)或临时配置的(例如,程序化的)的实体,以便以特定方式操作和/或执行此处公开的某些操作。考虑到临时配置的(如,程序化的)硬件模块的实施例,在任何一个实施例中,各个硬件模块都不需要及时进行配置或实例化。例如,当硬件模块包含使用软件配置的通用处理器时,可以在不同时间将通用处理器配置成各自不同的硬件模块。相应地,例如,软件可以相应地配置一个处理器,例如,在一个时间的例子构成一个特别的硬件模块,并且在另一个时间的例子里构成一个不同的硬件模块。
硬件模块可将信息提供给其他硬件模块并从其他硬件模块处接收信息。因此,可以认为所描述的硬件模块是通信耦合的。当多个这样的硬件模块同时存在时,通过连接该硬件模块的信号传输(例如,通过合适的电路和总线)可以实现通信。在实施例中,多个硬件模块在不同的时间配置或实例化,可实现该硬件模块之间的通信,例如,通过存储和检索多个硬件模块可以访问的存储结构中的信息。例如,一个硬件模块可以进行一项操作,存储其通信连接的存储设备中的操作输出。然后,另一硬件模块稍后可以访问该存储设备,检索和处理存储的输出。硬件模块还可以开始与输入或输出装置的通信,并可以在资源上操作(比如,信息收集)。
可以进行此处描述的示例方法的各种操作,至少部分地,通过临时配置(例如,通过软件)或永久配置的一个或多个处理器进行相关操作。不论是临时还是永久配置,该处理器可构成处理器实现模块,该处理器实现模块执行一个或多个操作或功能。在一些示例实施例中,本文所指的模块可以包括处理器实现模块。
类似地,本文描述的方法可至少部分地由处理器实现。例如,该方法的至少某些操作可由一个或多个处理器或处理器实现模块执行。这些操作的执行可以分配到一个或多个处理器,不仅在单个机器里,而且部署到若干机器里。在一些示例实施例中,处理器或多个处理器可位于一个位置(例如,在家庭环境中、办公室环境中或作为服务器机群),而在其他实施例中,多个处理器可分布在若干位置。
一个或多个处理器还可以进行支持“云计算”环境中相关操作的运行,或者作为软件即服务运行。比如,至少一些操作可以通过一组计算机进行(作为包括处理器的机器的例子),这些操作通过网络(比如,互联网)和通过一个或多个适当的接口(比如,应用程序接口(APIs))实现。
示例性实施例可在数字电子电路,或在计算机硬件、固件、软件或它们的组合中执行。采用计算机程序产品可实现实施例,该计算机程序产品例如有形地包含在信息载体中的计算机程序,例如在机器可读的媒体中,以便于数据处理设备的执行或控制数据处理装置的操作,该数据处理装置如可编程处理器、计算机或多个计算机。
计算机程序可以用任何形式的编程语言编写,包括编译或解释型语言,且它可以任何形式部署,包括作为独立程序或作为适合在计算环境中使用的模块、子程序或其它单元。计算机程序可部署为在一个地点的一台或多台计算机上运行,或分散在多个地点并通过通信网络互相联系。
在示例实施例中,通过一个或多个可编程处理器执行操作,该可编程处理器通过操作输入数据和生成输出执行计算机程序以实现多个功能。通过专用逻辑电路(例如,现场可编程门阵列(FPGA)或专用集成电路(ASIC))也可以实现方法操作。示例实施例的设备可以作为专用逻辑电路。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常情况下是通过通信网络进行互动。客户端和服务器之间的关系通过计算机程序形成,该计算机程序在各自的计算机上运行并且彼此间形成客户端和服务器关系。在配置可编程计算系统的实施例中,可以理解的是,需要考虑硬件和软件架构。具体地,可以理解的是,是否在永久配置的硬件(如,ASIC)中、在临时配置的硬件(如,软件和可编程处理器的组合)中、或永久和临时配置相组合的硬件中实施某些功能的选择可以是设计选择。在各种示例具体实施例中,硬件(例如,机器)和软件架构的部署如下。
图10为计算机系统1000的示例形式的机器的框图,该计算机系统1000中的指令可以被执行,该指令使该机器运行本文所讨论的任何一个或多个方法。在替代的实施例中,该机器作为一个独立的设备运行或者可以与其他机器连接(例如,网络连接)。在联网部署中,该机器可以在服务器—客户端网络环境中作为服务器或客户端机器,或者在对等(或分布式)网络环境中作为对等机运行。该机器可以是个人电脑(PC)、平板电脑、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、网络路由器、交换机或桥接器,或任何能够执行指令的机器(时序或其他方式),该指令使由该机器采取的动作具体化。此外,虽然仅描述了单个机器,但是术语“机器”也被认为包括任何机器群,该机器将被认为单独地或联合地执行一组(或多组)指令,以执行本文所讨论的任何一个或多个方法。
示例计算机系统1000包括处理器1002(例如,中央处理器(CPU)、图形处理器(GPU)或两者)、主存储器1004和静态存储器1006,彼此间通过总线1008通信。计算机系统1000还可以包括视频显示设备1010(例如,液晶显示器(LCD)或阴极射线管(CRT))。计算机系统1000还包括字母数字输入设备1012(例如,键盘)、用户界面(UI)导航设备1014(例如,鼠标或触控式显示器)、磁盘驱动单元1016、信号生成设备1018(例如,扬声器),以及网络接口设备1020。
磁盘驱动单元1016包括机器可读媒体1022,在该机器可读媒体1022上存储了一组或多组数据结构和指令1024(例如,软件),该数据结构和指令体现此处描述的任何一种或多种方法或功能,或者由此处描述的任何一种或多种方法或功能利用。指令1024还可以,全部或至少部分,存储在主存储器1004里、静态存储器1006里和/或在计算机系统1000执行指令期间的处理器1002里,主存储器1004和处理器1002还构成机器可读媒体。
虽然示例实施例中图示了机器可读媒体1022为单媒体,但是术语“机器可读媒体”可以包括单个媒体或存储一个或多个指令或数据结构的多个媒体(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。术语“机器可读媒体”还应被理解为包括任何有形媒体。该媒体能够存储、编码或携带通过机器运行的指令,使机器运行本技术的任何一种或多种方法,或能够存储、编码或携带此类指令利用的数据结构或与此类指令相关联的数据结构。术语“机器可读媒体”应相应地被理解为包括,但不限于,固态存储器和光磁媒体。机器可读媒体的具体实施例包括非易失性存储器,举例来说包括半导体存储设备,如,可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)和闪存设备、磁盘如内部硬盘和移动磁盘、磁光盘和CD-ROM和DVD-ROM盘。
采用传输媒体,通过通信网络1026可以进一步发送或接收指令1024。使用网络接口设备1020和任何一个公知的传输协议(例如,超文本传输协议(HTTP))可以传输指令1024。通信网络的例子包括局域网(LAN)、广域网(WAN)、互联网、移动电话网、普通老式电话业务(POTS)网络和无线数据网络(例如,无线局网(WiFi)和全球微波互联接入网络(WiMAX))。术语“传输媒体”应被理解为包括任何无形媒体,该媒体能够存储、编码或携带通过机器运行的指令,并包括便于这类软件通信的数字或模拟通信信号或其它无形媒体。
虽然已经描述了具体的示例实施例,但明显的是,可以对这些实施例进行各种修改和改变。因此,说明书和附图被认为是说明性的而不是限制性的。附图构成本文的一部分,以说明而非限定的方式,展示实践本主题的具体实施例。对实施例进行足够详细地描述,以使本领域的技术人员能够实施此处公开的教学。可以利用和推断出其他实施例,因而在不超出本发明范围的情况下,可以进行结构和逻辑的替换和改变。因此,该具体实施例不应被理解为是限制性的,且各种实施例的范围仅通过所附权力要求限定,连同这些权力要求赋予的等同形式的全部范围。
如果实际上公开了不止一个,本发明主题的这些实施例在本文中可以通过术语“发明”单独地和/或共同地提及,仅仅为了方便而不是想主动将本应用的范围限定为任何单个发明或发明概念。因此,虽然本文已经说明和描述了具体实施例,但是应当理解的是,实施以实现相同目的任何方案可以替代图示的具体实施例。本发明目的在于涵盖任何和所有的各种实施例的修改或变型。通过回顾上面的说明,上述实施例的组合,以及在此文中没有具体描述的其他实施例,对于本领域技术人员是显而易见的。