Panoramas en StereoPi

imagen

Continuamos experimentando con la Raspberry Pi, equipada con dos cámaras al mismo tiempo. Permíteme recordarte que todos los juegos tienen lugar alrededor del Raspberry Pi Compute Module 3 Lite, insertado en la cuna StereoPi.

En revisiones anteriores, instalamos cámaras en paralelo y trabajamos con un efecto estéreo. Aquí el enfoque es exactamente lo contrario: las cámaras miran en diferentes direcciones, pero están equipadas con lentes gran angular (200 grados). ¡Y pegaremos el panorama esférico de 360 ​​grados!

Introductorio


Distracción: como no hay coautoría de artículos sobre Habré, mencionaré el texto principal. Este experimento se llevó a cabo conjuntamente, conmigo - hierro y experimentos en el campo, y con @Gol - la parte de software.

Comencemos desde el final: aquí está el resultado, en realidad el panorama .

Entonces, esta vez, intente hacer un panorama esférico. En vano, o algo así, tenemos dos cámaras a bordo. Por supuesto, fue posible conectar dos cámaras a frambuesas comunes, en modo de multiplexación (una cámara funciona y luego la otra, eligiendo la correcta a través de GPIO). Pero luego los fotogramas se dispararán secuencialmente, y si hay movimiento, esto no es muy instintivo. Es cierto que cuando hay un disparo "simultáneo" de dos cámaras estéreo de dos cámaras, tampoco hay sincronización, estúpidamente se inician dos raspistill simultáneamente. Pero hay más posibilidades de que los objetos en el borde no se dispersen mucho. También puede grabar video con dos cámaras al mismo tiempo, y luego coserlo en un panorama de video esférico. Pero luego lo intentaré de alguna manera, primero debes ocuparte de las fotos panorámicas.

Hierro


Tenemos StereoPi , hay dos cámaras con lente ojo de pez (200 grados). Aquí están las cámaras: RPi Camera (M) WaveShare

Tenemos dos cámaras pop-to-pop:

imagen

Tomamos fotos de ambas cámaras. Idealmente, al mismo tiempo, pero es posible y a su vez. raspistill para ayudarnos. Obtenemos estas dos imágenes:

imagen
Tamaño completo

imagen
Tamaño completo

Panorama básico


Entonces surgió el problema: cómo hacer automáticamente una imagen con una proyección equidistante de estas dos imágenes fiscales, que comen casi todos los espectadores panorámicos. Quiero hacer la conversión directamente a bordo del estéreo, sin usar un software panorámico especial.

Después de mucha investigación, se encontró el proyecto de 360 cámaras , desde donde se tomaron los guiones como base.

Pero primero, todavía tenemos que usar un programa panorámico separado para preparar una plantilla para la conversión. El programa se llama Hugin, puedes descargarlo aquí http://hugin.sourceforge.net/download/

1. Entonces, descargado, instalado, lanzado.
2. Seleccione la opción "Simple" en el menú "Interfaz".

imagen

3. Haga clic en el botón "Descargar imágenes ..." y agregue nuestros dos archivos (21.jpg y 21-2.jpg).

imagen

4. Configure el "Tipo de lente" - "Circular VyrvyGlaz". La distancia focal es de 1.2 mm y el multiplicador de longitud focal es de 7.6x. Y en la pestaña "Proyección", asegúrese de que haya un campo de visión de 360x180 y "Equidistante". Por defecto, debería ser así.

imagen

5. Haga clic en el botón "2. Alinear ... ". Comenzará la búsqueda de puntos de control, debería haber entre 10 y 13 puntos. El panorama ya comienza a parecerse a un panorama.

imagen

6. Ahora lo más importante es guardar el proyecto, ya que lo necesitaremos para el posterior pegado automático de todos los panoramas posteriores tomados con estas dos cámaras de ojo de pez. Archivo -> Guardar como -> nombre de archivo stereopi-template.pto

7. Vuelva a la pestaña "Asistente" (si de repente nos quedamos allí) y haga clic en "Crear panorama ..." Se abrirá una ventana adicional, seleccione la altura 1944 allí, se calculará el ancho. El formato LDR (formato de imagen de salida) está configurado en JPEG. Calidad - lo que quieras, por defecto - 90. Todavía no tocamos las correcciones. Haz clic en Aceptar. Establezca el nombre del archivo con el resultado. Y haga clic en "Guardar".

