En visión por computador (Computer Vision, CV) se conoce como registro de datos al proceso de encontrar una transformación que permita alinear dos conjuntos de datos. Esta definición puede ser algo abstracta, así que aquí os voy explicar con diferentes ejemplos qué es el registro o alineamiento de datos.

Figura 1: Ejemplo de tres vistas del conejo de Stanford (http://graphics.stanford.edu/data/3Dscanrep/). Si conocemos las transformaciones T1 y T2, podemos reconstruir el objeto registrando las tres vistas.

¿Para qué el registro de datos?

Hoy en día existe muchas aplicaciones que hacen uso del registro de datos. Por ejemplo, cuando un móvil hace una foto panorama lo que en realidad está haciendo es tomar diferentes imágenes a medida que se mueve el usuario y juntarlas todas en una única imagen, que es el ejemplo de la Figura 2. Este proceso de unión es lo que se denomina registro.

Figura 2: Ejemplo de panorama. Se toman varias imágenes como las de la fila superior y se buscan características comunes para registrarlas por parejas y obtener finalmente la foto panorama completa.

Otro ejemplo de registro es el de nubes de puntos en 3D (como en la Figura 1). En este caso, si tenemos varias imágenes tridimensionales de un objeto o de una escena desde distintos puntos de vista. Si registramos todas tendremos un modelo completo de esa escena. Esto es el caso típico del mapeado utilizado en robótica, que a medida que un robot visita diferentes estancias, va tomando capturas en 3D y finalmente se tiene un modelo tridimensional completo como el que se muestra en la Figura 3.

Figura 3: Ejemplo de varias vistas 3D registradas en una habitación. Conference Room: https://shapenet.org/

Tipos de registro

A mi me gusta separar los métodos de registro en dos grandes tipos, rígido y deformable (o no rígido). La gran diferencia entre ambos tipos es que los métodos de registro rígido no varían la geometría del dato. Si pensamos en el caso de dos imágenes a color, el registro rígido permitiría encontrar la transformación que permita alinearlas sin deformar, es decir, sin cambiar la geometría de la imagen transformada. Sin embargo, lo métodos de registro deformable sí modifican la forma de los datos. Con el mismo caso de la imagen 2D, si ahora pensamos en dos imágenes médicas de una misma región con una patología que crece, el registro deformable transformaría una imagen para poder estudiar cómo ha variado en forma y tamaño.

Registro rígido

Como he comentado antes, el registro rígido no cambia la geometría de los datos. Es por ello que las transformaciones que se calculan y aplican son principalmente tres:

  • Rotaciones: giros que se aplican de la misma forma a todos los datos. En el caso de una imagen de color, todos los píxeles se rotarían de la misma forma.
  • Translaciones: desplazamiento de los datos de forma homogénea.
  • Escalado: cambio de tamaño de todo el conjunto de datos de forma. En el escalado se puede aumentar o disminuir el tamaño.

Este tipo de transformaciones se suelen aplicar utilizando una matriz de transformación, y dependiendo de las dimensiones del dato (2D, 3D…) esta matriz tendrá una forma u otra. A continuación se ven dos imágenes del mismo entorno. Para forma una imagen completa, registraríamos una sobre la otra, por ejemplo calcularíamos la transformación para alinear la imagen de la derecha con la de la izquierda. La transformación resultante será una rotación y una translación, obteniendo la imagen inferior (Figura 4).

Figura 4: Registro rígido. Con las características comunes en ambas imágenes de la fila superior, se calcula la transformación (rotación y traslación) para alinearlas formando la imagen conjunta final.

Registro deformable

El registro deformable, o no rígido, permite alinear dos conjuntos de datos pero permitiendo el cambio en la geometría de los datos. Es decir, que aquí sí podemos deformar los datos originales, además de rotarlos, trasladarlos o escalarlos. Si volvemos al caso de la imagen anterior, un uso del registro deformable sería corregir la posible deformación o aberración que tienen las lentes de las cámaras. En la siguiente Figura Registro deformable se puede apreciar en la rejilla superpuesta la deformación que se debe corregir.

Imagen original
Imagen deformada

Figura 5: Registro deformable

La transformación en este caso no es ni rígida, ni afín, sino que es una transformación no lineal que supone una mayor complejidad en su cálculo. Por normbrar algún ejemplo de métodos de registro deformable, podemos encontrar los siguiente:

CPD (Coherent Point Drift): Un método de registro rígido y no rígido orientado a nubes de puntos. Existen variantes de este método como el Color CPD, que añade color para mejorar el cálculo de las correspondencias entre ambos conjuntos de datos en casos donde la deformación es muy grande o irregular.

Fases de registro

Las principales fases que encontramos en el registro son tres, la selección de características, el emparejamiento entre estas características entre ambas imágenes y finalmente el cálculo de la transformación. Vamos a ver esto en detalle, aunque desde un punto de vista genérico.

Selección de características

Este aspecto es crucial en el proceso de registro. Cuando hablamos de características (o features en inglés) no son necesariamente características como el SIFT, HOG o Fast Point Feature Histograms (FPFH), sino que puede ser cualquier información que pueda ser útil para encontrar similitudes entre ambos conjuntos de datos.

En el caso del algoritmo clásico Iterative Closest Point (ICP), cada elemento (píxel, vóxel, o coordinada XYZ) se utiliza para buscar su semejante en el otro conjunto de datos, así que la característica es el color o la posición en el espacio.

Sin embargo, hay descriptores, como los mencionados antes (SIFT…), que se utilizan para extraer una representación de una zona de la imagen con un vector, y son estos vectores descriptores los que luego se utilizarán para emparejar las imágenes a registrar.

Otro tipo de descriptor podría ser una función extraída a partir de los datos, como un modelo estadístico. En el algoritmo Coherent Point Drift (CPD), o sus variantes como el Color-CPD, utilizan como característica un modelo mixto gaussiano que extrae a partir de la nube de puntos.

En resumen, las características que se utilicen para hacer el registro pueden ser muchas, incluso combinación de varias. Lo importante es que sean las que mejor describan el elemento que vamos a registrar, y siempre que se pueda, intentando que sean robustas a ruido, oclusiones, etc. y sean lo más generales posibles para que se puedan aplicar a la mayoría de casos.

Emparejamiento o matching

Una vez tenemos la información que nos es más útil para describir las propiedades de los datos que vamos a registrar, o como hemos llamado antes features o características, tenemos que encontrar que características de una imagen se corresponden con las de la otra imagen a registrar, como se ve en la parte superior de la Figura 4.

Este matching, término que viene a significar emparejamiento, se hace comparando las características y asignando como correspondientes aquellas que son más similares. Este matching puede hacerse de dos formas:

  • Binario o hard-matching: en este caso las correspondencias son de un feature de una imagen a otro feature de la otra imagen, es decir, que es un emparejamiento uno-a-uno. Esto tiene la ventaja de que permite calcular de forma sencilla la transformación en la etapa posterior. Sin embargo, es muy sensible a cualquier tipo de ruido en las características o el propio cálculo de la similitud en el matching. Es por ello que exiten técnicas que permiten evaluar las correspondencias y así descartar aquellas que son erróneas. La técnica más conocida es RANSAC, y básicamente se basa en evaluar de forma paralela varios subconjunto de todos los matches (emparejamientos) y hacer una estimación del registro con cada subconjunto. Posteriormente, asume que el conjunto que ha proporcionado el «mejor registro» o aquel con menor error es el correcto.
  • Uno-a-muchos o sotf-matching: en el caso del soft-matching, las correspondencias son de cada feature de una imagen a varias de la otra imagen. En este caso, al no ser binarias (1 o 0), suelen tener un peso o porcentaje que indica cuan importante es esa correspondencia. Por ejemplo, si asumimos el caso de que cada feature de una imagen tiene correspondencia con todas las características de la segunda imagen, y estas tuvieran el mismo peso, significaría que no hay ninguna característica en la segunda imagen que tuviera mayor similitud con la característica de la primera imagen. Obviamente, lo ideal sería que una correspondencia tuviera un peso significativamente mayor que el resto, indicando que esas dos características son muy similares y pudieran utilizarse luego en el cálculo de la transformación. En la imagen de ejemplo que se ve a continuación, se representa el peso con lineas de mayor o menor grosor. Así, se puede ver como la característica de la imagen de la izquierda que está sobre el agua tiene mayor simlitud con la característica sobre el agua de la imagen de la derecha. Además, con las características del cielo también tiene un gran peso, por ser de color azul.

Cálculo de la transformación

Una vez tenemos las correspondencias, podemos estimar la transformación. Uno de los métodos más utilizados en el caso del registro rígido, es el análisis de Procrusters, que en su núcleo puede utilizar Singular Value Descomposition (SVD) para calcular la rotación que hay que aplicar para alinear ambas imágenes.

En el caso de registro deformable, cada dato de la imagen que vayamos a alinear sobre la otra se desplazará de forma independiente (siguiendo o no un movimiento similar al de los datos vecinos). Esto significa que realmente son multiples translaciones, que pueden estimarse con técnicas como Maximización-Esperanza u otras técnicas similares.

Casos avanzados

En este post hemos visto de forma muy general qué es el registro entre imágenes, entendiendo imagen como un conjunto ordenado de datos, ya sean 2D, 3D o de cualquier tamaño, número de dimensiones o tipo de dato. Podemos hacer un esfuerzo y pensar en casos más avanzado de registro, como los que se comentan a continuación, pero sabiendo que el proceso general de registro será el mismo.

  • Registro de color: en este caso tendremos dos conjuntos de datos y pretendemos alinear su color. Por ejemplo, podría ser el caso de dos fotografías y queremos que pasar las tonalidades generales de color de una a la otra, es decir, hacerla más rojiza, o verdosa.
  • Registro entre espacios de características: este caso, más complejo de imaginar, podría ser el de tener un espacio de características, y queremos que se parezca a otro que ya tenemos etiquetado o clasificado, con la intención de utilizar las mismas clases.