Seguimiento de mirada con Face Mesh

Resumen

El seguimiento de la mirada con Mediapipe y OpenCV permite detectar puntos clave del rostro, calcular la posición del iris y estimar hacia dónde miras en tiempo real. Esta guía te muestra cómo implementarlo paso a paso usando Face Mesh, ideal si trabajas en visión por computadora aplicada a interfaces, accesibilidad o análisis de comportamiento.

¿Qué hace Face Mesh para detectar los ojos?

Face Mesh es el módulo de Mediapipe que identifica cientos de landmarks faciales en tiempo real. En la primera aproximación del proyecto, solo se muestran en pantalla los dos extremos exteriores de los ojos, aunque internamente el modelo procesa todos los puntos del rostro [00:13].

Una característica interesante: si te tapas un ojo, el modelo predice la posición por probabilidad. Pero si cubres una porción mayor de la cara, el tracking se pierde. Eso te da una idea del margen de confianza con el que trabaja.

¿Qué es un landmark facial? Es un punto característico del rostro, como el extremo de un ojo o la punta de la nariz, identificado por un número específico dentro del modelo de Mediapipe.

¿Cómo se configura la detección mínima en Mediapipe?

El script trabaja con dos parámetros base que defines al inicializar Face Mesh [01:00]:

  • min_detection_confidence en 0.5: si la probabilidad supera el 50%, muestra el rostro.
  • min_tracking_confidence en 0.5: mismo umbral para mantener el tracking entre frames.
  • cv2.VideoCapture(0) si tienes una sola cámara, o 1, 2, etc., si manejas varias.

Una vez habilitada la cámara, capturas frame por frame y haces la conversión de BGR a RGB antes de pasarle la imagen al modelo. Ese paso es obligatorio porque OpenCV trabaja en BGR y Mediapipe espera RGB.

¿Cómo obtener los extremos del ojo izquierdo y derecho?

Mediapipe usa coordenadas relativas, con valores entre 0 y 1. Para convertirlas en coordenadas absolutas dentro del frame, multiplicas la coordenada X por el ancho y la Y por la altura [02:30].

Los landmarks clave para los extremos exteriores son:

  • Landmark 33: extremo del ojo izquierdo.
  • Landmark 263: extremo del ojo derecho.

Con esas coordenadas absolutas dibujas un círculo verde en cada extremo usando cv2.circle. Para cerrar la ventana, agregas la condición de que al presionar la tecla Q, el bucle termine.

¿Cómo se detecta el centro del iris con Mediapipe?

Algunos estudios recomiendan usar el centro del iris en lugar de los extremos del ojo para mejorar la precisión del seguimiento de mirada [03:50]. Para activarlo, debes habilitar el parámetro refine_landmarks=True al inicializar Face Mesh.

Este refinamiento funciona mejor cuando tu rostro está cerca de la cámara y bien iluminado.

¿Para qué sirve refine_landmarks en Face Mesh? Activa la detección de cuatro puntos adicionales por iris, lo que permite calcular el centro de la pupila con mayor exactitud.

¿Qué landmarks corresponden al iris?

Al activar el refinado aparecen ocho puntos extra, cuatro por cada ojo. Para el ojo izquierdo son los landmarks 468, 469, 470 y 471 [05:10]. Para el ojo derecho se aplican los siguientes en la secuencia.

El cálculo es directo:

  1. Recorres los cuatro puntos sumando uno en uno.
  2. Promedias sus coordenadas X e Y.
  3. Ese promedio define el centro del iris, que dibujas como un círculo azul.

La misma operación se replica para el ojo derecho. Así obtienes la posición de ambas pupilas en cada frame.

¿Por qué usar el punto medio entre extremos del ojo?

La estrategia final del proyecto no usa el iris, sino un punto medio entre los dos extremos del ojo [06:40]. La lógica es práctica: cuando observas algo muy cerca, tu mirada tiende a converger en esa dirección, y el punto medio es un buen estimador.

El cálculo es simple: sumas las coordenadas X de los dos extremos y divides entre dos, lo mismo con Y. Repites para el ojo derecho. El resultado se dibuja como un punto azul entre los dos puntos verdes.

Esta aproximación tiene ventajas:

  • Menor costo computacional al no requerir refinado de landmarks.
  • Estabilidad cuando el iris no se detecta bien por iluminación.
  • Suficiente precisión para tracking a corta distancia.

¿Qué herramientas necesitas para replicar el proyecto?

El stack es mínimo y accesible:

  • OpenCV para captura de video y dibujo de círculos.
  • Mediapipe con el módulo Face Mesh activado.
  • Python como lenguaje base del script.
  • Una cámara web funcional, idealmente bien iluminada y cercana al rostro.

Con esos elementos ya tienes una primera versión del seguimiento de mirada lista para iterar.

Ahora viene tu turno: aplica la misma lógica para rastrear la punta de la nariz, toma un screenshot del resultado y comparte tu código en los comentarios.