Está en la página 1de 110

COMPRESIN DE DATOS

Por qu comprimir? Conceptos bsicos de la Teora de la Informacin. Modelado y codificacin. Cdigos de longitud variable.

Codificacin Shannon-Fano y Codificacin Huffman.


Compresin Lempel-Ziv. Wavelets y fractales.

Por qu Comprimir?
Problema: El volumen de informacin que se almacena en medios tales como cintas magnticas, diskettes, discos duros, CD-ROM, etc. aumenta cada vez ms con el tiempo, causando agotamiento de la capacidad de esos recursos.

Posibles soluciones: a) Aumentar la capacidad de los medios de almacenamiento y su velocidad de acceso. Ejemplos: Disco duro de 80 MB, DVD (digital video disc) de 9,3 GB. b) Reducir el tamao de los archivos a almacenar mediante compresin de datos, voz, imagen y video (codificacin de fuente). Ejemplos: ZIP, GIF, JPEG, G.723, G.729, MP3, MPEG, QuickTime, ASF.

Problema:

El volumen de informacin que se enva a travs de las redes aumenta cada vez ms con el tiempo, causando saturacin de los recursos de transmisin y conmutacin, con la consiguiente congestin, que se manifiesta con retardos intolerables.

Posibles soluciones:

a) Aumentar la capacidad de los recursos mediante redes de alta velocidad.


Ejemplos:

Usar medios de transmisin con mayor ancho banda. (Ej. fibra ptica en vez de par trenzado).
Usar ATM y Gigabit Ethernet.

b) Aprovechar los medios de transmisin existente para transmitir a mayor velocidad. Ejemplos: Usar codificacin de lnea para aumentar la capacidad de transmisin de los pares telefnicos existentes con codificacin 2B1Q, 16QAM, DMT, etc.). Usar WDM sobre la fibra ptica existente.

c) Reducir el tamao de los archivos a transmitir mediante compresin de datos (codificacin de fuente). Ejemplos: ZIP, JPEG, MP3, MPEG, AVI, ASF.

d) Reducir la tasa de trasmisin de la voz y el video en tiempo real mediante codificacin de fuente (low bit rate coding).
Ejemplos: H.261, H.263, Indeo, Real Audio, AVI, ASF.

La compresin de datos
Las tcnicas de compresin de datos tienen su origen en la necesidad de reducir el espacio en los medios de almacenamiento (cinta, disco, CD-ROM). La razn o factor de compresin (FC) se define como:

FC = (tamao no comprimido/tamao comprimido)


As, FC = 5 (o tambin 5:1) significa que el tamao o volumen de los datos comprimidos se reduce a la quinta parte con respecto al tamao original.

En el mundo moderno la informacin se procesa, almacena y transmite cada vez ms en forma digital por medios electrnicos. La informacin digitalizada es bsicamente una secuencia de dgitos, es decir nmeros que representan datos, por lo que se habla comnmente de compactacin o compresin de datos para referirse en general a la compresin de la informacin.

Pero cuando se trata de compresin de seales iscronas, donde la temporizacin es importante (tal como audio y vdeo), en vez de compresin de datos se prefiere hablar ms bien de codificacin para menor velocidad (low bit-rate coding), ya que la informacin se codifica para poder as transmitirla a una tasa (o velocidad) ms baja. La palabra iscrono significa literalmente en tiempos iguales, y no es lo mismo que en tiempo real.

Como ejemplo, la reproduccin de la msica y el video debe hacerse en forma iscrona (ej. video streaming), mientras que una conversacin telefnica o una videoconferencia debe ser iscrona y adems en tiempo real.

La compresin de datos es quizs una de las aplicaciones donde mejor se pueden apreciar los conceptos desarrollados por la Teora de la Informacin, en especial el concepto de redundancia. La informacin redundante presente en un mensaje o en un archivo, significa que hay un nmero de smbolos o caracteres mayor del mnimo necesario y si se logra eliminar la redundancia, entonces se habr reducido el tamao del archivo.

Mensajes de la misma longitud no llevan necesariamente la misma cantidad de informacin, ya que sta depende de la probabilidad de que un determinado smbolo ocurra en el mensaje.
Supongamos una fuente de informacin discreta que emite una secuencia de smbolos pertenecientes a un alfabeto de N posibles smbolos s1, s2,......sN. La probabilidad pi que se emita el smbolo si permite cuantificar la informacin I que lleva ese smbolo (tambin llamada autoinformacin): I = - log2 pi

La entropa H de una fuente es la informacin promedio que lleva cada smbolo emitido por esa fuente, y no cada smbolo individual. Esta palabra fue introducida en 1948 por Claude Shannon en analoga a la entropa de la termodinmica, en el sentido de que mayor es la entropa, mayor es la informacin.

