Datos 3D mediante visión estéreo

Datos 3D mediante visión estéreo

1 Resumen

Este Libro blanco repasa las fases de trabajo más importantes para percibir la profundidad con una cámara estéreo. Tras la descripción de las técnicas generales abordamos las particularidades de las cámaras estéreo Ensenso para mejorar el procedimiento clásico de visión estereoscópica.

2 El principio de la visión tridimensional

La percepción de la profundidad en la visión estéreo se basa en el principio de triangulación. Utilizamos dos cámaras con ópticas de proyección y las colocamos una al lado de la otra para que sus campos visuales se superpongan en el punto distante deseado del objeto. Capturando una imagen con cada cámara captamos la escena con dos ángulos visuales distintos. En la figura 1 se puede ver esta configuración.

Para cada punto superficial visible de ambas imágenes hay dos haces en el espacio 3D que unen el punto de la superficie con el centro de proyección de cada cámara. Para obtener la posición 3D de la escena capturada debemos lleva a cabo básicamente dos tareas: en primer lugar debemos determinar en qué lugar de la imagen derecha se encuentra cada punto superficial visible en la imagen izquierda. Y en segundo lugar debe conocerse la geometría exacta de la cámara para calcular el punto de intersección del haz de los píxeles correspondientes de la cámara izquierda y derecha. Dado que partimos de la base de que las cámaras están unidas fijamente, la geometría solo se calcula una vez durante el proceso de calibración.

Figura 1: Un ejemplo de la base de datos para estéreo de Middlebury "Cones". Se capta una escena con conos de papel utilizando una cámara estéreo. Se marcan los haces de proyección sobre las puntas de dos conos en las dos imágenes de la cámara.

3 Calibración de la cámara

La geometría del sistema de dos cámaras se calcula en el proceso de calibración estéreo. Para ello se necesita en primer lugar un objeto de calibración. Por lo general se utiliza una placa de calibración con un patrón de tablero de ajedrez o un patrón de puntos de un tamaño conocido. Luego se registran pares de imágenes sincronizadas con el patrón en distintas posiciones, orientaciones y distancias en las dos cámaras. Para calcular tanto las poses 3D de todos los patrones observados como un modelo preciso de la cámara estéreo pueden utilizarse las posiciones de los píxeles de los puntos del patrón de cada par de imágenes y sus posiciones conocidas en la placa de calibración. El modelo está formado por los llamados parámetros intrínsecos de cada cámara, como la distancia focal y la distorsión de las lentes, y por los parámetros extrínsecos, es decir, la rotación y el desplazamiento en tres dimensiones entre la cámara izquierda y la derecha. Con estos datos de calibración podemos triangular los puntos correspondientes identificados en ambas imágenes y restaurar sus coordenadas 3D métricas en relación con la cámara.

Figura 2: El área de búsqueda para compensar las zonas de las imágenes es sólo unidimensional. Arriba: Las líneas epipolares se curvan en las imágenes en bruto distorsionadas. Centro: Las líneas epipolares están curvadas: La eliminación de las distorsiones de la imagen rectifica las líneas epipolares. Abajo: Mediante la rectificación se alinean las líneas epipolares con los ejes de la imagen. La correspondencia puede buscarse a lo largo de las líneas de exploración de la imagen.

4 Pasos de procesamiento para el cálculo de la profundidad

En los tres apartados siguientes se explican los pasos de procesamiento que son necesarios para calcular la posición 3D de cada píxel de un par de imágenes. Estos pasos deben realizarse en tiempo real en cada imagen estereoscópica capturada para obtener una nube de puntos 3D o una superficie de la escena.

4.1 Rectificación

Para triangular los puntos representados, tenemos que identificar las partes correspondientes de la imagen en la imagen izquierda y derecha. Podríamos limitarnos a buscar en toda la imagen de la derecha una coincidencia lo suficientemente buena con una sección pequeña de la imagen de la izquierda. Sin embargo, esto nos llevaría demasiado tiempo para trabajar en tiempo real. Pongamos por caso el par de imágenes de ejemplo de la figura 3, en la que la punta del cono es visible en la parte superior de la imagen izquierda. Intuitivamente, no parece necesario buscar la punta del cono en la mitad inferior de la imagen derecha cuando las cámaras están montadas una al lado de la otra. De hecho, la geometría de las dos cámaras de proyección permite limitar la búsqueda a una línea unidimensional en la imagen derecha, la llamada línea epipolar.

