You are on page 1of 20

Algoritmos de Compresi n de Datos o

Juan Jos Ramrez Lama e juaramir@alumnos.ubiobio.cl


Universidad del Bo-Bo, Facultad de Ciencias Empresariales, Departamento de Sistemas de Informaci n, o Magster en Ciencias de la Computaci n, Chile o

Resumen El objetivo de este trabajo es presentar las t cnicas principales de come presi n de datos, presentando su esquema, algoritmos y ejemplos (en algunos o casos). En la compresi n de datos existen otras t cnicas y algoritmos aplicables o e tambi n a la multimedia (im genes, vdeo y audio), a los que com nmente se les e a u llama compresi n con p rdida, los cuales solo se mencionan en t rminos geo e e nerales, ya que el objetivo de este documento es dar a conocer y comprender de manera mas simple las t cnicas de compresi n sin p rdida, este tipo de datos e o e se basan en las repeticiones de secuencias que pueden ser resumidas o agrupadas para disminuir el peso de bytes del archivo nal. A pesar de eso, la compresi n o sin perdida no reduce considerablemente el tama o, ya que si hay pocas repetin ciones no es posible disminuir el tama o, Por lo cual, para esta categora existen n varias t cnicas distintas como los algoritmos predictivos, por diccionario, prejos e y aritm ticos, entre otros. Por lo anterior se ha optado por enfocarse en las t cnie e cas que se dedican a este tipo de datos (t cnicas de compresi n sin perdida), por e o lo que se le entregar al lector las referencias pertinentes para que, si lo desea, a pueda profundizar en las t cnicas de compresi n con perdida. Sin embargo las e o t cnicas de compresi n con p rdida, utilizan en la gran mayora de los casos, ale o e goritmos que son muy aplicados en la compresi n de texto. o Palabras Clave Compresi n, Compresi n de datos, Algoritmos de compreo o si n, Compresi n en el mundo real, Estructuras de compresi n. o o o

1.

Introducci n o
Seg n lo dene la RAE1 , compresi n es: u o

Denici n 1. o (i) Acci n y efecto de comprimir. o (ii) Esfuerzo a que est sometido un cuerpo por la acci n de dos fuerzas opuestas que a o tienden a disminuir su volumen. En Ciencias de la Computaci n o inform tica en general a la compresi n se le deo a o nomina compresi n de datos el cual se dene como [2]: o Denici n 2. La reducci n del volumen de datos tratables para representar una detero o minada informaci n empleando una menor cantidad de espacio. o
1

Real Academia de la Lengua Espa ola. n

En la actualizad existen una gran cantidad de algoritmos para la compresi n de datos, o los cuales son muy utilizados en archivos binarios, de texto e incluso multimedia. En particular las t cnicas de compresi n se dividen en 2 categoras generales: Compresi n e o o sin P rdida (ver Secci n 3) y Compresi n con p rdida (ver Secci n 4), ambas tienen un e o o e o enfoque muy preciso, la compresi n sin p rdida, es m s lenta y no disminuye mucho su o e a tama o, pero no se pierde informaci n, con lo que siempre se obtiene el dato original. n o En cambio, la compresi n con p rdida, elimina informaci n, haciendo que disminuya o e o bastante el tama o del original, pero no es posible reconstruirlo al 100 % del original, n este tipo de compresi n es muy popular en archivos multimedia. Ambas t cnicas se o e describir n y a lo largo del documento, y en algunos casos, con ejemplos. a Sin embargo, este trabajo se centra principalmente en la compresi n sin p rdida, o e por lo que la compresi n con p rdida, se presentar con el objetivo de guiar al lector a o e a la comprensi n de las t cnicas en estas areas, pero no se realizar una descripci n muy o e a o detallada ni algortmica. Este trabajo comienza con la Secci n 1, el cual introduce el tema tratado, luego en o la Secci n 2 se presenta todo lo referente a la compresi n de datos propiamente tal, para o o luego continuar en la Secci n 3 con el desarrollo de los principales temas relacionados o con la compresi n de datos sin perdida y posteriormente en la Secci n 4 introducir al o o lector en los conceptos claves para la compresi n de datos con perdida, Finalmente en o la Secci n 5 se concluye todo lo referente a este trabajo. o

2.

Compresi n de Datos o

Se utiliza la compresi n, para transmitir la misma cantidad de informaci n que ocuo o para una gran cantidad de bytes2 en un n mero inferior de bytes; es un caso particular u de la codicaci n, cuya caracterstica principal es que el c digo resultante tiene menor o o tama o que el original. La compresi n de datos se basa fundamentalmente en buscar n o repeticiones en series de datos para despu s almacenar solo el dato junto al n mero de e u veces que se repite. Ejemplo 1. Sea un archivo con una secuencia como AAAAAA, el que ocupa 6 bytes, este se podra almacenar simplemente como 6A que ocupa solo 2 bytes. 2.1. Algoritmos de Compresi n o

Como en el mundo real (salvo algunas im genes) es poco frecuente encontrar paa trones3 comunes que puedan resumirse (como en el ejemplo 1), existen m todos que e permiten realizar la compresi n, buscando agrupar secuencias de datos para reducir su o tama o, o tambi n realizando sustituciones con el mismo n, estos algoritmos pos si n e solos ya reducen la cantidad de bytes de informaci n, primero agrupando secuencias o de datos, luego asign ndoles valores binarios y luego en algunos caso aplic ndole otro a a m todo de compresi n, todo en busca de reducir el tama o de la informaci n, para que e o n o sea m s f cil y r pida su transmisi n y/o almacenamiento. Las principales t cnicas de a a a o e compresi n de datos se clasican en las siguientes categoras. o
2 3

1 byte = 8 bits. Elementos que se reiteran.

Algoritmos de Sustituci n: reemplazan una secuencia de caracteres por una m s o a corta. Algoritmos Prejos: examina los caracteres m s repetidos para luego codicar de a forma m s corta. a Basados en Diccionario: construyen un diccionario con los patrones encontrados, a los cuales se les hace referencia de manera posterior. Algoritmos Predictivos: intentan predecir el siguiente mensaje de la entrada en base a lo que se sabe de la entrada procesada en ese momento.

2.2.

Topologas de compresi n de datos [5] o

La topologa de compresi n de datos, es una s per clasicaci n de los algoritmos, o u o dentro de los cuales pueden existir algunas o todas las categoras mencionadas en la Secci n 2.1, esta clasicaci n permite organizar los algoritmos y/o t cnicas seg n su o o e u aplicabilidad, por lo cual, es posible que pueda pertenecer a m s de un grupo. a El estudio de compresi n se basa principalmente en tres tipos de codicaci n, seg n o o u la necesidad, pero aun as, esta clasicaci n se reduce a la que se presenta en la Secci n o o 2.3. Sin p rdidas reales: Transmite toda la entropa4 del mensaje (informaci n b sica5 e o a e irrelevante6 , pero eliminando la redundante7 ). Subjetivamente sin p rdidas: es decir, adem s de eliminar la informaci n redune a o dante se elimina tambi n la irrelevante. e Subjetivamente con p rdidas: se elimina cierta cantidad de informaci n b sica, e o a por lo que el mensaje se reconstruir con errores perceptibles pero tolerables. a

