Está en la página 1de 13

Compresin de datos

La compresin de datos consiste en la reduccin del volumen de informacin tratable (procesar,


transmitir o grabar). En principio, con la compresin se pretende transportar la misma informacin, pero
empleando la menor cantidad de espacio.

El espacio que ocupa una informacin codificada (datos, seal digital, etc.) sin compresin es el cociente
entre la frecuencia de muestreo y la resolucin. Por tanto, cuantos ms bits se empleen mayor ser el
tamao del archivo. No obstante, la resolucin viene impuesta por el sistema digital con que se trabaja y
no se puede alterar el nmero de bits a voluntad; por ello, se utiliza la compresin, para transmitir la
misma cantidad de informacin que ocupara una gran resolucin en un nmero inferior de bits.

La compresin de datos se basa fundamentalmente en buscar repeticiones en series de datos para


despus almacenar solo el dato junto al nmero de veces que se repite. As, por ejemplo, si en un fichero
aparece una secuencia como "AAAAAA", ocupando 6 bytes se podra almacenar simplemente "6A" que
ocupa solo 2 bytes, en algoritmo RLE.

En realidad, el proceso es mucho ms complejo, ya que raramente se consigue encontrar patrones de


repeticin tan exactos (salvo en algunas imgenes). Se utilizan algoritmos de compresin:
Por un lado, algunos buscan series largas que luego codifican en formas ms breves.
Por un lado, algunos buscan series largas que luego codifican en formas ms breves.
Por otro lado, algunos algoritmos, como el algoritmo de Huffman, examinan los
caracteres ms repetidos para luego codificar de forma ms corta los que ms se
repiten.
Otros, como el LZW, construyen un diccionario con los patrones encontrados, a los
cuales se hace referencia de manera posterior.

Algoritmo de Huffman

El algoritmo de Huffman es un algoritmo para la construccin de cdigos de Huffman,


desarrollado por David A. Huffman en 1952 y descrito en A Method for the Construction of
Minimum-Redundancy Codes. [1]

Este algoritmo toma un alfabeto de n smbolos, junto con sus frecuencias de aparicin
asociadas, y produce un cdigo de Huffman para ese alfabeto y esas frecuencias.

1. Descripcin

El algoritmo consiste en la creacin de un rbol binario que tiene cada uno de los smbolos
por hoja, y construido de tal forma que siguindolo desde la raz a cada una de sus hojas se
obtiene el cdigo Huffman asociado.

1. Se crean varios rboles, uno por cada uno de los smbolos del alfabeto, consistiendo
cada uno de los rboles en un nodo sin hijos, y etiquetado cada uno con su smbolo
asociado y su frecuencia de aparicin.
2. Se toman los dos rboles de menor frecuencia, y se unen creando un nuevo rbol.
La etiqueta de la raz ser la suma de las frecuencias de las races de los dos rboles
que se unen, y cada uno de estos rboles ser un hijo del nuevo rbol. Tambin se
etiquetan las dos ramas del nuevo rbol: con un 0 la de la izquierda, y con un 1 la de
la derecha.
3. Se repite el paso 2 hasta que slo quede un rbol.

Con este rbol se puede conocer el cdigo asociado a un smbolo, as como obtener el
smbolo asociado a un determinado cdigo.

Para obtener el cdigo asociado a un smbolo se debe proceder del siguiente modo:

1. Comenzar con un cdigo vaco


2. Iniciar el recorrido del rbol en la hoja asociada al smbolo
3. Comenzar un recorrido del rbol hacia arriba
4. Cada vez que se suba un nivel, aadir al cdigo la etiqueta de la rama que se ha
recorrido
5. Tras llegar a la raz, invertir el cdigo
6. El resultado es el cdigo Huffman deseado

Para obtener un smbolo a partir de un cdigo se debe hacer as:

1. Comenzar el recorrido del rbol en la raz de ste


2. Extraer el primer smbolo del cdigo a descodificar
3. Descender por la rama etiquetada con ese smbolo
4. Volver al paso 2 hasta que se llegue a una hoja, que ser el smbolo asociado al
cdigo

