viernes, 29 de septiembre de 2023

Transformación trapezoidal de imágenes con R (I). Algoritmo

En numerosas aplicaciones (proyecciones de imagen, fotografía de arquitectura, publicidad en espectáculos deportivos, realidad virtual, señalización sobre calzadas,...) a menudo se precisa, en una forma u otra, de una corrección de la imagen que puede implementarse mediante una transformación trapezoidal.

Fuente: 'White Night', Melbourne (Australia).

Esta transformación en el plano puede modelarse en su forma más general con dos trapezoides, origen y destino, donde cada uno de los 4 puntos que define el trapezoide origen se hace corresponder con uno de los 4 vértices del trapezoide destino. Los puntos de cada trapezoide pueden recorrerse en sentido horario o antihorario arbitrariamente, pero siempre siguiendo vértices contiguos para que la operación tenga sentido geométrico.

La transformación consistirá en la proyección o traslación de las coordenadas de cualquier punto del plano definido en el dominio del trapezoide origen, sobre un punto destino definido en el dominio del trapezoide destino.

Aquí dos ejemplos de transformación, el primero bastante obvio y el segundo un poco más rebuscado, junto a un punto de muestra que es convertido de un dominio al otro:


Es requisito común de la inmensa mayoría de aplicaciones exigir linealidad geométrica en esta transformación, es decir garantizar que cualquier forma de línea recta o alineación de elementos en el espacio origen deba preservar esta condición rectilínea en el espacio destino. Este mapeo de líneas sobre líneas se denomina homografía y tiene una solución matemática única y cerrada, de modo que existe un solo juego posible de ecuaciones que relacione ambos dominios.

Cualquier punto interior al trapecio origen encontrará su homónimo en el interior del trapecio destino, como el que se muestra en el ejemplo. Sin embargo un punto exterior al trapecio pueden llegar a divergir en función de la topología de los trapecios origen/destino y de la localización de dicho punto.

~~~

Nghia T. Vo en 'Calculating coefficients of a correction model for perspective distortion' muestra el sistema lineal de 8 ecuaciones con 8 incógnitas que, una vez resuelto, permite traducir cualquier coordenada del dominio origen al dominio destino preservando la linealidad geométrica.

Como parámetros de entrada para definir el sistema se necesitan las coordenadas en el plano de los vértices de cada trapezoide (16 valores numéricos en total). Usando un lenguaje de programación con notación matricial para poder invertir la matriz se resuelve de inmediato (hacer clic para poder leer algo):

Fuente: Nghia T. Vo, NSLS-II, Brookhaven National Laboratory


Aplicando la transformación sobre distintas definiciones de los trapezoides con distribuciones de puntos reconocibles, podemos comprobar cómo se respeta la linealidad geométrica o cómo se proyectan unas formas circulares:



Al ser la transformación una biyección de R2 → R2, podemos invertirla para ir del espacio destino al espacio origen. Solo tenemos que aplicar las ecuaciones resultantes de resolver el sistema intercambiando los dos juegos de coordenadas que definen los trapezoides origen y destino.

Esta transformación inversa será la opción cuando el destino de la corrección sea una imagen de tipo bitmap. Con un bucle recorreremos cada cada píxel destino obteniendo los píxeles origen que participarán en su interpolación (en nuestros ejercicios un simpe nearest neighbour):

Fuente: Nghia T. Vo, NSLS-II, Brookhaven National Laboratory

~~~

No quería quedarme sin documentar, más por el esfuerzo invertido que por su utilidad, una transformación entre trapezoides formulada y dibujada enteramente en Excel. Se trata de una conversión geométricamente no lineal, y por lo tanto no equivale a la estudiada arriba:


El criterio para transformar cada punto se puede intuir del ejemplo: se proyectan dos a dos los lados del trapezoide origen (azul). Las intersecciones así obtenidas se proyectan hacia el punto a transformar (en negro), dando lugar a dos pares de intersecciones en los lados del trapecio. Finalmente la posición relativa del punto medida sobre dichas intersecciones se traslada a los lados del trapecio destino (rectángulo naranja). El Excel puede descargarse de keystonecorrection.xlsx.

~~~

En 'Transformación trapezoidal de imágenes con R (II). Aplicaciones' usamos las ecuaciones obtenidas para aplicarlas sobre fotografías, realizando transformaciones básicas (escalados, rotaciones, simetrías,...), mapeos de imagen, correcciones de perspectiva y montaje de panorámicas.

Repositorio con el código R: GitHub.


No hay comentarios:

Publicar un comentario

Por claridad del blog, por favor trata de utilizar una sintaxis lo más correcta posible y no abusar del uso de emoticonos, mayúsculas y similares.