Introducción

Introducción

Como ya se ha comentado, la realidad aumentada (RA) consiste en añadir a una imagen real contenido o elementos virtuales que aumentan la información de la imagen original generando una nueva realidad, que sería esta realidad aumentada. En realidad aumentada lo más normal es que la inserción de dichos elementos virtuales en la escena real se haga de la forma más realista posible para que éstos no parezcan demasiado irreales, o bien para que la información añadida esté en la zona correspondiente de la imagen. Para poder esto generalmente es necesario realizar un cierto procesado de la imagen real capturada, si bien es cierto que para ciertas aplicaciones se pueden utilizar tambien sensores externos (como GPS, brújula, etc.) que no requieren el procesado de la imagen.

Imagen extraida de: http://commons.wikimedia.org/wiki/File:MediatedReality_on_iPhone2009_07_13_21_33_39.jpg?uselang=es subida por: Glogger


El procesamiento de imágenes es un conjunto de técnicas que se aplican a las imágenes digitales con el objetivo de mejorar la calidad o facilitar la búsqueda de alguna información en concreto, es decir, consiste en modificar una imagen de entrada de forma que se pueda obtener una imagen de salida en la que sea fácil identificar una determinada característica. Así por ejemplo en la siguiente imagen, se muestra como se ha procesado la imagen original para obtener los bordes de la imagen.

La realización de este tipo de procesado es bastante compleja y no es viable que cuando una persona se ponga a desarrollar una aplicación de realidad aumentada tenga que partir de cero y realizar todos los algoritmos de procesamiento de imágenes necesarios para la aplicación que tenga en mente. Para facilitar esta tarea, han surgido desde hace años distintas librerías de procesamiento de imágenes que permiten su uso a nivel educacional y/o comercial (dependiendo de la librería), como pueden ser:

Estos son algunos ejemplos de librerías que permiten la realización de aplicaciones de realidad aumentada mediante procesamiento de imágenes de una forma "fácil y sencilla". La mayoría de estas librerías suelen implementar los algoritmos más generales de procesamiento de imágenes, como pueden ser la conversión entre distintos espacios de colores, detección de bordes, detección de líneas, etc. Sin embargo, a pesar de que implementen más o menos los mismos algoritmos, a la hora de decidir que librería utilizar para realizar una aplicación de realidad aumentada hay que tener en cuenta otros factores relevantes, como:

  • La madurez: la madurez de la librería (si está en versión experimental o es ya una versión estable) será crucial para su elección porque no se puede desarrollar una aplicación que sea estable basándose en una librería que puede tener fallos y errores por estar en fase de experimentación. Así pues, la librería a seleccionar debería ser suficientemente estable.
  • El soporte: el soporte que ofrezcan los desarrolladores de la librería será tambien importante en el caso de encontrar fallos, buscar códigos de ejemplos, buscar soluciones para hacer alguna tarea especialmente compleja, etc. Así pues, y como es lógico, se intentará que la librería usada tenga el mayor soporte posible, para solucionar los problemas que puedan surgir rápida y fácimente.
  • La continuidad: la continuidad que pueda tener la librería es importante, pues no es la primera vez que se realiza un proyecto basándose en una librería o programa, y cuando el proyecto está maduro, de repente la librería o el programa dejan de desarrollarse, y entonces hay que migrar todo el proyecto hacia una nueva librería o programa, o bien empezar de cero.
  • Lenguaje soportado: el lenguaje para el cual se desarrolla la librería tambien es importante, pues si se hace para un lenguaje que desconocemos, o bien no es especialmente potente (por ejemplo java o python) puede no ser la mejor solución si precisamente se trata de algoritmos y librerías de gran coste computacional y que deberían usar lenguajes ligeros y potentes.
  • Plataformas soportadas: es importante que una librería sea multiplataforma. Hace tiempo, era importante que soportase al menos las dos principales plataformas, Linux y Windows. Hoy en día, con el gran auge de los teléfonos inteligentes, hay que tener en cuenta tambien que tenga soporte para Android e iOS.

Teniendo en cuenta todos estos factores, las librerías más maduras, con mayor soporte multiplataforma y con mayor continuidad serían Cimg, GIL y OpenCV. Sin embargo, por el gran soporte de la comunidad y la gran variedad de algoritmos que implemente, OpenCV es, por la gran mayoría de programadores, la librería más usada para procesamiento de imágenes.

 

 

Reflexión

¿Has pensado alguna vez en la complejidad de las operaciones que realizas cada vez que usas un programa de retoque de imágenes?

Obra publicada con Licencia Creative Commons Reconocimiento 2.5