¿Cómo puedo sincronizar la velocidad de fotogramas de dos cámaras web? ¿Es posible?

Pretexto

Actualmente estoy jugando con la visión estéreo (dos cámaras capturando imágenes simultáneamente) para mi proyecto de afición a los robots. Hay algunas características que son importantes al procesar las imágenes capturadas para estéreo, y la más importante de todas es que las imágenes se capturan exactamente al mismo tiempo (también conocido como sincronización de cuadros o genlock ) .

Las cámaras robóticas dedicadas con sincronización incorporada pueden ser muy costosas y, como muchos otros aficionados, quiero aprovechar la relación precio/rendimiento que se encuentra en las cámaras web de consumo de gama media y alta.

Esto funciona muy bien para una cámara, pero falla cuando se trabaja con estéreo debido a la falta de genlock. Así que decidí ver si sería posible piratear una cámara web de consumo y adaptar un genlock de bricolaje de alguna manera.

Soy un principiante en electrónica, especialmente para señales digitales de alta velocidad, pero puedo programar MCU basados ​​en atmel. Tenía dos cámaras Logitech pro 9000 viejas y abrí una para mirar dentro (ver foto a continuación).

PCB Logitech Pro 9000 Parte frontal

PCB de Logitech Pro 9000 Parte posterior

Preguntas

Lo que quiero saber es qué buscaría en la placa que podría usarse para adaptar/piratear un genlock de este tipo.

Mi idea ingenua es que simplemente deshabilitando el cristal del oscilador de una cámara y conectándose desde la otra, arrancarían y operarían exactamente al mismo tiempo y tal vez esto también daría como resultado fotogramas sincronizados. ¿Es esta idea realista? ¿Por qué por qué no?

Cualquier buena idea y sugerencia es bienvenida.

Gracias

"Mi idea ingenua es que simplemente deshabilitando el cristal del oscilador de una cámara y conectándose desde la otra, arrancarían y operarían exactamente con el mismo reloj y tal vez esto también daría como resultado fotogramas sincronizados": esto no funcionará, los relojes lo harán. muy rápidamente deysnc si no están perfectamente sincronizados como el otro. Tendría que haber una 're-sincronización' con bastante frecuencia para ajustar la desviación del reloj.
si tienen entradas VSYNC, tal vez pueda usarlas para disparar fotogramas simultáneamente. ¿Se puede usar eso o la salida VSYNC para activar la segunda cámara? El problema con todo esto es cuánto puede acceder al hardware/firmware
A lo que se refiere como VSYNC es lo mismo que GENLOCK (genlock es una jerga de producción de video más antigua). Y mi pregunta es, en cierto modo, cómo puedo encontrar si existe tal fuente/entrada de reloj sin ningún conocimiento interno sobre esta placa, y si no existe, cómo puedo hacer una.
Le sugiero que encuentre una cámara web / cámara digital barata cuya placa de circuito contenga una línea de activación / interrupción externa y se pueda configurar de una manera que permita que los marcos se activen con esto; luego puede activar ambas cámaras con el mismo pulso y ser Asegúrese de que los marcos estén razonablemente sincronizados.
No creo que esos existan. :-( Cualquier sugerencia es bienvenida en cámaras web que admitan sincronización externa.

Respuestas (2)

Me temo que es casi seguro que no tienes suerte. Tu "idea ingenua" no es mala como punto de partida, pero los detalles son impresionantes. Primero, el cristal es solo parte de un circuito oscilador que está contenido en SunPlus ASIC. No es seguro que la señal de reloj resultante aparezca realmente fuera del ASIC, aunque probablemente se envíe a la cámara. Si puede encontrar ese reloj, en teoría puede hacer un circuito de búfer que enviaría un reloj a la placa esclava. El problema es que probablemente no pueda simplemente alimentar la señal recibida en las conexiones de cristal ASIC. (Tal vez puedas, tal vez no puedas, depende del circuito). Pero si puedes, esto solo bloquea los relojes de píxeles en las dos placas y no garantiza que los cuadros estén sincronizados.

Supongo que cada placa tiene una combinación RC que utiliza el ASIC para producir una señal POR (reinicio de encendido), y si puede encontrarla, podría generar una señal que se envíe a la placa esclava, y ambas placas comenzarían en el mismo estado más o menos al mismo tiempo.

Esto, en teoría, haría lo que quieras. digo en teoría. No hay forma de determinar en esta eliminación qué hace el software del controlador en la PC receptora con las partes internas del ASIC, y tendría que obtener el controlador para configurar ambas cámaras más o menos simultáneamente. Y no tengo ni idea de cómo harías eso. Puede descargar los controladores de Logitech e intentar aplicar ingeniería inversa al código. Mucha suerte. Es probable que ni Logitech ni Sunplus publiquen los detalles de ASIC tampoco.

Entonces, realmente no puedo recomendar esto como un proyecto inicial.

Tienes que usar el enfoque de hardware-software. Piensa en cómo hacen películas. Siempre tienen esas cositas de aplausos, que comienzan cada escena. Están usando ese dispositivo para sincronizar todas las cámaras y equipos de sonido.

Creo que la única forma es usar algún tipo de luz estroboscópica o algo visual que las cámaras puedan sincronizar.

Sincronizar solo el reloj en los dispositivos puede no funcionar, podría haber una tubería de procesamiento/firmware diferente, e incluso si el tiempo en los dispositivos pasa de la misma manera, un dispositivo puede tardar un poco más que el otro en procesar el cuadro, por lo que obtener un retraso constante entre dos cámaras

La sincronización a posteriori realmente no funcionará para los objetos en movimiento, ya que se verá atascado tratando de comparar un cuadro real de una cámara con el resultado de algún algoritmo de interpolación que intenta adivinar la posición entre dos muestras de cuadros reales de la cámara. otro.