| Artículos | 01 NOV 2007

HD Photo: nuevo codec y formato de archivo gráfico

Tags: Histórico
Eugenio Barahona.

Uno de los campos de la informática en los que menos novedades se producen es, casi sin duda alguna, el de los formatos de archivo para contener gráficos. Se trata de un terreno en el que, al menos hasta ahora, se han ido sucediendo diversos tipos de formatos que durante una serie de años se convierten en el estándar de hecho para el intercambio entre los usuarios de fotografías.
En los años ochenta y principios de los noventa, el liderazgo gráfico lo tuvo el formato TIFF, el cual fue sustituido en dicha posición por el actualmente omnipresente JPEG. En ambas modalidades, al formato de archivo ha ido añadida una tecnología de compresión concreta, tratándose de LZW en el caso de los archivos TIFF y de un codec del mismo nombre que el formato de archivo en el caso de JPEG.
Hace unos meses, Microsoft ha hecho pública la especificación correspondiente a HD Photo, un nuevo codec y formato de archivo que está soportado de manera nativa en el sistema operativo Windows Vista.
Objetivos del nuevo codec
Una de las metas que se planteó Microsoft al iniciar el desarrollo de HD Photo fue crear una tecnología cuya implementación en entornos embebidos resultase sencilla y de alto rendimiento. Hay que tener en cuenta que en dicho tipo de entornos se cuenta con serias limitaciones en cuanto a la cantidad de recursos de que dispone el hardware, siendo de los más escasos la cantidad de memoria disponible y la velocidad del procesador que va a encargarse de ejecutar las tareas de descompresión y compresión de imágenes. En los entornos embebidos también suele ser común el uso de arquitecturas de procesador de no muy elevado rendimiento, por lo que el nuevo codec se ha diseñado de manera que puede implementarse usando instrucciones que sólo manejen enteros, es decir, sin necesidad de ejecutar operaciones de coma flotante.
Al tratarse de un algoritmo diseñado para almacenar imágenes estáticas, es capaz de obtener unos elevados ratios de compresión manteniendo la calidad de la imagen, ya que, usando la misma técnica de compresión, es posible almacenar la imagen con pérdida de calidad o sin dicha merma. Otra de las mejoras que se ha introducido es el soporte de distintos tipos de formato de pixel, de forma que se pueda almacenar información en formato monocromo, RGB, CMYK o mediante una combinación de un número variable de planos de color. Por otro lado, los píxeles pueden representarse mediante enteros sin signo de 8 ó 16 bits, mediante enteros con signo de 16 ó 32 bits y mediante coma flotante de 16 ó 32 bits. También se soportan formatos de píxeles empaquetados, como por ejemplo de 1 bit por cada componente y 5 ó 10 bits por cada componente en formato RGB. Igualmente se puede intercalar un canal con información de transparencia e incluir información sobre la imagen en forma de metadatos y ampliar la estructura del formato de archivo mediante el uso de contenedores, de forma parecida a como se hacía en el caso de los archivos en formato TIFF.
Compresión
El codec que se ha desarrollado para HD Photo es capaz de producir imágenes, almacenadas de forma comprimida con pérdida, que perceptualmente ofrece mejor calidad que JPEG, pero consumiendo la mitad de espacio de almacenamiento del que sería necesario usando dicho codec. Si no se desea usar compresión con pérdida, es posible obtener ratios de compresión de 2,5 veces menos del tamaño original de la imagen sin comprimir.
HD Photo se basa en una conversión reversible del espacio de color, una transformación bi-ortogonal reversible y en un avanzado esquema de codificación no aritmética de entropía. El núcleo de la transformación de compresión requiere la ejecución por cada pixel, en el modo de máxima calidad, como mucho, tres instrucciones de multiplicación y suma, junto con otras siete instrucciones de suma o desplazamiento. Si se selecciona el modo de máximo rendimiento, sólo es necesaria una instrucción de multiplicación y suma junto con cuatro instrucciones de suma o desplazamiento. Por otro lado, la información se procesa en bloques con un tamaño de 16 por 16 píxeles, por lo que sus requerimiento de memoria son realmente mínimos.
La compresión puede realizarse con o sin pérdida para imágenes almacenadas en datos de 8 ó 16 bits, así como las contenidas en formatos de píxeles empaquetados. Si, por el contrario, el formato de la imagen es de 32 bits, se utilizará necesariamente la variante con pérdida del algoritmo de compresión, ya que durante las diversas transformaciones que se efectúan durante dicho proceso sólo se suelen conservar 24 bits de cada pixel de la imagen original.
Ya que uno de los objetivos de HD Photo es soportar el mayor nivel posible de rango dinámico y precisión del color, los formatos soportados se han dividido en dos grupos, denominados Basic y Advanced. Los requisitos mínimos para un decodificador de fotografía digital son los contenidos en el grupo de formatos Basic, mientras que los incluidos dentro del grupo Advanced pueden soportarse opcionalmente en productos destinados a mercados concretos, como por ejemplo la impresión digital o en aplicaciones avanzadas de retoque fotográfico.
Organización de la información
Los datos de las imágenes se almacenan en un contenedor que se organiza como un directorio de archivos de imagen, de forma parecida a como se hace en la versión 6 de los archivos TIFF. Un archivo en formato HD Photo contiene una o más imágenes que hacen uso de directorios de archivos de imagen individuales que se encuentran enlazados entre sí. Cada imagen está formada por los siguientes elementos: los datos de la imagen, un canal de transparencia opcional, metadatos básicos de HD Photo, metadatos opcionales descriptivos de la imagen, metadatos opcionales de tipo XMP, metadatos opcionales de tipo EXIF y, por último y opcionalmente, un perfil de color de tipo ICC.
Los datos de la imagen están contenidos en un único bloque de información, describiendo completamente la estructura de datos comprimidos de HD Photo. El canal de transparencia opcional también se almacena de forma comprimida como datos de imagen representados mediante un solo canal de información. Comentar que los tipos de datos que requieren más de un byte para su almacenamiento, se guardan en lo que se conoce como formato Intel, en el que el byte menos significativo se guarda en la dirección de memoria más baja.
Un archivo en formato HD Photo se inicia con una cabecera de ocho bytes que apunta al directorio de archivos de imagen. Un directorio de archivo de imagen a su vez contiene información sobre la imagen, así como un puntero a los datos que dan forma a dicha imagen. Los dos primeros bytes de la cabecera contienen el valor fijo 0x4949, valor tomado de la especificación de los archivos TIFF para indicar que los datos se almacenan en formato Intel. El siguiente byte tiene un valor fijo de 0xBC, lo que sirve para diferenciar entre un archivo en formato HD Photo y otros tipos de archivo. A continuación se encuentra un cuarto byte, cuyo contenido indica el número de versión de la estructura del arch

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información