Registrado
Una vez finalizada la etapa de preprocesamiento, contamos con imágenes binarizadas, de un tamaño y cantidad de píxeles negros estandarizada y formando nubes de puntos que conforman el patrón característico de bigotes de cada gato. Sin embargo, es de esperar que en fotos diferentes el mismo hocico presente una deformacion con respecto al mismo hocico en otra foto, por más de que sea el mismo individuo.
Buscando mitigar este efecto lo más posible decidimos incluir una etapa de registrado en las imágenes, buscando llevar el patrón de bigotes de uno de los gatos que se quiere comparar a la configuración de los bigotes del otro gato. Para ello hicimos uso de las herramientas ofrecidas por la librería SimpleITK, que es mayormente utilizada para procesamiento de imágenes médicas, pero se adaptó muy bien a las necesidades de nuestro problema particular.
Comenzamos usando primeramente una transformación en 2D poco permisiva y que admite solo pequeñas traslaciones para acabar de alinear las nubes de puntos, seguida de una transformación usando splines cúbicos. Esta última realiza pequeñas transformaciones elásticas, restringidas a un tamaño de malla de deformación en cada una de las tres dimensiones elegidas, el cual seteamos en un valor bajo, ya que no esperamos deformaciones muy significativas entre imágenes. Teniendo esto en cuenta, el algoritmo busca la transformación que logra minimizar una métrica dada, la que en nuestro caso fue la correlación entre las imágenes, dado que entre las opciones de optimizadores ofrecida por la librería, consideramos que era la mas robusta y que mejor se adaptaba a nuestro problema.
Un punto que se debió tener en cuenta fue que a la hora de aplicar la mejor transformación a la imagen que sera móvil e interpolar los valores de destino, muchos píxeles caen por fuera de la imagen original y es necesario asignarles un valor que en principio viene dado por defecto. En nuetsro caso, si ese valor es distinto al valor de píxeles de fondo, afecta de forma no menor el valor de algunas métricas que usamos para evaluación como IoU o mse, por lo que fue importante especificar que los píxeles interpolados tuvieran el mismo valor que el fondo.
Otro aspecto que fue importante tener en cuenta es que al transformar la imagen móvil, esta no necesariamente será binaria, por lo que es necesario hacer una nueva umbralización antes de hacer la evaluación final de la métrica de diferencia entre la imagen ajustada de un gato y la imagen "base" del otro gato.
A continuación presentamos un ejemplo de la corrección realizada en la etapa de registrado en una de nuestras imágenes binarias. En la siguiente figura se puede ver la superposición de la imagen previa al registrado, en un tono gris claro, y en un tono más oscuro la imagen posterior a la etapa de registrado.