En la prctica, casi siempre se utiliza el rbol para obtener todos los cdigos de una sola
vez; luego se guardan en tablas y se descarta el rbol.

1. 1. Ejemplo de uso

La tabla describe el alfabeto a codificar, junto con las frecuencias de sus smbolos. En el
grfico se muestra el rbol construido a partir de este alfabeto siguiendo el algoritmo
descrito.
rbol para construir el cdigo Huffman del ejemplo
Smbolo Frecuencia
A 0,15
B 0,30
C 0,20
D 0,05
E 0,15
F 0,05
G 0,10

Se puede ver con facilidad cul es el cdigo del smbolo E: subiendo por el rbol se
recorren ramas etiquetadas con 1, 1 y 0; por lo tanto, el cdigo es 011. Para obtener el
cdigo de D se recorren las ramas 0, 1, 1 y 1, por lo que el cdigo es 1110.

La operacin inversa tambin es fcil de realizar: dado el cdigo 10 se recorren desde la


raz las ramas 1 y 0, obtenindose el smbolo C. Para descodificar 010 se recorren las ramas
0, 1 y 0, obtenindose el smbolo A.

2. Limitaciones

Para poder utilizar el algoritmo de Huffman es necesario conocer de antemano las


frecuencias de aparicin de cada smbolo, y su eficiencia depende de lo prximas a las
frecuencias reales que sean las estimadas. Algunas implementaciones del algoritmo de
Huffman son adaptativas, actualizando las frecuencias de cada smbolo conforme recorre el
texto.

La eficiencia de la codificacin de Huffman tambin depende del balance que exista entre
los hijos de cada nodo del rbol, siendo ms eficiente conforme menor sea la diferencia de
frecuencias entre los dos hijos de cada nodo.

Ejemplos:

La codificacin binaria es un caso particular de la codificacin de Huffman que


ocurre cuando todos los smbolos del alfabeto tienen la misma frecuencia. Se tiene
pues que la codificacin binaria es la ms eficiente para cualquier nmero de
smbolos equiprobables.
El algoritmo de Huffman aplicado sobre un alfabeto de dos smbolos asignar
siempre un 1 al primero y un 0 al segundo, independientemente de la frecuencia de
aparicin de dichos smbolos. En este caso nunca se realiza compresin de los
datos, mientras que otros algoritmos s podran conseguirlo.

Una manera de resolver este problema consiste en agrupar los smbolos en palabras antes
de ejecutar el algoritmo. Por ejemplo, si se tiene la cadena de longitud 64

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAB

El algoritmo de Huffman aplicado nicamente a los smbolos devuelve el cdigo:

1111111111111111111111111111111111111111111111111111111111111110

Tambin de longitud 64. Sin embargo, si antes de utilizar el algoritmo, se agrupan los
smbolos en las palabras "AA", "AB" y "B" (que se codifican como 1, 01 y 00), el
algoritmo devuelve la siguiente cadena:

111111111111111111111111111111101

que tiene longitud 32, la mitad que si no se hubiera agrupado. Si observa el rbol de
Huffman, se puede comprobar que la diferencia de frecuencias entre las ramas del rbol es
menor que en el caso anterior.

3. Variaciones del algoritmo

3. 1. Cdigos Huffman n-arios

Es posible crear cdigos de Huffman ternarios, cuaternarios, y, en general, n-arios. Para ello
slo es necesario realizar dos modificaciones al algoritmo:

1. Los rboles a crear tendrn tantos hijos como smbolos posibles puedan aparecer en
los cdigos Huffman. Por ejemplo, si es ternario se crearn rboles con tres hijos; si
es cuaternario, con cuatro.
2. Si se expresa como s el nmero de smbolos en el alfabeto a codificar, y n el nmero
de smbolos que aparecen en el cdigo Huffman, entonces s-1 debe ser mltiplo de
n-1. Es decir, para un cdigo ternario, s debe valer 3, 5, 7, etc. Si esta condicin no
se cumple, entonces se deben aadir smbolos "nulos" con frecuencia 0, que
servirn slo como relleno a la hora de construir el rbol.

