Motor de Realidad Aumentada Basado en Algoritmos … · Computacional. Antonio Arista ... (HUD), y...

5
Motor de Realidad Aumentada Basado en Algoritmos de Visi´ on Computacional. Antonio Arista-Jalife. Victor Armando Ramos Viterbo Abstract— En este art´ ıculo se muestra una metodolog´ ıa para implementar un motor de realidad aumentada que reconoce marcadores o puntos de contacto, y dibuja sobre ellos una imagen. El motor mencionado presenta resistencia a cambios de iluminaci´ on, rotaci´ on, traslaci´ on, escala, inclinaci´ on, y un ambiente con gran cantidad de texturas. I. I NTRODUCCI ´ ON. La realidad aumentada es una superposici´ on de objetos virtuales en un entorno real, dichos objetos son colocados dentro de la im´ agen capturada en tiempo real: Al momento de obtenerse la im´ agen, el objeto virtual aparece como si fuese un objeto m´ as en el ambiente, con lo que se logra la combinaci´ on de elementos virtuales y reales. El t´ ermino fue acu˜ nado en 1992 por Tom Caudell [1] el cual se present´ o implementado en un head-mounted display (HUD), y combinaba la posici´ on de la cabeza y un sistema de registro del mundo real. Tom Caudell en su trabajo men- ciona aplicaciones interesantes como son la manufactura de aeronaves al eliminar plantillas, diagramas y dispositivos de enmascaramiento, utilizando solamente realidad aumentada para su proceso. Hoy en d´ ıa, las aplicaciones de realidad aumentada tienen un prometedor panorama [2]: Pueden ser utilizadas desde ´ areas como la educaci´ on, el turismo, el comercio, etc. Una prueba de ello es la compa˜ nia Google, que en el a˜ no 2012 lanz´ o el dise˜ no de unos lentes que permiten la realidad aumentada comercializada, el proyecto actualmente es cono- cido como Google Glass. Sin embargo, para aprovechar las caracter´ ısticas de ´ esta 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´ efonos m´ oviles, por su distribuci´ on en masa y sus capacidades de captura de video y procesamiento, mismas que se incrementan junto con la ley de Moore. Este art´ ıculo presenta un motor de realidad aumentada, que est´ a compuesto por algoritmos de visi´ on computacional sen- cillos que pueden ser implementados en cualquier dispositivo que tenga la capacidad de capturar video y editar los pixeles en tiempo real. Por su sencillez en las transformaciones, este algoritmo puede ser migrado a otras plataformas libremente, incluidas aquellas para dispositivos m´ oviles como son An- droid, Blackberry o iOS. Antonio Arista-Jalife y Victor Armando Ramos Viterbo son estudiante de la Maestr´ ıa en Ciencias del ´ Area Cibertr´ onica en la Universidad La Salle, Cuidad de M´ exico. (email: [email protected]). La demostraci´ on de este motor fue fabricada con la librer´ ıa OpenCV, sin embargo no se utilizaron elementos de OpenCV mas que la captura y edici´ on de pixeles, por lo que puede ser reemplazada libremente por un API que pueda realizar la misma tarea en otra plataforma. El art´ ıculo se estructura de la siguiente forma: En la secci´ on II se habla acerca de conceptos b´ asicos para com- prender claramente el motor de realidad aumentada pro- puesto. En la secci´ on III se muestra la metodolog´ ıa utilizada y los pasos que sigue el algoritmo del motor propuesto. El motor fue sometido a pruebas de resistencia a cambios de iluminaci´ on, escala, traslaci´ on, rotaci´ on, inclinaci´ on y am- biente ruidoso, mismas que son presentadas en la secci´ on IV. Finalmente, las conclusiones y el trabajo futuro se presenta en la secci´ on V. II. CONCEPTOS B ´ ASICOS El motor de realidad aumentada funciona a trav´ es de la superposici´ on de 2 capas de imagen: una capa de captura de c´ amara en vivo, y una segunda capa que es utilizada para dibujar objetos virtuales, sea o no en 3D. Para efectos de simplificaci´ on de la demostraci´ on estamos solamente considerando im´ agenes en 2 dimensiones. Una vez capturada la im´ agen, es necesario indentificar el pixel en coordenadas (x, y) en donde debe dibujarse el objeto. Para realizar la tarea de dibujado (o renderizaci´ on en el caso de im´ agenes en 3D) es requerido especificar puntos de contacto, los cuales pueden ser clasificados de la siguiente manera: 1) Puntos de contacto est´ aticos: Son aquellos que tienen una determinada posici´ on en la pantalla, con coor- denadas (x, y) o (x, y, z) fijas. No importando los cambios de video en la capa de captura de c´ amara en vivo. 2) Puntos de contacto asociados a objetos: Estos puntos de contacto requieren el reconocimiento en tiempo real de un objeto determinado (E.g: autom´ oviles o peatones). 3) Puntos de contacto asociados a patrones preesta- blecidos: Los puntos de contacto se obtienen a partir de una figura o imagen previamente decidida, la cual se conoce como marcador. Para esta investigaci´ on decidimos utilizar puntos de con- tacto asociado a un patr´ on preestablecido: El logotipo de la Universidad La Salle enmarcado en un cuadrado negro. El principal reto es hallar el marcador en una imagen, a pesar de presentar ruido, un mal enfoque, una rotaci´ on, un cambio de escala, etc. Esto es crucial para darle la robustez

