Cómo se implementa la Corrección de perspectiva
Publicado: Dom Sep 24, 2023 12:42 am
Aprovechando una discusión de otra red he hecho un ejercicio de aplicar por código una corrección de distorsión de perspectiva (mal llamada así, porque lo que alteramos realmente es la dirección de observación) a una fotografía donde las líneas verticales no convergen por haber tenido que apuntar la cámara hacia arriba.
Esta transformación, que es la misma que aplican en sus tripas Photoshop y todos los programas con este tipo de corrección, tiene una solución única y de formulación cerrada resultado de resolver un sistema lineal de 8 ecuaciones con 8 incógnitas, fruto de basar el modelo en 4 puntos de referencia entre la imagen distorsionada y la corregida. Es una transformación geométricamente lineal que permite reproyectar cualquier punto entre los dominios con y sin distorsión.
Perdonad que ponga las imágenes como enlaces (en Tapatalk se ven directamente).
La formulación matemática y su implementación en lenguaje R:
http://guillermoluijk.com/misc/keystonecorrectionequationsplus.png
Una muestra de que esta transformación es geométricamente lineal, es decir, mantiene como rectas todas las rectas que pueda haber en la imagen origen:
http://guillermoluijk.com/misc/rectilinear.png
La transformación se define por la correspondencia de 4 puntos entre el espacio origen y destino, definiendo así dos trapezoides que pueden ser arbitrarios en forma, posición, tamaño,... Aquí un ejemplo de cómo se transforma una serie de círculos concéntricos dibujando ambos trapezoides:
http://guillermoluijk.com/misc/circles.png
Ahora va una imagen real a la que he aplicado la corrección. Aquí la versión capturada contrapicando la cámara (la imagen presenta fugas verticales):
http://guillermoluijk.com/misc/distorted.jpg
Y aquí la comparación entre la imagen anterior corregida y la obtenida desde el mismo sitio con un descentrable con SHIFT aplicado y apuntado en horizontal:
http://guillermoluijk.com/misc/keystone.gif
Ambas imágenes, la descentrada y la corregida, son geométricamente idénticas. La mínima diferencia de perspectiva (ver los árboles vs el fondo por ejemplo) se debe únicamente al microcambio en la posición de la pupila de entrada al contrapicar la cámara.
Esto sirve además como ejemplo de que con un descentrable no se obtiene nada, a efectos de geometría y perspectiva, que no puedas obtener aplicando una corrección software a una focal no descentrable lo suficientemente angular. Aquí usando la misma focal solo se perdían los trocitos en negro; habría bastado un 20mm para tenerlo todo.
Salu2!
Esta transformación, que es la misma que aplican en sus tripas Photoshop y todos los programas con este tipo de corrección, tiene una solución única y de formulación cerrada resultado de resolver un sistema lineal de 8 ecuaciones con 8 incógnitas, fruto de basar el modelo en 4 puntos de referencia entre la imagen distorsionada y la corregida. Es una transformación geométricamente lineal que permite reproyectar cualquier punto entre los dominios con y sin distorsión.
Perdonad que ponga las imágenes como enlaces (en Tapatalk se ven directamente).
La formulación matemática y su implementación en lenguaje R:
http://guillermoluijk.com/misc/keystonecorrectionequationsplus.png
Una muestra de que esta transformación es geométricamente lineal, es decir, mantiene como rectas todas las rectas que pueda haber en la imagen origen:
http://guillermoluijk.com/misc/rectilinear.png
La transformación se define por la correspondencia de 4 puntos entre el espacio origen y destino, definiendo así dos trapezoides que pueden ser arbitrarios en forma, posición, tamaño,... Aquí un ejemplo de cómo se transforma una serie de círculos concéntricos dibujando ambos trapezoides:
http://guillermoluijk.com/misc/circles.png
Ahora va una imagen real a la que he aplicado la corrección. Aquí la versión capturada contrapicando la cámara (la imagen presenta fugas verticales):
http://guillermoluijk.com/misc/distorted.jpg
Y aquí la comparación entre la imagen anterior corregida y la obtenida desde el mismo sitio con un descentrable con SHIFT aplicado y apuntado en horizontal:
http://guillermoluijk.com/misc/keystone.gif
Ambas imágenes, la descentrada y la corregida, son geométricamente idénticas. La mínima diferencia de perspectiva (ver los árboles vs el fondo por ejemplo) se debe únicamente al microcambio en la posición de la pupila de entrada al contrapicar la cámara.
Esto sirve además como ejemplo de que con un descentrable no se obtiene nada, a efectos de geometría y perspectiva, que no puedas obtener aplicando una corrección software a una focal no descentrable lo suficientemente angular. Aquí usando la misma focal solo se perdían los trocitos en negro; habría bastado un 20mm para tenerlo todo.
Salu2!