Mathematician Claude Shannon dies

Yahoo News, 27 February 2001.


Claude Shannon, a mathematician and computer scientist whose theories became the basis for modern mass communications networks, died Saturday after battling Alzheimer's disease. He was 84. In 1948 he outlined a series of mathematical formulas to reduce communication processes to binary code - known as bits - and calculated ways to send the maximum number of bits through phone lines, or other modes of communication. It wasn't until the invention of integrated circuits years later that his formulas could be put to use. Now, they're at the core of the commonplace technology that delivers the Internet and its various trappings, from music, to video, to e-mail, via a phone line. The theories are also the basis of the field of information theory.

Claude E. Shannon as a young man and in a recent photo

Si la probabilidad de ocurrencia de un smbolo particular no depende de que otro haya ocurrido antes (es decir que la secuencia es estadsticamente independiente), la informacin promedio que lleva cada smbolo, es decir la entropa, viene dada por:

Ntese que la informacin log2 pi de cada smbolo es ponderada por la probabilidad pi de ocurrencia de dicho smbolo.

Expresado en palabras, esto quiere decir que:


En promedio, podemos esperar de obtener H bits de informacin por smbolo. Pero no podemos saber por anticipado cul ser el prximo smbolo y en consecuencia su informacin.

El valor mximo de H se alcanza cuando todos los smbolos tienen la misma probabilidad de ocurrencia y viene dado por: Hmax = log2N

Cuando la entropa es mxima cada smbolo lleva la mxima cantidad de informacin posible.

Esto significa un smbolo binario (0,1) puede llevar al mximo log22 = 1 bit de informacin.
Un smbolo ternario (0,1,2) puede llevar al mximo log23 = 1.6 bits de informacin Un smbolo cuaternario (0,1,2,3) puede llevar al mximo log24 = 2 bits de informacin.

Por ejemplo, si en un mensaje todos los 256 caracteres ASCII fuesen igualmente probables de aparecer (p = 1/256) la entropa H de ese mensaje sera: H = -log2 1/256 = 8 bits/caracter.

Pero usualmente eso no ocurre, por lo que la entropa de ese mensaje podra ser, por ejemplo, de 6 bits/carcter.

Modelado y Codificacin
La compresin de datos bsicamente consiste en procesar un conjunto de smbolos de entrada y transformarlos en un conjunto de cdigos. Si la compresin es efectiva, el conjunto de salida tendr un tamao menor que el de entrada. La transformacin de un smbolo en cdigo se hace mediante una regla o algoritmo basado en un modelo de los datos de entrada.

El modelado permite caracterizar apropiadamente los datos a comprimir, definir con precisin las probabilidades para los smbolos y generar los cdigos apropiados basado en esas probabilidades. En la figura se representa el esquemticamente el proceso de modelado y codificacin.
Smbolos
Modelo

Flujo de entrada

Probabilidades
Codificador

Cdigos

Flujo de salida

A fin de comprimir los datos eficientemente, se necesita disponer de un modelo que pueda predecir bien las probabilidades de ocurrencia de los smbolos. Segn la clase de datos, existe un modelo que se adapta mejor.

As, existe un modelo distinto para los datos de una pgina de fax, los caracteres de un archivo de texto, un grfico, o de la voz y el vdeo.

La compresin depende mucho de una correcta estimacin de las probabilidades de los eventos a codificar y si estos no se predicen correctamente, en vez de compresin se puede producir expansin!

Clasificacin
Los modelos estadsticos pueden ser divididos en 3 categora principales, dependiendo de la forma en que se vayan a determinar las probabilidades relativas: (1) fijos (2) adaptables (2 pasadas) (3) adaptables dinmicamente (1 sola pasada)

El modelo fijo usa la misma estadstica en cada caso.

Esta estadstica representa un promedio obtenido a travs del anlisis de un gran nmero de fuentes "tpicas.

Por ejemplo, en un texto tpico en espaol, la frecuencia relativa de las letras puede ser la siguiente:
E T A O I Q Z

Letra

0.1031 0.0796 0.0642 0.0632 0.0575 0.0008 0.0005

Frecuencia relativa

Cada valor en la tabla representa con buena aproximacin la probabilidad de que aparezca la letra correspondiente cuando se est leyendo un texto en espaol tpico.

Los modelos fijos no comprimen los datos tan bien como los otros, sin embargo permiten algoritmos de compresin ms simples y rpidos.

Los modelos adaptables de 2 pasadas efectan una primera pasada sobre los datos para acumular estadstica. La segunda pasada comprime los datos usando cdigos basado en esa estadstica. Estos modelos de 2 pasadas comprimen muy bien, pero tienen ciertas desventajas, ya que requieren mayor tiempo de codificacin.

