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.
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):
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.