Funcionamiento de la aplicación
La aplicación que construímos determina si dos fotografías son de un mismo gato o de gatos distintos, basándonos en el patrón de sus bigotes. Para esto, fue necesario centrar el procesamiento de las imágenes en el hocico de los gatos. En primer lugar hay que detectar esta zona, para luego resaltar las estructuras de interés (los folículos) y finalmente hacer una comparación entre ambas.
Utilizamos pycatfd, un modelo de IA entrenado para la detección de caras de gatos y de puntos clave en la mismas, para poder automatizar el funcionamiento de la aplicación. Con la información que este modelo nos brinda, podemos hacer un recorte de la zona de interés y posteriormente aislar los folículos con una umbralización de la imagen.
Buscamos estandarizar las imágenes de la base de datos con el objetivo de ayudar a los algoritmos de umbralización y comparación a hacer un mejor trabajo, por lo que elegimos una imagen base y transformamos el resto de imágenes para ajustarlas a ésta. Este ajuste consta de hacer una homografía para lograr tener todas las caras con una perspectiva y proporciones similares.
Al ingresar dos fotografías a la aplicación, entonces, se detectan las caras de los gatos, se ajustan sus proporciones y se aislan los folículos de ambos lados. La comparación consta de una primera etapa de registrado, proceso con el cual se realizan pequeñas transformaciones a una imagen con el fin de superponerla sobre la otra. Nos basamos en la idea de que si las estructuras pertenecen al mismo gato este proceso debería ser exitoso. Es importante mencionar que los ajustes que hace este algoritmo constan de pequeñas traslaciones, rotaciones y deformaciones elásticas mientras se minimiza una métrica que mide la diferencia entre ambas imágenes. Es mucho más fino y preciso que la homografía inicial, que solamente se basa en una serie de puntos para hacer un ajuste más bien grueso.
Finalmente, luego del proceso de registrado, resta hacer la comparación entre ambas imágenes para determinar el resultado. Esta comparación se hace eligiendo una medida de diferencia de las imágenes con un comportamiento razonable para nuestro objetivo. Buscamos saber "qué tanto se superponen" dos imágenes, lo cual es aún motivo de investigación y discusión, y parte fundamental del proyecto.