2.3.

Compresi n con o sin p rdida? o e

El objetivo de la compresi n es siempre reducir el tama o de la informaci n, sin o n o que afecte al contenido. Pero en algunos casos la compresi n puede afectar la calidad. o Compresi n sin p rdida: los datos antes y despu s de su compresi n son exactao e e o mente iguales. Una mayor compresi n solo implicar m s tiempo de proceso (uso o a a principal en la compresi n de texto) [4]. o Compresi n con p rdida: elimina datos para reducir a n m s el tama o, con lo o e u a n que se pierde calidad. Una vez realizada la compresi n, no se puede obtener la se al o n original (uso principal en im genes, vdeos y sonidos) [3]. a
4

5 6

Informaci n nueva o esencial, es la diferencia entre la cantidad total de datos de un mensaje o y su redundancia. Informaci n relevante. La que no es ni redundante ni irrelevante. o Informaci n que no podemos apreciar y cuya eliminaci n por tanto no afecta al contenido del o o mensaje. Informaci n repetitiva o predecible. o

3.

M todos de Compresi n Sin P rdida e o e

Los algoritmos de compresi n sin p rdida son tambi n llamado de Sustituci n, ya o e e o que la base de este tipo de compresi n (como se mencion en la Secci n 2) es reemplao o o zar la aparici n de una frase o grupo de bytes en una hoja de datos, haciendo referencia o a una aparici n anterior. o 3.1. Codicaci n Run-length (RLE) o

Este tipo de codicaci n es una de las m s simples de implementar y m s comunes, o a a en la que secuencias de datos con los mismos valores consecutivos son almacenadas como un unico valor m s su recuento. a Ejemplo 2. Sea la cadena de caracteres BAN AN AAAAAAAAAAAA, aplic ndole a la codicaci n RLE, quedara como 1B2AN 12A. Representando 17 caracteres en solo o 8 o lo que son 17 bytes en tan solo 8. La codicaci n mostrada en el ejemplo 2 es aplicable tambi n a datos binarios, o e cuyo caso es muy utilizado en el proceso de almacenamiento de im genes. Para el caso a binario, el primer byte contiene un n mero que representa el n mero de veces que el u u car cter est repetido y el segundo byte contiene al propio car cter, en el Algoritmo 1 se a a a presenta un m todo de ejemplo con el cual se puede realizar la compresi n Run-Length. e o Este tipo de codicaci n realiza una compresi n de datos sin p rdida y es muy o o e utilizado en im genes indexadas de 8 bytes o blanco y negro. No funciona tan bien en a im genes donde vara constantemente el color de los pixels como fotografas, aunque a JPEG lo utiliza de forma efectiva en los coecientes que quedan, despu s de transformar e y cuanticar bloques de im genes [14]. a Algoritmo 1.
p u b l i c s t a t i c String encode ( String source ) { StringBuffer dest = new StringBuffer ( ) ; / / recorremos l a cadena f o r ( i n t i = 0 ; i < source . length ( ) ; i++) { i n t runLength = 1 ; / / i n i c i a e l c o n t a d o r a 1 en cada iteracion / / comparamos s i e l c a r a c t e r d e l p a t r o n e s i g u a l a l siguiente w h i l e ( i+1 < source . length ( ) && source . charAt ( i ) == source . charAt ( i+1) ) { runLength++; / / aumentamos e l c o n t a d o r i++; / / avanzamos de p o s i c i o n } dest . append ( runLength ) ; / / a g r e g a e l c o n t a d o r a l s t r i n g dest . append ( source . charAt ( i ) ) ; / / a g r e g a e l c a r a c t e r a l string } / / imprimimos la c o d i f i c a c i o n f i n a l r e t u r n dest . toString ( ) ; }

3.2.

Codicaci n Preja o

Este es otro tipo de compresi n, distinta de RLE, el cual es aplicado com nmente a o u un c digo de largo variable, con la propiedad de prejo5 , es decir, ninguna palabra del o c digo debe ser prejo de cualquier otra palabra en el mismo c digo [6]. La codicaci n o o o Huffman es uno de los algoritmos para obtener c digos prejo, pero aun as, a los o c digos prejos, muchas veces se les llama c digos Huffman (Secci n [?]), incluso o o o cuando el c digo no se produjo con un algoritmo Huffman. o Usando c digos prejo, un mensaje puede transmitirse como una secuencia de palao bras de c digo concatenadas. El receptor puede descodicar el mensaje sin ambig edad, o u encontrando y quitando repetidamente los prejos que forman una palabra de c digo o v lido. Esto no es posible con c digos que no poseen esta propiedad de prejo [1]. a o Ejemplo 3. Sea un c digo con las palabras {0, 10, 11}, este posee la propiedad de o prejo, en cambio un c digo como {0, 1, 10, 11} no, porque 1 es prejo de tanto 10 o como de 11, con lo que un receptor que leyera un 1 al principio de una palabra de c digo no sabra si este, es el c digo completo 1, o simplemente el prejo del c digo o o o 10 o 11. La manera m s intuitiva para determinar si un c digo es o no Prejo, es realizando a o un arbol. En particular utilizando un arbol binario de cuatro niveles (en muchos casos no ordenado), es posible generar c digo de treinta palabras diferentes: dos palabras de o un dgito en el primer nivel (0 y 1), cuatro de dos dgitos es decir en el segundo nivel (00, 01, 10, 11), ocho de tres dgitos palabras en el tercer nivel, y diecis is palabras de e cuatro dgitos en el cuarto nivel. Diferentes tipos de arboles (con m s niveles, menos a niveles, ramas faltantes, etc) puede generar diferentes conjuntos de palabras clave [6]. En un prejo, ni una palabra de c digo puede ser un prejo de cualquier palabra de o c digo. Por lo tanto, sera de esperar que si se dibuja un arbol de c digo prejo, todas o o las palabras (c digo) se deben encontrar en los nodos hoja del arbol, como se puede o apreciar en la Figura 1, en cambio en la Figura 2, no todos los datos se encuentran en las hojas, lo que genera una codicaci n no preja. En ambos casos se ha codicado la o palabra ABCDE. Ejemplo 4. Utilizando el Arbol Binario de la Figura 1 y la cadena ACDEBACE, el mensaje se codica en: 0110111011111001101111. Sin embargo, es necesario transmitir junto a la codicaci n, el arbol, en este caso o el de la Figura 1, para que el decodicador pueda obtener el resultado, ya que al no utilizar un arbol binario ordenado, no es posible generar el resultado correcto. Importancia de ser prejo: Un c digo prejo, posee una unica interpretaci n posio o ble, en cambio, en un c digo no prejo, este puede codicarse en m s de una forma, o a generando ambig edad, ya que partes del c digo poseer n partes del mismo conjunu o a to al comienzo del elemento. Pero es necesario enviar la secuencia de valores para su decodicaci n. o
5