Los modelos adaptables dinmicamente de 1 pasada, en cambio, ajustan la estadstica a medida que la compresin avanza. Tanto el codificador que el decodificador comienzan con la misma estadstica inicial usada para codificar (y descodificar) los primeros smbolos. Luego la estadstica se actualiza a medida que los datos van siendo procesados.

Los modelos adaptables son particularmente indicados para las comunicaciones va modem, ya que no requieren el bloque inicial y generalmente son ms rpidos que los modelos de 2 pasadas.

Cdigos de longitud variable


Muchas tcnicas de compresin utilizan cdigos de longitud variable, donde se asignan cdigos cortos a eventos que ocurren a frecuentemente y cdigos largos a eventos menos frecuentes.

Los sistemas que usan este principio son conocidos tambin como codificadores de entropa.

Un ejemplo de posibles cdigos de longitud variable para las letras del alfabeto se muestra en la tabla (donde se indican slo algunos elementos). Ntese que en este ejemplo los smbolos de entrada pertenecen a un alfabeto de 28 smbolos y que los cdigos de salida pertenecen a un alfabeto de 2 smbolos (dgitos binarios).
Letra E T A O I Q Z Frecuencia relativa Cdigo 0.1031 10 0.0796 001 0.0642 010 0.0632 0110 0.0575 11001 0.0008 11110110 0.0005 1111111111

Propiedad
Con los cdigos de longitud variable, el teorema de codificacin de fuente establece que en promedio, los smbolos de entrada no pueden ser representados con menos dgitos binarios que la entropa:

donde L es la longitud promedio de los cdigos, pi es la probabilidad de ocurrencia del smbolo i-simo y li es la longitud de cdigo i-simo (es decir, el nmero de dgitos binarios).

Por ejemplo, si en un mensaje todos los 256 caracteres ASCII fuesen igualmente probables de aparecer (p = 1/256) la entropa de ese mensaje sera -log2 1/256 = 8 bits/caracter. En este caso se requieren al menos 8 dgitos binarios para codificar cada carcter. Pero usualmente eso no ocurre, por lo que la entropa de ese mensaje podra ser, por ejemplo, de 4 bits/carcter. En este caso se requieren, en promedio, al menos 4 dgitos binarios para codificar cada carcter y la compresin mxima que se podra lograr es de 2:1.

Codificacin Shannon-Fano
Es el primer mtodo bien conocido de cdigos de longitud variable. Claude Shannon en los Laboratorios Bell de la AT&T y Robert Fano en el MIT, lo descubrieron casi simultneamente a principios de los aos 50. El mtodo se basa simplemente en determinar la probabilidad de ocurrencia de cada smbolo en un dado mensaje. Con estas probabilidades se puede construir una tabla de codificacin que tiene varias propiedades interesantes:

Los cdigos son nmeros binarios de diferentes longitudes.

Los cdigos para smbolos con bajas probabilidades poseen mayor longitud y los cdigos para smbolos con altas probabilidades poseen menor longitud.
Aunque los cdigos son de diferentes longitudes, pueden ser descodificados de forma unvoca, sin ambigedad, ya que satisfacen la condicin del prefijo de que ningn cdigo puede ser el prefijo de otro cdigo.

En la tabla se muestra un ejemplo sencillo, utilizando un alfabeto de 5 caracteres.

Smbolo
1 2 3 4 5

Frecuencia Relativa
0.4 0.2 0.2 0.1 0.1

Cdigo
00 01 10 110 111

Codificacin Huffman
La codificacin Shannon-Fano signific un gran salto adelante en la bsqueda de mtodos de compresin eficientes, sin embargo fue desplazada por un mtodo an mejor: la codificacin Huffman. La descripcin de la codificacin Huffman apareci por primera vez en 1952 en un artculo en el IRE (Institute of Radio Engineers, precursor del actual IEEE).

En la codificacin Huffman los smbolos a codificar se colocan primero en una tabla en orden decreciente de frecuencia relativa de ocurrencia. Los dos smbolos menos probables (s4 y s5) se funden provisionalmente en un solo smbolo cuya probabilidad es la suma de las dos (0.2). De esta forma hay que codificar un alfabeto que contiene un smbolo menos que el original.

Repitiendo el proceso de reduccin, se llega al punto en que queda un alfabeto con slo dos smbolos, a los cuales se les empieza por codificar con 0 y 1 respectivamente.

Efectuando ahora el proceso en sentido inverso, se va aadiendo un 0 y un 1 cada vez que un smbolo codificado se expande en dos, hasta completar la codificacin.

