¿Cómo seleccionar cámaras para un sistema de visión estéreo?

18

Estoy en el proceso de construir un sistema de visión estéreo para usar en un UGV. El sistema es para un robot que se utilizará en una competencia en la que el robot se teleopera para encontrar rocas de colores relativamente pequeños en un gran campo al aire libre. Entiendo cómo calibrar dicho sistema y procesar los datos para un sistema de visión estéreo. Sin embargo, no sé cómo seleccionar cámaras para dicho sistema. ¿Cuáles son las mejores prácticas para elegir cámaras para un sistema de visión estéreo?

DaemonMaker
fuente

Respuestas:

11

De lo mejor de mi cabeza, seguiría los siguientes criterios de selección

  • color / b & w: generalmente b & w es mejor, ya que los algoritmos estéreo solo usan un canal de todos modos
  • línea de base: esto realmente depende de la escena. Con la línea de base usted controla cuánta precisión obtiene con la distancia. Una línea de base más amplia da como resultado valores de disparidad más altos y, por lo tanto, menos ruido en la estimación de la distancia. Una línea de base más alta también significa que obtendrá una superposición reducida entre su campo de visión. Sin embargo, lo más importante es que cuanto más ancha es la línea base, más difícil es la coincidencia entre las dos vistas. Entonces la calidad del resultado disminuye.
  • obturador: utilice siempre un obturador global para cualquier cosa con visión artificial en robots móviles
  • resolución: la mayoría de los algoritmos estéreo son computacionalmente caros. Y es probable que no necesite tantos puntos 3d. En el campo cercano, la densidad de muestreo suele ser suficiente, y en el campo lejano, su error debido a la baja disparidad es más problemático que la densidad de muestreo. 640x480 está bien en la mayoría de los casos. Algunos chips tienen una relación de aspecto más amplia, lo que es favorable para la superposición, pero puede obtener lo mismo con el uso de una subventana de su chip.
  • objetivos / campo de visión: para robots móviles al aire libre, prefiero un campo de visión amplio sobre objetivos estrechos. Más o menos por las mismas razones que la resolución. Asegúrese de que sus objetivos sean rígidos y tengan un medio para fijar cualquier parte móvil, por ejemplo, como distancia focal ajustable. En la mayoría de los casos, una distancia focal fija está bien de todos modos, ya que está limitado por la selección de su línea base.
  • Disparador: cuando crea su propio equipo estéreo, sus cámaras deben ser compatibles con el disparador de hardware e idealmente una debería disparar a la otra.
  • framerate - En mi opinión, la consideración menos importante. A menos que tenga mucha potencia de procesamiento, de todos modos no obtendrá mucho más que algo como 5 Hz. Por lo tanto, es mucho más probable que su algoritmo sea el cuello de botella, en lugar del chip o la conexión.
  • interfaz: la mayoría de las cámaras vienen con Firewire / USB2 / USB3 / Ethernet. USB2 es inútil ya que consume mucha CPU. Firewire es bueno si tienes un puerto, pero creo que parece estar en declive a favor de USB3 en estos días. Todavía no tenía mucha experiencia con USB3. Ethernet es bastante bueno porque es más probable que encuentre sistemas integrados con GigEthernet que USB3 en este momento.
  • Carcasa: lo más rígida posible. Recalibrar es un procedimiento molesto.
Jakob
fuente
6

Debe comenzar calculando cuántos fotogramas por segundo necesita y cuánta resolución de cámara puede procesar a esa velocidad de fotogramas. Por lo menos, eso evitará que gaste demasiado o que compre una cámara que no satisfaga sus necesidades.

Más allá de eso, hay una variedad de características que hacen que la elección sea más difícil / interesante. Las diferentes cámaras (especialmente las cámaras de red como Axis) le permiten alterar la calidad de la imagen o especificar una tasa de bits máxima para la transmisión de imágenes. Algunas cámaras también le permiten elegir la velocidad de obturación, lo que le permite favorecer un tiempo de exposición constante o una iluminación promedio constante en la imagen. Algunas cámaras son más sensibles que otras (la última vez que trabajé con esto fue en 2009, y notamos que la PS3 Eye funcionó muy bien en condiciones de poca luz).

Probablemente lo mejor que pueda hacer sería ejecutar sus algoritmos de procesamiento de imágenes en algunas imágenes estáticas que tome con una DSLR, luego intentar reducir el tamaño y la calidad del cuadro para ver dónde comienzan a descomponerse las cosas.

Ian
fuente
6

Algunas cosas a las que debe estar atento:

  • El obturador global básicamente significa que todos los píxeles se capturan al mismo tiempo, a diferencia del obturador enrollable, donde se capturan secuencialmente en forma de exploración de línea. Dado que su UGV se moverá y ejecutará algoritmos estéreo sobre las imágenes que capture, podría ser importante que evite las aberraciones que ocurren cuando se mueve la cámara, como las que se ven en las imágenes a continuación (tomadas de Wikipedia ):