Algoritmo LZW
LZW (Lempel-Ziv-Welch) es un algoritmo de compresin sin prdida desarrollado por
Terry Welch en 1984 como una versin mejorada del algoritmo LZ78 desarrollado por
Abraham Lempel y Jacob Ziv.

1. Descripcin del Algoritmo

La mayora de los mtodos de compresin se basan en un anlisis inicial del texto para
identificar cadenas repetidas para armar un diccionario de equivalencias, asignando cdigos
breves a estas cadenas. En una segunda etapa, se convierte el texto utilizando los cdigos
equivalentes para las cadenas repetidas. Esto requiere dos etapas, una de anlisis y una
segunda de conversin y tambin requiere que el diccionario se encuentre junto con el texto
codificado, incrementando el tamao del archivo de salida.

La clave del mtodo LZW reside en que es posible crear sobre la marcha, de manera
automtica y en una nica pasada un diccionario de cadenas que se encuentren dentro del
texto a comprimir mientras al mismo tiempo se procede a su codificacin. Dicho
diccionario no es transmitido con el texto comprimido, puesto que el descompresor puede
reconstruirlo usando la misma lgica con que lo hace el compresor y, si est codificado
correctamente, tendr exactamente las mismas cadenas que el diccionario del compresor
tena.

El diccionario comienza pre-cargado con 256 entradas, una para cada carcter (byte)
posible ms un cdigo predefinido para indicar el fin de archivo. A esta tabla se le van
agregando sucesivos cdigos numricos por cada nuevo par de caracteres consecutivos que
se lean (esto no es literalmente cierto, segn se describe ms adelante), an cuando todava
no sea posible prever si ese cdigo se reutilizar ms adelante o no.

Es en este detalle donde se encuentra la brillantez del mtodo: al armar el diccionario sobre
la marcha se evita hacer dos pasadas sobre el texto, una analizando y la otra codificando y
dado que la regla de armado del diccionario es tan simple, el descompresor puede
reconstruirlo a partir del texto comprimido mientras lo lee, evitando as incluir el
diccionario dentro del texto comprimido. Se puede objetar que el diccionario estar plagado
de cdigos que no se utilizarn y por tanto ser innecesariamente grande, pero en la prctica
el diccionario no crece demasiado y an si lo hiciera no importa mucho pues el objetivo es
que el archivo comprimido sea pequeo an cuando los procesos de compresin y
descompresin pudieran ocupar mucha memoria con el diccionario.

Las entradas del diccionario pueden representar secuencias de caracteres simples o


secuencias de cdigos de tal forma que un cdigo puede representar dos caracteres o puede
representar secuencias de otros cdigos previamente cargados que a su vez representen,
cada uno de ellos, otros cdigos o caracteres simples, o sea que un cdigo puede
representar desde uno a un nmero indeterminado de caracteres. En realidad, el algoritmo
no discrimina entre cdigos y caracteres simples pues el diccionario se carga inicialmente
de cdigos que representan los primeros 256 caracteres simples por lo que estos no son ms
que otros cdigos dentro del mismo diccionario.
Cada vez que se lee un nuevo carcter se revisa el diccionario para ver si forma parte de
alguna entrada previa. Todos los caracteres estn inicialmente predefinidos en el
diccionario as que siempre habr al menos una coincidencia, sin embargo, lo que se busca
es la cadena ms larga posible. Si el carcter ledo no forma parte de ms de una cadena
ms larga, entonces se emite la ms larga que se hubiera encontrado y se agrega al
diccionario una entrada formada por cualquiera que hubiera sido el cdigo previo y este
nuevo cdigo. Si el carcter ledo s forma parte de ms de una cadena del diccionario, se
lee un nuevo carcter para ver si la secuencia formada por el carcter previo y el nuevo es
alguna de las encontradas en el diccionario. En tanto los caracteres sucesivos que se vayan
leyendo ofrezcan ms de una entrada posible en el diccionario, se siguen leyendo
caracteres. Cuando la cadena slo tiene una entrada en el diccionario, entonces se emite el
cdigo correspondiente a esa entrada y se incorpora al diccionario una nueva entrada que
representa el ltimo cdigo emitido y el nuevo.