Figura 3: ¿Dónde tenemos que buscar la punta del cono en la imagen correcta?

La figura 2 (arriba) muestra un par de imágenes estereoscópicas con algunas correspondencias de puntos marcados a mano y sus líneas epipolares. En las imágenes en bruto las líneas epipolares se curvan debido a las distorsiones causadas por la óptica de la cámara. La búsqueda de correspondencias a lo largo de estas líneas curvas será bastante lenta y complicada, pero podemos eliminar las distorsiones de la imagen invirtiendo las distorsiones aprendidas durante el proceso de calibración. Las imágenes resultantes no distorsionadas tendrán líneas epipolares rectas, como se muestra en la figura 2 (centro).

Aunque son rectas, las líneas epipolares tienen orientaciones distintas en diferentes partes de cada imagen. Esto se debe a que los planos de la imagen (es decir, los sensores de las cámaras) no son perfectamente coplanares ni están alineados de forma idéntica. Para acelerar aún más la búsqueda de correspondencia podemos utilizar la geometría de la cámara a partir de la calibración y aplicar una transformación de perspectiva adicional a las imágenes para que las líneas epipolares estén alineadas con las líneas de exploración de la imagen. A este paso se le conoce como rectificación. La búsqueda de la punta del cono blanco puede hacerse ahora simplemente observando la misma línea de exploración en la imagen correcta y encontrando la posición más adecuada. Todo el procesamiento posterior se realiza sólo en las imágenes rectificadas. Las imágenes resultantes se muestran en la figura 2 (abajo).

4.2 Correspondencia estéreo

Ahora sobre la misma línea de exploración podemos encontrar los mismos píxeles en las imágenes izquierda y derecha que han captado el mismo punto de interés. Dado que el valor de un solo píxel no suele ser suficiente para encontrar el píxel correspondiente de forma fiable, normalmente intentamos hacer coincidir pequeñas ventanas (por ejemplo, 7x7 píxeles) alrededor de cada píxel con todas las ventanas posibles de la imagen derecha en la misma línea. No tenemos que buscar en toda la línea, sino sólo en un número limitado de píxeles a la izquierda de la coordenada "x" del píxel de la imagen izquierda, lo que corresponde a la mirada ligeramente estrábica que se requiere para enfocar los objetos cercanos. Esto acelera el ajuste y limita el rango de profundidad en el que los puntos pueden ser triangulados. Cuando se encuentra una coincidencia suficientemente buena y clara, asignamos el píxel de la imagen izquierda al correspondiente píxel de la imagen derecha. La asociación se almacena en el mapa de disparidad como un desplazamiento entre las posiciones X de los píxeles (ver figura 4).

Figura 4

Figura 4: Resultado de la comparación de las imágenes. El mapa de disparidad muestra los datos de profundidad en forma de desplazamientos de píxeles entre las imágenes de la izquierda y la derecha. Se utiliza un valor especial (en este caso, negro) para mostrar que un píxel de la imagen de la derecha no se ha podido identificar. Esto sucede en zonas cubiertas o con reflejos en el objeto que aparecen de forma distinta en las dos cámaras.

Esta técnica de adaptación se llama correspondencia estéreo local porque utiliza sólo información adyacente a cada píxel. Por supuesto, sólo podemos hacer coincidir un área entre la imagen izquierda y la derecha si se diferencia lo suficiente de otras partes de la imagen en la misma línea de exploración. Por lo tanto, la correspondencia estéreo local fallará en zonas con una textura pobre o repetitiva. Por otro lado, los métodos de correspondencia estéreo global pueden aprovechar la información adyacente. No se limitan a observar cada píxel por separado para buscar una pareja compatible, sino que tratan de encontrar una asignación para todos los puntos gráficos izquierdos y derechos a la vez. Esta asignación global también tiene en cuenta el hecho de que las superficies suelen ser lisas y por lo tanto los píxeles adyacentes suelen tener profundidades similares. Los métodos globales son más complejos y requieren una mayor capacidad de procesamiento que el método local, pero necesitan menos textura en las superficies y proporcionan resultados más precisos, especialmente en los márgenes de los objetos.