Delante de

Figura 1. Codicaci n Preja para la cadeo na ABCDE [6].

Figura 2. Codicaci n no-Preja para la o cadena ABCDE [6].

3.3.

Codicaci n de Huffman o

Como ya se mencion anteriormente, la codicaci n Huffman es un algoritmo usao o do para compresi n de datos, el cual utiliza una tabla de c digos de longitud variable o o para codicar un determinado smbolo. Utiliza un m todo especco para elegir la re e presentaci n de cada smbolo, el cual da lugar a un c digo prejo que representa los o o caracteres m s comunes usando las cadenas de bytes m s cortas, y viceversa. Huffman a a fue capaz de dise ar el m todo de compresi n m s eciente de este tipo: ninguna repren e o a sentaci n alternativa de un conjunto de smbolos de entrada produce una salida media o m s peque a cuando las frecuencias de los smbolos coinciden con las usadas para crear a n el c digo [7,8]. o El algoritmo es ahora probablemente el componente m s prevalente, utilizado en a los algoritmos de compresi n, es utilizado en GZIP, JPEG y muchos otros [1]. o T cnica B sica: Consiste en la creaci n de un arbol binario en el que se etiquetan e a o los nodos hoja, que contienen el smbolo de s mismo, junto al peso (frecuencia de aparici n) de los smbolos, y de forma consecutiva se van uniendo cada pareja de nodos o que menos frecuencia sumen, pasando a crear un nuevo nodo intermedio etiquetado con dicha suma. Se procede a realizar esta acci n hasta que no quedan nodos hoja por unir o a ning n nodo superior, y se ha formado el arbol binario. u Posteriormente se etiquetan las aristas que unen cada uno de los nodos con ceros y unos (hijo derecho e izquierdo, respectivamente) y se leen en preorden para clasicar la codicaci n de cada elemento [18]. Este algoritmo es mejor si las probabilidades de o los smbolos son potencias de 2. Compresi n: El algoritmo utiliza una construcci n simple utilizando una cola de priorio o dad, desde el nodo con menor probabilidad al nodo con m s alta probabilidad [9] como a se aprecia en el Pseudoc digo 1, el cual describe los pasos para realizar la codicaci n o o Huffman, cuyo ejemplo de aplicaci n se ve en la Figura 3. o

Pseudoc digo 1. o 1. Se crean varios arboles, uno por cada uno de los smbolos del alfabeto, consis tiendo cada uno de los arboles en un nodo sin hijos, y etiquetado cada uno con su smbolo asociado y su frecuencia de aparici n. o 2. Se toman los dos arboles de menor frecuencia, y se unen creando un nuevo arbol. La etiqueta de la raz ser la suma de las frecuencias de las races de los dos a arboles que se unen, y cada uno de estos arboles ser un hijo del nuevo arbol. a Tambi n se etiquetan las dos ramas del nuevo arbol: con un 0 la de la izquierda, y e con un 1 la de la derecha. 3. Se repite el paso 2 hasta que s lo quede un arbol. o Con el arbol que se genera, es posible conocer el c digo asociado a un smbolo, as coo mo obtener el smbolo asociado a un determinado c digo. o Una implementaci n de Huffman, se puede apreciar en el Algoritmo 2, donde se o presenta un m todo, el cual se encarga principalmente de generar el arbol, seg n lo e u presentado en el Pseudoc digo 1. o Algoritmo 2.
p u b l i c Huffman ( String frase ) { alfabeto = new ArrayList ( ) ; nodosAlfabeto = new ArrayList ( ) ; / / f i l a de p r i o r i d a d o r d e n a d a s e g u n c a n t i d a d de c a r a c t e r e s t h i s . filaPrioridade = new FilaDePrioridade ( frase ) ; / / l a r g o de l a f i l a de p r i o r i d a d t h i s . numSimbolos = t h i s . filaPrioridade . getSize ( ) ; f o r ( i n t i=0; i < t h i s . numSimbolos1; i++) { / / almacenamos l o s d a t o s de menor p r i o r i d a d en e l a r b o l NodoHuffman x = t h i s . filaPrioridade . extractMin ( ) ; NodoHuffman y = t h i s . filaPrioridade . extractMin ( ) ; / / s e suman l a s f r e c u e n c i a s de ambos NodoHuffman nodo = new NodoHuffman ( , x . frequencia + y . frequencia ) ; nodo . setEsq ( x ) ; / / agregamos x a l a i z q u i e r d a nodo . setDir ( y ) ; / / agregamos y a l a d e r e c h a / / i n s e r t a m o s e l nodo t h i s . filaPrioridade . insert ( nodo ) ; } }

Descompresi n: En t rminos generales, el proceso de descompresi n es simplemente o e o una lectura del arbol de manera preja a los valores de bytes individuales, por lo general se atraviesa el arbol Huffman nodo por nodo, ya que cada bit se lee desde la entrada (hasta alcanzar un nodo hoja, donde necesariamente termina la b squeda para que el u valor de byte en particular), pero s, requiere que el arbol sea reconstruido, es decir, el descompresor tambi n deber conocer el arbol [18]. e a

Figura 3. Frase tres tristes tigres codicada por medio de Huffman

Codicaci n Shannon-Fano: Esta es una t cnica relacionada a la de Huffman y su o e funcionamiento se presenta en el Algoritmo 2: [11] El algoritmo utilizado para crear los c digos de Huffman es de abajo hacia arriba, y o el de los c digos de Shannon-Fano es de arriba hacia abajo. o Shannon-Fano no siempre genera algoritmo prejos optimos, por esta raz n, se utio liza m s Huffman, ya que es similar en implementaci n, pero siempre obtiene c digos a o o prejos optimos. Pseudoc digo 2. Un arbol Shannon-Fano se construye de acuerdo a una especicao ci n dise ada para denir una tabla de c digos efectiva. o n o 1. Para una lista de smbolos dada, crear su correspondiente lista de probabilidades o de frecuencias de aparici n de manera que se conozca la frecuencia relativa de o ocurrencia de cada smbolo. 2. Ordenar las listas de smbolos de acuerdo a la frecuencia, con los smbolos de ocurrencia m s frecuente a la izquierda y los menos comunes a la derecha. a 3. Dividir la lista en dos partes, haciendo la frecuencia total de la mitad izquierda lo m s pr xima posible a la de la mitad derecha. a o 4. Asignar a la mitad izquierda el dgito binario 0, y a la mitad derecha el dgito 1. Esto signica que los c digos para los smbolos en la primera mitad empezar n o a con 0, y que los c digos de la segunda mitad empezar n por 1. o a 5. Aplicar recursivamente los pasos 3 y 4 a cada una de las dos mitades, subdividi ndolas en grupos y a adiendo bytes a los c digos hasta que cada smbolo se e n o corresponde con una hoja del arbol. En la Figura 4 se puede apreciar el esquema de divisi n de la frase tres tristes tigres, o el cual genera un arbol desde arriba hacia abajo y de derecha a izquierda (menor a mayor), esto permite comprender de forma gr ca el punto 3 del Pseudoc digo 2. En la a o