Otra caracterstica importante del algoritmo es que los cdigos en la salida se representan
por cadenas de bits variables. El diccionario contiene inicialmente 257 cdigos, 256
cdigos para los 256 caracteres simples posibles con 8 bits y un cdigo que representa el fin
de archivo. Para esto seran necesarios cdigos de 9 bits, lo cual quiere decir que an hay
disponibles 255 cdigos de 9 bits para representar cadenas de caracteres. Cuando se llenan
estas 255 entradas del diccionario, se amplan los cdigos con un nuevo bit, lo cual permite
512 nuevas entradas. Cuando se completan estas 512 entradas, se agrega un bit y se
disponen de 1024 nuevas entradas y as sucesivamente. En la prctica, se verifica que las
primeras entradas, correspondientes a cdigos de 12 bits de longitud (4096 entradas) se
llenan rpidamente por lo que es habitual comenzar el proceso no con cdigos de 9 bits sino
directamente con cdigos de 12 bits.

A su vez, se ha comprobado empricamente que la informacin en un archivo presenta


'regionalidad', o sea, que diferentes regiones de un mismo archivo presentan distintas
regularidades, lo cual hace que el diccionario que se hubiera formado para una regin de un
archivo pueda no ser til en otra regin distinta. El algoritmo preve que, cuando una cadena
fuera a forzar la ampliacin del diccionario a 17 bits, el diccionario se borre por completo,
se inicialice nuevamente con los 256 cdigos iniciales ms el cdigo de fin de archivo y se
recomience el proceso.

Ntese que dado este lmite de cdigos de 16 bits, esto quiere decir que un diccionario
nunca podr contener ms de 65536 entradas, cada una de ellas de 2 cdigos de 16 bits, o
sea cuatro bytes por entrada. El diccionario, entonces, se arma como una tabla donde el
cdigo es el ndice y las cadenas que representa son las entradas de esta tabla. Advirtase
que el cdigo en si no se almacena en la tabla sino que es el ndice de la misma por lo cual
no se almacena sino que se calcula por la posicin en la tabla. En total, una tabla llena
ocupa 65536 entradas de 4 bytes cada una, o sea 262144 caracteres (256 kbytes) lo que es
absurdamente poco para los ordenadores actuales.

Que el tamao de los ndices pueda ser incrementado de manera variable es una de las
contribuciones de Welch. Otra de ellas fue especificar una estructura de datos eficiente para
guardar el diccionario.
1. 1. Un ejemplo simple del algoritmo LZW de compresin

Dado qu el algoritmo sirve para comprimir cualquier secuencia de bits,


independientemente de si es texto o cualquier otro tipo de informacin, el ejemplo a
continuacin no ha sido traducido del original en ingls. En l se supone que los textos a
comprimir se componen solamente de letras maysculas sin espacios, para lo cual bastan
(en ingls) 26 cdigos, del 1 al 26, para las maysculas ms un cdigo (en este caso se ha
adoptado el cero, aunque en la prctica el 0 es un carcter vlido) para representar el fin de
archivo, que se ha representado grficamente por el smbolo #. El texto a comprimir es:

TOBEORNOTTOBEORTOBEORNOT#

y el proceso de compresin queda representado por la tabla siguiente. Para interpretarla, se


sugiere ignorar la representacin binaria, que se incluye simplemente para contabilizar el
tamao del archivo de salida. Los cdigos del 1 al 26 se corresponden con caracteres
simples 1 = A, 2 = B, ... 26 = Z y 27 = "fin de archivo". Del 28 en adelante cada cdigo
representa ms de un carcter.

Carcter: Cdigo emitido Entrada en el diccionario: (salida): T 20 = 10100 O 15 = 01111


28: TO B 2 = 00010 29: OB E 5 = 00101 30: BE O 15 = 01111 31: EO <--- se agotaron los
cdigos de 5 bits R 18 = 010010 32: OR <--- se comienza a usar cdigos de 6 bits N 14 =
001110 33: RN O 15 = 001111 34: NO T 20 = 010100 35: OT TO 28 = 011100 36: TT BE
30 = 011110 37: TOB OR 32 = 100000 38: BEO TOB 37 = 100101 39: ORT EO 31 =
011111 40: TOBE RN 33 = 100001 41: EOR OT 35 = 100011 42: RNO # 0 = 000000 43:
OT#

