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の縦座標の値を減算します。

Iが直線次のようにスケールが算出される基本的なスケーリングシステムを用いたスクリーン点に瞳孔中心の位置から計算された注視点をマッピングしました:

scaleX = screen_width/gaze_width 
scaleY = screen_height/gaze_height 

任意の注視点P(x、yの暗い照明で、それは偽陽性を与えるが、私はそれを置くつもりはほぼので(

m = scaleX*x 
n = scaleY*y 

しかし、問題はさらにほぼ完璧な瞳孔検出した後、次のとおりです。)私は、対応する画面の点Q(M、N)を計算します私はそれに取り組むことができないので、制限の下で、私は十分な時間がない)、私はまだ貧弱な視線の幅と凝視の高さを取得しています。

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の2番目の注視点であるPとQの瞳孔中心の位置の任意の2つの点を与え、私たちは線PQの方向と長さを計算します。 Push method for gaze estimation

画面スケールでDであるのは、この線分の長さが、L.我々 割合をスクリーニングするために、次にスケールL、言うLであると仮定しよう、と視線移動の方向を考えると、我々は上にカーソルを移動 R、D距離などの最後の静止点から、長さDの線分、および開始点Sの終点として計算される新しい点Sに変換されます。図形表現は図に示されています。基本的には、私は視線データをスクリーンポイントにマッピングしません。私は基本的に視線を追跡し、スクリーン上のカーソルに適用するためにそれを "プッシュ"に変換します。 しかし、私はまだそれを実装していません。それは実際に凝視を画面の座標にマッピングしないので、誤っている可能性があるからです。この理論の動機は、sourceforgeのeViacamプロジェクトに由来しています。基本的にはあなたの顔を追跡し、それに応じてマウスを動かします。キャリブレーションでは、あなたの顔がどれくらい軸に沿って動くかを計算します。

ボトムライン:だからのいずれかが完全に処理された目画像からユーザの視線を検出する方法のいずれかのアイデアを持っている場合 - 検出された瞳孔中心と目のコーナーを持つものを、教えてください!私はちょうど約1日を持っています。私はその遅れを知っていますが、私は私を助けることができる魔法のアイデアが必要です。

答えて

5

これは回答ではありませんが、コメントとして投稿することは不可能です。私はあなたの答えの後にそれを削除します。

すべての必要なパラメータがありますか?お使いのカメラは、あなたが別のトリプル{F、E、O}と区別することができますどのように、{K、J、Q}でコーナーと瞳を検出した場合

enter image description here

は、次の図を考えてみましょうか?尺度は同じですが、黒い矢印で表される視線の方向はまったく異なります。

注:2つの黒線と赤線は、1つのカメラポイントから描画され、可視領域外に配置されました。

+0

私は顔検出のために正面顔カスケードを使用していますので、eye_a目は検出されません。第二に、私は目の角に対して瞳孔中心を追跡することによって異なる視点を得る。実際には今まで私はちょうど参照点として画像の原点を使用しましたが、ドリフトを取得します。 ユーザが特定の位置から較正した後に頭を動かすことを想定していないという制限は、正面からのものであっても2つの異なる視点を持つことができません(つまり、eye_bに似ていますが、それの左または右)。ユーザーは同じ頭の位置から注視する必要があります –

+0

素晴らしい図面!どのプログラムを使用しましたか? – Mene

関連する問題