Figura 5 se ve el arbol generado de la codicaci n de la frase, siguiendo el Pseudoc dio o go 2.

Figura 4. Esquema de generaci n del arbol Figura 5. Arbol Shannon-Fano para la codio Shannon-Fano (pasos 1 3) para la frase caci n de la frase tres tristes tigres. o tres tristes tigres.

C digos Coma: Esta codicaci n tiene el prop sito de superar el inconveniente que o o o poseen los c digos Huffman y Shannon-Fano descritos anteriormente, esto es, que si se o pierde un bit o si se produce un error durante la transmisi n el receptor interpretar de o a forma err nea todos los datos. o Los c digos coma tratan de superar este inconveniente proporcionando una metoo dologa en la que si se producen errores de transmisi n, el receptor se recupere antes del o error. Para ello introducen un smbolo de separaci n entre dos caracteres consecutivos o [12]. Pseudoc digo 3. Primero se ordena el conjunto de smbolos fuente en orden decreo ciente seg n la probabilidad de aparici n. Luego, el algoritmo realiza los siguientes u o pasos: Al smbolo de mayor probabilidad de aparici n se le asigna un 1 (o un 0). o Al siguiente smbolo con mayor probabilidad de aparici n se le asigna la secuencia o 01 (o 10). Al siguiente smbolo con mayor probabilidad de aparici n se le asigna la secuencia o 001 (o 110). De esta forma se consigue que el 1 (o el 0) sirva como smbolo separador entre las codicaciones de dos smbolos. 3.4. Codicaci n Aritm tica o e

Esta es una t cnica totalmente distinta a las mencionadas anteriormente, en esta, no e es necesario que las probabilidades de los smbolos del alfabeto fuente sean potencias

de dos para obtener una eciencia optima (como los algoritmos de Huffman y ShannonFano). [11] En la codicaci n aritm tica no se asigna una palabra de c digo a cada uno de los o e o smbolos del alfabeto fuente como se hace en las t cnicas anteriormente vistas. En esta e t cnica lo que se hace es codicar una secuencia de entrada de smbolos del alfabeto e fuente mediante un n mero representado en punto otante [12]. u El proceso de codicaci n se basa en asignar a cada smbolo un intervalo (llamado o gama) entre 0 y 1, tal que la amplitud de cada intervalo sea igual a la probabilidad de cada smbolo y la suma total igual a uno [11]. Previamente es necesario establecer un orden entre los smbolos. No es necesario seguir ning n criterio especial para establecer un orden entre los smbolos del alfabeto u fuente, pero el orden establecido debe ser conocido por el decodicador para poder hacer una correcta decodicaci n en la recepci n [12]. o o T cnica Se le asigna a cada smbolo su propio rango de probabilidad unico, es posible e codicar un solo smbolo mediante un valor dentro de su rango. Codicaci n: La codicaci n de una determinada cadena de entrada se realiza seg n o o u se muestra el Pseudoc digo 4 [13]. o Pseudoc digo 4. o
limite_inferior = 0 limite_superior = 1 w h i l e ( haya simbolos que codificar ) { rango_actual = limite_superior limite_inferior limite_superior = limite_inferior + ( rango_actual * limite_superior_del_nuevo_simbolo ) limite_inferior = limite_inferior + ( rango_actual * limite_inferior_del_nuevo_simbolo ) }

Por ultimo se selecciona un valor dentro del intervalo del ultimo smbolo de la secuencia. Este valor representar la secuencia que queremos enviar. a Decodicaci n: El proceso de decodicaci n debe comenzar con un valor codicado o o que representa una secuencia. Por denici n, para una secuencia dada, el valor codio cado estar dentro de los lmites inferior y superior del rango de probabilidad de dicha a secuencia. Puesto que el proceso de codicaci n continuamente restringe los rangos, la o entrada codicada tambi n estar dentro del rango del primer smbolo codicado. Los e a sucesivos smbolos codicados se pueden decodicar deshaciendo el escalado que se aplica por cada nuevo smbolo [13]. Para realizar la decodicaci n de una determinada cadena de entrada se presenta el o Pseudoc digo 5 [13]. o Pseudoc digo 5. o
valor_codificado = entrada_codificada w h i l e ( la secuencia no este completamente decodificada ) {

identificar el simbolo que contiene a valor_codificado en su rango / / eliminar e f e c t o s del simbolo recien decodificado del valor codificado rango_actual = limite_superior_del_nuevo_simbolo limite_inferior_del_nuevo_simbolo valor_codificado=(valor_codificado limite_inferior_del_nuevo_simbolo ) / rango_actual }

En la decodicaci n hay que determinar bien cuando se debe parar de decodicar. Para o este caso se recomienda leer [13] donde se explican y ejemplican varias formas de realizar este procedimiento. Finalmente se menciona que existe de igual manera la Codicaci n Aritm tica con o e implementaci n entera, el que realiza una modicaci n en el c lculo de la probabilio o a dad, el cual queda determinada entre 0 y un cj (n mero total de ocurrencia de los u smbolos). 3.5. Codicaci n Basada en Diccionarios o