El texto original, compuesto de 25 caracteres que pueden representarse con 5 bits cada uno
nos dara 125 bits. El resultado comprimido produce 5 cdigos de 5 bits ms 12 cdigos de
6 bits, lo cual resulta en 97 bits, una reduccin a menos del 78% del original. Ntese que
cada carcter ledo genera una nueva entrada en el diccionario, independientemente de si se
utilizar o no. Esta simplicidad por parte del algoritmo de compresin permite que el
descompresor pueda reconstruir el diccionario sin errores.

Cuando se comienza a utilizar 6 bits por cdigo, todos los cdigos se emiten con 6 bits, an
los que originalmente slo usaran 5 bits, completndose con ceros por izquierda.

2. Usos

El mtodo lleg a ser utilizado de forma moderada, pero en toda su amplitud en el


programa compress que lleg a ser ms o menos la utilidad estndar de compresin en
sistemas Unix alrededor de 1986 (ahora ha desaparecido prcticamente tanto por asuntos
legales como tcnicos). Otras utilidades de compresin tambin utilizan este mtodo u otros
relativamente cercanos.

Se us ampliamente desde que se convirti en parte del formato grfico GIF en 1987.
Puede ser tambin usado, aunque opcionalmente, en archivos TIFF.
La compresin LZW proporcionaba una relacin de compresin mejor en muchas
aplicaciones que otros mtodos de compresin conocidos en esa poca. Lleg a convertirse
en el primer mtodo de propsito general de compresin de datos usado ampliamente. En
textos largos, comprime aproximadamente a la mitad del tamao original. Otros tipos de
datos son tambin comprimidos tilmente en muchos casos.

3. El asunto de las patentes

Varias patentes han sido concedidas en los Estados Unidos de Amrica y otros pases por el
algoritmo LZW y similares. El LZ78 estaba bajo la patente 4,464,650, pedida por Lempel,
Ziv, Cohn y Eastman y asignada a Sperry Corporation, ms tarde Unisys Corporation, el 10
de agosto de 1981. Dos patentes de los Estados Unidos fueron creadas para el LZW: la
patente de EE.UU. 4,814,746 por Victor S. Miller y Mark N. Wegman y asignada a IBM,
originalmente el 1 de junio de 1983, y la patente estadounidense 4,558,302 por Welch,
asignada a Sperry Corporation, ms tarde Unisys Corporation, el 20 de junio de 1983.

La patente estadounidense 4,558,302 es la que ha causado la mayor controversia. Unisys


una vez garantiz licencias libre de patentes a desarrolladores de software libre y software
propietario freeware (gratuito, sin fines comerciales). La compaa finaliz esas licencias
en agosto de 1999.

Muchos expertos en leyes concluyen que la patente no cubre dispositivos que slo
descompriman LZW y no puedan comprimir datos usndolo, por esta razn el popular
programa Gzip puede leer archivos .Z pero no escribirlos.

Se inform en Debian Weekly News basndose en un hilo de comp.compression thread,


que la patente de Unisys en EE.UU. expir en diciembre de 2002 - 17 aos y 10 das
despus de ser patentado. Sin embargo la mayora de las fuentes informan que expir en
junio de 2003, 20 aos despus de que fuera archivada, porque 35 USC 154(c)(1)
especifica que las patentes subsisten 20 aos despus del Uruguay Round Agreements Act.

De acuerdo con una declaracin en la web de Unisys, las patentes de LZW en el Reino
Unido, Francia, Alemania, Italia y Japn han expirado en junio de 2004 y la patente
canadiense en julio de 2004. La patente de IBM en EE.UU. expir en agosto de 2006.

4. Lempel-Ziv-Welch vs. Ziv-Lempel-Welch

Aunque el acrnimo LZW obviamente se refiere a los inventores como Lempel, Ziv y
Welch, alguna gente opina que el derecho de propiedad intelectual va a Ziv primero, de
modo que el mtodo debe llamarse algoritmo Ziv-Lempel-Welch, y no el algoritmo Lempel-
Ziv-Welch.
A la hora de hablar de compresin hay que tener presentes dos conceptos:

