Sincronización / genlock del marco de la cámara estéreo Raspberry Pi (video o imagen fija)

4

Necesito sincronizar el cuadro de una cámara estéreo para una aplicación de visión artificial. La sincronización debe ser la mejor posible, con suerte en un nivel de milisegundos. Me gustaría obtener unos 10 FPS como video o imágenes fijas. El requisito de resolución es de alrededor de 2 Mpix.

La aplicación será un escáner de carretera / terreno estéreo móvil de un vehículo de pasajeros que asciende a unos 100 km / h durante el día (por lo tanto, buenas condiciones de iluminación). La persiana enrollable no debe ser un problema con la cámara Pi en FullHD según esto y este video .

Mi búsqueda de hardware actual ha terminado con una solución Raspberry Pi. Creo que básicamente tengo 2 opciones con él:

  1. Obtenga dos unidades Raspberry Pi independientes, cada una con una cámara. Sincronízalos a través de un disparador GPIO externo. El costo es de 2x25 + 2x16 = £ 82.

  2. Obtenga el nuevo kit de desarrollo de módulo de cómputo y conecte ambas cámaras a la placa única. Acople las dos cámaras para un lanzamiento simultáneo con software. El costo es de 126 + 16 + 16 = £ 158.

¿Ambas opciones tendrán resultados de sincronización similares? También me gustaría más una salida de imagen fija que una salida de video, porque de todos modos necesitaré extraer los cuadros dados del video. Preferiblemente, las imágenes fijas se descomprimirían para no perder el detalle de la imagen, pero JPEG también está bien. No estoy seguro de cuántos FPS pueden hacer el disparo externo GPIO con imágenes fijas.

El costo es un factor importante para mí. Es probable que el uso de cámaras web USB no funcione ya que los dispositivos USB no se pueden sincronizar fácilmente (vea el enlace a continuación). Estaré satisfecho con otra recomendación de hardware si alguien sabe mejor las cosas dentro de un rango de precios similar.

El origen de esta pregunta está en el sitio de Video Production SE en una publicación titulada Creación de videos estéreo sincronizados con 2 cámaras a bajo costo . Este enlace puede revelar algunos antecedentes más.

    
pregunta Kozuch

2 respuestas

0

Después de mucha investigación e incluso yo mismo intentando configurar 2 RPis con una cámara cada uno para una captura estéreo sincronizada con cuadros, realmente no llegué hasta exactamente a mida la sincronización visualmente pero me di cuenta de esto en varias discusiones y especificaciones técnicas:

Aunque es posible sincronizar las placas RPi a través de la señal GPIO común (para cualquier tarea), no es posible sincronizar sus cámaras para la captura estéreo continua. La razón principal es que los sensores y las placas de la cámara no admiten la función de activación externa (ni la placa de la cámara v1 OmniVision OV5647 ni la v2 Sony IMX219PQ). El OV5647 en realidad tiene un llamado pin de entrada FREX que se podría usar para sincronización de cuadros, pero no se envía fuera del sensor a la placa ni es compatible con el controlador / software oficial de la cámara RPi. La placa ArduCam tiene un pinout FREX a bordo pero aún no hay software para usarlo.

Aunque es posible sincronizar un solo disparo (no estéreo continuo), aunque creo que hubo un proyecto para un bullet-time photography : exploré su código de Python en github (No puedo recordar el nombre exacto del proyecto ahora): sincronizaron RPis a través de Ethernet y luego los llamaron de forma binaria raspistill sincrónicamente para un solo disparo. Creo que esto puede funcionar incluso cuando hubo un retraso de 1000 ms al comienzo de raspistill para permitir que las cámaras configuren la exposición (el tiempo de espera es el mismo en todas las cámaras, por lo que la sincronización debería funcionar). Sin embargo, creo que los diferentes tiempos de exposición pueden ser un problema con PiFace. Una vez que se inicia el raspistill (y con suerte después del primer fotograma), el sensor ingresa en el llamado "modo de funcionamiento libre" donde se transmite el video desde el sensor a un FPS determinado. Debido a que cada placa de cámara tiene su propio oscilador, el FPS nunca será el 100% igual para dos placas, incluso si se inicia al mismo tiempo y los cuadros se separarán entre sí cuanto más se prolongue el video.

TL;DR:

Si bien es posible sincronizar una sola toma estéreo, no es fácil sincronizar las dos placas de la cámara RPi para obtener una captura estéreo continua debido a la falta de función de activación externa en los sensores de las cámaras.

    
respondido por el Kozuch
1

Creo que ambas opciones / ideas (Pi y Compute) pueden funcionar.

Raspberry Pi GPIO es lo suficientemente rápido (10MHz +), leer el estado de entrada de GPIO cada milisegundo no será ningún problema.

Si quieres procesar datos en Raspberry Pi con OpenCV o algo así, no esperes demasiado, la CPU Pi no es tan rápida como algunos piensan. Realice algunos experimentos con videos o imágenes pregrabados y vea cuánta potencia informática tiene.

Si encuentra que la frambuesa no es lo suficientemente rápida, puede usar algo como esto (para el procesamiento de imágenes):

Kit de desarrollo Nvidia Jetson TK1

- NVIDIA Kepler GPU with 192 CUDA cores
- NVIDIA 4-Plus-1 quad-core ARM Cortex-A15 CPU
- 2 GB memory, 16 GB eMMC
- Gigabit Ethernet, USB 3.0, SD/MMC, miniPCIe
- HDMI 1.4, SATA, Line out/Mic in, RS232 serial port
- Expansion ports for additional display, GPIOs, and high-bandwidth camera interface

No sé mucho acerca de esto, solo leí en algún lugar sobre estos productos Nvidia, pero cuesta menos que el módulo Pi Compute (¿192USD es 115GBP?), y hay mucho más poder de cómputo.

    
respondido por el Kamil

Lea otras preguntas en las etiquetas