Como se mencion en la Secci n 2.1, existe una t cnica que genera un diccionario o o e de datos para desarrollar la compresi n. De este tipo, existen 2 clases principales que o se mencionan a continuaci n, las cuales fueron propuestas por Jacob Ziv y Lempel o Abraham en 1977 y 1978. LZ77 Este algoritmo es m s utilizado que LZ78, ya que tiene tantas decisiones de a dise o que cada uno es implementado de manera distinta a los dem s. Esto hace que no n a se puedan patentar o que se puedan saltar de una forma u otra las patentes actuales. El esquema LZ77 est basado en un seguimiento de los ultimos N bytes de datos a revisados, y cuando se encuentra una frase que ya se ha visto, genera una salida con un par de valores correspondientes a la posici n de la frase en la memoria, y la longitud de o la frase. En efecto, el desplazamiento del compresor es de un tama o jo sobre los datos, n con la parte de la posici n de la tupla (posici n, longitud) que se reeren a la posici n de o o o la frase. Los algoritmos m s utilizados son los derivados de la estructura LZSS descrito a por [James Storer y Szymanski Thomas en 1982] [11]. La diferencia principal es en la salida, LZ77 siempre da un desplazamiento, a n si la coincidencia era de un solo u byte (en cuyo caso usaban m s de ocho bytes para representar un byte) de manera que a el LZSS usa otro truco para mejorarlo: usa banderas (ags), que ocupan un solo bit y nos informan de lo que viene luego: una literal o un par desplazamiento/tama o y este n algoritmo es el que actualmente usamos, pero el LZSS es com nmente llamado LZ77, u as que lo llamaremos LZ77 de este punto en adelante, pero es importante recordar que tambi n puede ser llamado LZSS. LZSS tambi n puede usar arboles binarios o arboles e e de sujos para hacer b squedas m s ecientes. En esto el compresor mantiene una u a ventana de tama o N bytes y un buffer lookahead con contenidos a los que se les n intenta encontrar una coincidencia [10,11].

La descompresi n bastante sencilla, cada vez que una tupla (posici n, longitud) se o o encuentra, va a la posici n en la ventana de bytes y copia la longitud a la salida. En el o caso de recibir un literal, este es copiado tal cual a la salida [10,11]. Tambi n se ha desarrollado un algoritmo que combina las ideas detr s de LZ77 e a y LZ78, generando un hbrido llamado LZFG. Este algoritmo el mismo esquema que LZ77, pero almacena los datos en una estructura de datos trie modicada y produce como salida la posici n del texto en el trie [11]. o Los Compresores y archivadores m s populares (ARJ, LHA, zip, zoo) son variacioa nes del LZ77. LZ78 Este algoritmo est basado en esquemas que trabajan mediante la introducci n a o de frases en un diccionario y cuando ocurre una repetici n de una frase, se indexa al o diccionario en vez de a la frase. En particular este algoritmo divide la frase, seg n el u esquema de que cada frase es una de las anteriores m s un smbolo [4]. a Existen varios algoritmos de compresi n basados en este principio, pero dieren o principalmente en la forma en que manejan el diccionario, pero posee varios problemas de propiedad (patentes). El esquema m s conocido, es el de Terry Welch (LZW), que a dise o en 1984 para ser implementados en hardware de controladores de discos de alto n rendimiento [11]. Ejemplo 5. Sea la frase ababbabaaabaaabba. El algoritmo la divide y enumera: a b ab ba baa aba aa bb a 12 3 4 5 6 7 8 9

Como se mencion anteriormente: Cada frase es una de las anteriores m s un o a smbolo, con lo que obtenemos la codicaci n siguiente: o (0,a) (0,b) (1,b) (2,a) (4,a) (3,a) (1,a) (2,b) (1,) 1 2 3 4 5 6 7 8 9 Algoritmo Lempel-Ziv-Welch Este algoritmo de compresi n sin p rdida fue desarroo e llado por Terry Welch en 1984 como una mejora del algoritmo LZ78 desarrollado por Abraham Lempel y Jacob Zib. La clave del m todo LZW reside en que es posible crear el diccionario sobre la e marcha y de una sola pasada, y en una unica pasada un diccionario de cadenas que se encuentra dentro del texto a comprimir mientras al mismo tiempo se procede a su codicaci n (analizando y codicando). Dicho diccionario no es transmitido con el texto o comprimido, puesto que el descompresor puede reconstruirlo usando la misma l gica o con que lo hace el compresor y, si est codicado correctamente, tendr exactamente a a las mismas cadenas que el diccionario del compresor tena [1]. LZW se inicia con un diccionario de 4K, de los cuales se reeren a las entradas de 0 a 255 bytes individuales, y las entradas se reeren al 256 4095 subcadenas. Cada vez que un nuevo c digo generado mediante una nueva cadena ha sido analizado. Nuevas o cadenas se generan a adiendo el K car cter actual hasta el nal de una cadena existente n a w [10]. El algoritmo de compresi n LZW se puede apreciar en el Pseudoc digo 6. o o

Pseudoc digo 6. Se presenta el pseudoc digo para comprimir por medio de LZW: o o Dada una frasede un alfabeto de M letras.
Inicializar DICCIONARIO , asignando a cada letra un codigo de 0 a M1. String = primera letra de la frase w h i l e ( String != EOF ) { Character = siguiente caracter en la frase i f ( String+Character es una palabra del diccionario ) String = String+Character else{ / / g r e g a r a l d i c c i o n a r i o a s i g n a n d o l e un c o d i g o N no utilizado . agregar String+Character al DICCIONARIO String = Character } } Imprime String

Como se puede apreciar en el Ejemplo 6 y bas ndonos en el Pseudocodico 6, pria mero se ingresa los caracteres unicos que existan en la palabra, asign ndoles un c digo a o correlativo, luego se comienza a procesar car cter por car cter la palabra completa, a a tomando el primero y siguiente, para vericar si su concatenaci n, se encuentra o no o en el diccionario, de no encontrarse, se agrega, en caso de que si exista, se toma esa concatenaci n como el car cter actual y el siguiente (como se ve en ejemplo (ABA)), o a y as sucesivamente, nalmente se genera todo el diccionario y se codica la cadena seg n los valores del diccionario. u Ejemplo 6. Sea la palabra a Codicar: ABACABA String Char Diccionario C digo o A 0 B 1 C 2 A B AB 3 B A BA 4 A C AC 5 C A CA 6 A B AB AB A ABA 7 A Con lo que el resultado nal sera: ABACABA = 010230, j ndonos en la primera a columna String para su codicaci n. o 3.6. Algoritmos Predictivos

Como ultimo en el grupo presentado en la Secci n 2.1, est n los algoritmos predico a tivos, estos intentan predecir el siguiente mensaje de la entrada en base a lo que se sabe

