OpenCV, Python: eliminando el eventual estrechamiento al unir imágenes

Gracias en gran parte a algunas excelentes respuestas en stackoverflow (aquí, aquíyaquí) He tenido bastante buen éxito en la alineación de imágenes. Sin embargo, hay un problema, como puede ver a continuación. Al unir muchas imágenes, se hacen cada vez más pequeñas.

Mi teoría sobre por qué sucede esto es que la cámara no era exactamente perpendicular al suelo, por lo que a medida que agregué más y más imágenes, la perspectiva natural de tener una cámara no perpendicular al suelo hizo que las imágenes lejanas se volvieran más pequeñas. Sin embargo, esto podría ser completamente incorrecto.

Sin embargo, incluso cuando transformo la primera imagen para que sea "como si" se tomara perpendicular al suelo (creo) la distorsión todavía ocurre.

¿La brillante comunidad stackoverflow tiene alguna idea sobre cómo puedo remediar la situación?

Este es el proceso que utilizo para unir las imágenes:Usando el conocimiento de la esquina de los puntos lat / long de las imágenes, deformar de modo que la primera imagen sea perpendicular al suelo. La homografía que uso para hacer esto es la homografía "base"Encuentra características comunes entre cada imagen y la última usandogoodFeaturesToTrack() ycalcOpticalFlowPyrLK()UtilizarfindHomography() para encontrar la homografía entre las dos imágenes. Luego, componga esa homografía con todas las homografías anteriores para obtener la homografía "neta"Aplica la transformación y superpone la imagen con el resultado neto de lo que he hecho hasta ahora.Hay una restricción importante

El mosaico debe construirse una imagen a la vez, a medida que la cámara se mueve. Estoy tratando de crear un mapa en tiempo real mientras un avión no tripulado está volando, ajustando cada imagen con la última, una por una.

Respuestas a la pregunta(1)

Su respuesta a la pregunta