Universitat Oberta de Catalunya

La imagen gigapixel

Una gigapixel image es una imagen digital de mapa de bits que se compone de más de un gigapixel. Un gigapixel equivale a 1000 megapixels (10e9 pixeles), por lo tanto hablamos, por ejemplo, de una foto de tamaño superior a mil veces una imagen de 1000×1000 píxeles.  La creación de estas imágenes tan grandes implica la unión a modo de mosaico de un gran número de capturas fotográficas de alta resolución en una sola que las combina todas.

Actualmente tienen especial interés en campos como el arte, la astronomía, la industria de los efectos visuales, la geología, paleontología o entomología entre muchos otros. Uno de sus mayores usos es en la captura de macro panoramas de paisajes o entornos urbanos.

Sección de un panorama de Barcelona tomado desde el parc Güell. Photo by DAVID ILIFF. License: CC-BY-SA 3.0
Sección de un panorama de Barcelona tomado desde el parc Güell. Photo by DAVID ILIFF. License: CC-BY-SA 3.0

El proceso de captura de la imágen

El proceso del disparo de las imágenes puede ser un tanto complejo ya que hay una serie de parámetros que  se deben calcular previamente al disparo.  Para realizar esta captura se recomienda emplear un trípode con una cabeza robótica que sea capaz de hacer movimientos rotatorios de tipo Pan y Tilt (Movimiento panorámico o de barrido y movimiento de inclinación). De este modo el software controlador del disparo hace el barrido de la cámara por la escena configurada deteniéndose para fotografiar. La cantidad de variación de estos dos parámetros y el numero de de disparos depende pues de la distancia a la escena fotografiada, la distancia focal de objetivo empleado en la cámara, el valor de la superposición entre imágenes (necesaria para hacer el fusionado)  y por supuesto las dimensiones físicas de la escena que se desea retratar. El proceso de toma de fotografías suele extenderse a lo largo de varias horas por lo que hay que tener también especial atención a otras condiciones tales como la posibilidad de movimiento de objetos en la trayectoria del disparo o las condiciones climáticas y de iluminación que deben ser lo más estables posibles en orden de que el aspecto de la imagen sea el del mismo instante temporal. Amén de los problemas técnicos en el fusionado de la imagen que se pueden crear en su procesado posterior por esta variabilidad.

Si bien existe la solución comercial de adquirir estos dispositivos de soporte a la captura, también se puede optar por desarrollar soluciones propias gracias a plataformas de hardware/software libre como por ejemplo la placa Arduino. En esencia la cabeza robótica consta de dos servomotores que pueden realizar movimientos de precisión y que se acoplan entre sí para generar este movimiento tipo Pan y Tilt. Por otra parte el software de la placa debe recoger de algún modo los parámetros que van a regir el movimiento de estos dos servos por una parte y la acción de disparo por la otra.

Procesado de la imagen.

Una vez termina el proceso de la captura, y en el supuesto de que las imágenes se han obtenido de la manera apropiada, se debe hacer un trabajo de procesado de las imágenes individuales que la fusionen en una sola fotografía. El proceso básico de la fusión de imágenes o stiching consiste en la unión de dos o más imágenes cuyos bordes se solapan, es decir que tienen elementos gráficos coincidentes. Este proceso está compuesto por tres fases:

  • Fase de registro. Se buscan las características coincidentes entre el conjunto de imágenes en base a diferentes métodos de alineación.
  • Fase de calibración. Se intenta minimizar las diferencias propias de los factores de la toma de imágenes como la distorsión de la lente, el valor de exposición de la imagen, aberraciones cromáticas, viñeteado, etc.
  • Fase de fusionado. Se ejecutan los ajustes descubiertos en la fase de calibración y se procede al fusionado de la imagen final.
Ejemplo de registrado geométrico y linea de pegado en la creación de un panorama.
Ejemplo de registrado geométrico y linea de pegado en la creación de un panorama.

Cuando estas imágenes las tomamos desde el mismo punto, por ejemplo mediante un trípode, estas se pueden organizar en torno a diferentes proyecciones que ofrecen cualidades distintas en su posterior visionado. Algunas de las más comunes son:

  • Proyección rectilínea: En la que las imágenes fusionadas se mapean en un plano bidimensional. En el proceso de adaptación de esta proyección se produce una distorsión que se acentúa conforme nos aproximamos a los bordes de la imagen.
  • Proyección cilíndrica: La adaptación se realiza sobre la cara interior de un cilindro lo cual hace que se provoque distorsión de la imagen en los extremos superior en inferior.
  • Proyección esférica: Con un mapeo de las imágenes en el en la capa interna de una esfera, que al ser visualizada en un entorno 3D nos ofrece la solución con menor distorsión en comparación.

Será necesario utilizar un software de post-procesado encargado de realizar este fusionado. Existe una serie de numerosas soluciones con licencia de propietario mayoritariamente en sistemas Windows y Mac OS. No obstante también está la posibilidad de usar la aplicación de software libre Hugin desarrollada por  Pablo d’Angelo con licencia se software libre GNU GPLv2 de coste gratuito.

El proyecto Hugin, en continuo desarrollo bajo lenguaje de programación C++, está a la libre disposición del usuario que lo puede descargar del repositorio y construirlo para poder ejecutarlo. El programa dispone de un front-end  a modo de interfaz visual que permite hacer las tareas propias del stiching. El software es capaz de combinar imágenes que se superponen para fotografía panorámica, corregir panoramas ya completados, componer grandes mosaicos de imágenes para murales por ejemplo, encontrar puntos de control y optimizar parámetros de forma asistida, emplear de diferentes proyecciones, y realizar correcciones fotométricas  avanzadas y fusionado de imagen HDR (High Dynamic Range).

Captura de imagen de la interfaz gráfica del programa Hugin.
Captura de imagen de la interfaz gráfica del programa Hugin.

Visualizado de las imágenes

El visualizado de las tales imágenes supone un problema en cuanto al uso de los recursos del sistema por una parte o el coste de transmisión vía red por ejemplo en el caso de que hablemos de una imagen gigapixel online. Debido a  esto se hace necesario soluciones de eficiencia computacional. El concepto básico consiste en no cargar en memoria mucha más resolución de imagen de la asignada al viewport dedicado a la visualización de la imagen. Para esto se divide la imagen en celdas tantas veces como niveles de profundidad precise la imagen. De este modo la aplicación visualización solo hace peticiones de celdas de la parte de la imagen que necesita en función de su posición con respecto a la imagen global y al zoom que esta visualizando. Para este visualizado online se utilizan visores hechos con flash/Actionscript y ahora cada vez más visores basados en CSS3, HTML5 y Javascript con renderizado WebGL. Si bien de nuevo existen diversas soluciones comerciales muy potentes para este cometido, también es interesante el proyecto de software libre realizado en la materia por Mathew Petroff llamado Pannellum del cual ha lanzado una segunda versión y disponible en GitHub para su uso por desarrolladores el cual incluye lo necesario para generar la imagen en multi-resolución y su visualización en un sitio web.

Conclusiónes

La creación de imágenes gigapixel es un proceso largo y complejo que requiere numerosos esfuerzos en los diversos niveles de la producción. Si bien a priori podría presumirse como un proceso costoso e inabarcable la realidad es que, con un estudio previo, es posible ejecutar las diferentes tareas de la adquisición, procesado y difusión de la imagen en su totalidad. Por otra parte, se cuenta además con soluciones de software basado en licencias no privativas GNU GPL los cuales ponen al acceso de todo el mundo medios que posibilitan realizar este tipo de trabajos con muy buenos resultados visuales.

Deja un comentario