Huffman demostr que su codificacin es ptima, en el sentido que la longitud promedio L es mnima para un dado modelo con cierta distribucin de probabilidades.
En el ejemplo que hemos ilustrado, L = 2.2 dgitos/smbolo. Lo que significa que en promedio se requieren 2.2 dgitos binarios para codificar cada smbolo.

La codificacin Huffman se lleva a cabo usualmente utilizando una estructura de datos basada en rbol binario, donde la probabilidad de ocurrencia de un smbolo corresponde a una hoja del rbol.

En la figura se muestran 2 posibles rboles de Huffman para los 5 smbolos del ejemplo visto anteriormente.

10

110

1110 1111

00

01

10

110

111

En la tabla siguiente se comparan las caractersticas de la codificacin Shannon-Fano y Huffman.


Se utilizan como ejemplo las letras del alfabeto, con la frecuencia relativa tpica que aparece en un texto en ingls (incluyendo el espacio). Tambin se incluye como referencia el cdigo Morse utilizado en telegrafa.

Programa para ilustrar la codificacin Huffman

Compresin Lempel-Ziv (LZ77)


Hasta finales de los aos 70 la mayora de los sistemas de compresin utilizaban tcnicas basadas en modelos estadsticos, es decir: Se lee un smbolo (o varios smbolos) y se codifica de acuerdo a su probabilidad obtenida a partir de un modelo estadstico. Pero dos jvenes matemticos israeles, Abraham Lempel and Jacob Ziv, propusieron en 1977 un novedoso mtodo de compresin basado en diccionario, con el cual se poda alcanzar tasas de compresin impresionantes.

Este mtodo fue descrito en el artculo "A universal algorithm for sequential data compression" de la revista IEEE Transactions on Information Theory de mayo 1977 y por tal razn posteriormente se le denomin compresin LZ77.

Al contrario de la codificacin Huffman, la compresin basada en diccionario no codifica smbolos individuales de longitud fija en forma de cdigos de longitud variable, sino que codifica cadenas de smbolos, esto es secuencias de longitud variable, por medio de cdigos de longitud prefijada.

Bsicamente los que se hace es leer una cadena de smbolos de entrada y se busca en un diccionario guardado en memoria. Si la cadena se encuentra en ese diccionario, se enva a la salida un cdigo que representa un ndice o puntero al diccionario donde ella se encuentra guardada.

Un simple ejemplo de cmo funciona conceptualmente, se puede ilustrar por medio de un diccionario de verdad como el Pequeo Larousse (o la gua telefnica).
Entonces un cdigo de salida como 3/325 podra significar buscar y extraer la tercera palabra en la pgina 325 del diccionario.

Un diccionario de verdad contiene palabras, pero en LZ77 se manejan cadenas de smbolos (por ejemplo ASCII). Estas cadenas (strings) pueden ser muy largas, por lo que son ms bien frases y no palabras. Se logra la compresin si los cdigos son ms cortos que las cadenas que representan.

En un caso simple como el ilustrado, puede ser conveniente un diccionario predefinido, esttico. Este diccionario se construye antes de efectuar la compresin y no cambia durante el proceso. Una de sus mayores ventajas es que no necesita ser enviado al descompresor. Se utiliza un diccionario esttico al igual que la lista de referencia en un artculo de una revista. A lo largo del texto en el artculo, el autor inserta un nmero que apunta a una lista de referencias, en vez de escribir el ttulo completo del trabajo referenciado.

En este caso el diccionario es esttico ya que construye y se transmite conjuntamente con el texto, y el lector no tiene que construirlo por su cuenta. Cada vez que se ve un nmero entre corchetes en el texto, por ejemplo [2], se sabe que apunta a un sitio en el diccionario esttico.

El problema con un diccionario esttico es similar al problema que se enfrenta con un modelo estadstico:
Se requiere transmitir el diccionario junto con el texto, lo cual resulta en una carga adicional que se aade a los datos comprimidos. Este problema se puede evitar utilizando un esquema de diccionario adaptable, esto es, dinmico.

Los seres humanos estamos acostumbrados a una forma de diccionario adaptable cuando realizamos la sustitucin de acrnimos en libros y revistas. La manera corriente de usar este diccionario adaptable es deletrear el acrnimo y luego poner su sustitucin abreviada entre parntesis. As, la primera vez que se mencione en un texto a la Universidad Central de Venezuela (UCV), se define tanto la frase completa en el diccionario y su sustitucin (UCV).
De all en adelante, al referirse a la UCV en el texto, debera automticamente evocar una sustitucin mental.

Con la compresin adaptable, en vez de tener un diccionario predefinido desde el mismo inicio de la compresin, se empieza sin diccionario o con un diccionario muy pequeo.
A medida que la compresin avanza, el algoritmo aade nuevas cadenas para ser utilizadas posteriormente como cdigos. La compresin basada en LZ77 es del tipo adaptable y se caracteriza adems por las siguientes propiedades:

