本發(fā)明涉及人機(jī)交互、視覺(jué)認(rèn)知等領(lǐng)域,具體涉及一種基于眼動(dòng)跟蹤的最后閱讀位置顯示方法和系統(tǒng)。
背景技術(shù):
人們?cè)陔娔X等電子設(shè)備上進(jìn)行閱讀的過(guò)程中,經(jīng)常出現(xiàn)暫停閱讀的情況,例如需要暫時(shí)中斷閱讀去處理其他工作,或者切換到其他程序窗口進(jìn)行操作等。而當(dāng)用戶(hù)重新開(kāi)始閱讀時(shí),常常需要花費(fèi)一段時(shí)間尋找上次最后閱讀的位置。對(duì)最后閱讀位置的回憶和搜索過(guò)程,顯著降低了用戶(hù)的閱讀效率和體驗(yàn)水平,尤其是在用戶(hù)經(jīng)常需要暫停和恢復(fù)閱讀的情況下。
眼動(dòng)跟蹤技術(shù)可以實(shí)時(shí)計(jì)算出用戶(hù)視線(xiàn)在屏幕上的注視點(diǎn)位置,進(jìn)而可以計(jì)算最后閱讀位置。但是目前缺乏最后閱讀位置的精確計(jì)算和顯示方法,以及相應(yīng)的系統(tǒng)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要克服現(xiàn)有技術(shù)的缺點(diǎn),提供一種基于眼動(dòng)跟蹤的最后閱讀位置顯示方法和系統(tǒng),通過(guò)外部眼動(dòng)跟蹤系統(tǒng)獲取眼動(dòng)跟蹤注視點(diǎn)數(shù)據(jù),進(jìn)而計(jì)算用戶(hù)視線(xiàn)離開(kāi)閱讀窗口時(shí)的最后閱讀位置,并將其顯示出來(lái);此外,當(dāng)檢測(cè)到用戶(hù)視線(xiàn)返回閱讀窗口時(shí),將最后閱讀位置的顯示效果取消。本方面需要獲得用戶(hù)實(shí)時(shí)的注視點(diǎn)數(shù)據(jù),但本發(fā)明不限定注視點(diǎn)數(shù)據(jù)獲取的方法,可以通過(guò)第三方的眼動(dòng)跟蹤系統(tǒng)獲得。本發(fā)明通過(guò)計(jì)算和顯示最后閱讀位置,能在不干擾用戶(hù)正常閱讀的情況下,幫助用戶(hù)快速定位最后閱讀位置而繼續(xù)閱讀,有效提高了用戶(hù)在頻繁中斷和繼續(xù)閱讀過(guò)程中的閱讀效率和用戶(hù)體驗(yàn)。
一種基于眼動(dòng)跟蹤的最后閱讀位置顯示方法,包括如下步驟:
(1)檢測(cè)視線(xiàn)離開(kāi)閱讀窗口;
(2)計(jì)算最后閱讀位置;
(3)顯示最后閱讀位置;
(4)檢測(cè)視線(xiàn)返回閱讀窗口;
(5)取消顯示最后閱讀位置。
本發(fā)明還提供了一種基于眼動(dòng)跟蹤的最后閱讀位置計(jì)算與顯示系統(tǒng),包括以下模塊:
眼動(dòng)跟蹤數(shù)據(jù)接收模塊,用于與外部眼動(dòng)跟蹤系統(tǒng)建立連接,獲取眼動(dòng)跟蹤數(shù)據(jù)。
視線(xiàn)離開(kāi)閱讀窗口檢測(cè)模塊,用于檢測(cè)用戶(hù)視線(xiàn)是否離開(kāi)當(dāng)前閱讀窗口。
最后閱讀位置計(jì)算模塊,用于計(jì)算用戶(hù)在當(dāng)前閱讀窗口的最后閱讀位置。
最后閱讀位置顯示模塊,用于將最后閱讀位置在閱讀窗口顯示出來(lái)。
視線(xiàn)返回閱讀窗口檢測(cè)模塊,用于檢測(cè)用戶(hù)視線(xiàn)是否返回原來(lái)的閱讀窗口。
最后閱讀位置顯示取消模塊,用于取消最后閱讀位置在當(dāng)前閱讀窗口的顯示效果。
本發(fā)明的優(yōu)點(diǎn)是:在用戶(hù)暫時(shí)中斷閱讀去處理其他工作,或者切換到其他程序窗口進(jìn)行操作,且重新開(kāi)始閱讀時(shí),通過(guò)計(jì)算和顯示用戶(hù)在閱讀過(guò)程中的最后閱讀位置,有助于用戶(hù)快速回憶和搜索到上次最后閱讀位置,并繼續(xù)進(jìn)行閱讀,顯著提高了用戶(hù)的閱讀效率和主觀體驗(yàn)水平。
附圖說(shuō)明
圖1是本發(fā)明基于眼動(dòng)跟蹤的最后閱讀位置顯示方法的流程示意圖。
圖2是本發(fā)明檢測(cè)用戶(hù)視線(xiàn)離開(kāi)閱讀窗口的算法流程示意圖。
圖3是本發(fā)明計(jì)算最后閱讀位置的算法流程示意圖。
圖4是本發(fā)明顯示最后閱讀位置的效果示意圖。
圖5是本發(fā)明檢測(cè)用戶(hù)視線(xiàn)返回閱讀窗口的算法流程示意圖。
圖6是本發(fā)明基于眼動(dòng)跟蹤的最后閱讀位置計(jì)算與顯示系統(tǒng)的基本邏輯結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合附圖,對(duì)本發(fā)明一種基于眼動(dòng)跟蹤的最后閱讀位置顯示方法和系統(tǒng)進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明的一部分實(shí)施例,而不是全部的實(shí)施例,不能理解為對(duì)本發(fā)明的限制。
參閱圖1,本發(fā)明實(shí)施例提供的一種基于眼動(dòng)跟蹤的最后閱讀位置顯示方法基本流程示意圖,主要包括步驟:1)檢測(cè)視線(xiàn)離開(kāi)閱讀窗口;2)計(jì)算最后閱讀位置;3)顯示最后閱讀位置;4)檢測(cè)視線(xiàn)返回閱讀窗口;5)取消顯示最后閱讀位置。
下面對(duì)上述5個(gè)步驟進(jìn)行具體描述:
(1)檢測(cè)視線(xiàn)離開(kāi)閱讀窗口
在發(fā)生如下情況時(shí)判定視線(xiàn)離開(kāi)閱讀窗口:
情況1:閱讀窗口關(guān)閉。具體的,如果檢測(cè)到閱讀窗口關(guān)閉,則判定用戶(hù)視線(xiàn)離開(kāi)閱讀窗口。
情況2:閱讀窗口最小化。具體的,如果檢測(cè)到閱讀窗口最小化,則判定用戶(hù)視線(xiàn)離開(kāi)閱讀窗口。
情況3:切換到其他窗口。具體的,如果檢測(cè)到窗口失活(即從當(dāng)前閱讀窗口切換到其他窗口),則判定用戶(hù)視線(xiàn)離開(kāi)閱讀窗口。
情況4:視線(xiàn)離開(kāi)窗口并超過(guò)一定時(shí)間閾值,則判定用戶(hù)視線(xiàn)離開(kāi)閱讀窗口。
圖2為檢測(cè)視線(xiàn)離開(kāi)閱讀窗口的算法流程,具體步驟如下:
201:眼動(dòng)跟蹤設(shè)備獲取一個(gè)新的注視點(diǎn)坐標(biāo)后,接收該注視點(diǎn)做進(jìn)一步處理。
202:根據(jù)眼動(dòng)跟蹤設(shè)備提供的數(shù)據(jù),計(jì)算用戶(hù)當(dāng)前的閱讀窗口區(qū)域,以此為依據(jù)判斷新接收到的注視點(diǎn)是否在該區(qū)域內(nèi)。
203:如果注視點(diǎn)坐標(biāo)在閱讀窗口區(qū)域內(nèi),則表明視線(xiàn)沒(méi)有離開(kāi)閱讀窗口,設(shè)置參數(shù)beginTime=0,返回到步驟201,并重新等待接收下一個(gè)注視點(diǎn)。
204:如果注視點(diǎn)坐標(biāo)不在閱讀窗口區(qū)域內(nèi),則表明視線(xiàn)離開(kāi)閱讀窗口,此時(shí)需要判斷beginTime是否等于0,由此判斷之前視線(xiàn)是否已經(jīng)離開(kāi)閱讀窗口。
205:如果beginTime等于0,則說(shuō)明視線(xiàn)是第一次離開(kāi)閱讀窗口,設(shè)置beginTime為當(dāng)前時(shí)間。
206:如果beginTime不等于0,則說(shuō)明此前視線(xiàn)已經(jīng)離開(kāi)了閱讀窗口,為此需計(jì)算timeSpan,timeSpan的值為當(dāng)前時(shí)間與beginTime之間的間隔。
207:判斷timeSpan是否大于閾值(可以設(shè)定,例如為1秒)。
208:如果timeSpan大于閾值,則說(shuō)明用戶(hù)視線(xiàn)離開(kāi)了屏幕。否則,返回步驟201,重新等待接收下一個(gè)注視點(diǎn)。
(2)計(jì)算最后閱讀位置
圖3為計(jì)算最后閱讀位置的算法流程圖,具體步驟如下:
301:設(shè)置位置指針position為fixations隊(duì)列開(kāi)始位置,準(zhǔn)備從隊(duì)列頭部開(kāi)始搜索。
302:position和position+1處是否存在注視點(diǎn),即判斷當(dāng)前位置和下一個(gè)位置是否存在注視點(diǎn)。
303:如果position和position+1處存在注視點(diǎn)坐標(biāo),則讀取position處的注視點(diǎn)設(shè)為P1,讀取position+1處的注視點(diǎn)設(shè)為P2。
304:計(jì)算P1與P2的橫坐標(biāo)距離DX和縱坐標(biāo)距離DY。DX和DY的計(jì)算公式為DX=|P1.X-P2.X|,DY=|P1.Y-P2.Y|(P1.X,P2.X,P1.Y,P2.Y分別為P1和P2的橫、縱坐標(biāo))。
305:判斷DX是否大于橫向閾值(可以設(shè)定,例如為4個(gè)字符的長(zhǎng)度)或者DY是否大于縱向閾值(可以設(shè)定,例如為3行文本的高度)。
306:如果DX大于橫向閾值或DY大于縱向閾值,說(shuō)明用戶(hù)的視線(xiàn)可能脫離閱讀窗口區(qū)域,此處的注視點(diǎn)可能是最后閱讀位置,為此將position處的注視點(diǎn)取出,存到一個(gè)列表list中。然后接著遍歷隊(duì)列,繼續(xù)尋找符合條件的注視點(diǎn)保存到list中。
307:如果讀取到隊(duì)列末尾,則查看符合條件的注視點(diǎn)列表list中是否存在注視點(diǎn)元素。
308:如果list中有注視點(diǎn),則list中的最后一個(gè)注視點(diǎn)就是最后閱讀位置。
309:如果list為空,則說(shuō)明視線(xiàn)是突然離開(kāi)屏幕的,則取fixations隊(duì)列中的最后一個(gè)注視點(diǎn)作為最后閱讀位置。
(3)顯示最后閱讀位置
具體的,當(dāng)完成最后閱讀位置的計(jì)算后,就在閱讀窗口區(qū)域內(nèi)顯示出最后注視點(diǎn)的位置。圖中401表示最后閱讀位置,402表示窗口內(nèi)的文字,403代表閱讀窗口。閱讀窗口403內(nèi)除了最后閱讀位置上注視點(diǎn)外的其他區(qū)域加上了一層灰色模板,用戶(hù)可以透過(guò)灰色模板看清下面的文字402,在最后閱讀位置401附近顏色保持不變。
如果閱讀窗口可見(jiàn),則直接顯示繪制得到的圖像。如閱讀窗口不可見(jiàn)時(shí),例如閱讀窗口最小化或者切換到其他窗口時(shí),繪制的圖像將保存在內(nèi)存中,當(dāng)閱讀窗口重新可見(jiàn)時(shí),繪制的圖像將被顯示出來(lái)。當(dāng)閱讀窗口即將關(guān)閉時(shí),繪制后的圖像將保存到外部存儲(chǔ)器(例如磁盤(pán))中,當(dāng)閱讀窗口再次被打開(kāi)時(shí),繪制的圖像被顯示出來(lái)。
(4)檢測(cè)視線(xiàn)返回閱讀窗口
在發(fā)生如下情況時(shí)判定視線(xiàn)返回閱讀窗口:
情況1:閱讀窗口打開(kāi)。具體的,當(dāng)閱讀窗口打開(kāi)時(shí),則判定用戶(hù)視線(xiàn)返回閱讀窗口。
情況2:閱讀窗口還原。具體的,如果檢測(cè)到閱讀窗口的大小被還原,則判定用戶(hù)視線(xiàn)返回閱讀窗口。
情況3:從其他窗口切換到閱讀窗口。具體的,如果檢測(cè)到窗口被激活(即從其他窗口切換到當(dāng)前閱讀窗口),則判定用戶(hù)視線(xiàn)返回閱讀窗口。
情況4:視線(xiàn)進(jìn)入窗口并超過(guò)一定時(shí)間閾值,則判定用戶(hù)視線(xiàn)返回閱讀窗口。
圖5為檢測(cè)視線(xiàn)返回閱讀窗口的算法流程,具體步驟如下:
501:眼動(dòng)跟蹤設(shè)備獲取一個(gè)新的注視點(diǎn)坐標(biāo)后,接收該注視點(diǎn)做進(jìn)一步處理。
502:根據(jù)眼動(dòng)跟蹤設(shè)備提供的數(shù)據(jù),計(jì)算用戶(hù)當(dāng)前的閱讀窗口區(qū)域,以此為依據(jù)判斷新接收到的注視點(diǎn)是否在該區(qū)域內(nèi)。
503:如果注視點(diǎn)坐標(biāo)在閱讀窗口區(qū)域內(nèi),則表明視線(xiàn)沒(méi)有進(jìn)入閱讀窗口,設(shè)置參數(shù)beginTime=0,返回到步驟501,并重新等待接收下一個(gè)注視點(diǎn)。
504:如果注視點(diǎn)坐標(biāo)在閱讀窗口區(qū)域內(nèi),則表明視線(xiàn)進(jìn)入閱讀窗口,此時(shí)需要判斷beginTime是否等于0,由此判斷之前視線(xiàn)是否已經(jīng)進(jìn)入閱讀窗口。
505:如果beginTime等于0,則說(shuō)明視線(xiàn)第一次進(jìn)入閱讀窗口,設(shè)置beginTime為當(dāng)前時(shí)間。
506:如果beginTime不等于0,則說(shuō)明此前視線(xiàn)已經(jīng)進(jìn)入了閱讀窗口,為此需計(jì)算timeSpan,timeSpan的值為當(dāng)前時(shí)間與beginTime之間的間隔。
507:判斷timeSpan是否大于閾值(可以設(shè)定,例如為1秒)。
508:如果timeSpan大于閾值,則說(shuō)明用戶(hù)視線(xiàn)進(jìn)入了屏幕。否則,返回步驟501,重新等待接收下一個(gè)注視點(diǎn)。
(5)取消顯示最后閱讀位置。
具體的,當(dāng)檢測(cè)視線(xiàn)返回閱讀窗口后,取消原來(lái)最后閱讀位置的顯示,恢復(fù)正常閱讀模式。
如圖6所示,本文發(fā)明實(shí)施例提供的一種基于眼動(dòng)跟蹤的最后閱讀位置計(jì)算與顯示系統(tǒng)的基本邏輯結(jié)構(gòu)示意圖。為了便于說(shuō)明,僅僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。該系統(tǒng)中功能模塊/單元可以是硬件模塊/單元、軟件模塊/,包括:
眼動(dòng)跟蹤數(shù)據(jù)接收模塊,用于與外部眼動(dòng)跟蹤系統(tǒng)建立連接,獲取眼動(dòng)跟蹤數(shù)據(jù),提供給其他模塊進(jìn)行處理。具體的,在眼動(dòng)跟蹤數(shù)據(jù)接收模塊設(shè)定外部眼動(dòng)跟蹤系統(tǒng)的IP地址和端口號(hào),用于與外部眼動(dòng)跟蹤系統(tǒng)建立網(wǎng)絡(luò)連接。此處所指外部眼動(dòng)跟蹤系統(tǒng)具有檢測(cè)用戶(hù)視線(xiàn)方向,實(shí)時(shí)計(jì)算用戶(hù)視線(xiàn)在電子設(shè)備屏幕上注視點(diǎn)坐標(biāo)數(shù)據(jù),以及能向外部網(wǎng)絡(luò)連接系統(tǒng)發(fā)送注視點(diǎn)坐標(biāo)數(shù)據(jù)的功能。眼動(dòng)跟蹤數(shù)據(jù)接收模塊需要將電子設(shè)備的屏幕分辨率在建立網(wǎng)絡(luò)連接時(shí)發(fā)送給外部眼動(dòng)跟蹤系統(tǒng),使之用于計(jì)算注視點(diǎn)坐標(biāo)數(shù)據(jù)。當(dāng)眼動(dòng)跟蹤數(shù)據(jù)接收模塊與外部眼動(dòng)跟蹤系統(tǒng)建立網(wǎng)絡(luò)連接后,眼動(dòng)跟蹤數(shù)據(jù)接收模塊能夠獲得來(lái)自外部眼動(dòng)跟蹤系統(tǒng)發(fā)送的注視點(diǎn)坐標(biāo)數(shù)據(jù)。眼動(dòng)跟蹤數(shù)據(jù)接收模塊將注視點(diǎn)坐標(biāo)數(shù)據(jù)保存到一個(gè)隊(duì)列中,隊(duì)列的存儲(chǔ)空間可以事先指定。如果接收到一個(gè)注視點(diǎn)時(shí),隊(duì)列存儲(chǔ)空間不足,則按照先進(jìn)先出的順序刪除隊(duì)列頭部最早存儲(chǔ)的一個(gè)注視點(diǎn)坐標(biāo)數(shù)據(jù),并在隊(duì)列末尾添加新的注視點(diǎn)坐標(biāo)數(shù)據(jù)。
視線(xiàn)離開(kāi)閱讀窗口檢測(cè)模塊,用于檢測(cè)用戶(hù)視線(xiàn)是否離開(kāi)當(dāng)前閱讀窗口。
最后閱讀位置計(jì)算模塊,用于計(jì)算用戶(hù)在當(dāng)前閱讀窗口的最后閱讀位置,具體包括該位置眼動(dòng)跟蹤注視點(diǎn)的橫坐標(biāo)與縱坐標(biāo)。
最后閱讀位置顯示模塊,用于將最后閱讀位置在閱讀窗口顯示出來(lái)。
視線(xiàn)返回閱讀窗口檢測(cè)模塊,用于檢測(cè)用戶(hù)視線(xiàn)是否返回原來(lái)的閱讀窗口。
最后閱讀位置顯示取消模塊,用于取消最后閱讀位置在當(dāng)前閱讀窗口的顯示效果。
本發(fā)明實(shí)施例中各個(gè)模塊可以集成于一體,也可以分離部署,或進(jìn)一步拆分成多個(gè)子模塊。各個(gè)模塊可以按照實(shí)施例描述分布于實(shí)施例的系統(tǒng)中,也可以進(jìn)行相應(yīng)變化位于不同于本發(fā)明實(shí)施例的一個(gè)或多個(gè)系統(tǒng)中。
本領(lǐng)域的技術(shù)人員應(yīng)該明白,本發(fā)明實(shí)施例可提供成為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。
本發(fā)明實(shí)施例的各模塊或各步驟可以用通用的計(jì)算裝置來(lái)實(shí)現(xiàn),可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來(lái)實(shí)現(xiàn),從而可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來(lái)執(zhí)行,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來(lái)實(shí)現(xiàn)。因此,本發(fā)明實(shí)施例不限制于任何特定的硬件和軟件結(jié)合。
以上公開(kāi)的僅為本發(fā)明的具體實(shí)施例,但是本發(fā)明并非局限于此,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。顯然這些改動(dòng)和變型均應(yīng)屬于本發(fā)明要求的保護(hù)范圍保護(hù)內(nèi)。