Revistas en papel
 Pixel News Nº3
Anterior
Menú
Logotipo

A FONDO PiXeLNEWS

Este método puede alcanzar relaciones de 80 a 1 y más
JPEG: El reto de la compresión de imágenes

El refrán "una imagen vale más que mil palabras" debe referirse a imágenes en baja resolución, ya que las de alta resolución llegan a consumir millones de palabras (y bytes). La tecnología de compresión de imágenes JPEG se creó con el ánimo de reducir el tamaño de las imágenes. De todas formas con este tipo de compresión veremos que ahorraremos espacio pero será a costa de algo.

Toda imagen se puede descomponer en tres componentes fundamentales: Roja, Verde y Azul. Para representar una imagen con la máxima fidelidad posible, necesitaremos unos 256 niveles distintos de intensidad para cada color. Esto se consigue por medio de 8 bits (es decir un byte, en el que podemos almacenar un número de 0 al 255, o sea los 256 niveles). Como cada punto de color (pixel) posee tres componentes esto nos arroja finalmente un valor de 24 bits por pixel de pantalla (8 bits de Rojo + 8 bits de Verde + 8 bits de Azul = 24). Ahora bien, teniendo en cuenta que una imagen de vídeo posee una resolución de al menos 720 (pixels de ancho) x 576 (pixels de alto) quiere decir que para almacenar esa imagen necesitaremos 720 x 576 x 24 = 9.953.280 bits (es decir, /8=1.244.160 bytes). SIguiendo los mismos cálculos una imagen para emplear en autoedición (2000 x 1400, por ejemplo) ocupará 8.400.000 bytes (¡8MB!) y para almacenar un folio A4 escaneado a 300 DPI necesitaremos unos 26.071.038 bytes (¡26MB!).


COMPRESIÓN IFF


La compresión IFF
puede reducir un
fichero a una tercera
parte de su tamaño


TIFF y GIF consiguen
comprimir hasta seis
veces el original
 

Con el propósito de reducir espacio y crear un estándar; Commodore, cuando estaba diseñando el Amiga 1000, encargó a Electronic Arts la elaboración de un formato para almacenamiento de datos. De ahí surgiría el archivo IFF. El formato IFF utiliza una compresión del tipo RLE (Run Lenght Encoding o Codificación en función de la longitud). Este tipo de compresión se basa en almacenar el número de veces que se repite una misma secuencia (en este caso un pixel). Suponiendo que tengamos una imagen completamente negra la rutina IFF almacenaría el número de pixeles negros que contiene la imagen en lugar de almacenar la información de negro para cada uno de los pixeles. Con este procedimiento se puede llegar a conseguir una relación de compresión de 2 a 1 (es decir, su tamaño se reduce a la mitad) e incluso de 3 a 1 (a la tercera parte). El gran inconveniente se presenta cuando trabajamos con imágenes en las que hay mucho detalle, es decir, muchos pixeles de distintos colores —por ejemplo imágenes digitalizadas—, la compresión IFF no servirá de mucho. De todas formas, y dentro de las ventajas, las compresiones del tipo RLE (como IFF) son muy rápidas y la imagen no sufre ninguna alteración permaneciendo intacta aún comprimiéndola y descomprimiendola sucesivas veces.


OTROS FORMATOS

Los formatos TIFF y GIF utilizan la técnica de compresión LZW que consigue relación de compresión media de 6 a 1. Esto quiere decir que nuestra imagen de 2048x1356 pixels se quedaría en unos 1.388.544 bytes. Piensa que si posees un disco duro de 80MB podrías almacenar unas 10 fotografías en formato no comprimido (también llamado RAW o CRUDO). Una compresión del tipo GIF te permitiría almacenar unas 60 imágenes. Pero ¿Qué ocurriría si consiguiesemos una compresion de 80 a 1? ¡Entonces podrías almacenar hasta 800 imágenes fotográficas en tu disco duro!


LA COMPRESIÓN JPEG

El método de compresión de imágenes JPEG puede alcanzar relaciones de compresión de 80 a 1 e incluso mayores. El nombre JPEG proviene de las siglas de Joint Photographic Experts Group, el comité de investigación que lo creó. De todas formas hay que tener en cuenta que tal relación de compresión sólo es posible mediante una pérdida de calidad. Esto quiere decir que si comprimimos una imagen, cuando la descomprimamos no será exacta a la original.

Pero que no se alarme nadie. Esa pérdida de información está perfectamente controlada. El algoritmo (fórmula) de compresión está basado en cómo percibimos los humanos los estímulos visuales. JPEG "sabe" cuáles son los detalles que el ojo humano no es capaz de distinguir, eliminándolos y reduciendo así su tamaño. Por otro lado, tú le puedes decir a la rutina de compresión JPEG cuánta calidad deseas. Si deseas mucha calidad habrá menos compresión con lo que el fichero ocupará más y viceversa.


PRIMEROS PASOS

