Necesito sincronizar cuadros de una cámara estéreo para una aplicación de visión artificial. La sincronización debería ser la mejor posible, con suerte en un nivel de milisegundos. Me gustaría obtener alrededor de 10 FPS, ya sea 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 desde un automóvil de pasajeros que se mueva a una velocidad de hasta 100 km/h durante el día (por lo tanto, en buenas condiciones de iluminación). El obturador rodante no debería ser un problema con la cámara Pi en FullHD según este y este video .
Mi búsqueda de hardware actual terminó con una solución Raspberry Pi. Creo que básicamente tengo 2 opciones con él:
Obtenga dos unidades Raspberry Pi independientes, cada una con una cámara. Sincronícelos a través de un disparador GPIO externo. El costo es 2x25+2x16 = £82.
Obtenga el nuevo kit de desarrollo del 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 126+16+16 = £158.
¿Tendrán ambas opciones resultados de sincronización similares? También preferiría la salida de imágenes fijas que la salida de video, porque de todos modos necesitaré extraer fotogramas dados del video. Es preferible que las imágenes fijas no estén comprimidas para no perder detalles de la imagen, pero JPEG también está bien. No estoy seguro de cuántos FPS puede hacer el disparador externo GPIO con imágenes fijas.
El costo es un factor importante para mí. El uso de cámaras web USB probablemente no funcione, ya que los dispositivos USB no se pueden sincronizar fácilmente (consulte el enlace a continuación). Estaré feliz con otra recomendación de hardware si alguien conoce cosas mejores dentro de un rango de precio 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.
Creo que sus dos opciones/ideas (Pi y Compute) pueden funcionar.
Raspberry Pi GPIO es lo suficientemente rápido (10 MHz+), leer el estado de entrada de GPIO cada milisegundo no será ningún problema.
Si desea procesar datos en Raspberry Pi con OpenCV o algo así, no espere demasiado, la CPU Pi no es tan rápida como algunas personas piensan. Haga algunos experimentos con videos o imágenes pregrabados y vea cuánta potencia informática tiene.
Si encuentra que Raspberry no es lo suficientemente rápido, 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 sobre esto, solo leí en alguna parte sobre estos productos Nvidia, pero cuestan menos que el módulo Pi Compute (¿192 USD son 115 GBP?), Y hay mucho más poder de cómputo.
Después de mucha investigación e incluso de mí mismo tratando de configurar 2 RPis con una cámara cada uno para una captura estéreo sincronizada con cuadros, realmente no llegué hasta el final para medir con precisión la sincronización visual, pero me di cuenta de esto en ese momento a partir de varias discusiones y tecnología. especificaciones:
Aunque es posible sincronizar las propias placas RPi a través de una señal GPIO común (para cualquier tarea), no es posible sincronizar sus cámaras para una captura estéreo continua. La razón principal es que los sensores y las placas de la cámara no admiten la funcionalidad de activación externa (ni la placa de cámara v1 OmniVision OV5647 ni la v2 Sony IMX219PQ). El OV5647 en realidad tiene un pin de entrada llamado FREX que podría usarse para la sincronización de cuadros, pero no se enruta 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 integrado pero aún no tiene software para usarlo.
Sin embargo, es posible sincronizar una sola toma (sin estéreo continuo). Supongo que había un proyecto para una fotografía en tiempo de bala . Exploré su código python en github .(no recuerdo el nombre exacto del proyecto ahora): sincronizaron RPis a través de Ethernet y luego llamaron a raspistill binary sincrónicamente para una sola toma. Creo que esto puede funcionar incluso si hubo un retraso de 1000 ms al comienzo de raspistill para permitir que las cámaras establezcan 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 diferentes tiempos de exposición pueden ser un problema con PiFace. Una vez que se inicia raspistill (y con suerte después del primer cuadro), el sensor ingresa al llamado "modo de ejecución libre" donde el video se transmite desde el sensor a FPS dado. Debido a que cada placa de cámara tiene su propio oscilador, el FPS nunca será 100% igual para dos placas, incluso si se inician al mismo tiempo, y los cuadros se alejarán entre sí a medida que se extienda el video.
TL;RD:
Si bien es posible sincronizar una sola toma estéreo, no es posible sincronizar fácilmente dos placas de cámara RPi para una captura estéreo continua debido a la falta de una función de activación externa en los sensores de las cámaras.
kamil
kamil
Kozuch
usuario3528438
Kozuch