Es universal, en el sentido de que no se requiere conocer nada en particular acerca de las caractersticas de los datos que se quieren comprimir. Como no es necesario determinar previamente la estadstica de esos datos, el algoritmo puede operar sobre la marcha, es decir que la compresin se efecta con una sola pasada sobre los datos a comprimir.
No produce prdida de informacin, ya que los datos originales se recuperan completamente en la descompresin, sin ningn tipo de error (siempre y cuando, por supuesto, no haya habido errores durante el almacenamiento en disco o durante la transmisin de los datos comprimidos).

En LZ77 el diccionario consiste de todas las cadenas o frases existentes en una porcin previa del mensaje.

El mtodo se basa en el reconocimiento de cadenas de smbolos ya existentes en esa porcin previa del mensaje.
A este proceso se le conoce en ingls como parsing y es anlogo al anlisis gramatical de una palabra o frase.

A medida que se va construyendo la cadena de entrada, se comprueba si esa cadena ya exista en la porcin previa del mensaje. Si se encuentra una concordancia (match), se codifica como un puntero y se enva al flujo de salida.
Si no es as, se enva a la salida otro tipo de cdigo. El proceso se repite hasta codificar todos los datos de entrada.

Para entender mejor el proceso de codificacin, imaginemos que estamos viendo los datos de entrada (alineados de izquierda a derecha) a travs de una ventana deslizante en la cual caben N smbolos. Esta ventana es el diccionario dinmico.

Ventana (N smbolos)

Buffer (B smbolos)

Ventana (N smbolos)

Buffer (B smbolos)

Los datos visibles en la ventana son los ms recientes N smbolos, que ya fueron codificados.

Los prximos smbolos a codificar se encuentran fuera de la ventana, en un look-ahead buffer, de tamao B, que contiene los smbolos que han sido ledos del flujo de entrada pero que todava no han sido codificados.

Cuando se consigue una coincidencia en la ventana, el evento se puede representar mediante un cdigo de 3 partes F,L,P Donde: F es una bandera (flag) de 1 bit que se pone en 1 para indicar que se encontr una coincidencia. El siguiente trmino L indica la longitud de la cadena encontrada. El ltimo P indica su posicin con respecto al extremo derecho de la ventana.

Cuando no se consigue una coincidencia, se usa el cdigo de 2 partes F,C


Donde: F es la bandera de 1 bit que se pone en 0 para indicar que no se encontr una coincidencia.

El siguiente trmino C es el primer carcter o smbolo en el buffer (para el cual no se encontr coincidencia).

La descompresin (o decodificacin) es el proceso inverso al anterior: Si la bandera F es 1, indica que el cdigo corresponde a una cadena conocida, as que se determina con ese mismo cdigo su longitud L y su posicin P en la ventana. A continuacin se copian a la salida L caracteres, contados a partir de P. Luego se desliza la ventana de P posiciones, para as pasar a decodificar el siguiente cdigo.

Si la bandera F es 0, se extrae a la salida el carcter ASCII que sigue a la bandera.

La descompresin requiere mucho menos trabajo y en consecuencia es mucho ms rpida que la compresin, ya que no hay que buscar coincidencias. LZ77 es un sistema asimtrico: La rutina de compresin es complicada y debe realizar bastante trabajo para cada cadena que comprime. En cambio, la rutina de descompresin es ms simple.

Esta caracterstica hace que LZ77 sea ms apropiado para datos que son comprimidos una sola vez, pero que son descomprimidos muchas veces (por ejemplo los programas que se distribuyen a travs de discos o a travs de Internet).

LZ77 se usa en programas como PKZIP, WinZIP y LHARC, que se han vuelto muy populares para comprimir archivos en general. LZ77 es muy efectivo para explotar la redundancia que existe en patrones que se repiten varias veces (archivos de texto, programas fuentes e ejecutables, bases de datos, grficas de computadoras), pero no es particularmente bueno para comprimir audio e imgenes digitalizadas.

Tamao: 153600 bytes (sin compresin) 53174 bytes (JPEG)

41173 bytes (PCX)


24928 bytes (BMP) 16296 bytes (LZ77) 10545 bytes (GIF) 7655 bytes (PNG)

Tamao:

153600 bytes (sin compresin)


52577 bytes (JPEG) 37044 bytes (PCX) 27592 bytes (BMP) 17770 bytes (LZ77) 10221 bytes (GIF) 8723 bytes (PNG)

Compresin LZ78 y LZW


En 1978 Ziv y Lempel describieron un segundo mtodo de compresin en el artculo "Compression of individual sequences via variable-rate coding" de la revista IEEE Transactions on Information Theory de septiembre 1978 y por tal razn posteriormente se le denomin compresin LZ78.