imagen

8. Se abrirán un par de ventanas más, en una de las cuales se mostrará el registro del proceso.

imagen

9. Como resultado, obtenemos algo como esto:

imagen

Tamaño completo

¡Esta es la proyección equidistante necesaria de nuestro panorama esférico!

Llevamos costuras a bordo


¡Pero son todas las letras!

No queremos tomar un baño de vapor con cada foto, necesitamos automatizar este proceso. Para esto, necesitaremos el archivo de proyecto, que guardamos en el paso 6. Tomamos nuestro archivo de proyecto (lo tengo stereopi-template.pto ) y lo copiamos al estéreo.

Copiamos allí el script de pegado stereopi-stich.sh . El script necesita dos parámetros de entrada: los nombres de los archivos de fotos de peces que deben pegarse en una proyección equidistante.

Pero primero debe instalar todo el software necesario en el estéreo. Simplemente descargue este script y ejecútelo en el steropix. installer.sh

Ahora ejecute el script de pegado:

# ./stereopi-stich.sh 21.jpg 21-2.jpg Stiching files 21.jpg and 21-2.jpg Generating pto file... Reading /opt/Pano/test1/21-2.jpg... Reading /opt/Pano/test1/21.jpg... Assigned 1 lenses. Written output to /opt/Pano/test1/tmp/project.pto Written output to ./tmp/project.pto number of cmdline args: 1 ================================== Stitching panorama ================================== nona -z LZW -r ldr -m TIFF_m -o 21_21-2-pano -i 0 ./tmp/project.pto nona -z LZW -r ldr -m TIFF_m -o 21_21-2-pano -i 1 ./tmp/project.pto checkpto --generate-argfile= project.pto_21_21-2-pano.arg ./tmp/project.pto enblend --compression=90 -w -f2688x1344 -o 21_21-2-pano.jpg -- 21_21-2-pano0000.tif 21_21-2-pano0001.tif enblend: info: loading next image: 21_21-2-pano0000.tif 1/1 enblend: info: loading next image: 21_21-2-pano0001.tif 1/1 enblend: info: writing final output Bogus input colorspace exiftool -overwrite_original_in_place -TagsFromFile /opt/Pano/test1/21-2.jpg -WhitePoint -ColorSpace -@ /usr/share/hugin/data/hugin_exiftool_copy.arg -@ project.pto_21_21-2-pano.arg 21_21-2-pano.jpg 1 image files updated ================================== Remove temporary files ================================== rm project.pto_21_21-2-pano.arg 21_21-2-pano0000.tif 21_21-2-pano0001.tif 

El proceso lleva unos 50 segundos. Sería necesario buscar oportunidades de optimización, pero hasta ahora no está mal.

El resultado es un archivo.

imagen

Tamaño completo

Eso es todo! ¡Pusimos automáticamente dos pesquerías en un equidistante! Y con el mismo guión puede pegar todas las imágenes posteriores, lo principal es que la colocación mutua de nuestras cámaras no cambia mucho, de lo contrario, el pegado desaparecerá.

Ahora necesitas jugarlo en algún lugar del sitio. Para ver nuestro panorama en el sitio, necesita un reproductor panorámico.

En mi humilde opinión, el mejor reproductor incorporado para panoramas - KRPano. Puede tomar fotos y videos. Si, pagado. Ya compré una licencia hace cinco años, pero luego el reproductor se hizo en un instante y HTML5 no pudo. Y ahora él sabe cómo, pero tienes que comprar una licencia nuevamente.

Puede descargar mi archivador , donde dentro tiene todo lo que necesita para ver esto . Lo más nishtyak: pequeño planeta (elección del modo de vista, clic derecho).

imagen

Esperamos que nuestro experimento no solo sea interesante para usted, sino también útil como receta. Gracias por su atencion!

Enlaces utiles:


Proyección Equirectangular
Mucha teoría sobre pesca y proyección equidistante
Software para ver panoramas
Manual grande para pegado automático
BrianBock / cámara 360

Source: https://habr.com/ru/post/es432898/


All Articles