En Eryx nos gusta compartir el conocimiento y eso es lo que hacemos en Hoy Aprendí. Descubrí suggestions e insights claves de nuestro equipo técnico para aplicarlos en tu día a día.
por Maxi Suppes y Lucas Rodriguez
Contexto
¿Qué herramientas tenemos para trackear la posición de un objeto de manera easy?
Hoy en día existen múltiples tecnologías que nos permiten realizar esta tarea cómo los tags RFID o sistemas basados en radiofrecuencia (RTLS). Todas estas opciones tienen una desventaja: requieren no sólo dominar e implementar una determinada tecnología, sino también tener un componente electrónico para cada uno de los objetos que necesitamos seguir.
Una alternativa más sencilla y escalable es generar un código QR que represente el objeto que queremos seguir y pegarlo al mismo. De esta manera, podríamos utilizar una cámara para “buscar” el QR que pegamos al objeto y, a partir de esto, inferir su posición dentro de un ambiente conocido.
Los códigos QRs son útiles para codificar información en normal y son utilizados para una gran cantidad de aplicaciones que van desde credenciales para conectarnos a una purple Wi-FI hasta el visualizar el menú de una cafetería.
Problema
Si bien esta es una buena solución para muchos casos de uso, algunas condiciones del entorno podrían impedir la correcta lectura del código. La luminosidad, la resolución de la cámara, la distancia a la que se encuentra del objeto o la velocidad del obturador, son parámetros importantes a la hora de lograr una identificación y decodificación exitosa del QR.
¿Qué sucede si, además de las condiciones ya mencionadas, el objeto está en movimiento?
Cuando analizamos los cuadros obtenidos por la cámara (como se ve en la imagen), nos encontramos con un efecto conocido como Motion Blur. Este efecto hace imposible decodificar el QR y, por lo tanto, identificar la posición del objeto.
Solución
Para resolver este problema, podemos usar otros códigos que ofrecen ventajas significativas cuando las condiciones del entorno no son las ideales.
Un marcador de referencia (o fiducial) es un patrón visible que proporciona puntos de referencia en el entorno físico sobre los cuales se puede calcular la posición relativa respecto a una cámara u otros objetos en el espacio tridimensional. Esto es útil en una variedad de aplicaciones de visión por computadora, realidad aumentada, robótica y, en explicit, el seguimiento (trackeo) de un objeto.
Dependiendo de la aplicación, algunos funcionan mejor en términos de robustez frente a la oclusión, ángulo de la cámara, condiciones de luz, desenfoque de movimiento, rapidez para decodificar la información, and so forth. En normal los fiducial markers no contienen ninguna información definida por el usuario en la etiqueta, sino que son IDs predefinidos y acotados.
Si bien tienen la apariencia de un QR tradicional, los fiducials tienen una resolución más baja y, por lo tanto, pueden ser detectados a distancias mayores.
Como puede verse, utilizando esta variante a los clásicos QRs, podemos resolver un problema muy común en los sistemas de visión por computadora cuando debemos trabajar en ambientes no ideales.