Transcript of Motor de Realidad Aumentada Basado en Algoritmos … · Computacional. Antonio Arista ... (HUD), y...

Page 1: Motor de Realidad Aumentada Basado en Algoritmos … · Computacional. Antonio Arista ... (HUD), y combinaba la posici´on de la cabeza y un sistema ... biente ruidoso, mismas que

Motor de Realidad Aumentada Basado en Algoritmos de VisionComputacional.

Antonio Arista-Jalife. Victor Armando Ramos Viterbo

Abstract— En este artıculo se muestra una metodologıa paraimplementar un motor de realidad aumentada que reconocemarcadores o puntos de contacto, y dibuja sobre ellos unaimagen. El motor mencionado presenta resistencia a cambiosde iluminacion, rotacion, traslacion, escala, inclinacion, y unambiente con gran cantidad de texturas.

I. INTRODUCCION.

La realidad aumentada es una superposicion de objetosvirtuales en un entorno real, dichos objetos son colocadosdentro de la imagen capturada en tiempo real: Al momentode obtenerse la imagen, el objeto virtual aparece como sifuese un objeto mas en el ambiente, con lo que se logra lacombinacion de elementos virtuales y reales.

El termino fue acunado en 1992 por Tom Caudell [1] elcual se presento implementado en un head-mounted display(HUD), y combinaba la posicion de la cabeza y un sistemade registro del mundo real. Tom Caudell en su trabajo men-ciona aplicaciones interesantes como son la manufactura deaeronaves al eliminar plantillas, diagramas y dispositivos deenmascaramiento, utilizando solamente realidad aumentadapara su proceso.

Hoy en dıa, las aplicaciones de realidad aumentada tienenun prometedor panorama [2]: Pueden ser utilizadas desdeareas como la educacion, el turismo, el comercio, etc. Unaprueba de ello es la compania Google, que en el ano 2012lanzo el diseno de unos lentes que permiten la realidadaumentada comercializada, el proyecto actualmente es cono-cido como Google Glass.

Sin embargo, para aprovechar las caracterısticas de estatecnologıa, se requieren algoritmos y motores de realidadaumentada que aprovechen el hardware de forma creativa.Actualmente una plataforma donde pueden desarrollarseaplicaciones interesantes son en telefonos moviles, por sudistribucion en masa y sus capacidades de captura de videoy procesamiento, mismas que se incrementan junto con laley de Moore.