de la entrada procesada en ese momento. Si el mensaje de la entrada coincide con el predicho la codicaci n se podr hacer con menos bytes. En caso contrario se har con o a a m s bytes (que permitan la sincronizaci n con el descompresor a la hora de mantener a o las mismas tablas internas; as ya no necesitamos incluirlas en el chero comprimido). Son adaptativos [10]. En consecuencia suelen ser m s r pidos que las t cnicas anteriores, tanto para coma a e presi n como descompresi n, y adem s no son difciles de programar (s su mejora). o o a Son muy malos cuando hay mucha redundancia, as que en la pr ctica se suelen usar en a conjunci n con otras t cnicas de compresi n para tratar los casos en que hay excesiva o e o redundancia (por ejemplo el Run-Length). De estos algoritmos existen dos m todos que desatacan y se describen a continuae ci n. o Predicci n por Coincidencia Parcial (PPM) Este algoritmo se basa en la predicci n o o para realizar la compresi n. Los modelos PPM usan un conjunto de smbolos previos o en el ujo de smbolos no comprimidos para predecir el siguiente smbolo en dicho ujo. Las implementaciones m s recientes de PPM se encuentran entre los mejores sisa temas de compresi n sin p rdida de texto en lenguaje natural. Es una t cnica adaptativa o e e estadstica. Funcionamiento: Las predicciones se reducen normalmente a rankings de smbolos. El n mero de smbolos previos, n, determina el orden del modelo PPM que se denota con u PPM(n). Tambi n existen variantes donde el contexto no tiene limitaciones de longitud e y se denotan como PPM*. Si no se puede realizar una predicci n basada en todos los n o smbolos del contexto, se realiza una predicci n con s lo n1 smbolos. Este proceso se o o repite hasta que se alcanza una coincidencia o no quedan m s smbolos en el contexto. a Es en ese punto donde se realiza la predicci n [16]. o Implementaci n: La selecci n del smbolo actual se guarda usando la codicaci n o o o aritm tica, aunque se puede usar la codicaci n Huffman o incluso alg n tipo de codie o u caci n por diccionario. El modelo PPM puede extender para predecir m ltiples smboo u los. Tambi n es posible usar o a adir modelados diferentes a los de M rkov. El tama o e n a n del smbolo es normalmente est tico, tpicamente un unico byte, lo que lo hace gen rico a e y f cil para el manejo de cualquier formato de chero [16]. a Compresi n de BurrowsWheeler (BWT) Tambi n conocida como compresi n por o e o ordenaci n de bloques, es un algoritmo usado en t cnicas de compresi n de datos como o e o bzip2. Fue inventado por Michael Burrows y David Wheeler en 1994. Cuando se transforma una cadena de caracteres mediante BWT, ninguno de sus caracteres cambia de valor. La transformaci n permuta el orden de los caracteres. Si o la cadena original contiene muchas subcadenas que se repiten varias veces, entonces la cadena transformada contendr m ltiples posiciones en las que un mismo car cter a u a est repetido varias veces en una la. Esto es util para la compresi n, ya que tiende e o a ser f cil comprimir una cadena que contiene secuencias de caracteres repetidos con a t cnicas como move-to-front transform y run-length encoding [1,17]. e

Este algoritmo es muy utilizado en la bioinform tica, donde que usan la transfora maci n de BurrowsWheeler para reducir la memoria necesaria para indexar el genoma o humano. En el Pseudocodigo 7 se aprecian los pasos para generar la tabla y rotaciones que se presentan en el Ejemplo 7. Pseudoc digo 7. o
function BWT ( string s ) crear una tabla donde las filas son todas las rotaciones posibles de s , ordenar las filas alfabeticamente r e t u r n ( ultima columna de la tabla ) function invertirBWT ( string s ) crear una tabla vacia repeat length ( s ) times Insertar s como una columna de la tabla antes de la primera columna de la tabla / / l a p r i m e r a i n s e r c i o n c r e a l a p r i m e r a columna ordenar las filas de la tabla alfabeticamente r e t u r n ( la fila que acabe en el caracter 'EOF ' )

Ejemplo 7. Sea @ el car cter de n de archivo y + el car cter de inicio. La transa a formaci n se realiza ordenando todas las rotaciones del texto en orden lexicogr co, o a y una vez realizadas todas las rotaciones, se selecciona la ultima columna para su compresi n con un algoritmo como RLE. o Transformaci n o Entrada Rotaciones Ordenadas Salida +BANANA@ ANANA@+B @+BANANA ANA@+BAN A@+BANAN A@+BANAN +BANANA@ NA@+BANA BANANA@+ BNN+AA@A ANA@+BAN NANA@+BA NANA@+BA NA@+BANA ANANA@+B +BANANA@ BANANA@+ @+BANANA Es posible re-generar el documento original a partir de la ultima columna de datos, con lo que no es necesario enviar la tabla original. En general, como se ve en el Ejemplo 7 este algoritmo, ordena m s que comprime a los caracteres, de forma que se creen secuencias repetidas, permitiendo as aplicar una alguna de las t cnicas de compresi n por agrupaci n como lo es RLE. e o o

4.

Algoritmos de Compresi n Con P rdida o e

A pesar de que esta investigaci n se centra en lo que es la compresi n de datos, se o o presentar de manera muy simple el concepto de Compresi n Con P rdida, o lo que a o e viene siendo la compresi n en multimedia (audio, vdeo e im genes). o a Se denomina algoritmo de compresi n con p rdida a cualquier procedimiento de o e codicaci n que tenga como objetivo representar cierta cantidad de informaci n utilio o zando una menor cantidad de la misma, siendo imposible una reconstrucci n exacta de o los datos originales. La compresi n con p rdida s lo es util cuando la reconstrucci n exacta no es ino e o o dispensable para que la informaci n tenga sentido. La informaci n reconstruida es solo o o una aproximaci n de la informaci n original. Suele restringirse a informaci n anal gio o o o ca que ha sido digitalizada (im genes, audio, vdeo, etc.), donde la informaci n puede a o ser parecida y, al mismo tiempo, ser subjetivamente la misma. Su mayor ventaja reside en las altas razones de compresi n que ofrece en contraposici n a un algoritmo de o o compresi n sin p rdida. o e Existen dos t cnicas comunes de compresi n con p rdida [15]: e o e Por c decs de transformaci n: los datos originales son transformados de tal forma o o que se simplican (sin posibilidad de regreso a los datos originales). Creando un nuevo conjunto de datos proclives a altas razones de compresi n sin p rdida. o e Por c decs predictivos: los datos originales son analizados para predecir el como portamiento de los mismos. Despu s se compara esta predicci n con la realidad, e o codicando el error y la informaci n necesaria para la reconstrucci n. Nuevameno o te, el error es proclive a altas razones de compresi n sin p rdida. o e En algunos casos se utilizan ambas, aplicando la transformaci n al resultado de la coo dicaci n predictiva. o 4.1. Compresi n de Im genes o a La compresi n de imagen puede ser: o Sin p rdida: Es la preferida para prop sitos de archivado, im genes m dicas, dibujo e o a e t cnico, clip art, o c mics. Se aplican com nmente algoritmos como Huffman, RLE e o u o el que m s se preere, el LZW, ya que es r pido y able, se utiliza en formatos a a universales como el GIF o el TIFF. Aunque no logra relaciones de compresi n muy o altas, normalmente ahorra un tercio del archivo. No nos detendremos en hablar de este tema, ya que se aplican los mismos m todos e antes mencionados. Con p rdida: Son especialmente adecuados para im genes naturales tales como e a fotografas en aplicaciones donde es aceptable una p rdida menor. e Compresi n de Im genes con P rdida Dentro de esta categora es universalmente o a e conocido por su ecacia el formato JPEG y otro muy utilizado en el manejo profesional de im genes es el m todo Fractal, los cuales se describir n a continuaci n. a e a o La compresi n basada en la geometra fractal consigue muy buenos ratios de como presi n y, en cierta manera, vectoriza las caractersticas de la imagen, de manera que o se pueda reconstruir la imagen a diferentes escalas. El principal inconveniente es la lentitud del proceso, debido a la gran cantidad de recursos que exigen los c lculos [19]. a