1. Redundancia: Datos que son repetitivos o previsibles


2. Entropa: La informacin nueva o esencial que se define como la diferencia entre
la cantidad total de datos de un mensaje y su redundancia.

La informacin que transmiten los datos puede ser de tres tipos:

1. Redundante: informacin repetitiva o predecible.


2. Irrelevante: informacin que no podemos apreciar y cuya eliminacin por tanto no
afecta al contenido del mensaje. Por ejemplo, si las frecuencias que es capaz de
captar el odo humano estn entre 16/20 Hz y 16.000/20.000 Hz s, seran
irrelevantes aquellas frecuencias que estuvieran por debajo o por encima de estos
valores.
3. Bsica: la relevante. La que no es ni redundante ni irrelevante. La que debe ser
transmitida para que se pueda reconstruir la seal.

Teniendo en cuenta estos tres tipos de informacin, se establecen tres tipologas de


compresin de la informacin:

1. Sin prdidas reales: es decir, transmitiendo toda la entropa del mensaje (toda la
informacin bsica e irrelevante, pero eliminando la redundante).
2. Subjetivamente sin prdidas: es decir, adems de eliminar la informacin
redundante se elimina tambin la irrelevante.
3. Subjetivamente con prdidas: se elimina cierta cantidad de informacin bsica,
por lo que el mensaje se reconstruir con errores perceptibles pero tolerables (por
ejemplo: la videoconferencia).

Diferencias entre compresin con y sin prdida

El objetivo de la codificacin es siempre reducir el tamao de la informacin, intentando


que esta reduccin de tamao no afecte al contenido. No obstante, la reduccin de datos
puede afectar o no a la calidad de la informacin:

Compresin sin prdida: los datos antes y despus de comprimirlos son exactos en
la compresin sin prdida. En el caso de la compresin sin prdida una mayor
compresin solo implica ms tiempo de proceso. El bitrate siempre es variable en la
compresin sin prdida. Se utiliza principalmente en la compresin de texto.
Un algoritmo de compresin con prdida puede eliminar datos para reducir an ms
el tamao, con lo que se suele reducir la calidad. En la compresin con prdida el
bit rate puede ser constante o variable. Hay que tener en cuenta que una vez
realizada la compresin, no se puede obtener la seal original, aunque s una
aproximacin cuya semejanza con la original depender del tipo de compresin. Se
utiliza principalmente en la compresin de imgenes, videos y sonidos.
Fundamentos de la compresin de imgenes
REDUNDANCIA DE DATOS Hay que resaltar la diferencia entre informacin y datos, ya que en muchas
ocasiones se utilizan como sinnimos y no lo son. Los datos son una forma representar la informacin;
as, una misma informacin puede ser representada por distintas cantidades de datos. Por tanto, algunas
representaciones de la misma informacin contienen datos redundantes.
La compresin de datos se define como el proceso de reducir la cantidad de datos necesarios para
representar eficazmente una informacin, es decir, la eliminacin de datos redundantes. En el caso de
las imgenes, existen tres maneras de reducir el nmero de datos redundantes: eliminar cdigo
redundante, eliminar pxeles redundantes y eliminar redundancia visual.

CDIGO REDUNDANTE
El cdigo de una imagen representa el cuerpo de la informacin mediante un conjunto de smbolos. La
eliminacin del cdigo redundante consiste en utilizar el menor nmero de smbolos para representar la
informacin.
Las tcnicas de compresin por codificacin de Huffman y codificacin aritmtica utilizan clculos
estadsticos para lograr eliminar este tipo de redundancia y reducir la ocupacin original de los datos.

PIXELES REDUNDANTES
La mayoria de las imgenes presentan semejanzas o correlaciones entre sus pxeles. Estas
correlaciones se deben a la existencia de estructuras similares en las imgenes, puesto que no son
completamente aleatorias. De esta manera, el valor de un pxel puede emplearse para predecir el de sus
vecinos.
Las tcnicas de compresin Lempel-Ziv implementan algoritmos basados en sustituciones para lograr la
eliminacin de esta redundancia.

