Estimación de la mirada desde una imagen de un ojo.

He podido detectar la pupila y las esquinas de los ojos con precisión hasta ahora. Puede ver algunas instantáneas que subí en mi respuesta a mi propia pregunta aquí:

Realizar la detección estable de la esquina del ojo.

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

<code>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
</code>

Y los puntos de mirada correspondientes que obtengo al observar esos CP se llaman GP

Cálculo de un punto de mirada GP:

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

He mapeado linealmente los puntos de mirada calculados desde la ubicación del centro del alumno hasta los puntos de pantalla utilizando un sistema de escalado básico donde las escalas se calculan de la siguiente manera:

<code>scaleX = screen_width/gaze_width
scaleY = screen_height/gaze_height
</code>

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

<code>m = scaleX*x
n = scaleY*y
</code>

Pero el problema es que, incluso después de la detección casi perfecta del alumno (casi porque en condiciones de poca iluminación 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 mala anchura de la mirada y altura de la mirada.

Aquí hay un registro de ejecución de prueba:

<code>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
</code>

Solo mire los puntos de la mirada y sus puntos de pantalla correspondientes detectados por la mirada (debajo de ellos). Las vastas diferencias en los valores de x, y ordenadas me están fastidiando. El lunes es la presentación final.

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

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

Supongamos que la longitud de este segmento de línea es L. Luego escalamos L a proporciones de pantalla, digamos que L es D en escala de pantalla, y dada la dirección del movimiento de la mirada, movemos el cursor en la pantalla desde su último punto de descanso, digamos R, distancia D, a un nuevo punto S que se calculará como el punto final del segmento de línea cuya longitud es D, y el punto inicial S. La representación figurativa se muestra en la figura. Por lo tanto, básicamente, no asigno ningún dato de la mirada al punto de la pantalla, básicamente, sigo la mirada y lo convierto en un "impulso" para aplicarlo al cursor en la pantalla. Pero no lo he implementado todavía. Porque en realidad no mapea la mirada a las coordenadas de 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 tu rostro y mueven el mouse como corresponde. En la calibración solo calculan cuánto se mueve tu cara a lo largo de los ejes.

Línea de fondo: Entonces, si alguno de ustedes tiene alguna idea de cómo detectar la mirada de un usuario desde una imagen de ojo perfectamente procesada:Uno con un centro pupilar detectado y esquinas de los ojos., por favor díganlo! Tengo casi un día, y sé que es tarde, pero solo necesito una idea mágica que pueda ayudarme.

Respuestas a la pregunta(1)

Su respuesta a la pregunta