本發(fā)明一般及眼睛跟蹤控制,更具體地,涉及便于眼睛跟蹤控制校準的系統(tǒng)和方法。
背景技術(shù):
由相機和顯示器組成的眼睛跟蹤系統(tǒng)跟蹤用戶的眼睛運動,以確定顯示器上的位置,該顯示器上的位置是用戶視線的目標。用戶視線在屏幕上的位置,用于控制顯示器上存在的應(yīng)用程序。相機相對于顯示器的位置是預(yù)定的。
附圖說明
通過舉例的方式說明一些實施例但不限于附圖。
圖1是根據(jù)一些示例實施例的一個示例計算裝置的裝置圖,該示例計算裝置耦合到能夠便于眼睛跟蹤控制的對接裝置;
圖2是根據(jù)一些示例實施例的另一示例計算裝置的裝置圖,該另一示例計算裝置耦合到能夠便于眼睛跟蹤控制的對接裝置;
圖3A-3D是根據(jù)一些示例實施例的示例計算裝置的裝置圖,該示例計算裝置能夠便于眼睛跟蹤控制;
圖4是根據(jù)一些示例實施例的示例軟件構(gòu)架的框圖,該示例軟件構(gòu)架用于便于眼睛跟蹤控制;
圖5是根據(jù)一些示例實施例的示例數(shù)據(jù)流的框圖,該示例數(shù)據(jù)流用于便于眼睛跟蹤控制;
圖6A-6B是根據(jù)一些示例實施例的示意圖,該示意圖描述與顯示器有關(guān)的眼睛跟蹤技術(shù);
圖7是根據(jù)一些示例實施例的便于眼睛跟蹤校準的示例方法的流程圖;
圖8是根據(jù)一些示例實施例的最小化成本函數(shù)的示例方法的流程圖,該成本函數(shù)與便于眼睛跟蹤校準有關(guān);
圖9A-9B示出了根據(jù)一些示例實施例的計算的校準前后的視線坐標;
圖10是根據(jù)一些示例實施例的以計算機系統(tǒng)示例形式的機器的框圖,該計算系統(tǒng)有一套指令,可以讓該機器執(zhí)行在此討論的任何一個或多個方法。
具體實施例
以下闡述了便于眼睛跟蹤控制校準的示例系統(tǒng)和方法。在下面的描述中,出于解釋的目的,詳細陳述了許多具體的細節(jié),以助于對具體實施例有透徹的理解。但是,對于本領(lǐng)域技術(shù)人員顯而易見的是,不需要這些具體細節(jié)也能使用本技術(shù)。
計算裝置的用戶可以通過用戶的眼睛運動與在計算裝置上顯示的對象和應(yīng)用程序交互并控制該對象和該應(yīng)用程序。計算裝置上的或耦合到該計算裝置的設(shè)備上的相機捕捉的用戶的眼睛和/或面部的圖像,可采用計算機視覺算法,例如眼睛跟蹤和視覺檢測算法進行分析。例如,可以處理所捕捉的圖像,以提取與該用戶的眼睛和/或面部的特征有關(guān)的信息。然后,計算裝置可使用所提取的信息來確定該用戶的眼睛的位置,并估算與該用戶相關(guān)聯(lián)的視線信息。用戶的視線信息可以是對用戶正在觀看的位置的估算,并可包括如用戶的視線、注視點信息(例如,用戶正在觀看的顯示器上的位置)、用戶視線的方向等信息。例如,計算裝置也許能夠估算用戶正在觀看顯示器上的哪個圖標。用戶正在觀看的位置的估算可用于指示一個或多個對象、應(yīng)用程序等,以執(zhí)行特定操作。例如,根據(jù)用戶正在觀看的計算裝置的顯示器上的位置,用戶可指導(dǎo)并控制對象在屏幕上的運動,包括控制滾動功能、在虛擬游戲中對象的運動、控制指針和光標的位置等。對用戶正在觀看的位置的估算還可用于分析顯示在屏幕上似乎要吸引用戶的注意力的區(qū)域或?qū)ο?,或者,該估算可用于研究用戶觀看的圖形用戶界面上的對象。例如,眼睛跟蹤信息表示吸引用戶注意力的區(qū)域或?qū)ο?,通過眼睛跟蹤信息,可改進應(yīng)用程序用戶界面的設(shè)計,因而當(dāng)與應(yīng)用程序交互時,用戶可以有更好的體驗。
當(dāng)用戶開始使用計算裝置時,可進行用戶校準過程,以計算與該用戶相關(guān)聯(lián)的校準參數(shù)??煽紤]這些校準參數(shù)以準確地確定用戶的眼睛的位置并估算該用戶正在觀看的該顯示器上的位置。還可考慮該校準參數(shù)以確定三維(3-D)空間(例如,視線)中作為三維矢量的用戶的眼睛視線的方向。在這種情況下,在用戶視線的方向確定過程中,可以使用關(guān)于硬件幾何結(jié)構(gòu)(例如相機參數(shù)、屏幕相對于相機的位置或它們的任何合適的組合)。
圖1是示例計算裝置102的裝置圖100。該計算裝置102與對接裝置104耦合,該對接裝置104能夠便于眼睛跟蹤控制。該計算裝置102可以是任何類型的計算裝置,包括但不限于智能電話、掌上電腦(PDA)、移動電話、平板電腦、電子閱讀器、電視機、筆記本電腦、臺式計算機、顯示裝置、頭盔式顯示器或它們的任何合適的組合。在眼睛跟蹤控制的過程中,用戶可用一只或兩只手握住計算裝置102來使用該計算裝置102,或當(dāng)該計算裝置102放置在支架上或支撐在表面上時,用戶可使用該計算裝置102。
對接裝置104可與計算裝置102以任何方式耦合,例如通過計算裝置102上的通用串行總線(USB)接口、計算裝置102上的微型USB端口等。雖然圖1中描述的對接裝置104設(shè)置在計算裝置102的底部,但是本領(lǐng)域的普通技術(shù)人員可理解該對接裝置104可位于相對于該計算裝置102的任何合適位置。該對接裝置104可包括相機模塊108和一個或多個LED(發(fā)光二極管)106。出于解釋的目的,整個本發(fā)明描述和記載了LED 106。然而,對本領(lǐng)域的普通技術(shù)人員顯而易見的是可使用任何合適的發(fā)光源(例如,紅外激光器)。
該對接裝置104可包括任何數(shù)量的紅外LED 106,該紅外LED 106可以任何方式放置在該對接裝置104中的合適位置(例如,傾斜一定角度,使其指向用戶的面部)。在一個特定的實施例中,一個或多個LED 106可以與一個或多個相機同步,同步的方式是:當(dāng)該一個或多個相機正在抓幀時,打開該一個或多個LED 106,否則關(guān)閉。在一些實施例中,如果沒有檢測到任何運動,或者如果該對接裝置104和/或計算裝置102進入睡眠模式,可關(guān)閉LED。
在一些實施例中,該對接裝置104還可包括適合類型的通濾波器(例如,有源的、機械的、高通的、帶通的等)。在一些實施例中,使用了阻止800nm以下的光并允許800nm以上的光通過的高通濾波器。在一些實施例中,紅外帶通濾波器可能僅允許800-900nm的光進入該相機模塊108的一個或多個相機中。
該相機模塊108包括一個或多個前置攝像頭,該前置攝像頭以任何方式放置在對接裝置104中的任何合適位置(例如,傾斜一定角度,使其指向用戶的面部),且可用于捕捉用戶的眼睛和/或面部的圖像。一個或多個相機可被放置在與LED 106保持合適距離的位置,以優(yōu)化紅外光的適宜捕捉。在一些實施例中,計算裝置102上的相機與立體聲模式的相機模塊108結(jié)合使用。在一些實施例中,相機模塊108可包括以下各項中的任何一項或多項:以合適的每秒幀速率(例如,,以每秒30幀的高清)運行的黑白(例如,單色)、彩色(例如,RGB(紅綠藍))或IR-RGB(紅外-紅綠藍)傳感器、沒有紅外線屏蔽過濾器而有適合的視野和景深(如,移動設(shè)備情況下約30-80cm,電視機情況下約2-5m)的鏡頭等。相機模塊108中的一個或多個相機可被定位成使該一個或多個相機朝向用戶的面部傾斜。
相機捕捉的圖像可以由眼睛跟蹤軟件來旋轉(zhuǎn),圖像的處理可適于補償輸入方向(input orientation),或它們的任何合適的組合。例如,眼睛跟蹤軟件可使用計算裝置102上的傳感器(例如,加速度計,磁力計等)探測計算裝置102的方向并旋轉(zhuǎn)該圖像,或應(yīng)用預(yù)處理設(shè)置來補償該裝置的方向,從而可以適當(dāng)?shù)靥幚碓搱D像。
LED 106發(fā)出光(例如,紅外光),該光可以聚焦并集中朝向用戶的眼睛。LED 106發(fā)出的光在用戶的瞳孔中和角膜上映出,并由相機模塊108中的相機記錄。在一些示例實施例中,LED 106與一個或多個相機同步,這樣當(dāng)一個或多個相機正在抓取圖像時,LED 106才亮。在一些示例實施例中,采用紅外通過濾過器過濾掉800nm以下的可見光,這樣的過濾可提高圖像質(zhì)量。相機模塊108中的一個或多個相機的鏡頭的視野和景深可允許用戶進行移動,以適應(yīng)用戶不同的頭部姿勢。眼睛跟蹤控制軟件可以分析相機模塊108拍攝的圖像,以提供用戶正在觀看的計算裝置102的顯示器上的位置的屏幕坐標(例如,(x,y)或(x,y,z))。這些坐標可用于很多應(yīng)用(例如,滾動、移動對象、選擇圖標、玩游戲等等)。
LED 106和相機模塊108可以任何方式打開和/或關(guān)閉,例如通過利用外部滑塊、計算裝置102或?qū)友b置104的側(cè)面上或背面上的專用開關(guān)按鈕,由屏幕上的應(yīng)用程序或數(shù)字按鈕控制,由計算裝置102和/或?qū)友b置104的運動或震動控制、由語音命令、屏幕上的電容式按鈕、觸摸板(多個),生物信號(例如,肌電圖(EMG),腦電圖(EEG))等)、遠程控制、手勢和/或人物姿勢,或它們的任何合適的組合控制。這樣,在一些示例實施例中,僅當(dāng)LED 106和相機打開時(例如,當(dāng)用戶正在使用眼睛跟蹤功能時),眼睛跟蹤組件才會消耗功率。
在一些實施例中,當(dāng)相機位于計算裝置102的底部(如,與用戶的視角(perspective)有關(guān))時,眼睛跟蹤功能被優(yōu)化。用戶可使與對接裝置104耦合的計算裝置102旋轉(zhuǎn),以正確地定位該相機模塊108,使其位于計算裝置102的底部。在一些實施例中,根據(jù)計算裝置102和對接裝置104的方向,計算裝置102的一個或多個加速計和/或磁力計、LED、通濾波器和相機打開和/或關(guān)閉。例如,從用戶的角度看,當(dāng)計算裝置102和對接裝置104旋轉(zhuǎn),使相機模塊108位于計算裝置102的頂部時,LED和相機可關(guān)閉。
當(dāng)在預(yù)定的時間(例如,5-10秒)內(nèi)不能探測出用戶的面部時,LED和相機可關(guān)閉,且當(dāng)探測出用戶的面部或用戶的面部部分(如,用戶的眼)時,LED和相機可再次打開。
圖2是計算設(shè)備202的另一實施例的裝置圖200,該計算設(shè)備與能便于眼睛跟蹤控制的對接裝置204耦合。圖2所示的實施例的操作可以與圖1所示的實施例的操作類似,并且可包含圖1描述的任何一個或組合特征。然而,如圖2所示,對接裝置204可與LED 206集成,且可使用計算裝置202的相機模塊(代替或增加與對接裝置204集成的相機模塊208)。在使用USB、微USB接口或?qū)S枚丝趯⒂嬎阊b置202與對接裝置204耦合的一些實施例中,由于計算裝置202的相機用于捕捉圖像,因而圖2描述的配置可更快地傳送來自相機的圖像。當(dāng)同時使用一個或多個前置和后置攝像頭時,可使用用于眼睛跟蹤控制的前置攝像頭。
圖3A-3D是示例計算裝置的裝置圖,該計算裝置能夠便于眼跟蹤控制。圖3A-3C所示的實施例的操作與圖1所示的實施例的操作類似,并且可包含圖1描述的任何一個或組合特征。然而,LED和相機模塊集成到計算裝置中(而不是成為對接裝置的一部分)。圖3A-3C分別描述了計算裝置300、310和320,在不同的示例配置中,LED 302、312和322和相機模塊304、314和324集成到計算裝置300、310和320中(與用戶的視角有關(guān))。
計算裝置300、310和320上的LED 302、312和322和相機模塊304、314和324可位于計算裝置300、310、320上的多個配置的任何一個中。圖3A示出了LED 302和相機模塊304位于計算裝置300的底部。圖3B示出了LED 312位于計算裝置310的一側(cè),而相機模塊314位于計算裝置310的相對一側(cè)。圖3C示出了LED 322和相機模塊324位于計算裝置320的同一側(cè)。
圖3D展示了眼睛跟蹤裝置。其中,相機模塊334和LED 332未與計算裝置330的屏幕連接。當(dāng)眼睛跟蹤裝置相對于顯示屏不在固定的位置時,可用附加校準來補償。
圖4是便于眼睛跟蹤控制的示例軟件架構(gòu)400的框圖。軟件架構(gòu)400的任何一個或多個組件可在計算裝置(例如,計算裝置102、202、300、310、320或330)的控制處理單元(CPU)上,或在CPU和計算裝置的圖形處理單元(GPU)的組合上運行。在一些示例實施例中,軟件架構(gòu)400的一個或多個組件在專用芯片上運行。該軟件可作為后臺程序(例如,作為操作系統(tǒng)(OS)的一部分或在網(wǎng)頁瀏覽器內(nèi)),并可提供其他應(yīng)用程序可以訪問的應(yīng)用程序接口(API)。API可以觸發(fā)事件,或使用其他一些類似機制將用戶正在觀看的屏幕上的位置的信息發(fā)送給其他應(yīng)用程序。本領(lǐng)域的普通技術(shù)人員將理解到,圖4所示的示例軟件架構(gòu)400可包括更多或更少的元件。
軟件架構(gòu)400可分成不同的層。底層可以包括對應(yīng)各自的硬件的相機模塊480和照明模塊490。為了進行相機操作,比如打開相機、捕捉圖像、控制相機屬性、觸發(fā)傳感器以抓取圖像,或者它們?nèi)魏魏线m的組合,相機層可以包括相機控制模塊460,該相機控制模塊460負責(zé)與每個相機通信。相機控制模塊460還可以包括電路,以處理由相機模塊480傳送的圖像。例如,相機控制模塊460可以包括處理器(例如,內(nèi)部存貯程序(ISP),該處理器可以優(yōu)化圖像質(zhì)量,檢測圖像上感興趣的區(qū)域,裁剪由相機模塊480傳送的圖像等。相機層還可以包括相機和光同步模塊470,該相機和光同步模塊470與相機和發(fā)射源(例如,紅外線發(fā)射源)同步,因而以這樣的方式控制光:改進用戶的眼睛的跟蹤、提高視線精度、最小化能量消耗,或它們的任意組合。在一些示例實施例中,根據(jù)眼睛跟蹤引擎或相機控制模塊460發(fā)出的參數(shù)降低或增加光的數(shù)量,采用眼睛跟蹤算法來優(yōu)化照明。在一些示例實施例中,相機層被配置為在相機觸發(fā)輸出的頻率上閃光(例如,紅外線LED)。在一些示例實施例中,這種同步通過使用由相機層提供的一個或多個觸發(fā)信號到相機模塊480和照明模塊490來實現(xiàn)。
一旦相機模塊480的傳感器捕捉到圖像,圖像被發(fā)送到眼睛跟蹤電路,以進一步處理(例如,眼睛特征的檢測和視線方向或注視點的計算)。在一些實施例中,相機層將圖像傳送給相機控制模塊460,相機控制模塊460在將圖像傳送到眼睛跟蹤層之前處理該圖像。在眼睛跟蹤層中,眼睛探測和跟蹤模塊440可處理圖像以找到特征,例如眼睛區(qū)域位置、瞳孔中心、瞳孔大小、角膜反射位置、眼角、虹膜中心、虹膜大小或它們?nèi)魏魏线m的組合。在視線估算階段,視線估算模塊430可使用這些特征,視線估算模塊430可能是負責(zé)計算用戶的注視點。視線估算模塊430還可計算用戶的眼睛的光軸和視軸,并基于用戶的具體特征校準該計算。
API層可用于眼睛跟蹤層與使用眼睛視線信息的應(yīng)用程序之間的通信。API模塊420可發(fā)送眼睛跟蹤層計算的數(shù)據(jù),例如注視點的坐標、用戶的眼睛方向的三維(3D)矢量、瞳孔大小、閃爍速率或它們?nèi)魏魏线m的組合。該API模塊420還可接受來自眼睛跟蹤層的應(yīng)用程序的命令(例如,啟動和/或停止眼睛跟蹤引擎、查詢特定信息、改變眼睛跟蹤引擎工作的模式等)。應(yīng)用程序模塊410可以連接到眼睛跟蹤器的API模塊420,并為了任何合適的目的使用眼睛視線信息(例如,控制應(yīng)用程序或游戲、以供將來使用而記錄眼睛數(shù)據(jù)、確定駕駛員的睡意水平、測量一個人對特定對象的興趣,或它們?nèi)魏魏线m的組合)。
圖5是用于便于眼睛跟蹤控制的示例數(shù)據(jù)流的框圖。一個或多個相機和照明模塊510(例如,通過紅外LED提供照明)可捕捉用戶一個眼睛或多個眼睛的圖像。眼睛特征探測模塊520可使用所捕捉的數(shù)據(jù)探測眼部特征(例如,眼(多個)、瞳孔、角膜反射的位置等)。使用探測到的眼部特征,視線估算模塊530可估算用戶的注視點,然后通過眼睛控制模塊540,該用戶的注視點可用于控制應(yīng)用的各方面。
當(dāng)用戶剛開始使用眼睛跟蹤功能時,可進行校準過程,以計算特定于用戶的校準參數(shù)(例如,光軸與視軸之間的垂直和水平偏移)和/或計算映射函數(shù)的參數(shù),該映射函數(shù)可以將圖像坐標系統(tǒng)上的眼睛特征映射到屏幕坐標系統(tǒng)。然后通過視線估算算法,這些校準參數(shù)以及面部和眼睛的信息用于估算用戶正在觀看的屏幕上的位置和/或用戶的視線的位置??墒褂萌魏芜m合的校準過程以計算特定于用戶的校準參數(shù)。特定于用戶的校準參數(shù)可包括任何有關(guān)的參數(shù),例如光學(xué)角度與視覺角度之間的偏移、角膜半徑、角膜中心與瞳孔中心之間的距離等。在一些實施例中,可使用通用的回歸多項式以將圖像數(shù)據(jù)映射到屏幕坐標系統(tǒng),且該校準參數(shù)可包括該多項式的系數(shù)。
在保證估算的視線坐標(gaze coordinates)的準確性的同時,為了允許用戶移動,可以使用硬件校準設(shè)置,使3-D空間中的硬件組件的相對尺寸、位置和特征是已知的,包括屏幕大小、一個或多個相機相對屏幕的位置和相對角度、光源的位置、固有相機參數(shù)等等。
圖6A和6B是眼睛跟蹤技術(shù)系統(tǒng)610相對于屏幕620的示意圖。屏幕620可以是具有高度h和寬度w的矩形屏幕。眼睛跟蹤技術(shù)系統(tǒng)610包括一個或多個光源L1—Ln。在圖6A中,O是坐標系統(tǒng)XYZ的中心。在一些實施例中,一個或多個相機和一個或多個光源L1—Ln相對于中心O的位置是已知的。在一些實施例中,屏幕620相對于中心O的位置是已知的。在一些實施例中,一些相機參數(shù)是已知的,包括焦距、光學(xué)中心等等。使用已知的參數(shù),可以確定未知的值。
在一些實施例中,如上所述,眼睛跟蹤系統(tǒng)可嵌入到屏幕中,或者可以裝載在屏幕上的特定位置中。在這種情況下,硬件組件是固定的,對于硬件校準來說一次測量可能是足夠的。當(dāng)眼睛跟蹤裝置不固定到屏幕時,用戶可能需要手動測量以及輸入該裝置與該屏幕之間的距離,以使眼睛跟蹤軟件在用戶校準后可以正確計算屏幕上的視線坐標。
眼睛跟蹤系統(tǒng)可以捕捉關(guān)于用戶的眼睛和面部特征的信息,包括瞳孔中心、瞳孔橢圓(pupil ellipse)、角膜反射、眼角、面部方向等。瞳孔中心是位于被探測瞳孔的中心的點。瞳孔橢圓是(圓形)瞳孔圖像的橢圓表示法(elliptical representation)。瞳孔橢圓的偏心率與一角度有關(guān),該角度是用戶視線的方向與相機和眼睛的連線之間的角度。角膜反射是從角膜反射的光。當(dāng)已知光源L與相機O之間的關(guān)系時,相對于瞳孔中心測量的光源的角膜反射的位置,可以用于識別視線方向。
在用戶校準過程中,可以在屏幕上顯示一個或多個對象,當(dāng)它們正被顯示時,用戶可以觀看這些對象。如果在任何給定時間兩個或多個校準對象被顯示,則系統(tǒng)可以識別用戶正在觀看哪一個,通過例如將校準對象所循的路徑與當(dāng)他們觀看對象時眼睛所循的路徑進行對比。在一些實施例中,當(dāng)用戶被指示觀看屏幕的一部分時,例如屏幕的角部,光源處等等,用戶校準可以發(fā)生。當(dāng)校準對象被顯示時,眼睛跟蹤軟件捕捉眼睛信息,包括瞳孔中心、瞳孔橢圓、角膜反射、眼角、面部方向等等。
圖6B示出了要在3-D空間中相對于原點O計算的眼睛特征,這樣可以計算視軸,并且視軸可以與屏幕平面相交。角膜反射在圖像平面上的位置g可以與3-D空間中光源L的位置結(jié)合使用,根據(jù)一個或多個相機以及相機的固有參數(shù),計算3-D空間中角膜中心C的位置。例如,可以從每個光源L經(jīng)由角膜到每個相機來跟蹤光線。每個光源相機對提供單獨的光線,并且識別角膜表面上的點。通過在這些點之間進行三角測量,可以確定角膜半徑和C的位置。當(dāng)使用多個相機或光源時,可以提高測量的準確性。
瞳孔中心在圖像平面上的位置p可以與3-D空間中角膜中心C的位置、眼睛和空氣的光學(xué)性質(zhì)以及相機的固有參數(shù)結(jié)合使用,以計算3-D空間中瞳孔中心E的位置。例如,相機捕捉瞳孔的圖像,但是瞳孔中心的實際位置與圖像直接指示的位置不同,因為瞳孔位于角膜的后方,并且光在角膜與空氣的交界處被折射。因此,考慮到該折射,瞳孔中心的顯示位置(apparent position)要調(diào)整。
3-D空間中瞳孔中心E的位置和角膜中心C的位置定義一個矢量,稱為光軸。實際視線,也可稱為視軸,具有相對于光軸的角偏移,該角偏移可以通過用戶校準來計算。x和y方向上的角偏移稱為α和β,并且通常在水平方向上大約5°,在垂直方向上大約1.5°,但是這些值是針對個人的,因此需要基于每個用戶來計算。
通過要求用戶觀看屏幕上和3-D空間中的已知位置上顯示的校準目標序列,可以計算α和β(在硬件校準的設(shè)置中,屏幕相對于相機(多個)的位置和大小是已知的,因此3-D空間中校準目標的位置是已知的)。
一旦視軸已知,則光線可以與屏幕平面相交。相交點提供用戶正在觀看的屏幕上的視線坐標。在用戶校準過程中,也可以計算其它眼睛參數(shù),例如角膜半徑或瞳孔中心與角膜中心之間的距離,以提高屏幕上的視線坐標的計算的準確性(由于角膜中心的較佳估算,和所產(chǎn)生的光軸和視軸)。否則,可以使用平均值(例如,角膜半徑為7.8mm)。
為了減少硬件設(shè)置的人工測量的需要,在用戶特定校準參數(shù)的計算期間,在保證頭部運動的公差(tolerance)的同時,可以計算3-D空間中屏幕相對于眼睛跟蹤裝置的位置和方向。
本文描述的視線估算包括校準過程中硬件參數(shù)的這種計算(該硬件參數(shù)用于計算用戶特定參數(shù)),并且在用戶特定校準之前硬件設(shè)置未知的情況下可能是相關(guān)的。例如,它可用于眼睛跟蹤裝置是外圍設(shè)備的情況下,或者在用戶能夠?qū)⒀劬Ω櫻b置連接到不同類型的計算裝置(例如,筆記本電腦、計算機屏幕、平板電腦等)的情況下。用戶可以將該外圍設(shè)備放置在相對于計算裝置的各種位置。在每一種情況下,硬件配置(例如,眼睛跟蹤裝置相對于屏幕的位置和角度)可以不同,并且用戶可能另外需要對每個不同的計算裝置進行硬件校準(例如人工測量某些預(yù)定義元素之間的距離,諸如裝置的左上角、屏幕的左上角、裝置與屏幕之間的角度等)。
在上述用戶校準期間,要校準的未知量的總集合可以包括任何未知信息,例如眼睛參數(shù)(例如,光軸和視軸α和β之間的偏移、角膜半徑Rc、瞳孔中心與角膜中心之間的距離h、折射率n等)和硬件參數(shù)(例如,3D空間中相對于眼睛跟蹤裝置S的屏幕位置和方向、以及屏幕大小(寬度w、高度h))。在校準之前已知的信息可以包括光源相對于一個或多個相機L1—Ln的位置、一個或多個相機的相機參數(shù)(例如,焦距、光學(xué)中心等)等等。
在一些示例實施例中,屏幕大小(w,h)可以是已知的,或者可以通過軟件(例如,通過操作系統(tǒng)API)以編程方式獲取,并用作現(xiàn)有已知的信息。在一些實施例中,一些眼睛參數(shù)可以采用常數(shù)值以減小未知量的維度空間。
圖7是便于眼睛跟蹤校準的示例方法700的流程圖。在操作702中,在計算系統(tǒng)的顯示設(shè)備上顯示用戶特定校準目標組中的一個用戶特定校準目標。用戶特定校準目標可以以任何合適的方式顯示。
在操作704中,在顯示校準目標的同時,收集與所顯示的校準目標相關(guān)聯(lián)的眼睛信息。眼睛信息的收集可以包括檢測和存儲信息,例如瞳孔中心、瞳孔橢圓、虹膜中心、虹膜橢圓、由相機(多個)捕捉的圖像(多個)上的角膜反射等等。在一些實施例中,如果要校準的唯一的眼睛參數(shù)是α和β,則在該階段可以計算3D空間中相對于相機的瞳孔中心(多個)和角膜中心(多個)。
在操作706中,眼睛跟蹤應(yīng)用程序確定要顯示的校準目標組是否已經(jīng)被顯示。如果存在該校準目標組中的附加校準目標還未被顯示,則眼睛跟蹤應(yīng)用程序返回操作702以呈現(xiàn)下一個校準目標,并且相應(yīng)地收集與該校準目標相關(guān)聯(lián)的眼睛信息(操作704)。
在操作708中,當(dāng)校準目標組內(nèi)的所有校準目標已經(jīng)被顯示時,眼睛跟蹤應(yīng)用程序使用所收集的圖像數(shù)據(jù)(例如,眼睛信息)計算眼睛參數(shù)和幾何參數(shù)??梢杂嬎阊劬?shù)和幾何參數(shù)以最小化成本函數(shù)F。成本函數(shù)F使用所估算的注視坐標(使用眼睛參數(shù)和幾何參數(shù)計算)并使用校準目標的坐標計算度量(metric)。成本函數(shù)F可以通過使用該眼睛參數(shù)組計算3-D空間中的角膜中心(多個)和瞳孔中心(多個)來計算度量。使用當(dāng)前眼睛參數(shù)組的α和β來計算光軸和視軸。在示例實施例中,計算3-D空間中眼睛的視軸會聚的點。計算會聚點與校準目標之間的幾何關(guān)系(例如,平面P、旋轉(zhuǎn)和變換矩陣RT、線性或非線性映射H等)并將其存儲為幾何參數(shù)。在另一示例性實施例中,可以計算使給定校準目標的所有視軸之間的距離最小化的3-D點c。計算每個目標i的點Ci與校準目標之間的幾何關(guān)系(例如,平面P、旋轉(zhuǎn)和變換矩陣RT、線性或非線性映射H等)并將其存儲為幾何參數(shù)。在又一示例實施例中,全局優(yōu)化找到使視線與校準目標的理論3-D位置之間的累積距離最小化的變換。該變換可以包括平面P、旋轉(zhuǎn)和變換矩陣RT以及線性或非線性映射H,并且被存儲為幾何參數(shù)。在一些示例實施例中,上述全局優(yōu)化還通過同時最小化所有校準參數(shù)的成本函數(shù)F來優(yōu)化眼睛參數(shù)EP。
在操作710中,使用操作708中所計算的眼睛參數(shù)和幾何參數(shù)來計算后續(xù)眼睛跟蹤階段的視線坐標。使用視軸和幾何參數(shù)(例如,作為視軸與平面P的交點)來計算視線坐標(也稱為注視點(PoR))。
圖8是最小化成本函數(shù)的示例方法800的流程圖。該成本函數(shù)與便于眼睛跟蹤校準有關(guān)。方法800能夠執(zhí)行圖7的操作708中描述的優(yōu)化例程(optimization routine)。該優(yōu)化例程用于計算計算眼睛參數(shù)(EP)組和幾何參數(shù)(GP)組。該計算眼睛參數(shù)(EP)組和幾何參數(shù)(GP)組根據(jù)視軸的會聚點與校準目標之間的距離最小化成本函數(shù)F。
在操作802中,從給定眼睛參數(shù)組中計算所收集的樣本組的視軸。例如,在該操作中,使用當(dāng)前眼睛參數(shù)組(例如角膜半徑以及瞳孔中心與角膜中心之間的距離)的其它參數(shù),可以計算3-D空間中的瞳孔中心(多個)和角膜中心(多個)。
使用當(dāng)前眼睛參數(shù),為每個樣本計算3-D空間中視軸會聚的點(操作804)??商娲鼗蛄硗獾兀褂卯?dāng)前眼睛參數(shù),可以為每個樣本計算沿著單個眼睛(或每只眼睛)的視軸的用戶視線。例如,操作704中顯示的樣本的眼睛信息和對象位置數(shù)據(jù),可以被存儲以及使用當(dāng)前眼睛參數(shù)被重新估算,以生成用戶視線的方向的更新估算。
找到會聚點(convergence point)與校準目標坐標之間的幾何關(guān)系(操作806)??蛇x地或另外地,用戶視線的當(dāng)前估算與屏幕平面的當(dāng)前估算的交集可用作所估算的3-D聚集點,并且可以找到所估算的3-D聚集點與校準目標坐標之間的幾何關(guān)系。該幾何關(guān)系可以包括找到代表3-D空間中屏幕的平面P、旋轉(zhuǎn)和變換矩陣RT、非線性映射H等等。在一些示例性實施例中,通過最小化每個目標i的會聚點(或相交點)ci與屏幕位置和方向的給定變換M的理論目標位置T之間的累積距離來計算幾何關(guān)系。例如,下面的等式可以用于確定幾何參數(shù)GP。
GP=min{Transformation M(Σi|M(Ti)-ci|}
找到的關(guān)系存儲為幾何參數(shù)。
在操作808中,使用視軸和幾何參數(shù)GP計算視線坐標。在一些示例性實施例中,視線坐標被計算為視軸與平面P的交點。
在操作810中,計算成本函數(shù)F。成本函數(shù)F可以基于視線坐標與校準目標坐標之間的誤差度量。
在操作812中,如果成本函數(shù)F未被最小化,并且尚未達到最大迭代次數(shù),則算法更新操作814中的眼睛參數(shù)和幾何參數(shù),使成本函數(shù)F最小化,并返回到操作802。
在操作816中,如果成本函數(shù)F最小化,則返回使成本函數(shù)F最小化的所計算的眼睛參數(shù)組和幾何參數(shù)組。
圖9A示出了對于給定校準目標的眼睛參數(shù)和幾何參數(shù)的計算的起始點。對于給定眼睛參數(shù)組,相對于裝置902計算視覺的視線向量904。然后估算由初始幾何參數(shù)定義的給定屏幕位置906,并且計算基于理論目標位置908與注視點910之間的屏幕上的距離的度量。該度量將被最小化以減小視線坐標與理論目標位置908之間的距離。
圖9B示出了方法800所描述的過程的結(jié)束部分。一旦度量已經(jīng)被優(yōu)化,所計算的眼睛參數(shù)組(例如,每只眼睛的視軸和光軸之間的偏移)和幾何參數(shù)組(例如,相對于裝置902的屏幕位置和方向)使給定校準目標的視線坐標與理論目標位置908之間的距離最小化。
盡管圖9A-9B示出了使用用戶的兩只眼睛的兩個視軸的會聚點來確定在3D空間中顯示器相對于相機的位置的實施例,但是也可構(gòu)思使用單眼的實施例。例如,一旦眼睛的α和β已知,且從眼睛的圖像中可以準確地確定眼睛的視軸,則每當(dāng)用戶觀看所顯示的對象時,顯示器表面上的點是確定的。通過確定對象在平面顯示器上的位置(例如,三個非共線點),可以確定幾何參數(shù)(例如,顯示器的平面)。此外,當(dāng)這些點與顯示器的邊緣之間的距離和方向已知時,也可以確定顯示器的方向。在一些示例性實施例中,使用三個以上的顯示對象。例如,附加對象可以使用,以增加所確定的幾何參數(shù)的置信度(confidence),或以提供將在校準參數(shù)確定過程中使用的附加數(shù)據(jù),或兩者。
在此某些具體實施例被描述為包括邏輯或若干組件、模塊或機制。模塊可以構(gòu)成軟件模塊(比如,體現(xiàn)在機器可讀媒體上或傳輸信號中的代碼)或者硬件模塊。硬件模塊是有形單元,該單元能夠進行某些操作并且可以以某種方式進行配置或安排。在一些具體實施例中,一個或多個計算機系統(tǒng)(比如,單機、客戶端或服務(wù)器計算機系統(tǒng))或者計算機系統(tǒng)(比如,一個處理器或一組處理器)的一個或多個硬件模塊可以通過軟件(比如,應(yīng)用程序或應(yīng)用程序部分)配置成硬件模塊,該硬件模塊運轉(zhuǎn)以執(zhí)行此處所述描述的某些操作。
在各種實施例中,硬件模塊可以機械化或電子化實現(xiàn)。例如,硬件模塊可以包括專有電路或邏輯電路,該專有電路或邏輯電路被永久配置(例如,作為專用處理器,例如現(xiàn)場可編程門陣列(FPGA)或特定用途集成電路(ASIC)),以執(zhí)行某些操作。硬件模塊還可以包括可編程邏輯或電路(例如,被包含在通用處理器或其他可編程處理器內(nèi)),該可編程邏輯或電路通過軟件臨時配置以執(zhí)行某些操作。應(yīng)當(dāng)理解的是,決定在在專用且永久配置的電路里或在臨時配置的電路(例如,通過軟件配置)里,機械化執(zhí)行硬件模塊,可能是出于成本和時間的考慮。
因此,術(shù)語“硬件模塊”應(yīng)被理解為包含有形實體,即一種物理構(gòu)造的、永久配置的(如,硬連線的)或臨時配置的(例如,程序化的)的實體,以便以特定方式操作和/或執(zhí)行此處公開的某些操作。考慮到臨時配置的(如,程序化的)硬件模塊的實施例,在任何一個實施例中,各個硬件模塊都不需要及時進行配置或?qū)嵗?。例如,?dāng)硬件模塊包含使用軟件配置的通用處理器時,可以在不同時間將通用處理器配置成各自不同的硬件模塊。相應(yīng)地,例如,軟件可以相應(yīng)地配置一個處理器,例如,在一個時間的例子構(gòu)成一個特別的硬件模塊,并且在另一個時間的例子里構(gòu)成一個不同的硬件模塊。
硬件模塊可將信息提供給其他硬件模塊并從其他硬件模塊處接收信息。因此,可以認為所描述的硬件模塊是通信耦合的。當(dāng)多個這樣的硬件模塊同時存在時,通過連接該硬件模塊的信號傳輸(例如,通過合適的電路和總線)可以實現(xiàn)通信。在實施例中,多個硬件模塊在不同的時間配置或?qū)嵗?,可實現(xiàn)該硬件模塊之間的通信,例如,通過存儲和檢索多個硬件模塊可以訪問的存儲結(jié)構(gòu)中的信息。例如,一個硬件模塊可以進行一項操作,存儲其通信連接的存儲設(shè)備中的操作輸出。然后,另一硬件模塊稍后可以訪問該存儲設(shè)備,檢索和處理存儲的輸出。硬件模塊還可以開始與輸入或輸出裝置的通信,并可以在資源上操作(比如,信息收集)。
可以進行此處描述的示例方法的各種操作,至少部分地,通過臨時配置(例如,通過軟件)或永久配置的一個或多個處理器進行相關(guān)操作。不論是臨時還是永久配置,該處理器可構(gòu)成處理器實現(xiàn)模塊,該處理器實現(xiàn)模塊執(zhí)行一個或多個操作或功能。在一些示例實施例中,本文所指的模塊可以包括處理器實現(xiàn)模塊。
類似地,本文描述的方法可至少部分地由處理器實現(xiàn)。例如,該方法的至少某些操作可由一個或多個處理器或處理器實現(xiàn)模塊執(zhí)行。這些操作的執(zhí)行可以分配到一個或多個處理器,不僅在單個機器里,而且部署到若干機器里。在一些示例實施例中,處理器或多個處理器可位于一個位置(例如,在家庭環(huán)境中、辦公室環(huán)境中或作為服務(wù)器機群),而在其他實施例中,多個處理器可分布在若干位置。
一個或多個處理器還可以進行支持“云計算”環(huán)境中相關(guān)操作的運行,或者作為軟件即服務(wù)運行。比如,至少一些操作可以通過一組計算機進行(作為包括處理器的機器的例子),這些操作通過網(wǎng)絡(luò)(比如,互聯(lián)網(wǎng))和通過一個或多個適當(dāng)?shù)慕涌?比如,應(yīng)用程序接口(APIs))實現(xiàn)。
示例性實施例可在數(shù)字電子電路,或在計算機硬件、固件、軟件或它們的組合中執(zhí)行。采用計算機程序產(chǎn)品可實現(xiàn)實施例,該計算機程序產(chǎn)品例如有形地包含在信息載體中的計算機程序,例如在機器可讀的媒體中,以便于數(shù)據(jù)處理設(shè)備的執(zhí)行或控制數(shù)據(jù)處理裝置的操作,該數(shù)據(jù)處理裝置如可編程處理器、計算機或多個計算機。
計算機程序可以用任何形式的編程語言編寫,包括編譯或解釋型語言,且它可以任何形式部署,包括作為獨立程序或作為適合在計算環(huán)境中使用的模塊、子程序或其它單元。計算機程序可部署為在一個地點的一臺或多臺計算機上運行,或分散在多個地點并通過通信網(wǎng)絡(luò)互相聯(lián)系。
在示例實施例中,通過一個或多個可編程處理器執(zhí)行操作,該可編程處理器通過操作輸入數(shù)據(jù)和生成輸出執(zhí)行計算機程序以實現(xiàn)多個功能。通過專用邏輯電路(例如,現(xiàn)場可編程門陣列(FPGA)或?qū)S眉呻娐?ASIC))也可以實現(xiàn)方法操作。示例實施例的設(shè)備可以作為專用邏輯電路。
計算系統(tǒng)可以包括客戶端和服務(wù)器??蛻舳撕头?wù)器通常彼此遠離,并且通常情況下是通過通信網(wǎng)絡(luò)進行互動??蛻舳撕头?wù)器之間的關(guān)系通過計算機程序形成,該計算機程序在各自的計算機上運行并且彼此間形成客戶端和服務(wù)器關(guān)系。在配置可編程計算系統(tǒng)的實施例中,可以理解的是,需要考慮硬件和軟件架構(gòu)。具體地,可以理解的是,是否在永久配置的硬件(如,ASIC)中、在臨時配置的硬件(如,軟件和可編程處理器的組合)中、或永久和臨時配置相組合的硬件中實施某些功能的選擇可以是設(shè)計選擇。在各種示例具體實施例中,硬件(例如,機器)和軟件架構(gòu)的部署如下。
圖10為計算機系統(tǒng)1000的示例形式的機器的框圖,該計算機系統(tǒng)1000中的指令可以被執(zhí)行,該指令使該機器運行本文所討論的任何一個或多個方法。在替代的實施例中,該機器作為一個獨立的設(shè)備運行或者可以與其他機器連接(例如,網(wǎng)絡(luò)連接)。在聯(lián)網(wǎng)部署中,該機器可以在服務(wù)器—客戶端網(wǎng)絡(luò)環(huán)境中作為服務(wù)器或客戶端機器,或者在對等(或分布式)網(wǎng)絡(luò)環(huán)境中作為對等機運行。該機器可以是個人電腦(PC)、平板電腦、機頂盒(STB)、個人數(shù)字助理(PDA)、蜂窩電話、網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)路由器、交換機或橋接器,或任何能夠執(zhí)行指令的機器(時序或其他方式),該指令使由該機器采取的動作具體化。此外,雖然僅描述了單個機器,但是術(shù)語“機器”也被認為包括任何機器群,該機器將被認為單獨地或聯(lián)合地執(zhí)行一組(或多組)指令,以執(zhí)行本文所討論的任何一個或多個方法。
示例計算機系統(tǒng)1000包括處理器1002(例如,中央處理器(CPU)、圖形處理器(GPU)或兩者)、主存儲器1004和靜態(tài)存儲器1006,彼此間通過總線1008通信。計算機系統(tǒng)1000還可以包括視頻顯示設(shè)備1010(例如,液晶顯示器(LCD)或陰極射線管(CRT))。計算機系統(tǒng)1000還包括字母數(shù)字輸入設(shè)備1012(例如,鍵盤)、用戶界面(UI)導(dǎo)航設(shè)備1014(例如,鼠標或觸控式顯示器)、磁盤驅(qū)動單元1016、信號生成設(shè)備1018(例如,揚聲器),以及網(wǎng)絡(luò)接口設(shè)備1020。
磁盤驅(qū)動單元1016包括機器可讀媒體1022,在該機器可讀媒體1022上存儲了一組或多組數(shù)據(jù)結(jié)構(gòu)和指令1024(例如,軟件),該數(shù)據(jù)結(jié)構(gòu)和指令體現(xiàn)此處描述的任何一種或多種方法或功能,或者由此處描述的任何一種或多種方法或功能利用。指令1024還可以,全部或至少部分,存儲在主存儲器1004里、靜態(tài)存儲器1006里和/或在計算機系統(tǒng)1000執(zhí)行指令期間的處理器1002里,主存儲器1004和處理器1002還構(gòu)成機器可讀媒體。
雖然示例實施例中圖示了機器可讀媒體1022為單媒體,但是術(shù)語“機器可讀媒體”可以包括單個媒體或存儲一個或多個指令或數(shù)據(jù)結(jié)構(gòu)的多個媒體(例如,集中式或分布式數(shù)據(jù)庫和/或相關(guān)聯(lián)的高速緩存和服務(wù)器)。術(shù)語“機器可讀媒體”還應(yīng)被理解為包括任何有形媒體。該媒體能夠存儲、編碼或攜帶通過機器運行的指令,使機器運行本技術(shù)的任何一種或多種方法,或能夠存儲、編碼或攜帶此類指令利用的數(shù)據(jù)結(jié)構(gòu)或與此類指令相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)。術(shù)語“機器可讀媒體”應(yīng)相應(yīng)地被理解為包括,但不限于,固態(tài)存儲器和光磁媒體。機器可讀媒體的具體實施例包括非易失性存儲器,舉例來說包括半導(dǎo)體存儲設(shè)備,如,可擦除可編程只讀存儲器(EPROM)、電可擦除可編程只讀存儲器(EEPROM)和閃存設(shè)備、磁盤如內(nèi)部硬盤和移動磁盤、磁光盤和CD-ROM和DVD-ROM盤。
采用傳輸媒體,通過通信網(wǎng)絡(luò)1026可以進一步發(fā)送或接收指令1024。使用網(wǎng)絡(luò)接口設(shè)備1020和任何一個公知的傳輸協(xié)議(例如,超文本傳輸協(xié)議(HTTP))可以傳輸指令1024。通信網(wǎng)絡(luò)的例子包括局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、互聯(lián)網(wǎng)、移動電話網(wǎng)、普通老式電話業(yè)務(wù)(POTS)網(wǎng)絡(luò)和無線數(shù)據(jù)網(wǎng)絡(luò)(例如,無線局網(wǎng)(WiFi)和全球微波互聯(lián)接入網(wǎng)絡(luò)(WiMAX))。術(shù)語“傳輸媒體”應(yīng)被理解為包括任何無形媒體,該媒體能夠存儲、編碼或攜帶通過機器運行的指令,并包括便于這類軟件通信的數(shù)字或模擬通信信號或其它無形媒體。
雖然已經(jīng)描述了具體的示例實施例,但明顯的是,可以對這些實施例進行各種修改和改變。因此,說明書和附圖被認為是說明性的而不是限制性的。附圖構(gòu)成本文的一部分,以說明而非限定的方式,展示實踐本主題的具體實施例。對實施例進行足夠詳細地描述,以使本領(lǐng)域的技術(shù)人員能夠?qū)嵤┐颂幑_的教學(xué)??梢岳煤屯茢喑銎渌麑嵤├?,因而在不超出本發(fā)明范圍的情況下,可以進行結(jié)構(gòu)和邏輯的替換和改變。因此,該具體實施例不應(yīng)被理解為是限制性的,且各種實施例的范圍僅通過所附權(quán)力要求限定,連同這些權(quán)力要求賦予的等同形式的全部范圍。
如果實際上公開了不止一個,本發(fā)明主題的這些實施例在本文中可以通過術(shù)語“發(fā)明”單獨地和/或共同地提及,僅僅為了方便而不是想主動將本應(yīng)用的范圍限定為任何單個發(fā)明或發(fā)明概念。因此,雖然本文已經(jīng)說明和描述了具體實施例,但是應(yīng)當(dāng)理解的是,實施以實現(xiàn)相同目的任何方案可以替代圖示的具體實施例。本發(fā)明目的在于涵蓋任何和所有的各種實施例的修改或變型。通過回顧上面的說明,上述實施例的組合,以及在此文中沒有具體描述的其他實施例,對于本領(lǐng)域技術(shù)人員是顯而易見的。