La rutina JPEG comienza convirtiendo una imagen RGB al formato YUV (también conocido como YCbCr). Este sistema de representación de imágenes también se emplea en vídeo. Los diseñadores de los diferentes sistemas de vídeo descubrieron que una imagen se puede descomponer en otro tipo de señales más manejables que las típicas de RGB (Rojo, Verde y Azul). Estas señales son Y (luminancia o luz, brillo, de la imagen) y otras dos más U y V.

La componente Y vendría a ser la imagen en blanco y negro de la original. La componente U también recibe el nombre de Cb que significa Crominancia Azul. Esto quiere decir que sólo contiene los azules de la imagen original. La componente V es conocida también como Cr y contiene los detalles de rojo.

Has de saber que el ojo humano es mucho más sensible a los cambios de brillo (Y) que a los de color. Esto quiere decir que el ojo percibiría más palpablemente una pérdida de información de la componente Y que de las otras dos (u y V).


COEFICIENTES

El siguiente paso realizado por la compresión JPEG es transformar pequeñas porciones de las partes Y, U y V de la imagen utilizando una técnica llamada DCT (Discrete Cosine Transform, o sea Transformada Coseno Discontinua). Para ser más exactos diremos que la imagen se transforma en bloques de 8x8 pixels (64 pixels por bloque). El hecho de escoger este tamaño se debe a diversas razones. La principal es que en cada área de 8x8 pixels podremos encontrar bastantes pixels de colores muy parecidos. La DCT es prima hermana de la transformada de Fourier. Toda la información de los 64 pixels es convertida en una matriz de 64 coeficientes que representan la "energía" contenida en ellos. Una característica crítica de los coeficientes de esa matriz (y que hace que el DCT sea tan útil) es que el primer coeficiente representa el valor más alto de energía y la cantidad de energía representada en los coeficientes restantes disminuye rápidamente. Dicho con otras palabras, la mayor parte de la información contenida en la matriz de 8x8 queda representada por el primer elemento de la matriz creada por el DCT. Es en este paso en el que se pierde un poco de calidad, ya que la compresión creada por el DCT no es perfectamente reversible: a la hora de la descompresión no obtendremos los valores exactos que había al inicio. De todas formas la pérdida ocasionada en este paso es ínfima y más si la comparamos con la producida en el siguiente paso.


JPEG trata
la imagen
en zonas de
8x8 pixels.


Para evitar
rejillas se emplean
técnicas de
suavizamiento
 

La matriz de 64 elementos es analizada para reducir la cantidad de información que contiene. Es aquí donde realmente entra a tomar parte la posible pérdida que pueda tener JPEG. Cuando se comprime una imagen con un factor de compresión grande, muchas de las variaciones de la matriz de coeficientes son eliminadas. De todas formas durante la descompresión se emplearán una serie de coeficientes para crear la información de la imagen. el proceso de análisis asegura que los datos resultantes serán bien comprimidos empleando una técnica de compresión que pierda muy poca información. Ya que las componentes U y V contienen menos variaciones de datos que la componente Y. serán de más fácil compresión. El siguiente paso es aplicar una técnica de compresión sin pérdidas para reducir el tamaño final del fichero. Esta técnica. llamada de codificación Huffman, servirá para reducir el tamaño de las matrices antes halladas.


DESCOMPRIMIR

La descompresión tiene lugar en orden inverso. En primer lugar se descomprime el fichero para generar las matrices de coeficientes DCT y de ahí generar de nuevo la imagen total. De todas formas hay que recordar que JPEG procesa la imagen en porciones de 8x8 pixels, por lo que, una vez descomprimida la imagen, podrían detectarse los bordes de esas áreas. Para ocultar este efecto se emplea una técnica de suavizamiento (smoothing) durante la descompresión. La operación de suavizamiento se realiza directamente sobre los pixels delimitadores de las áreas de las porciones de 8x8. Esta técnica sólo se aplica a esas zonas evitando así el deterioro de la imagen.

JPEG constituye un gran avance dentro del mundo de la imagen digital. Imágenes que ocupaban gran espacio de almacenamiento ahora ocupan hasta 80 veces menos y casi sin pérdida de calidad. El único inconveniente que presenta es que la compresión y descompresión sucesiva de una imagen termina deteriorándola. Una imagen que salves y cargues con JPEG no será exacta al original diferencia que irá incrementando a medida que repitas el proceso.

Por último decir que JPEG es una 'fórmula' de compresión, no un formato de ficheros. Para poder intercambiar ficheros JPEG entre diferentes tipos de ordenadores se ha creado JFIF (JPEG File Interchange Format) que describe la estructura interna de los datos para que una imagen JPEG pueda ser interpretada por cualquier programa de cualquier ordenador. MPEG es una variante de JPEG, aplicable a imágenes en movimiento y es la técnica utilizada, por ejemplo, por el módulo FMV del CDI de Philips o la CD32.

Basado en un original de Perry Kivolowitz de ASDG Inc.


Envía esta página web a un amigo:
Esta opción está desactivada temporalmente, rogamos disculpen las molestias

Volver a la página anterior

Al menú principal