9

到目前爲止,我已經能夠準確地檢測到瞳孔和眼角。 你可以看到幾張照片我上載在我的答案在這裏我自己的問題:眼睛圖像的注視估計

Performing stable eye corner detection

這裏是我到目前爲止已經完成。 我通過看TLCP,TRCP和BLCP 校準用戶的視線,其中

CP = calibration point; a screen point used for calibration 
B = bottom 
T = top 
L= left 
R = right 
gaze_width = TRCP.x - TLCP.x 

gaze_height = BLCP.y- TLCP.y 

以及相應的凝視點我先來看看這些CP的被稱爲全科醫生

計算凝視點GP的

我從當前瞳孔中心的位置減去TLGP的座標值,因爲注視點必須落在我希望你理解它的假設矩形中,它非常簡單。

我線性映射從瞳孔中心位置計算出使用在尺度計算的基本縮放系統如下篩選分凝視點:

scaleX = screen_width/gaze_width 
scaleY = screen_height/gaze_height 

和任何注視點P(X,Y )我計算出相應的屏幕點Q(M,N)爲:

m = scaleX*x 
n = scaleY*y 

但問題是,即使是近乎完美的瞳孔檢測後(幾乎因爲光線不足的它給誤報但我打算把那個。在限制下,因爲我無法工作,我沒有足夠的時間),我的視線寬度和視線高度仍然很差。

這是一個測試運行日誌:

DO_CAL= True 

Gaze Parameters: 

TLGP = (38, 26) | TRGP = (20, 22) | BLGP = (39, 33) 
screen height = 768 screen width = 1366 

gaze height = 7 gaze width = 18 

scales: X = 75.8888888889 | Y = 109.714285714 
Thing on = True 

Gaze point = (5, 3) 
Screen point: (987, 329) 

Gaze point = (5, 3) 
Screen point: (987, 329) 

Gaze point = (7, 5) 
Screen point: (835, 549) 

Thing on = False 

TLGP = (37, 24) | TRGP = (22, 22) | BLGP = (35, 29) 
screen height = 768 screen width = 1366 

gaze height = 5 gaze width = 15 
scales: X = 91.0666666667 | Y = 153.6 
Thing on = True 

Gaze point = (12, 3) 
Screen point: (1093, 461) 

Gaze point = (12, 3) 
Screen point: (1093, 461) 

ESC pressed 

試想一下,在注視點及其相應的凝視檢測屏幕點(下它們)。 x,y座標值的巨大差異讓我瘋狂。 星期一是最後的介紹。

這種方法後,我理論上另一個其中:

校準如第一方法實現的。我會檢測凝視的運動及其方向。假設給定瞳孔中心位置的任意兩點P和Q,其中P是第一注視點,Q是第二個,那麼我們計算線PQ的方向和長度。 Push method for gaze estimation

讓我們假設這個線段的長度爲L.然後,我們的規模L到屏幕 比例,說L是屏幕比例d,並給予凝視運動的方向,我們 移動光標的屏幕從其最後一個休息點(例如R,D距離)指向一個新點S,該點將被計算爲長度爲D的線段的終點和起點S.圖中給出了圖形表示。因此,基本上,我不會將任何注視數據映射到屏幕點,我基本上會跟蹤注視,並將其轉換爲應用於屏幕上光標的「推送」。 但我還沒有實現它。因爲它實際上沒有將注視映射到屏幕座標上,因此可能是錯誤的。這個理論的動機來源於sourceforge上的eViacam項目 - 他們基本上追蹤你的臉部,並相應地移動鼠標。在校準中,他們只是計算你的臉部沿着軸線移動了多少。

底線:所以,如果您有任何的如何從一個完全處理右眼圖像檢測用戶的凝視任何想法 - 一個與檢測的瞳孔中心和眼角,請快快!我只有一天,我知道它已經晚了,但我只需要任何可以幫助我的神奇主意。

回答

5

這不是一個答案,但它不可能作爲評論發佈。我會在你回答之後刪除它。

你確定你有所有必要的參數嗎?

請看下圖:

enter image description here

如果相機偵測到在{K,J,Q}角落瞳,你怎麼可以從另一個三重區分{F,E,O}?請注意,這些措施是相同的,但黑色箭頭所反映的注視方向則完全不同。

注意:兩條黑色和紅色線條是從單個攝像機點繪製的,放置在可見區域之外。

+0

首先,我使用正面人臉級聯進行人臉檢測,因此eye_a眼睛不會被檢測到。其次,通過追蹤瞳孔中心相對於眼角的不同,我獲得不同的注視點。實際上到目前爲止,我只是使用圖像原點作爲參考點,但確實得到了漂移。 用戶在從特定位置校準後不應該移動頭部的限制不能允許具有兩個不同的視點,即使它們來自正面(即,類似於eye_b但朝向左側或右側)。用戶將不得不從相同的頭部位置凝視 – 2012-04-29 05:01:59

+0

偉大的繪畫!你使用了哪個程序? – Mene 2017-03-29 09:28:10