Histricamente, LZ78 fue el primero de los algoritmos LZ en hacerse popular, debido a su adaptacin por parte de Terry Welch en el algoritmo LZW y su posterior inclusin en el programa COMPRESS utilizado bajo el sistema operativo Unix.

Si bien LZ77 y LZ78 parecen muy semejantes, en realidad se diferencian apreciablemente y cada uno tiene ventajas y desventajas. LZ78 utiliza un enfoque distinto a LZ77 para construir y mantener el diccionario, abandonando el concepto de una ventana abierta sobre los smbolos previos, tal como se hace en LZ77. En vez de utilizar una ventana de tamao limitado que se desliza sobre los smbolos de entrada ya procesados, LZ78 construye su diccionario a partir de todos los smbolos de entrada ya procesados.

El diccionario de cadenas o frases se construye aadiendo un solo smbolo a la vez a las cadenas ya existentes. Cada cdigo contiene 2 componentes: la posicin de la cadena en el diccionario y el carcter que le sigue. Pero a diferencia de LZ77, la longitud no se codifica, ya que el descompresor la puede determinar por su cuenta.

A continuacin se muestra un ejemplo de cmo funciona el compresor, utilizando como entrada la siguiente secuencia de caracteres: BCBCACBCBCABCABCABACABCBC

El compresor empieza sin tener frases o cadenas en el diccionario y el ndice 0 se usa para definir la cadena vaca. El primer carcter que se lee (esto es B) corresponde a una cadena que todava no existe en el diccionario.
As que la cadena B se aade en el diccionario en la posicin 1 y se emite a la salida el cdigo formado por prefijo + extensin, en esto caso 0B.

BCBCACBCBCABCABCABACABCBC El siguiente carcter C tampoco existe en el diccionario y se aade en la posicin 2, emitiendo el cdigo 0C. Cuando se llega al tercer carcter, es decir B, ste ya existe en el diccionario y en consecuencia se avanza al cuarto (es decir C), y se forma la cadena BC, que todava no existe en el diccionario, por lo que se le aade y se emite el cdigo 1C, ya que 1 corresponde al ndice en el diccionario donde est guardado el carcter B. A medida que avanza el proceso, se aaden al diccionario cadenas cada vez ms largas.

Secuencia de entrada: BCBCACBCBCABCABCABACABCBC

Por ejemplo, si en la posicin 9 se guarda 3A, se puede saber que corresponde a BCA ya que el prefijo 3 nos enva a la posicin 3 donde est la extensin C y el prefijo 1, el cual nos enva a la posicin 1 donde est la extensin A.

Por su lado el descompresor puede recrear un diccionario idntico a partir de los cdigos recibidos, por lo que el mtodo es muy conveniente ya que no se necesita enviar el diccionario al descompresor.

La publicacin de LZ78 en el ao 1978 tuvo un impacto inmediato en el mundo de la Teora de la Informacin, pero pasaron varios aos antes de que realmente se notaran sus efectos en la prctica, ya que el mtodo de compresin fue planteado bajo una forma muy conceptual y abstracta.

De hecho, hubo que esperar la publicacin en junio de 1984 de IEEE Computer, que contena un artculo titulado "A technique for high-performance data compression", escrito por Terry Welch.

Este trabajo era una descripcin de un algoritmo (llamado LZW, por Lempel-Ziv-Welch) para miplementar LZ88 en forma prctica. Una mejora sorprendente que LZW logra con respecto a LZ78 es la eliminacin del requisito de que cada cdigo de salida se componga de prefijo + extensin. De hecho, el cdigo slo se compone del prefijo, lo cual significa un gran ahorro. Por ejemplo, si se usa un prefijo de 12 bits (para apuntar a un diccionario de 4096 posiciones) y una extensin de 8 bits (para usar smbolos ASCII), los cdigos de salida van a ser de slo 12 bits en vez 20.

En forma de pseudo cdigo, el algoritmo de compresin LZW es bsicamente el siguiente:


Inicializar el diccionario con todos los caracteres del alfabeto Leer el primer carcter -> prefijo w Lazo: Leer el siguiente carcter K Si no hay ms caracteres: cdigo(w)-> salida Fin Si wK existe en el diccionario: wK -> w Ir a Lazo Si wK no existe en el diccionario: Aadir wK al diccionario cdigo(w) -> salida K -> w Ir a Lazo

PKZIP
PKZIP fue desarrollado por Phil Kratz y ha alcanzado una gran popularidad. PKZIP permite utilizar distintos mtodos compresin, inclusive uno basado en LZW (mtodo 1, Unshrinking), pero el ms poderoso es el mtodo 8 (Deflating), basado en LZ77.

