9

He podido detectar la pupila y las esquinas de los ojos con precisión hasta el momento. Se puede ver varias fotos que he subido en mi respuesta a mi propia pregunta aquí:estimación de la mirada de una imagen de un ojo

Performing stable eye corner detection

Esto es lo que he hecho hasta ahora. que calibrar la mirada del usuario examinado TLCP, TRCP y BLCP donde

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 

Y los puntos mirada correspondientes que consigo examinado la PC que se llaman los médicos

cálculo de un GP punto de la mirada :

Restamos los valores de las ordenadas del TLGP de la ubicación actual del centro de alumnos, porque el punto de mira debe caer en el rectángulo hipotético cuyo espero que lo entiendas, es realmente muy simple.

He asignada linealmente los puntos mirada calculados a partir de la ubicación del centro de la pupila para detectar puntos usando un sistema de escala básica, donde se calculan las escalas de la siguiente manera:

scaleX = screen_width/gaze_width 
scaleY = screen_height/gaze_height 

Y para cualquier punto de la mirada P (x, y) calculo el correspondiente punto de la pantalla Q (m, n) como:

m = scaleX*x 
n = scaleY*y 

pero el problema es, después de la detección pupila incluso casi perfecta (casi porque hay poca luz que da falsos positivos, pero tengo la intención de poner eso. bajo limitaciones porque no puedo trabajar en eso, no tengo suficiente tiempo), sigo teniendo poco ancho de miradas y altura de la mirada.

Aquí hay un registro de prueba:

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 

Basta con mirar a los puntos de vista y sus puntos de pantalla mirada detectados correspondientes (por debajo de ellos). Las grandes diferencias en los valores de las ordenadas x, y me están molestando. El lunes es la presentación final.

Después de este enfoque, Teoricé otro donde en:

La calibración se realiza como en el primer método. Detectaría el movimiento de la mirada y su dirección. Digamos, dados dos puntos de la ubicación del centro del alumno, P y Q, donde P es el primer punto de mirada, Q es el segundo, luego calculamos la dirección y la longitud de la línea PQ. Push method for gaze estimation

Vamos a suponer que la longitud de este segmento de línea es L. A continuación, escala L a la pantalla proporciones, digamos L es D en la escala de la pantalla, y dada la dirección del movimiento de la mirada, que mover el cursor en el pantalla desde su último punto de reposo, digamos R, D distancia, a un nuevo punto S que se calculará como el punto final del segmento de línea cuya longitud es D, y el punto de inicio S. La representación figurativa se da en la figura. Por lo tanto, básicamente, no mapeo los datos de mi mirada al punto de la pantalla, básicamente sigo la mirada y la convierto en un "empujón" para aplicarla al cursor en la pantalla. Pero aún no lo he implementado. Porque en realidad no correlaciona la mirada con las coordenadas de la pantalla y, por lo tanto, puede ser errónea. Las motivaciones para esta teoría se derivaron del proyecto eViacam en sourceforge: básicamente rastrean su rostro y mueven el mouse en consecuencia.En la calibración, solo calculan cuánto mueve su cara a lo largo de los ejes.

En pocas palabras: De modo que si alguno de ustedes tiene alguna idea de cómo detectar la mirada de un usuario una imagen de ojo perfectamente procesado a partir de - uno con un centro de la pupila del ojo detectado y esquinas, por favor diga! Tengo casi un día, y sé que es tarde, pero solo necesito una idea mágica que pueda ayudarme.

Respuesta

5

Esto no es una respuesta, pero es imposible publicarlo como comentario. Lo eliminaré después de tu respuesta.

¿Estás seguro de que tienes todos los parámetros necesarios?

Considere el siguiente diagrama:

enter image description here

Si la cámara detecta las esquinas y la pupila en {K, J, Q}, ¿cómo se puede distinguir de otro triple {F, E, O}? Tenga en cuenta que las medidas son las mismas, pero las direcciones de la mirada, representadas por las flechas negras son completamente diferentes.

Nota: las dos líneas negras y rojas se extrajeron de un único punto de la cámara, colocado fuera de la región visible.

+0

En primer lugar, estoy usando cascadas frontales para la detección de rostros, por lo que no se detectará ningún ojo. en segundo lugar, obtengo puntos de mirada diferentes al seguir el centro de la pupila con respecto a las esquinas de los ojos. De hecho, hasta ahora solo he usado el origen de la imagen como punto de referencia, pero entiendo la deriva. La limitación de que el usuario no debe mover su cabeza después de calibrar desde una posición particular, no puede permitir tener dos puntos de vista diferentes, incluso si son de una cara frontal (es decir, similar a eye_b pero hacia izquierda o derecha). El usuario tendrá que mirar desde la misma posición de la cabeza –

+0

¡Excelente dibujo! ¿Qué programa usaste? – Mene

Cuestiones relacionadas