Sketchar
Volver al blog

El método de los 'marcadores progresivos' en visión por computadora y realidad aumentada.

Escrito por Sketchar6 min de lectura

Finalmente, es hora de hablar sobre lo que hemos desarrollado y qué problemas hemos superado en el último año, siendo otro paso importante hacia que los usuarios de SketchAR sientan la libertad de la creatividad, sin los límites de las convenciones.

Existe una gran demanda de apps móviles que ofrezcan contenido virtual, sin importar las limitaciones de la tecnología actual. Como la visión por computadora es un área en la que el software está estrechamente relacionado con el hardware, lamentablemente la mayoría de los conceptos de productos de RA siempre estarán limitados por retrasos del lado técnico.

Los equipos pequeños rara vez resuelven problemas fundamentales, pero sí podemos encontrar un método que simplifique la tarea.

¿Para qué reinventar la rueda y por qué nadie lo intentó antes que nosotros?

La mayoría de las bibliotecas y plataformas de terceros se basan en marcadores preinstalados para fijar un objeto virtual en su posición en el mundo real. En nuestro caso, la mano que dibuja la imagen bloqueaba esos marcadores, así que tuvimos que desarrollar nuestro propio método.

ARKit no puede hacer lo mismo sin marcadores.

Además, ARKit y ARCore no se basan en marcadores (salvo en el entorno), pero la precisión al fijar objetos virtuales sería mejor si algunos marcadores preinstalados mantuvieran el objeto virtual en su lugar. El método actual sí incluye la detección y el seguimiento de puntos clave para guiar al usuario, pero todavía no es posible que el usuario defina sus propios marcadores de referencia. El segundo problema con ARKit y ARCore es la imposibilidad de mover un objeto virtual junto con el mundo real. Por ejemplo, después de colocar un objeto virtual sobre una superficie física, no podemos mover la superficie virtual y la física combinadas como una sola, como si estuvieran pegadas, porque la imagen virtual permanece en el mismo lugar y no sigue a la superficie.

Como ya se ha dicho, SketchAR trabaja con papel blanco, que es un "asesino" para la mayoría de los algoritmos de visión por computadora. Sin embargo, nuestros algoritmos están especialmente optimizados para esas condiciones. Son lo suficientemente estables y precisos como para anclar el contenido de RA al papel. Siguen funcionando incluso después de que falla el seguimiento de ARKit. La velocidad también es importante. Hemos trasladado la mayoría de los cálculos a la GPU, lo que permite que SketchAR funcione en tiempo real en iPhones, a partir del modelo 5SE.

El método de los 'marcadores progresivos'.

Esto significa que una línea dibujada por el artista se convierte en un ancla y añade estabilidad para mantener fijo el objeto virtual.

Además, los datos recopilados se usan para seguir ayudándonos a desarrollar un asistente personalizado completo para cada usuario. Por cierto, usamos aprendizaje automático y redes neuronales para analizar y entrenar datos a partir del dibujo de cada usuario. Les contaremos más sobre esto en los próximos artículos.

Houston, tenemos un problema, o el principio de funcionamiento: 'no hay que temer.'

Para entender cómo se resolvió el problema, hay que volver al principio:

Entorno. Cada superficie tiene una textura, un color y una estructura diferentes. Además, los algoritmos pueden distraerse con "ruidos" externos del entorno. Los filtros resuelven este problema ('Canales', igual que los canales de Photoshop).

Unificar las superficies es difícil, salvo, claro está, que el entrenamiento de una red neuronal se base en datos reales de los usuarios. El entrenamiento de una red neuronal es un proceso continuo y por eso nunca debe considerarse como una parte terminada del producto.

El 'lienzo'. Un lienzo es una hoja de papel, una pared o cualquier otra superficie que elijas para dibujar. La variedad de 'lienzos' está determinada únicamente por las dimensiones. Al mismo tiempo, el blanco es el 'enemigo' de la visión por computadora. Por favor, lean nuestra nota "El problema del papel blanco" para entender por qué ocurre esto.

El dibujo. Obviamente, conocemos el nivel de habilidad de nuestros usuarios y no esperamos que un boceto coincida a la perfección con la imagen original. Por eso, nuestro algoritmo tiene en cuenta las inconsistencias del usuario.

Las manos. Otro 'enemigo' para el buen funcionamiento de la app es cuando la mano en la pantalla cruza una superficie, los marcadores o el propio dibujo. El tamaño y la forma, el color de piel e incluso la manera de sostener el lápiz distraen parte de la atención del algoritmo.

El dispositivo. La posición no fija del dispositivo. Los usuarios sostienen el teléfono con una mano, acercándolo y alejándolo de la superficie en distintos ángulos.

La solución.
Tras un análisis detallado de estos problemas, entendimos cómo 'enseñarle' a la app a ver solo lo que el usuario dibuja, filtrando pero sin ignorar el entorno.

A continuación pueden ver cómo el mundo que nos rodea se transforma en una imagen plana y se divide en capas para analizar cada una de ellas mediante canales.

¿Cómo funciona?

Convertir el contenido renderizado, hacerlo coincidir con el original y luego colocar un objeto virtual sobre la superficie requiere un enfoque de múltiples etapas. En realidad, algunas de estas capas son mucho más importantes que otras. Queda claro cuando observamos solo una pequeña parte del proceso cuántas acciones ocurren cada segundo.

Este es un esquema simple de cómo el entorno se convierte en una imagen plana. Luego se separa en muchas capas (canales) para ser analizada.

Como se describió antes, las capas se separan y un algoritmo enseña a la cámara a distinguir todo lo que ve. Por ejemplo, el fondo se separa de la mano, la mano de su sombra, etc.

Las pantallas están en orden de izquierda a derecha:

1. La imagen virtual ubicada sobre la superficie, visible para el usuario en la pantalla del smartphone.

2. Reconocimiento de la hoja sobre la superficie

3. El papel se separa de manera aproximada del fondo. Se ve el ruido en la superficie de la mesa y la sombra de la mano se reconoce como un solo objeto.

4. Una separación clara de la mano respecto de la superficie.

5. Detección únicamente del contenido dibujado.

6. Reconocimiento del contenido dibujado en relación con el entorno.

Cuando la app sabe reconocer con claridad cada uno de los objetos, los compara con las imágenes originales. Recuerden, cada acción del algoritmo ocurre mientras la cámara y las manos se mueven continuamente en el encuadre.

Un ejemplo de cuántas comparaciones erróneas ocurrían en la primera versión del algoritmo.

Este es un ejemplo de buenas comparaciones en otras versiones del algoritmo.

Sin entrar en más detalles, este enfoque resuelve muchos de los problemas y desafíos del producto para mejorar la experiencia del usuario. Amplía el alcance de aplicación de los datos obtenidos, lo que nos permite llevar el producto a nuevos niveles. Es un asistente completo, respaldado por datos provenientes del aprendizaje automático y las redes neuronales.

SketchAR ha estado disponible en AppStore durante casi un año, en Play Market durante medio año, e incluso en MS Hololens. A pesar de las reseñas entusiastas de los usuarios y de la prensa, todavía no existe ninguna aplicación rival con una funcionalidad similar. Esto pone de relieve la complejidad del problema y la originalidad de nuestros algoritmos.

Sigan las actualizaciones, dibujen más y amen la tecnología, porque nos ayuda a crecer… ¡y pronto esclavizará a la humanidad! ;)

¡Arte para todos!

Compartir esta publicación

Artículos relacionados

Suscríbete a las novedades de la empresa

Nuevas publicaciones, novedades del producto e historias de la comunidad – directo a tu correo. Sin spam.