Detección e inferencia de objetos usando una nube de puntos obtenida con una cámara 3D
La detección e identificación de objetos y personas es uno de los mayores puntos de contención en la implementación de sistemas con cierto nivel de autonomía, y es sin duda uno de los temas con mayor repercusión en el mundo de la visión por computador.
Una correcta detección e inferencia es clave para poder llevar a cabo tareas como navegación autónoma, asistencia de brazos robot, videovigilancia o, como en nuestro caso, detección de defectos.
Existen, fundamentalmente, dos formas de enfocar la detección de objetos.
La primera se basa en la utilización de cámaras monoculares (cámaras normales, como las de nuestros móviles), que proporcionan imágenes en dos dimensiones. A esas imágenes se les aplica una serie de algoritmos, que pueden ser muy variados, con el objetivo de obtener una “caja” o delimitación que indique la presencia y localización en la imagen del objeto a detectar.
La segunda se basa en la utilización de cámaras 3D que, como el nombre indica, además de la imagen en 2 dimensiones añaden una tercera dimensión: la profundidad. Gracias a ello podemos crear nubes de puntos, como la de la Imagen 1. En INLOC estamos usando este segundo método para percibir el entorno.
El algoritmo aplicado sobre la nube de puntos
Los algoritmos que se pueden aplicar son muy variados, desde los más simples a los más complejos.
En este post queremos enseñar el resultado de detectar una taza de café concatenando dos algoritmos bien sencillos: primero, aplicamos un detector de bordes a la nube de puntos original. Eso nos permite exponer la geometría básica de la mayoría de los elementos; y segundo, lo pasamos por un algoritmo RANSAC, que nos hará una estimación de los parámetros de la geometría que mejor se adapte a los mencionados bordes de la nube de puntos.


Qué geometría usar dependerá del problema.
En el caso de la Imagen 1, el objetivo es detectar la taza de café sobre la mesa, por lo que estimar los parámetros de un círculo es lo más lógico.
Haciendo servir este método se consigue una detección exitosa de la taza, como se puede observar en la Imagen 2. Lo bueno de este método es que, si el objeto que se desea detectar es razonablemente simple, la detección no solamente es sencilla sino también rápida.
No es, sin embargo, robusta: cuando en la nube de puntos hay objetos con geometrías complejas o muchas instancias de objetos similares en forma, las probabilidades de encontrar objetos no deseados son altas.
Para estos casos hay que explorar soluciones híbridas, en las que la imagen RGB de cada candidato a objeto se pase a otros algoritmos como redes neuronales convolucionales, que tienen mayor capacidad de abstracción y generalización, a pesar de ser mucho más complejos y lentos.
¡Pero esa es una historia para otro post!