Este artıculo presenta un motor de realidad aumentada, queesta compuesto por algoritmos de vision computacional sen-cillos que pueden ser implementados en cualquier dispositivoque tenga la capacidad de capturar video y editar los pixelesen tiempo real. Por su sencillez en las transformaciones, estealgoritmo puede ser migrado a otras plataformas libremente,incluidas aquellas para dispositivos moviles como son An-droid, Blackberry o iOS.

Antonio Arista-Jalife y Victor Armando Ramos Viterbo son estudiante dela Maestrıa en Ciencias del Area Cibertronica en la Universidad La Salle,Cuidad de Mexico. (email: [email protected]).

La demostracion de este motor fue fabricada con la librerıaOpenCV, sin embargo no se utilizaron elementos de OpenCVmas que la captura y edicion de pixeles, por lo que puedeser reemplazada libremente por un API que pueda realizarla misma tarea en otra plataforma.

El artıculo se estructura de la siguiente forma: En laseccion II se habla acerca de conceptos basicos para com-prender claramente el motor de realidad aumentada pro-puesto. En la seccion III se muestra la metodologıa utilizaday los pasos que sigue el algoritmo del motor propuesto. Elmotor fue sometido a pruebas de resistencia a cambios deiluminacion, escala, traslacion, rotacion, inclinacion y am-biente ruidoso, mismas que son presentadas en la seccion IV.Finalmente, las conclusiones y el trabajo futuro se presentaen la seccion V.

II. CONCEPTOS BASICOS

El motor de realidad aumentada funciona a traves de lasuperposicion de 2 capas de imagen: una capa de capturade camara en vivo, y una segunda capa que es utilizadapara dibujar objetos virtuales, sea o no en 3D. Para efectosde simplificacion de la demostracion estamos solamenteconsiderando imagenes en 2 dimensiones.

Una vez capturada la imagen, es necesario indentificarel pixel en coordenadas (x, y) en donde debe dibujarse elobjeto. Para realizar la tarea de dibujado (o renderizacion enel caso de imagenes en 3D) es requerido especificar puntosde contacto, los cuales pueden ser clasificados de la siguientemanera:

1) Puntos de contacto estaticos: Son aquellos que tienenuna determinada posicion en la pantalla, con coor-denadas (x, y) o (x, y, z) fijas. No importando loscambios de video en la capa de captura de camara envivo.

2) Puntos de contacto asociados a objetos: Estos puntosde contacto requieren el reconocimiento en tiemporeal de un objeto determinado (E.g: automoviles opeatones).

3) Puntos de contacto asociados a patrones preesta-blecidos: Los puntos de contacto se obtienen a partirde una figura o imagen previamente decidida, la cualse conoce como marcador.

Para esta investigacion decidimos utilizar puntos de con-tacto asociado a un patron preestablecido: El logotipo de laUniversidad La Salle enmarcado en un cuadrado negro.

El principal reto es hallar el marcador en una imagen, apesar de presentar ruido, un mal enfoque, una rotacion, uncambio de escala, etc. Esto es crucial para darle la robustez

Page 2: Motor de Realidad Aumentada Basado en Algoritmos … · Computacional. Antonio Arista ... (HUD), y combinaba la posici´on de la cabeza y un sistema ... biente ruidoso, mismas que

necesaria al motor, ya que los marcadores pueden estarcolocados en ambientes atıpicos.

Para atacar este reto es necesario hacer transformacionesa la imagen de entrada, de tal manera que el motor puedaelegir el marcador y discriminarlo de todo el ambiente. Estastransformaciones se aplican a toda la imagen y permitenir descartando aquella informacion irrelevante para dejarsolamente lo necesario. [3]

III. METODOLOGIA PROPUESTA: EL MOTOR DEREALIDAD AUMENTADA.

A. Extraccion de la imagen de la camara con OpenCV

