Costuras con gran paralaje

Costuras con gran paralaje

Necesito unir imágenes de 5 cámaras. Las cámaras están montadas a los lados de un vehículo submarino operado a distancia. Es básicamente un cupoide con tamaños de 2,1 mx 1,3 mx 1,85 m. Las cámaras están montadas a los lados de este cupoide. Entonces, una cámara en el frente, una en la parte posterior, una en el lado derecho, una en el lado izquierdo y otra en la parte inferior apuntando hacia abajo. Todas las cámaras tienen lentes ojo de pez con un ángulo de visión de 180° o más y tienen una resolución de 4k. El objetivo es unir las imágenes en tiempo real y ver el resultado con un visor de realidad virtual.

Probé un enfoque puramente geométrico en el que solo usé las posiciones y parámetros de las cámaras. Esto funcionó bien, pero la unión entre las imágenes solo es válida para una distancia de visualización muy determinada. Por lo demás, la costura es muy visible y sólo logré coser las cámaras horizontales y no la inferior.

También probé vrWorks 360 de NVidia, pero esto solo funciona para cámaras alineadas horizontalmente, por lo que se ignora la cámara inferior. Además, el resultado de la unión de las cámaras horizontales fue realmente malo.

También me topé conUnión de imágenes tolerante al paralajeconesta implementación. Pero también sólo funciona para imágenes alineadas horizontalmente y no permite lentes ojo de pez.

Mi último enfoque fue utilizar la calibración dePTGuiy utilizar esta calibración enpuntadaemque solía ser un software de costura comercial pero ahora es de código abierto. Esto produjo los mejores resultados hasta el momento. Pero todavía hay algunos errores de alineación y sólo funciona bien si hay pocos o ningún objeto cercano.

También intenté usar openCV directamente pero esto fue demasiado abrumador para mí, ya que hay tantas opciones para usar la API y tantos módulos para configurar.

¿Alguien tiene una idea de cómo podría unir estas imágenes de manera eficiente? Preferiría una solución gratuita de código abierto, pero una aplicación de pago de código cerrado también es aceptable si hace el trabajo.

Respuesta1

Supongo que cuando hablas de "tiempo real", te refieres al procesamiento rápido de imágenes al unir. Si es así, échale un vistazo a esta solución de código abierto, con mucho control, opciones, procesamiento GPU y capaz de crear panorámicas con imágenes de fondo:

Si se refiere a un "tiempo real" real, probablemente necesite optar por un sistema ad hoc que utilice OpenCV, y probablemente el procesamiento en tiempo real dependerá de una compensación entre velocidad y resolución. Encuentre a continuación el enlace a un ejemplo básico:

¡Salud!

información relacionada