¿Cómo obtener nubes de puntos densas de cámaras estéreo?

12

Estoy tratando de usar una cámara estéreo para la reconstrucción de escenas, pero generalmente solo puedo obtener nubes de puntos dispersos (es decir, más de la mitad de la imagen no tiene información de profundidad adecuada).

Me doy cuenta de que los algoritmos de procesamiento estéreo dependen de la presencia de textura en las imágenes y tienen algunos parámetros que se pueden ajustar para obtener mejores resultados, como el rango de disparidad o el tamaño de la ventana de correlación. Sin embargo, por mucho que ajuste estos parámetros, nunca puedo obtener resultados que estén ni remotamente cerca de lo que se puede obtener usando un sensor activo como el Kinect.

La razón por la que quiero eso es porque muy a menudo las nubes de puntos correspondientes a regiones adyacentes no se superponen lo suficiente como para obtener una coincidencia, por lo que la reconstrucción se ve gravemente afectada.

Mi pregunta a los expertos en visión artificial es la siguiente: ¿qué puedo hacer para obtener nubes de puntos más densas en general (sin modificar arbitrariamente el entorno de mi oficina)?

georgebrindeiro
fuente
Esta es una buena pregunta, pero creo que se necesitan más detalles. ¿Qué algoritmos has intentado calcular coincidencias? ¿Podría aclarar lo que quiere decir con "regiones adyacentes" y "superposición"?
Josh Vander Hook
Cuando digo "regiones adyacentes", me refiero a porciones de espacio físico que no son equivalentes pero que tienen una intersección no vacía, a la que llamé "superposición". Es decir, el tipo de regiones que generarían nubes de puntos que podrían coincidir y unir en un algoritmo ICP.
georgebrindeiro
Sobre el algoritmo, todavía estoy usando la solución más simple posible que pude encontrar: el nodo ROS stereo_image_proc , que aplica el algoritmo de coincidencia global de bloques disponible en OpenCV. Me interesaría saber acerca de la configuración de parámetros a los que no podría acceder directamente a través del nodo ROS u otros algoritmos que se sabe que proporcionan mejores resultados.
georgebrindeiro

Respuestas:

4

Puede intentar omitir la detección de puntos sobresalientes y simplemente muestrear densamente sobre la imagen (como una cuadrícula o así) y calcular un descriptor de características en cada punto de muestra. Probablemente incluso pueda ir tan lejos como calcular un descriptor para cada píxel.

Puede perder la invariancia de escala, pero creo que esto no va a doler demasiado para la visión estereofónica, ya que los objetos tendrán aproximadamente la misma escala en ambas imágenes.

Otro enfoque podría ser combinar múltiples algoritmos de detección de puntos sobresalientes: esquinas, bordes, blobs, etc. Luego debe usar el mismo algoritmo de descriptor de características para todos los puntos detectados, sin embargo, esta última parte podría ser algo difícil de implementar.

muksie
fuente
2

Entonces, los algoritmos de procesamiento de imagen estéreo que he usado en el pasado se implementaron píxel por píxel. Simplemente utilizamos el modelo de cámara estenopeica e hicimos algunas mediciones antiguas con cinta métrica hasta que nuestras estimaciones de profundidad coincidieron con las reales.

Las ecuaciones para un par de cámaras paralelas son:

  • d=
  • f=
  • Marcos coordinados:
    • x,y,z=
    • uR,vR
    • uL,vL
    • Nota: las coordenadas de la cámara tienen su origen en el marco de coordenadas entre las cámaras (es decir, los ejes u se enfrentan a direcciones opuestas)

uL=f(xd)zuR=f(x+d)z

zuR=f(x+d)zuL=f(xd)

z(uRuL)=2df

z=2dfuRuL

y=vLz+dff

x=uLz+dff

Usando estas ecuaciones puedes calcular una nube estéreo densa. Uno para cada píxel en sus cámaras.

thealmightygrant
fuente
Gracias por el esfuerzo, pero estoy familiarizado con el modelado estéreo. El problema suele ser exactamente el de la correspondencia entre las coordenadas (u, v) en las cámaras izquierda y derecha. muksie dio algunas ideas sobre cómo lidiar con eso y sylvain.joyeux señaló una gran biblioteca estéreo que conduce a mejores resultados, aunque ...
georgebrindeiro
1

Cuando dice "más de la mitad de la imagen no tiene información de profundidad adecuada", ¿qué mitad?

Un problema con el que nos encontramos es que si la distancia al objeto es del mismo orden de magnitud que su línea de base (generalmente asociada con cámaras de gran angular), entonces los algoritmos estéreo densos "estándar" no funcionan tan bien. Hemos estado usando la biblioteca libelas, y sus desarrolladores nos dijeron que esto se llama "estéreo de línea de base grande" y es otro problema.

sylvain.joyeux
fuente
Cuando dije que la mitad de la imagen no tenía información de profundidad adecuada, quise decir que de todos los píxeles, solo aproximadamente la mitad tenía disparidades calculadas (no necesariamente formando una región contigua). No tengo el mismo problema que mencionaste con la relación distancia / objeto / línea de base, pero fue muy interesante escuchar sobre esa biblioteca y que esto puede ser un problema. ¡Gracias!
georgebrindeiro
1
De cualquier manera, ¡intentaré liberarlas ya que encontré un contenedor ROS para ello!
georgebrindeiro
0

Echa un vistazo a los líderes de KITTI Stereo Benchmark . Este punto de referencia penaliza los algoritmos por no producir una disparidad en un punto dado, por lo que los mejores resultados producen resultados densos (incluso si no tienen muchos motivos para su estimación en muchos puntos). Algunos métodos tienen un código público que está vinculado, que puede probar.

Tenga en cuenta que no están penalizados por tardar mucho tiempo, por lo que muchos métodos tomarán el orden de minutos por imagen que se ejecutará y pueden no ser adecuados para su aplicación. Sin embargo, se han introducido muchos métodos basados ​​en CNN que funcionan muy bien y se ejecutan en menos de un segundo (en una GPU). Al menos uno de estos (CRL) tiene código público.

Si aún no obtienes estimaciones de profundidad decentes con estas en tus imágenes, entonces es posible que solo estés viendo los límites de lo que es factible desde un enfoque visible. Es fundamental que exista una textura distintiva en el área para poder coincidir bien con los puntos, o necesita una base para hacer algunas suposiciones fuertes (por ejemplo, suavidad) en regiones sin textura.

surtur
fuente