REDUNDANCIA VISUAL
El ojo humano responde con diferente sensibilidad a la informacin visual que recibe. La informacin a la
que es menos sensible se puede descartar sin afectar a la percepcin de la imagen. Se suprime as lo
que se conoce como redundancia visual.
La eliminacin de la redundancia esta relacionada con la cuantificacin de la informacin, lo que conlleva
una prdida de informacin irreversible. Tcnicas de compresin como JPEG, EZW o SPIHT hacen uso
de la cuantificacin.

CLASIFICACIN
Los mtodos de compresin se pueden agrupar en dos grandes clases: mtodos de compresin sin
prdida de informacin y mtodos con prdida de informacin.

LOSSLESS
Los mtodos de compresin sin prdida de informacin (lossless) se caracterizan porque la tasa de
compresin que proporcionan est limitada por la entropa (redundancia de datos) de la seal original.
Entre estas tcnicas destacan las que emplean mtodos estadsticos, basados en la teora de Shannon,
que permite la compresin sin prdida. Por ejemplo: codificacin de Huffman, codificacin aritmtica y
Lempel-Ziv. Son mtodos idneos para la compresin dura de archivos.

LOSSY
Los mtodos de compresin con prdida de informacin (lossy) logran alcanzar unas tasas de
compresin ms elevadas a costa de sufrir una prdida de informacin sobre la imagen original. Por
ejemplo: JPEG, compresin fractal, EZW, SPIHT, etc. Para la compresin de imgenes se emplean
mtodos lossy, ya que se busca alcanzar una tasa de compresin considerable, pero que se adapte a la
calidad deseada que la aplicacin exige sobre la imagen objeto de compresin.

Existen diversos formatos que nos permiten comprimir, descomprimir y empaquetarxarchiver_logo.png


nuestros archivos. En esta entrada vamos a ver las diversas formas que se aplican para su correcto uso.

Tar se refiere en Informtica a un formato de archivos ampliamente usado en entornos UNIX,


identificados con la extensin tar. Adems hace referencia al programa para la manipulacin de archivos
que es estndar en estos entornos.

El formato fue diseado para almacenar archivos de una forma conveniente en cintas magnticas y de
all proviene su nombre, que proviene de Tape ARchiver (en ingls: archivador en cinta). Debido a este
origen el formato est preparado para ser procesado linealmente, no contando con manera de extraer un
miembro sin recorrer todo el archivo hasta encontrarlo.

Su uso es el siguiente:

Empaquetar: tar -cvf archivo.tar /dir/a/comprimir/

Desempaquetar: tar -xvf archivo.tar


Ver contenido tar -tf archivo.tar

Gzip es una abreviatura de GNU ZIP, un software libre GNU que reemplaza al programa compress de
UNIX, gzip fue creado por Jean-loup Gailly y Mark Adler. Apareci el 31 de octubre de 1992 (versin 0.1).
La versin 1.0 apareci en febrero de 1993.

Gzip se basa en el algoritmo Deflate, que es una combinacin del LZ77 y el Huffman. Deflate se
desarroll como respuesta a las patentes que cubrieron LZW y otros algoritmos de compresin y limitaba
el uso del compress. No se debe confundir gzip con ZIP, el cual no es compatible.

Gzip no archiva ficheros, slo los comprime. Debido a esto a menudo se usa junto con alguna
herramienta para archivar (popularmente tar).

Para hacer ms fcil el desarrollo del software que usa compresin, se cre la biblioteca zlib. Soporta el
formato de ficheros gzip y la compresin deflate. Esta librera se usa mucho porque es pequea, eficiente
y muy verstil. Gzip y zlib fueron implementadas por Jean-Loup Gailly y Mark Adler.

Desde finales de los noventa se ha producido algn movimiento de gzip a bzip2 que a menudo produce
archivos ms pequeos, aunque es ms lento. El formato de compresin zlib, el algoritmo deflate y el
formato gzip fueron estandarizados como RFC 1950, RFC 1951 y RFC 1952 respectivamente.