En un ambiente con la librerıa de vision computacionalOpenCV preconfigurada, se configuro una webcam paracaptar imagenes de 640 x 480 pixels, y se obtiene unaimagen o un cuadro cada 41.66 milisegundos (24 FPS). Deeste batch de imagenes, el motor de AR toma una de ellascada determinado tiempo (el tiempo que lleva en procesarlay dibujar sobre ella). Una vez que el motor adquiere dichaimagen, esta listo para realizar procesos sobre ella.

B. Transformacion a escala de grises.

El primer proceso de transformacion requerido es unaconversion de canales rojo, verde y azul a una escala degrises. Esto puede ser realizado con la siguiente expresion:

J(x, y) =Ir(x, y) + Ig(x, y) + Ib(x, y)

3(1)

Donde J es la imagen resultante de la transformacion decolor a escala de grises. (x, y) son las coordenadas de laimagen capturada, Ir, Ig e Ib son los canales rojo, verde yazul de la imagen capturada, respectivamente.

C. Binarizacion por umbralado.

Una vez que se ha realizado una transformacion a escalade grises, el siguiente paso del pre-procesamiento es labinarizacion por umbralado, el cual es definido por mediode una funcion por partes de la siguiente manera:

K(x, y) ={

255 ← si J(x, y) ≥ τ0 ← en otro caso.

(2)

Donde K es la imagen resultante del proceso de bina-rizacion por umbralado, la cual tiene en sus pixels solo dosposibles valores, 0 (negro) o 255 (blanco). τ es el valor deumbral o threshold utilizado, y dependiendo de dicho valor,es resultado el proceso de binarizacion por umbralado. Parafines de este trabajo, se sugiere un valor de τ = 90.

D. Proceso de erosion de zonas en color blanco.

El proceso de erosion consiste en una superposicion de unamascara M sobre la imagen K, de tal manera que la mascarase posiciona sobre un conjunto determinado de pixels. Si lamascara M coincide con el subconjunto de pixels de K, elpixel en el origen de la mascara es retenido (con su valor en255). En otro caso es eliminado (su valor se coloca en 0).

Expresado en terminos matematicos y para explicar elmotor propuesto se tiene una mascara M con la siguienteforma:

M =

255 255 255255 255 255255 255 255

(3)

La erosion se define entonces, como:

K = J ⊗M = {i ∈ E|Mi ⊆ J} (4)

Donde E es un espacio entero, Mi es la traslacion de lamatriz M por el vector i, y K es la imagen resultante. Elresultado de aplicar la operacion de erosion con la mascaraM se muestra en la figura.

E. Negativo de la imagen.

Una vez realizada la erosion, se requiere obtener elnegativo de una imagen. Esto es, la negacion de los bitsde todo pixel. El proceso de negativo puede definirsematematicamente como:

L(x, y) = 255−K(x, y) (5)

Con lo cual se realiza el negativo: Las regiones negras setransforman en color blanco y viceversa.

F. Algoritmo de componentes conexas.

Las componentes conexas son el etiquetado de regionespor medio de una capa de valores enteros positivos, quesirve para describir a cada uno de los pixeles de la imagen.Cuando una imagen tiene diversas regiones estas pueden seridentificadas por medio de sus componentes conexas: Lospixeles que se mantienen juntos son tratados como una solaentidad y reciben el mismo valor en la capa de etiquetado, detal manera que todos los pixeles dentro de ese objeto tienenla misma etiqueta. [4]

El algoritmo que permite generar estas componentesconexas se muestra en el algoritmo III-F y debe ser aplicadoa cada uno de los elementos de la matriz de componentesconexos Mcc de los pixels en sus coordenadas (x, y).

Una vez obtenidas las componentes conexas, para eficien-tar el algoritmo llevamos a cabo una destruccion de lascomponentes que son muy pequenas (representan a menosde 30 pixeles) o se encuentran en el borde de la imagen.

G. Determinacion de la forma de la componente conexa

Una vez obtenidas las componentes conexas, se buscaaquella que posea una forma cuadrada. Sin embargo debe sercapaz de encontrar la forma a pesar de presentar cambios deescala (que el cuadrado se encuentre reducido o agrandado),traslacion (que el cuadrado se mueva por la imagen) rotacion(que el cuadrado este rotado) e inclusive inclinacion (que elcuadrado se encuentre ligeramente inclinado).

Dara lograr ello, se propone el siguiente procedimiento:Dada una matriz de componentes conexas Mcc y la compo-nente cc en Mcc por cada componente conexa cc, se obtienenlos siguientes parametros:

Page 3: Motor de Realidad Aumentada Basado en Algoritmos … · Computacional. Antonio Arista ... (HUD), y combinaba la posici´on de la cabeza y un sistema ... biente ruidoso, mismas que

Algorithm 1 Algoritmo de componentes conexas.1: if K(x, y) = 0 then2: Mcc(x, y)← 03: else4: if x− 1 < 0 then5: if y − 1 < 0 then6: Mcc(x, y)← a7: else8: if Mcc(x, y − 1) 6= 0 then9: Mcc(x, y)←Mcc(x, y − 1)

10: else11: a→ a + 112: Mcc(x, y)← a13: end if14: end if15: else16: if Mcc(x− 1, y) = 0 then17: if y − 1 < 0 then18: a← a + 119: Mcc(x, y)← a20: else21: if Mcc(x, y − 1) = 0 then22: a← a + 123: Mcc(x, y)← a24: else25: Mcc(x, y)←Mcc(x, y − 1)26: end if27: end if28: else29: Mcc(x, y)←Mcc(x− 1, y)30: end if31: end if32: end if

Scc(x) = Maxcc(x)−Mincc(x)Scc(y) = Maxcc(y)−Mincc(y) (6)

Donde Scc es el tamano de la componente conexa (elnumero de pixeles que ocupa en el eje x o y) y Maxcc

es el valor maximo de la coordenada x o y del componente.Si la siguiente condicion se cumple:

Scc(x) ≈ Scc(y) (7)

se puede afirmar que la figura es relativamente cuadrada,basandonos en que la longitud en X y en Y es proporcional.Finalmente, si la condicion se cumple, se puede extraer elcentro de la figura para ser utilizada como pixel de punto decontacto de la siguiente manera:

Cncc(x, y) =(Maxcc(x)+Mincc(x)

2 , Maxcc(y)+Mincc(y)2

) (8)

Con ese punto de contacto, es posible trazar cualquierfigura en la capa de dibujado o rendereo, utilizando lacoordenada Cncc como punto (0, 0).

Fig. 1. Experimento 1: Imagen original, Imagen en tonos de grises,binarizacion por umbralado, y negativo con erosion.

Fig. 2. Resultado exitoso del experimento 1.

IV. RESULTADOS OBTENIDOS

Con el proceso mencionado en la seccion anterior, serealizaron cuatro experimentos para corroborar la capacidaddel motor a resistir cambios de iluminacion, escala, rotacion,traslacion, e inclusive una imagen de entrada borrosa, enexperimentos llenos de ruido ambiental en la entrada (comoson texturas de diferentes tonalidades de fondo).

A. Primer experimento

El primer experimento fue el caso estandar: Una distanciaaceptable, muy poca rotacion, iluminacion considerable, ynula inclinacion. Como se puede observar en la figura 1,el proceso seguido fue el descrito en el artıculo: captura decamara, conversion a escala de grises, binarizado y dilatacioncon negativo. Una vez realizado ese proceso, se tomaron lascomponentes conexas y se obtuvo correctamente el puntode contacto, sobre el cual se dibujo el texto Universidad LaSalle - MCACt, como se aprecia en la figura 2.

Page 4: Motor de Realidad Aumentada Basado en Algoritmos … · Computacional. Antonio Arista ... (HUD), y combinaba la posici´on de la cabeza y un sistema ... biente ruidoso, mismas que

Fig. 3. Experimento 2: Imagen original, Imagen en tonos de grises,binarizacion por umbralado, y negativo con erosion.

Fig. 4. Resultado exitoso del experimento 2.

B. Segundo experimento

El segundo experimento se realizo con un cambio deiluminacion y una rotacion moderada, igualmente se hizoun cambio de escala agresivo y se anadieron elementos quepodıan provocar ruido en el patron del punto de contacto,que tenıan mucho mayor cantidad de texturas (el fondo). Elexperimento puede constatarse en la figura 3.

A pesar de las variaciones, el algoritmo logra encontrar elpunto de contacto y dibuja sobre el el texto Universidad LaSalle -MCACt, tal y como se muestra en la figura 4.

C. Tercer experimento

El tercer experimento se llevo a cabo en condiciones derotacion completa, se hizo otro cambio de escala (alejado)y se coloco el mismo fondo disruptivo del segundo experi-mento. Puede observarse el comportamiento en la figura 5.Sin embargo, el algoritmo es capaz de encontrar y localizarel punto de contacto para dibujar en la figura el letreromencionado anteriormente, como se puede ilustrar en lafigura 6.

Fig. 5. Experimento 3: Imagen original, Imagen en tonos de grises,binarizacion por umbralado, y negativo con erosion.

Fig. 6. Resultado exitoso del experimento 3.

D. Cuarto experimento

El cuarto experimento, el mas intenso, se llevo a cabo nosolamente con un cambio de escala, una rotacion y un fondoruidoso y disruptivo, la imagen fue sometida a ruido porparte de falta de enfoque por movimiento, como se puedeobservar en la figura 7. El algoritmo ha demostrado ser losuficientemente robusto como para responder a pesar de lafalta de enfoque, como se muestra en la figura 8.

V. CONCLUSIONES

Este trabajo ha demostrado la manera de crear un motorde realidad aumentada con procesos sencillos y transforma-ciones bien conocidas a las imagenes obtenidas desde unacamara web. El capturador de imagenes fue OpenCV, sinembargo otras plataformas (con el API adecuado) pueden im-plementar este algoritmo para la extraccion y reconocimientodel patron de punto de contacto. Esta caracterıstica abrenuevas posibilidades de implementacion como pueden sersu uso en plataformas moviles tales como Android e iOS.

El motor presentado ha sido resistente a cambios deiluminacion, traslacion, rotacion, movimiento y una ligerainclinacion. Se prevee que versiones futuras de este algoritmo

Page 5: Motor de Realidad Aumentada Basado en Algoritmos … · Computacional. Antonio Arista ... (HUD), y combinaba la posici´on de la cabeza y un sistema ... biente ruidoso, mismas que

Fig. 7. Experimento 4: Imagen original, Imagen en tonos de grises,binarizacion por umbralado, y negativo con erosion.

Fig. 8. Resultado exitoso del experimento 4.

mejoraran la respuesta del sistema y permitiran reconocerdiversos patrones, para poder responder diferentemente a dis-tintos puntos de contacto. Igualmente se espera su integracioncon tecnologıas de renderizado 3D como son OpenGL oDirectX.

REFERENCES

[1] Caudell, T.P., “Augmented reality: an application of heads-up displaytechnology to manual manufacturing processes,” Proceedings of theTwenty-Fifth Hawaii International Conference on System Sciences,vol. 2, pp. 659–669, 1992.

[2] Azuma, R., Baillot, Y., Behringer, R., and Feiner, S., “Recent advancesin augmented reality,” Computer Graphics and Applications, vol. 21,pp. 34–47, 2001.

[3] Gonzalo Pajares and Jesus M. de la Cruz, “Vision por computador:Imagenes digitales y aplicaciones.” Alfaomega RaMa, vol. 1, 2002.

[4] Lifeng Hea, Yuyan Chaob, Kenji Suzukic, and Kesheng Wud, “Fastconnected-component labeling,” Pattern Recognition, vol. 42, pp. 1977–1987, 2009.