El sistema propuesto por el JPEG es una combinaci n de varias t cnicas que crea o e un archivo JPEG (o JPG) con un nivel de compresi n regulable capaz de reducir en o algunos casos el peso inform tico de la imagen a menos del 1 %. Se basa en un esquea ma de codicaci n por transformaci n. Particiona una imagen en bloques, calcula una o o transformada discreta del coseno (DCT) de cada bloque y los c digos de cada compoo nente DCT de acuerdo con un esquema de cuanticaci n en funci n de la magnitud del o o componente. La compresi n es mayor para los bloques que son constantes o tienen poo ca variaci n, ya que estos pueden ser descritos por s lo unos pocos componentes DCT o o [21]. Se puede ver que la Figura 6-a) (original) ha sido comprimida, obteniendo el resultado mostrado en la Figura 6-b), a simple vista no es apreciable el cambio o perdida en la imagen, pero haciendo un zoom a la misma, se puede apreciar el pixelado (Figura 6-c)), lo que demuestra que se ha perdido informaci n al realizarle la compresi n. o o Para profundizar m s en este tema se recomienda visitar [19]. a

a)

b)

c) Figura 6. a) Imagen Original, b) Imagen Comprimida y c) zoom a b)

4.2.

Compresi n de Vdeo o

La compresi n de vdeo es la reducci n de la cantidad de datos utilizados para repreo o sentar las im genes del vdeo digital. Es una combinaci n de compresi n de im genes a o o a y compensaci n de movimiento. La mayora de compresi n de vdeo con p rdida: preo o e domina la premisa de que gran parte de los datos antes de la compresi n no es necesaria o para lograr la calidad de percepci n deseada [15]. o El procedimiento consiste en analizar una secuencia de vdeo para que en lugar de transmitir todos los fotogramas consecutivos tan solo se codique un fotograma y la diferencia entre este y sus fotogramas cercanos, como se aprecia en el Ejemplo ??. Esto permite que en aquellas secuencias en las que la informaci n es muy redundante (o sea o existen muy pocas variaciones entre fotogramas consecutivos) se consigan factores de compresi n muy elevados, ya que la diferencia entre ellos es pr cticamente nula. La o a mayora de estas t cnicas de compresi n, que se utilizan en la actualidad no se basan e o tan s lo en la codicaci n de la diferencia entre fotogramas consecutivos, sino que lo o o que codican es la diferencia entre un fotograma y la predicci n del siguiente, lo cual o eleva mucho el c mputo del procesado y permite obtener a cambio un ujo de datos o mucho m s reducido y una imagen de calidad optima. a En la Figura 7 se presenta una secuencia de vdeo de una persona acerc ndose a a un pino, la compresi n, como ya se mencion , solo extrae la informaci n que cambia o o o

seg n la secuencia de im genes, dejando el resto sin cambios, obteniendo el resultado u a de la Figura 8, donde se puede utilizar la misma imagen del pino y solo hacer que la persona cambie de posici n seg n sea la secuencia. o u Para profundizar m s en el tema, se recomienda revisar [15]. a

Figura 7. Secuencias del vdeo por cuadro.

Figura 8. Secuencias del vdeo, manteniendo solo los cambios por cuadro.

4.3.

Compresi n de Audio o

Es una forma de compresi n de datos dise ada para reducir el requisito de ancho de o n banda de transmisi n digitales de se ales de audio y el tama o de almacenamiento de o n n archivos de audio. Los algoritmos de compresi n de audio se implementan en prograo mas llamados c decs. Muy rara vez la reducci n del tama o de los datos es por debajo o o n de 87 % de la original. En la compresi n tanto con p rdida y sin p rdida, la redundancia de informaci n o e e o se reduce, utilizando m todos como la codicaci n, reconocimiento de patrones y la e o predicci n lineal para reducir la cantidad de informaci n que se utiliza para representar o o los datos sin comprimir. Compresi n con p rdida: Se aprovechan las limitaciones del sistema auditivo huo e mano (margen frecuencial, umbral de audici n, enmascaramiento temporal y/o enmaso caramiento frecuencial) para comprimir los datos de audio. Usualmente se utilizan compresiones m ximas para transmisiones, especialmente cuando son servicios en directo a como telefona (telefona IP o celular) o reproducciones en directo como podcasting (radio por internet o programas de audio por internet) [20]. Compresi n sin p rdida: Se utilizan para minimizar el tama o del ujo de datos. o e n Para realizar esta codicaci n se utilizan algoritmos basados en la eliminaci n de la o o redundancia de la se al de audio, y por lo tanto en el grado de predictibilidad de la n informaci n. Si la se al tiene patrones repetitivos, este es redundante y por lo tanto o n f cil de predecir [20]. a Al igual que en casos anteriores para la compresi n sin p rdida, se aplican algoo e ritmos como codicaci n de Huffman, codicaci n aritm tica, Run Length Coding o o e (RLE). Para profundizar m s en el tema, se recomienda revisar [20]. a

5.

Conclusi n o

