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

Post on 20-Sep-2018

238 views 0 download

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

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: arista.antonio@gmail.com).

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

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:

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.

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

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.