Introducción
En la última década, el desarrollo de los sistemas de videooculografía para diagnosticar enfermedades que afectan al sistema nervioso central ha sido un área en constante crecimiento. Las técnicas basadas en video han permitido reducir la invasividad del sujeto gracias al uso de cámaras y algoritmos de procesamiento de imágenes para estimar el centro de la pupila y, con ello, la dirección de la mirada.
Hasta el momento han sido propuestas una gran cantidad de técnicas para detectar la posición del centro de la pupila utilizando métodos tradicionales de procesamiento de imágenes y métodos basados en aprendizaje automático.1 A su vez, dentro de estos últimos, ha prevalecido el empleo de los métodos de aprendizaje supervisado, los cuales requieren de datos de entrenamiento etiquetados con exactitud.
Entre los enfoques de procesamiento de imágenes más usados están los basados en los operadores integro-diferenciales2, la transformada de Hough3, histograma4, ajuste de elipse5, mientras que entre los algoritmos de aprendizaje automático comúnmente referidos se encuentran los basados en modelos bayesianos6, máquinas de vectores de soporte7 y redes neuronales convolucionales.8 Muchos de los trabajos citados anteriormente han sido validados con imágenes propias, sin embargo, para la investigación científica resulta valioso el empleo de bases de datos debido a que contienen información de fácil acceso para los investigadores y constituye una referencia a la hora de establecer comparaciones entre los distintos métodos que se evalúan sobre estas imágenes.9
Las bases de datos públicas más utilizadas para el seguimiento ocular son la UBIRIS10 y la CASIA.11 Dichas bases de datos no poseen anotaciones del centro de la pupila que sirvan como referencia a la hora de aplicar métricas para evaluar el desempeño de los métodos. Actualmente, son muy escasas las herramientas interactivas que faciliten realizar una marcación (anotación) fiable del centro de la pupila y, en consecuencia, posibiliten el entrenamiento y la posterior validación de los algoritmos automatizados para estimar el centro de la pupila. El objetivo de este trabajo es desarrollar una herramienta de código abierto para anotar, de forma semiautomática e interactiva, el centro de la pupila por parte de un especialista.
Método
El diseño de la herramienta software se realizó teniendo en cuenta los requisitos funcionales y no funcionales descritos a continuación.
Entre los requisitos funcionales que debe cumplir la aplicación se encuentran: lectura y visualización de la imagen, operaciones opcionales de apoyo a la anotación, seleccionar el algoritmo de ajuste y puntos para la anotación semiautomática del centro de la pupila, guardar resultados de la anotación y visualizar la anotación guardada.
Por otra parte, la herramienta debe cumplir con requerimientos no funcionales como ser multiplataforma y tener un costo computacional moderado que permita su ejecución en ordenadores. con prestaciones limitadas.
La aplicación se desarrolló utilizando el lenguaje de programación Python, el cual cumple con el requerimiento multiplataforma, al igual que el marco de trabajo Qt, utilizado para el desarrollo de la interfaz gráfica a través de la integración para Python, PySide2.
El proceso de marcación depende de las características de la imagen y de la experiencia del anotador. En ocasiones se presenta una imagen clara y la anotación se realiza directamente sin mayor complejidad. Sin embargo, en otros casos aparecen efectos indeseables que constituyen perturbaciones y dificultan la anotación.9 En dichos casos, las operaciones opcionales de ajuste de contraste o los métodos de ajuste de elipse y círculo que se describen brevemente a continuación, pudieron facilitar la anotación.
a) Ajuste de elipse.
El algoritmo de ajuste de elipse que se utilizó en esta herramienta consistió en un método de ajuste de mínimos cuadrados enfocado en elipses12 sobre un conjunto de datos dispersos ubicados en el borde de la pupila. Este algoritmo proporcionó ventajas en términos de sensibilidad a las oclusiones y al ruido. Primero, se presentó un vector con las coordenadas x y y de 5 puntos marcados por un especialista; luego, estos datos se normalizaron y el ajuste de la cónica pudo ser abordado minimizando la suma de las distancias algebraicas cuadradas de la curva para los 5 puntos seleccionados.
b) Ajuste de círculo.
El método de ajuste de círculo geométrico implementado estuvo basado en dos pasos fundamentales: la selección de un círculo inicial y la minimización de forma iterativa de la distancia entre el círculo inicial y el conjunto de puntos seleccionados por el usuario. En la inicialización se construyó un círculo basado en la propiedad de que, para cualquier triplete dado de puntos no alineados, hay un solo círculo que pasa por los tres puntos. Una vez que se tuvo la suposición inicial para el centro del círculo, se realizó un proceso iterativo para obtener el mejor ajuste con relación a los puntos establecidos. El uso de un estimador de mínimos cuadrados basado en la distancia euclidiana entre los puntos y el círculo fue una opción común para dicho ajuste. Esta minimización se realizó usando el algoritmo de Levenberg-Marquardt13 con 50 iteraciones.
Resultados
La aplicación se implementó con la utilización del lenguaje de programación Python y proporcionó varias funciones auxiliares que facilitaron la tarea del anotador. La herramienta propuesta se denominó PUPILA (del inglés PUPIL Annotation). La interfaz gráfica de usuario principal de esta se muestra en la figura 1 y estuvo compuesta por las siguientes partes:
Panel izquierdo: permite previsualizar y acceder rápidamente a todas las imágenes oculares localizadas en el directorio de trabajo actual.
Panel central o principal: permite visualizar en detalle la imagen seleccionada, aumentar y disminuir la escala de visualización y desplazar el área visualizada de la imagen.
Panel derecho: permite visualizar los detalles de la anotación, guardarla, cancelarla y/o acceder rápidamente a la siguiente imagen del directorio.
Barra de menú: contiene una serie de elementos de menú que permiten acceder a las funcionalidades de la aplicación.
Panel izquierdo
El panel izquierdo de la interfaz gráfica de la aplicación muestra una previsualización de todas las imágenes que se encuentran en el mismo directorio de la imagen cargada en el panel principal. Las imágenes previsualizadas serán visibles en tamaño original, en el panel central, una vez se haya realizado un clic sobre su miniatura. También, en la esquina inferior del panel izquierdo se expone continuamente el valor de las coordenadas (x, y) por las que se desplaza el cursor sobre la imagen que se visualiza en el panel principal.
Panel central o principal
El panel central constituye el visor de imágenes de la aplicación. Permite inspeccionar en detalle la imagen cargada, las operaciones de procesamiento aplicadas y la anotación guardada. Además, posibilita aumentar (zoom in) y disminuir (zoom out) el área de la pupila al mover la rueda del mouse y recorrer otras partes de la imagen, posterior al aumento de zoom.
Panel derecho
El panel derecho brinda información al usuario sobre los puntos que fueron seleccionados para el ajuste de elipse/círculo y sobre los parámetros resultantes de éste. Una vez realizado este proceso, se visualizan tres botones correspondientes a las funcionalidades de "Guardar", "Cancelar" y "Siguiente". Al presionar el primero de ellos, se exportan los parámetros calculados (centro, radio, semiejes, etc.) a un fichero *.csv y se notifica al usuario que el archivo fue guardado exitosamente o que ocurrió un error, en caso contrario. El botón “Cancelar” retorna la aplicación a su estado inicial, perdiendo todos los cambios realizados. El botón “Siguiente” carga la próxima imagen a anotar.
Barra de menú
La barra de menú contiene cinco menús principales, que agrupan una serie de funcionalidades para la gestión y edición de la imagen ocular (Figura 2). Menú "Archivo" (a): brinda todas las facilidades en cuanto a la administración del sistema en sí y gestión de archivos. Permite cargar la imagen y visualizar su anotación, así como salir de la aplicación. La opción “Abrir” (b), abre un cuadro de diálogo que permite acceder a la ubicación de la imagen ocular (en formato.jpg) para su lectura y visualización en el panel principal.
La opción “Mostrar anotación” en el menú "Archivo" (a), permite una vez anotado el centro de la pupila en una imagen cargada, leer las coordenadas del archivo *.csv asociado y dibujar un círculo o una elipse, cuyo centro esté ubicado en las coordenadas leídas.
En Menú "Ajustar": se presentan dos algoritmos para realizar el ajuste de la pupila a una de dos formas geométricas, elipse o círculo. Para ambos casos, el usuario debe marcar 5 puntos (x, y) que se encuentren en el borde de la pupila, los cuales representan la entrada del algoritmo. Luego se realiza el ajuste por mínimos cuadrados. Si la opción seleccionada fue ajuste de elipse, los parámetros que serán notificados en el panel derecho de la aplicación serán: “Centro”, “Semieje Mayor”, “Semieje Menor”, “Ángulo de Rotación” (Figura 1). Si se escoge la opción de ajuste de círculo aparecerá en el panel derecho de la aplicación los parámetros “Centro” y “Radio”, devueltos por el algoritmo, como se muestra en la figura 3.
En Menú "Imagen": se proporcionan operaciones de procesamiento digital de imágenes para mejorar la calidad de la imagen o destacar determinados atributos dentro de la misma, como ecualización de histograma, umbralización, corrección gamma y logarítmica (Figura 4).
La opción “Ecualizar histograma” permite mejorar el contraste de la imagen mediante la redistribución de las frecuencias con que aparecen los diferentes niveles de grises en el histograma de una imagen en escala de grises.
La funcionalidad de “Umbralización” es uno de los métodos de segmentación más importantes, cuyo objetivo es convertir una imagen en escala de grises a una nueva con solo dos niveles, de manera que los objetos queden separados del fondo. Para extraer el objeto del fondo se selecciona un umbral de intensidad que separe los dos conjuntos. En esta aplicación, inicialmente el umbral se selecciona usando el método de Otsu y luego se puede modificar por parte del usuario, desplazando una barra horizontal en el panel derecho de la interfaz gráfica.
La corrección gamma y logarítmica son una familia de funciones que se encargan de comprimir y ampliar el rango dinámico del brillo de una imagen. En la corrección logarítmica se les asigna a las regiones oscuras un mayor rango dinámico en la salida, mejorando el contraste en las zonas con poca iluminación. Por otro lado, en la corrección gamma se comprimen los valores de los píxeles oscuros y se expanden los brillantes, por lo que visualmente la imagen se oscurece mejorando la diferenciación de detalles en zonas brillosas.
La configuración de la ganancia para las operaciones de corrección gamma y logarítmica se establece seleccionando un valor desplazando una barra horizontal en el panel derecho de la interfaz gráfica como se observa en la parte superior derecha de la figura 4 de la derecha.
En Menú "Configuración": permite seleccionar el idioma de visualización de la aplicación. Los idiomas disponibles son: español, inglés y francés. Por defecto, la aplicación se muestra en el mismo idioma del sistema operativo del usuario.
En Menú "Ayuda": brinda ayuda sobre funcionamiento del sistema y cómo resolver pequeños problemas debido a errores de manipulación del usuario.
Discusión
La anotación manual del centro de la pupila es un proceso laborioso, tedioso y propenso a errores aun cuando la morfología de la pupila y/o el iris se visualice claramente y no se encuentre interferida por diversos elementos como oclusiones, destellos, desenfoques, problemas de contraste iris-pupila, presencia de pestañas y cabellos, entre otros. La selección de realizar un ajuste circular o elíptico depende de la morfología que muestre la pupila o el iris en presencia de elementos interferentes o no.
Cuando la pupila es pequeña o el sujeto mira al centro de la videocámara, el ajuste de círculo es más conveniente. Si la pupila está dilatada o el sujeto mira a un lateral de la videocámara, el ajuste de elipse es más eficaz. Cuando hay oclusión de la pupila, se puede usar indistintamente uno u otro, aunque el ajuste de círculo suele ser más conveniente. La anotación del centro de la pupila usando diversas funciones de preprocesamiento para mejorar la calidad de la imagen y los métodos de ajuste de círculo y de elipse facilitan el trabajo del anotador, permitiendo mejorar la exactitud obtenida.
Hasta el momento, la herramienta ha permitido anotar 1 000 imágenes de las bases de datos CASIA, UBIRIS y otras adquiridas experimentalmente. Además, abre nuevas posibilidades para el desarrollo de nuevos algoritmos de detección del centro de la pupila basados en métodos de aprendizaje automático supervisado y ayuda a la comunidad científica a incrementar el número de bases de datos anotadas que puedan ser usadas por otros especialistas en futuros experimentos.
Conclusiones
La nueva herramienta desarrollada, única de su tipo hasta el momento, es de código abierto y multiplataforma, lo cual brinda grandes ventajas para el usuario en términos de la compatibilidad con todo tipo de dispositivos y de su uso gratuito. Además, proporciona un ambiente agradable e interactivo para anotar el centro de la pupila mediante el uso de una serie de prestaciones que garantizan comodidad, exactitud y reducción de subjetividades en el trabajo del especialista.