El formato de los archivos ZIP creados por PKZIP es muy elaborado, pero Kratz public un documento con esa informacin, lo cual facilit que posteriormente aparecieran una gran cantidad de productos comerciales compatibles con el formato ZIP. Este formato ZIP se ha vuelto un estndar de facto para la compresin de archivos y es utilizado actualmente en numerosas utilidades y programas de compresin de dominio pblico, tal como en la biblioteca de rutinas en lenguaje C de ZLib e Info-Zip, las cuales pueden ser utilizadas por los desarrolladores de software.

La rutina de compresin de ZLib se llama Deflate (que se puede traducir como Desinflar) y se basa en gran parte en el mtodo Deflating de PKZIP. Pero Deflate es ms que un mtodo o un algoritmo, y se puede considerar un formato para la compresin de datos sin prdidas. Fue desarrollado inicialmente por Jean-loup Gailly de Francia y fue propuesto como un documento oficial de Internet bajo el nombre RFC1951 por Peter Deutsch en mayo de 1996.

Uno de los mejores algoritmos de descompresin es Inflate, escrito por Mark Adler en lenguaje C y que tambin es una de las rutinas en C de ZLIB y de Info-Zip.

Las especificaciones y el cdigo fuente de Deflate e Inflate (en lenguaje C) se encuentran en numerosos sitios en Internet.

Desarrollo histrico de productos para la compresin de datos


Uno de los primeros programa de compresin de archivos fue COMPACT, para mquinas Unix, el cual utilizaba codificacin Huffman adaptable. Los usuarios Unix ya estaban acostumbrados a utilizar TAR (Tape Archiving) con el fin de unir varios archivos uno solo, que luego era guardado como respaldo en cinta magntica (pero sin compresin).

A partir de 1985 se hizo disponible libremente para los usuarios de Unix el programa COMPRESS, el cual utilizaba el algoritmo de compresin LZW y alcanzaba una razn de compresin mucho mayor que COMPACT, siendo adems mucho ms rpido. El cdigo fuente de COMPRESS estaba disponible en forma de dominio pblico y exportable a diferentes plataformas.

En ambiente DOS la codificacin Huffman fue rpidamente desplazada por la compresin LZW con la llegada de ARC en 1985, un programa de propsito general que permita adems la compresin de mltiples archivos y su catalogacin, funcionando entonces como un archivador-compresor. Y mientras COMPRESS se volva prcticamente un estndar de facto en el ambiente Unix, en el mundo de los PCs lo haca ARC en cuestin de meses, siendo distribuido por una pequea compaa de shareware, Systems Enhancement Associates (SEA) de los Estados Unidos. ARC originalmente poda comprimir los archivos usando 3 tcnicas: RLE, codificacin esttica Huffman y LZW. Esta ltima que fue adaptada a partir del programa fuente de COMPRESS para Unix.

En 1986 Phil Katz apareci en escena en los Estados Unidos. Katz escribi dos programas shareware (llamados PKARC y PKXARC) de compresin/expansin que podan leer y escribir el formato ARC de SEA, pero mucho rpidamente. Los dos programas pronto comenzaron a ser usado por otros fabricantes de software para comprimir la informacin contenida en los diskettes de distribucin de programas comerciales.

En 1988, SEA demand a PKWare, la compaa de Katz, alegando violaciones de la marca registrada y derechos de autor, copia de cdigo, y prcticas comerciales injustas.

Katz firm una declaracin en la que no admita culpabilidad pero donde renunciaba al nombre ARC, dejaba de producir programas de compresin compatibles con ARC y acceda a pagar daos.

Cuando el nuevo programa de Katz, llamado PKZIP, sali a finales de 1988, varios sistemas de boletines electrnicos y fabricantes de software se cambiaron de ARC a ZIP y en un ao el formato ZIP se haba convertido en el nuevo estndar, el cual se mantiene hasta hoy. PKZIP hizo famoso, aunque no rico, a Phil Kratz, quien falleci, todava joven, en abril de 2000.

Phil Kratz hizo publico el formato de los archivos ZIP (si bien no explic todos los detalles del algoritmo), por lo que existen ahora muchos otros programas y utilidades de compresin que soportan el formato ZIP, por ejemplo WinZIP, el cual se integra con el administrador de archivos de Windows para as proveer una interfaz ms amigable con el usuario.

Ratio = (tamao original tamao comprimido)/ tamao original

Otros programas, herramientas y utilidades que han surgido en los aos recientes son ARJ, LHARC, ZOO, HPACK, Squeeze, RAR, UltraCompressorII, CRUSH, LU, ICE, HA, ACB, X1, GZIP, TGZ, ZIP y muchos ms. GZIP es una herramienta de compresin que puede ser compilada para distintas plataformas (Unix, VMS, MSDOS, Windows, OS2, etc.) y fue desarrollada un grupo del GNU, que es una organizacin informal compuesta por expertos e investigadores los cuales promueven tcnicas y algoritmos que puedan ser utilizadas libremente por los programadores o los usuarios sin tener que pagar licencia.