4.3 Reproyección

Independientemente de la técnica de correspondencia utilizada, el resultado es siempre una asignación entre los píxeles de la imagen izquierda y derecha que se almacena en el mapa de disparidad. Los valores del mapa de disparidad codifican el desplazamiento en píxeles con la correspondiente ubicación encontrada en la imagen derecha. La figura 4 ilustra el concepto de disparidad. Podemos entonces usar la geometría de la cámara obtenida durante la calibración para convertir los valores de disparidad basados en píxeles en coordenadas reales métricas X, Y y Z para cada píxel. Esta conversión se denomina reproyección. Podemos simplemente cortar los dos haces de cada píxel correspondiente de la imagen izquierda y derecha, como se muestra en la figura 1. Los datos XYZ resultantes se denominan nubes de puntos. Esta se suele almacenar como imagen de tres canales para obtener también la información adyacente del punto de la cuadrícula de píxeles de la imagen. La figura 5 muestra una visualización de la nube de puntos.

Figura 5: Vista de la superficie 3D generada a partir del mapa de disparidad y de los datos de calibración de la cámara. La superficie también está texturada con la imagen de la cámara izquierda (aquí convertida a escala de grises).

5 Procesamiento específico para una aplicación

Los tres pasos de procesamiento descritos deben ejecutarse en el par de imágenes estéreo para obtener la nube de puntos 3D completa de la escena. Dicha nube de puntos debe ser procesada para realizar una aplicación específica. Se puede utilizar para comparar la superficie de la escena con un objeto conocido aprendido de una nube de puntos anterior o bien de un modelo CAD. Si la pieza puede localizarse claramente en la superficie de la escena capturada se puede calcular la posición y la rotación completas del objeto y podría ser recogido por un robot, por ejemplo.

6 Cámaras estéreo Ensenso

Como ya se ha mencionado, todas las técnicas de correspondencia estereoscópica requieren objetos con textura para determinar con fiabilidad la correspondencia entre las imágenes de la izquierda y la derecha. Dado que la percepción de las texturas depende directamente de las condiciones de iluminación y de las características de la superficie de los objetos en la escena, las superficies con menos textura o reflectantes afectan directamente a la calidad de la nube de puntos 3D resultante. Las cámaras Ensenso utilizan técnicas especiales para mejorar el proceso clásico de visión estereoscópica, lo que mejora la calidad de los datos de profundidad y la precisión de los resultados de la medición.

Proyector de patrones

Por eso las cámaras estéreo Ensenso utilizan una unidad complementaria de proyección de texturas. Durante la captura de la imagen este proyector complementa la textura del objeto con un patrón muy texturado para eliminar las ambigüedades en el paso de correspondencia estereoscópica. Esto asegura una nube de puntos 3D densa incluso en superficies monocromáticas o de estructura ambigua. Además, el proyector y las cámaras están sincronizados por una señal de disparo de hardware para garantizar pares de imágenes homogéneos durante la captura de objetos en movimiento.

FlexView

Por medio de un mecanismo piezoeléctrico de bajo desgaste puede desplazarse linealmente en pasos muy pequeños la posición de la máscara de patrones en el haz de luz. Como consecuencia la textura proyectada en la superficie de los objetos de la escena también se desplaza creando información adicional y variable en las superficies brillantes, oscuras o con dispersión de volumen. En escenas estáticas la técnica FlexView permite capturar varios pares de imágenes con diferentes texturas, lo que da lugar a un número mucho más elevado de puntos gráficos. La mayor resolución permite calcular imágenes de disparidad y nubes de puntos mucho más detalladas, lo que también se refleja en una mayor solidez de los datos 3D en superficies difíciles.

Biblioteca de procesamiento estéreo NxLib

La biblioteca NxLib es la interfaz de las cámaras e implementa toda la cadena de procesamiento estéreo, incluida la calibración. Combina la proyección de texturas con la técnica de correspondencia global y proporciona nubes de puntos densas y de alta calidad. El algoritmo de adaptación global estrictamente paralelizado puede utilizar todos los núcleos del procesador para lograr un rendimiento en tiempo real.