El automóvil en movimiento tomado con el teléfono con cámara CMOS muestra una inclinación Una foto que exhibe exposición parcial.  Las condiciones de iluminación cambiaron entre la exposición de las partes superior e inferior de la foto. Una foto de una hélice turbohélice

  • La sincronización de la cámara en el hardware se puede lograr con algunas cámaras, especialmente las cámaras FireWire AFAIK. Eso puede mejorar enormemente los resultados del estéreo cuando las cosas se mueven.

  • El montaje debe realizarse de manera que los cambios en los parámetros extrínsecos (la postura relativa entre cámaras) para el par estéreo no cambien después de la calibración. En su plataforma eso podría ser más importante, ya que el UGV podría enfrentar un terreno irregular al aire libre y las cosas vibrarían.

  • El hardware estéreo dedicado permite adquirir imágenes de disparidad directamente como salida de su sistema de visión estéreo, lo que facilita la carga de su computación integrada. También tiende a ser mucho más rápido que ejecutar los mismos algoritmos en el software.

Como de costumbre, cuanto más esté dispuesto a pagar, mejores serán los resultados. Para ser honesto, si puedes comprar una cámara estéreo completa como la Bumblebee2 , eso es lo que haría. De lo contrario, si está en el lado más barato, simplemente elegiría un Kinect : es poco probable que pueda obtener un sistema que lo supere por el mismo precio.

georgebrindeiro
fuente
La pregunta era para un sistema al aire libre. Esto efectivamente descarta el Kinect. Además, descubrimos que los algoritmos que vienen con el abejorro están lejos de ser óptimos.
Jakob
Estoy con usted en el comentario de Kinect, pero ¿no pueden sustituirse los algoritmos estéreo que vienen con el abejorro con su propio código? La mayor ventaja que estaba señalando estaba en el hardware real, no en el software incluido.
georgebrindeiro
si eso es verdad. Puede usarlo como dos cámaras normales, y tiene la ventaja de una carcasa rígida.
Jakob
no solo eso, sino obturador global, buenas lentes y otras
cosas buenas
4

Ese es un tema interesante, y no es muy fácil acertar en el primer intento. Por experiencia con esto, aquí están las cosas más importantes.

  • Sincronización . La cámara debe estar 100% sincronizada. Por ejemplo, supongamos que el UGV está conduciendo a una velocidad modesta de 36 km / h (10 m / s) y graba cuadros a 30 cuadros por segundo. Es decir, en cada cuadro el UGV cubriría 3m. Ahora, digamos que su sincronización está apagada en 1 ms, una de las cámaras estará apagada en ~ 0.3 m, lo cual es malo [justo en la parte superior de mi cabeza]. Los problemas de sincronización son muy difíciles de detectar.

  • δZ=Z2siFδreδZsiFδZδreδre1/ /2δre

  • Solapamiento . Desea superponer las cámaras para obtener estéreo. Por lo tanto, debe elegir una combinación de distancia focal del lente (campo de visión) y línea de base para que tenga una superposición suficiente para la aplicación. Básicamente, la trigonometría funciona en el tablero, o un script rápido de matlab / python.

Para UGV, hay dos usos para estéreo.

  1. Navegación y estimación de pose En este caso, lo más probable es que necesite una línea de base grande + una distancia focal larga. Esto permite que el estéreo vea y resuelva mejor la profundidad y alcance más largo.

  2. Detección y evitación de obstáculos Probablemente necesitará una línea de base más corta y una lente más ancha (menor distancia focal) para poder enfocarse en cosas muy cercanas a usted.

Algunos UGV pueden tener ambas configuraciones estéreo, el campo de visión estrecho de la línea de base grande para la navegación y otro o dos para evitar obstáculos.

Ten mucho cuidado con lo que compras. Algunas compañías ofrecen configuraciones estéreo ya construidas. Esos son excelentes en el lado de la robustez de las cosas, no pierden la calibración fácilmente y siempre están sincronizados. El problema es que los disponibles comercialmente tienen una línea de base pequeña. Si quieres construir el tuyo. Supongo que terminarás haciéndolo, asegúrate de que la cámara sea sincronizable . Firewire es excelente para esto, ¡dos cámaras en el mismo bus se sincronizarán con una precisión de 125 microsegundos fuera de la caja! Las cámaras USB y Gige son dolorosas de sincronizar. Cuando reúne todo, debe asegurarse de que las lentes no se muevan en absoluto y que la línea base sea rígida, muy rígida para la aplicación.

También tenga cuidado en la selección de lentes. No todas las lentes funcionan con todas las cámaras. Las lentes también tienen una resolución. Este es otro tema, aquí hay un breve artículo sobre este http://www.qualitymag.com/articles/90642-qa--selecting-lenses-for-machine-vision-systems

Bendervader
fuente
44
Su cálculo de sincronización es incorrecto. 30 FPS a 10 m / s proporciona una distancia de 33 cm (no 3 m) por fotograma. También 1 ms a esta velocidad significa una distancia de 1 cm (independientemente de FPS). ¡Entonces la sincronización en el nivel ms es un super resultado en realidad para tales velocidades!
Kozuch