El algoritmo de compresin en GZIP es Deflate y el de descompresin es Inflate. GZIP acta tambin como descompresor, mediante la opcin d, pero no es capaz de actuar como un archivador de mltiples archivos, por tal razn se usa a menudo en conjuncin con una utilidad TAR. Con TAR se apilan varios archivos en uno solo y este archivo se comprime luego con GZIP. El resultado final es un archivo que en Unix tiene tpicamente la extensin tar.gz o tar.z (la extensin Z mayscula se usa para la compresin con COMPRESS).

Otra importante herramienta de compresin de dominio pblico es ZIP, desarrollada por el grupo Info-Zip, muchos de cuyos miembros tambin pertenecen a GNU. Por tal razn GZIP y ZIP son parecidos.

ZIP es un compresor y un archivador de propsito general y funciona en forma semejante a PKZIP.


El algoritmo de compresin es Deflate. El programa de descompresin se llama UNZIP y se base en Inflate.

En Internet hay muchos sitios donde se pueden conseguir herramientas de compresin y archivadores, va ftp annimo o va Web. Uno de ellos es oak.oakland.edu en el directorio /Simtel/msdos/archive. Otro es garbo.uwasa.fi en el directorio /pc/archers.

Compresin mediante wavelets

Ejemplo de wavelets bsicas

Descomposicin de una onda diente de sierra en varias wavelets

Paquetes wavelets y paquetes coseno

Fractales
Se han desarrollado tcnicas de compresin con prdidas basadas en fractales. Como ejemplo, el FIF (Fractal Image Format), convierte imgenes en una serie de formas fractales superpuestas que pueden ser representadas y almacenadas en forma matemtica en trminos de semejanzas geomtricas locales.

La geometra fractal puede mantener la continuidad de la imagen a niveles microscpicos.


La descompresin no depende de la resolucin del sistema de video, as que las imgenes capturadas y comprimidas a partir de un sistema de baja resolucin (por ejemplo VGA) pueden ser descomprimidas para ocupar una pantalla de mayor resolucin (como SuperVGA) sin introducir granulosidad.

Un tipo de fractal potencialmente til para la compresin de imgenes es el basado en el Sistema de Funcin Iterada (IFS). La tcnica de los fractales IFS, inventados por Michael Barnsley explota las autosimilitudes que existen en una imagen, modelando a la misma como varios cuadros ms pequeos de s misma. Unas ecuaciones especiales, conocidas como mapas de afinidad, permiten traducir, rotar y escalar regiones de la imagen.

Lecturas Recomendadas
Mark Nelson and Jean-Loup Gailly, The Data Compression Book, M&T Books, 1995. Khalid Sayood, Introduction to Data Compression, Morgan Kaufman Publishers, 1996. Gilbert Held and Thomas Marshall, Data and Image Compression: Tools and Techniques, John Wiley & Sons, 1996.

James A. Storer (editor), Image and Text Compression. Kluwer Academic Publishers, 1992.
Shimon Even, "Four value-adding algorithms", IEEE Spectrum, May 1998. Ed Krol, "The packaging and naming of files, (in EFFs

D. E. Newland, An Introduction to Random Vibrations, Spectral and Wavelet Analysis, Longmans Ltd., 1993. Gerald Kaiser, "The Fast Haar Transform", IEEE Potentials, April/May 1998. Moc A. Cody, The Wavelet Packet Transform, Dr. Dobbs Journal, April 1994. Glenn Zorpette, Fractals: not just another picture, IEEE Spectrum, October 1988.

TAREAS
Cargar el ndice del libro electrnico Compresin de Datos (archivo Compresion\Indice.doc del CD-ROM).
Estudiar el tema sobre compresin de datos contenido en el archivo Compresion\Compresion.doc del CD-ROM. Consultar las lecturas recomendadas sobre ese tema. Analizar la tesis de Mara Dos Santos: Esquema hbrido

de compresin de imgenes usando transformada ondculas y fractales, USB, Noviembre de 1998 (archivo Tesis\DosSantos.zip).

Efectuar la prctica sobre compresin de datos. Las instrucciones se encuentran en Practica.doc contenido en Practicas/Compresion.zip.

Concluy la clase sobre Compresin de Datos. Muchas gracias por su atencin!!

TAREA
Efectuar las actividades indicadas en la seccin Actividades del programa del curso. La versin ms actualizada se encuentra en: http://mipagina.cantv.net/vmendillo

También podría gustarte