Como fue presentado en este documento, existen una clasicaci n general para los o distintos algoritmos de compresi n de datos, el primero es la Compresi n Sin P rdida, o o e el cual se centra en muchos casos, en la b squeda de patrones, aplicaci n de dicciou o narios o algoritmos aritm ticos, para su codicaci n. Estos algoritmos permiten que e o el dato sea reducido en tama o, para el prop sito que el usuario desee, otorgando la n o particularidad que al descomprimirlo, el dato resultante ser 100 % igual al original. a Los algoritmos m s emblem ticos en esta categora, son los Run Length Coding, coa a dicaci n de Huffman, codicaci n aritm tica y LZW (ver Secci n 3.1, 3.3, 3.4, 3.5 o o e o respectivamente). Estos algoritmos son aplicables a cualquier tipo de archivo, pero en el caso de los que requieren de patrones para la codicaci n, ser n menos ecientes, si o a no son archivos binarios o de texto, pero poseen la ventaja de que no se pierde informaci n en ning n caso. o u La otra categora de compresi n que existe es la Compresi n Con P rdida, esta o o e compresi n es muy utilizada en archivos multimedia (audio, vdeo, imagen), y existen o algoritmos especcos para cada tipo de dato, y seg n las necesidades realizan proce u dimientos y elecciones de que informaci n es o no relevante, eliminando la que no lo o sea, y as permitiendo una reducci n del tama o original del archivo. en esta clase de o n algoritmos, no es posible volver al dato original una vez se ha codicado, por lo que si se le aplicase muchas veces una t cnica de compresi n con p rdida a un dato, es poe o e sible llegar al punto en que se pierda totalmente la informaci n. Adem s, para reducir o a a n m s el tama o, algunos algoritmos, posterior a la codicaci n con p rdida, aplican u a n o e alguna de las t cnicas de la compresi n sin p rdida. e o e Como se mencion al principio, este documento se ha enfocado principalmente en o la compresi n de datos sin p rdida, pero de igual forma se gener un estudio de la o e o compresi n con p rdida, aunque no tan detallada, con el objetivo de enfocar al lector o e para una investigaci n m s detallada. Pero cabe decir que a los datos multimedia, es o a posible aplicarles una compresi n sin p rdida, solo que el dato no tendr un tama o o e a n considerablemente menor al original, ya que los datos multimedia, no siempre tienen una secuencia o patrones que puedan agruparse o su tama o original es demasiado n extenso. Pero esta t cnica en multimedia es bastante utilizada en casos, en los que es e necesario mantener los datos 100 % originales por motivos generalmente de respaldo o archivo. Finalmente decir que a pesar de que existan variados tipos algoritmos de compresi n, la gran mayora realiza una transformaci n que permita generar secuencias repetio o das de datos, para luego aplicarles alg n algoritmo de compresi n por agrupaci n como u o o RLE, el cual es aplicado en varios de los c digos presentados anteriormente, sobre todo o en compresi n de im genes binarias o en escala de grises, por su secuencia repetitiva o a de datos.

Bibliografa
1. Guy E. Blelloch (2010). Introduction to Data Compression. Computer Science Department, Carnegie Mellon University, blellochcs.cmu.edu. Extrado el 30 de Octubre de 2011 desde http://goo.gl/c8gAO

2. Debra Lelewer and Daniel S. Hirshberg. Data Compression. Originally appeared in Computing Surveys 19,3 (1987) 261-297. Extraido el 30 de Octubre de 2011 desde http://goo.gl/iALmr 3. (n.d.) Fundamentos de la compresi n de im genes. Laboratorio de Tratamiento Num ricos o a e de la Se al y de la Imagen. Revisi n: Jueves 30 de octubre 2003. Extrado el 30 de Octubre n o de 2011 desde http://goo.gl/w2Ylv 4. (n.d.) Algoritmos de compresi n sin p rdidas. Pagina Web Sobre Compresi n Inform tica o e o a (PWSCI). M todos Basados en Diccionario(3). Revisi n: 9 de marzo 2009. Extrado el 30 e o de Octubre de 2011 desde http://goo.gl/OhSk7 5. Francisco Jos Rico Compresi n de Fuente. Departamento de Ingeniera Telem tica, ETSET e o a de Barcelona, Universidad Polit cnica de Catalu a. Extrado el 30 de Octubre de 2011 desde e n http://goo.gl/cXztH 6. Kona Macphee (2000). Codes, trees and the prex property. +plus magazine, Numero 10. Revisi n: Enero 2000. Extrado el 31 de Octubre de 2011 desde http://goo.gl/lhggB o 7. Owen L. Astrachan (2004). Huffman Coding: A CS2 Assignment. Revisi n: Febrero 2004. o Extrado el 31 de Octubre de 2011 desde http://goo.gl/pvBYX 8. David A. Huffman A Method for the Construction of Minimum-Redundancy Codes. Proceedings of the I.R.E., Septiembre 1952, p gina: 1098-1102 Extrado el 31 de Octubre de 2011 a desde http://goo.gl/5sTjv 9. Antonio S nchez (2007). Algoritmo de Huffman. Repositorio de Antonio S nchez. Revision: a a Marzo 2007. Extrado el 31 de Octubre de 2011 desde http://goo.gl/jPILb 10. Odiseus Web Compresores. (n.d.). Revisi n: Junio de 2001. Extrado el 1 de Noviembre de o 2011 desde http://goo.gl/DAapp 11. Peter Gutmann. An Introduction to Data Compression. comp.compression faq (question 70). Extrado el 1 de Noviembre de 2011 desde http://goo.gl/qewOz 12. (n.d.) C digos de compresi n de la informaci n. www.isa.cie.uva.es. Extrado el 1 de Noo o o viembre de 2011 desde http://goo.gl/VobJt 13. (n.d.) Gui n de Practica n 5. (n.d.). Extrado el 1 de Noviembre de 2011 desde o http://goo.gl/mqpTA 14. Daniel Lemire. Run-length encoding. Daniel Lemires blog, Montreal, Canada. Revisi n: o Noviembre 2009. Extrado el 16 de Noviembre de 2011 desde http://goo.gl/3fOzt 15. Jos Miguel Perez V. Algoritmos de Compresi n de Video, Teora y Est ndares. Revisi n: e o a o Septiembre 2005. Extrado el 17 de Noviembre de 2011 desde http://goo.gl/O4zUJ 16. Mark Nelson. Arithmetic Coding + Statistical Modeling = Data Compression. Data Compression, Magazine Articles. This article rst appeared in the February, 1991 issue of Dr. Dobbs Journal. Extrado el 19 de Noviembre de 2011 desde http://goo.gl/vg8ne 17. Mark Nelson. Data Compression with the Burrows-Wheeler Transform. Data Compression, Magazine Articles. September, 1996 issue of Dr. Dobbs Journal. Extrado el 19 de Noviem bre de 2011 desde http://goo.gl/EWkLp 18. Daniel Mu oz. El Algoritmo de Huffman. El Blog de Daniel Mu oz, Revisi n: Julio 2010. n n o Extrado el 19 de Noviembre de 2011 desde http://goo.gl/ATH4h 19. Paulo Port. La compresi n de im genes. Que Sabes de, Revisi n: Mayo 2005. Extrado el 20 o a o de Noviembre de 2011 desde http://goo.gl/Sisco 20. (n.d.) C dec de audio. (n.d.), Revisi n: Julio 2011. Extrado el 20 de Noviembre de 2011 o o desde http://goo.gl/t0nFl 21. J. Angulo and J. Serra. Morphological coding of color images by vector connected lters. In IEEEProc. of the Seventh International Symposium on Signal Processing and Its Applications (ISSPA2003), Vol. 1, p. 69-72, Paris, France, July 2003. Extrado el 25 de Noviembre de 2011 desde http://goo.gl/LyzmB

You might also like