miércoles, 8 de julio de 2015

Motor de Realidad Aumentada Basado en Algoritmos de Visión Computacional

Antonio Arista Jalife.

Victor Armando Ramos Viterbo

Arista.antonio@gmail.com

Introducción. La realidad aumentada es una superposición de objetos virtuales en un entorno real, dichos objetos son colocados dentro de la imagen capturada en tiempo real con lo que se logra la combinación de elementos virtuales y reales. Hoy en día, las aplicaciones de realidad aumentada tienen un prometedor panorama: Pueden ser utilizadas desde áreas como la educación, el turismo, el comercio, etc. Una prueba de ello es la compañía Google, que en el año 2012 lanzó el diseño de unos lentes que permiten la realidad aumentada comercializada, el proyecto actualmente es conocido como Google Glass. Para aprovechar las características de ésta tecnología, se requieren algoritmos y motores de realidad aumentada que aprovechen el hardware de forma creativa. Actualmente una plataforma donde pueden desarrollarse aplicaciones interesantes son en teléfonos móviles, por su distribución en masa y sus capacidades de captura de video y procesamiento, mismas que se incrementan junto con la ley de Moore. Este trabajo presenta un motor de realidad aumentada compuesto por algoritmos de visión computacional sencillos que pueden ser implementados en cualquier dispositivo. Por su sencillez, puede ser migrado a otras plataformas como son Android, Blackberry o iOS. Metodología propuesta. A. Extracción de la imagen de la cámara con OpenCV: En un ambiente con la librería de visión computacional OpenCV preconfigurada, se configuró una webcam para captar imágenes de 640 x 480 pixeles, y se obtienen 24 cuadros por segundo (24 FPS). B. Transformación a escala de grises: Cada pixel en canal RGB se transforma con la siguiente expresión. C. Binarización por umbralado: Cada pixel recibe un valor negro (0) o blanco(255) dependiendo de un umbral: D. Erosión: Si se sobrepone una máscara M sobre una imagen K, y la máscara M coincide con el subconjunto de pixeles en K, el pixel en el origen de la mascara valdrá 255. Sino valdrá 0. Matemáticamente hablando: E. Negativo de la imagen: Volvemos la imagen negativa con la expresión: F. Componentes conexas: Utilizamos el algoritmo para etiquetar regiones que se encuentran unidas entre si. El proceso es parecido a un “bucket fill” de Paint por cada región de la imagen. Cada región usa una etiqueta. G. Forma de la componente conexa: Determinamos si la componente conexa tiene una forma cuadrada o cercana a ser cuadrada. Si la condición de cuadratura se cumple, se coloca el punto de contacto en el centro de la componente. Resultados obtenidos: Caso estable, poca inclinación, iluminación considerable: Cambio de iluminación rotación moderada, cambio de fondo: Rotación completa, cambio de escala, fondo disruptivo: Cambio de escala, rotación, fondo disruptivo y ruido por falta de enfoque de imagen en movimiento: Conclusiones: Este trabajo ha demostrado la manera de crear un motor de realidad aumentada con procesos sencillos y transformaciones bien conocidas a las imágenes obtenidas desde una cámara web. El capturador de imágenes fue OpenCV, sin embargo otras plataformas (con el API adecuado) pueden implementar este algoritmo para la extracción y reconocimiento del patrón de punto de contacto. Esta característica abre nuevas posibilidades de implementación como pueden ser su uso en plataformas móviles tales como Android e iOS. El motor presentado ha sido resistente a cambios de iluminación, traslación, rotación, movimiento y una ligera inclinación. Referencias: [1] Caudell, T.P., “Augmented reality: an application of heads-up display technology to manual manufacturing processes,” Proceedings of the Twenty-Fifth Hawaii International Conference on System Sciences, vol. 2, pp. 659–669, 1992. [2] Azuma, R., Baillot, Y., Behringer, R., and Feiner, S., “Recent advances in augmented reality,” Computer Graphics and Applications, vol. 21,pp. 34–47, 2001. [3] Gonzalo Pajares and Jesus M. de la Cruz, “Visión por computador:Imágenes digitales y aplicaciones.” Alfaomega RaMa, vol. 1, 2002. [4] Lifeng Hea, Yuyan Chaob, Kenji Suzukic, and Kesheng Wud, “Fast connected-component labeling,” Pattern Recognition, vol. 42, pp. 1977–1987, 2009.

0 comentarios :

Publicar un comentario