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)?
fuente
Respuestas:
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.
fuente
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:
Usando estas ecuaciones puedes calcular una nube estéreo densa. Uno para cada píxel en sus cámaras.
fuente
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.
fuente
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.
fuente