Normalmente, la extensin de los archivos gzipeados es .gz. El software de Unix a menudo se distribuye
como ficheros con extensin .tar.gz o .tgz, llamados tarballs. Son archivos empaquetados con tar y
comprimidos con gzip. Se pueden descomprimir con gzip -d fichero.tar.gz o desempaquetar con tar -xzf
archivo.tar.gz.
Hoy en da, cada vez se distribuye ms y ms software como fichero.tar.bz2 debido a las ventajas de la
compresin bzip2.

Su uso es el siguiente:

Comprimir: gzip -9 archivo


Descomprimir: gzip -d archivo.gz
Comprimir: bzip archivo
Descomprimir: bzip2 -d archivo.bz2

Nota: gzip bzip2 solo comprime archivos pero no directorios, ese es el objetivo de tar.

Para comprimir y archivar al mismo tiempo se debe utilizar tar y gzip o bzip2, de este modo:

Comprimir: tar -czfv archivo.tar.gz ficheros


Descomprimir: tar -xzvf archivo.tar.gz
Ver contenido: tar -tzf archivo.tar.gz

Comprimir: tar -c archivos | bzip2 > archivo.tar.bz2


Descomprimir: bzip2 -dc archivo.tar.bz2 | tar xv
Ver contenido: bzip2 -dc archivo.tar.bz2 | tar t

ZIP o zip en informtica son un formato de almacenamiento muy utilizado para la compresin de datos
como imgenes, msica, programas o documentos. ZIP es un formato de fichero bastante simple, que
comprime cada uno de los archivos de forma separada.

Comprimir cada archivo independientemente del resto de archivos comprimidos, permite recuperar cada
uno de los ficheros sin tener que leer el resto, lo que aumenta el rendimiento.

El problema, es que el resultado de agrupar un nmero grande de pequeos archivos es siempre mayor
que agrupar todos los archivos y comprimirlos como si fuera uno slo. ste ltimo comportamiento es el
del, tambin conocido, algoritmo de compresin RAR.

La especificacin de ZIP indica que cada archivo puede ser almacenado, o bien sin comprimir, o
utilizando una amplia variedad de algoritmos de compresin, sin embargo, en la prctica, ZIP se suele
utilizar casi siempre con el algoritmo de Phil Katz.

Su uso es el siguiente:

Comprimir: zip archivo.zip archivos


Descomprimir: unzip archivo.zip
Ver contenido: unzip -v archivo.zip

ARJ y LHA han sido muy utilizados en el pasado, por lo que es posible que an nos encontremos con
archivos comprimidos con ellos.
Su uso es el siguiente:

Comprimir: arj a archivo.arj archivos


Descomprimir: unarj archivo.arj
Descomprimir: arj -x archivo.arj
Ver contenido: arj -v archivo.arj
Ver contenido: arj -l archivo.arj

Comprimir: lha -a archivo.lha archivos


Descomprimir: lha -x archivo.lha
Ver contenido: lha -v archivo.lha
Ver contenido: lha -l archivo.lha

ZOO formato de compresin antiguo y poco eficiente. Binario comprimido.

Su uso es el siguiente:
Comprimir: zoo a archivo.zoo archivos
Descomprimir: zoo -x archivo.zoo
Ver contenido: zoo -L archivo.zoo
Ver contenido: zoo -v archivo.zoo

RAR es un formato de archivo con un algoritmo de compresin sin prdida utilizado para la compresin
de datos y archivacin, desarrollado por Eugene Roshal. La extensin de los archivos es .rar. El MIME-
Type es application/x-rar-compressed. RAR es ms lento que el ZIP pero comprime ms y tiene un
mayor sistema de redundancia de datos para prevenir errores.

RAR utiliza un algoritmo de compresin basado en el LZSS, que, a su vez, se basaba en el LZ77, de
James Storer y Thomas Szymanski (1982). La ventana de bsqueda puede variar entre 64k y 1 Mb. Rar
permite lo que se conoce como compresin slida que permite comprimir varios ficheros juntos, de forma
que una misma ventana de bsqueda se aplica a todo, con lo que el nivel de compresin es mayor.

Su uso es el siguiente:

Comprimir: rar -a archivo.rar archivos


Descomprimir: rar -x archivo.rar
Ver contenido: rar -l archivo.rar
Ver contenido: rar -v archivo.rar

También podría gustarte