Está en la página 1de 59

COMPRESION DE DATOS

TELECOMUNICACIONES FIEE
Ing. Luis Degregori C.
Problema: LA CANTIDAD DE INFORMACION
La información en las redes sigue aumentando con el tiempo, causando
saturación de los recursos de transmisión y conmutación, generando
congestión y esto causa retardos inadmisibles.
Ancho de banda requerido (Mbps)

Video

Sonido

Color

Imágenes Fijas
Gráficos
Texto y Números
Tiempo (Años)
Introducción
 La compresión es una representación mas
compacta de la señal digital, eliminando la
redundancia existente.
 Se busca minimizar el caudal de bits a
transmitir o almacenar, manteniendo una señal
de calidad.
 Las señales de audio y vídeo se comprimen,
debido a que contienen gran cantidad de
información redundante que en gran parte
puede eliminarse antes de su transmisión o
almacenamiento.
 Tambien existe información que requiere una
compresión de la señal pero sin perdidas.
CONCEPTOS GENERALES
La información transmitida se puede clasificar
de tres formas diferentes de comportamiento.
Relevante: Necesaria para la reconstrucción

precisa.
Irrelevante: Susceptible de descarte.

Redundante: Datos cíclicos clasificables con

precisión dentro de un conjunto de patrones


redundantes.
CONCEPTOS GENERALES
Entropía: información nueva o esencial, diferencia entre la
cantidad total de datos de un mensaje y su redundancia.

 Sin pérdidas reales: Transmite toda la entropía


del mensaje (la información básica e irrelevante)
pero eliminando la redundante.
 Subjetivamente sin pérdidas: Elimina la
información redundante y la irrelevante.
 Subjetivamente con pérdidas: Elimina cierta
cantidad de información básica. Reconstrucción
con errores perceptibles pero tolerables
(videoconferencia).
CONCEPTOS GENERALES
Con otro enfoque, la compresión de datos se puede
clasificar también en dos modelos diferentes.

 Reversible: Sin pérdida de datos (lossless), permite la


reconstrucción de datos originales . Se emplea en
cadenas de texto.
 Irreversible: Descarta parte de la información (less) que
resulta inapreciable a los sentidos de la vista y oído
humano. Irrecuperable el objeto original. Audio y video.
Aspectos básicos
 Un sistema de compresión consta de:
• Codificador
• Decodificador
 Donde estos pueden ser:
• Asimétricos
 El codificador es mucho mas complejo y lento que el
descodificador (p.e. vídeo sobre demanda)
• Simétricos
 Coste computacional similar (p.e. videoconferencia)
• Con pérdidas o irreversible
 Adecuada para medios continuos (audio y vídeo)
 Mayores tasas de compresión
• Sin pérdidas o reversible
 Adecuada para ficheros de datos, imágenes, etc.
 Tasas de compresión muy moderadas.
REDUNDANCIA

La compresión de datos es una aplicación donde


mejor se aprecian los conceptos desarrollados
por la Teoría de la Información, en especial el
de redundancia.

La información redundante presente en un


mensaje, significa que hay un número de
símbolos o caracteres mayor del mínimo
necesario y si se logra eliminar la redundancia,
entonces se habrá reducido el tamaño del
archivo.
AUTOINFORMACION
Mensajes de la misma longitud no llevan siempre
la misma cantidad de información, ya que ésta
depende de la probabilidad de tenga un
determinado símbolo que aparezca en el mensaje.

Si una fuente de información discreta emite una


secuencia de símbolos pertenecientes a un
alfabeto de N posibles símbolos s1, s2,......sN.

FUENTE S =(S1,S2,S3,S4,…..Sn)
AUTOINFORMACION

La probabilidad pi que se emita el símbolo


si permite cuantificar la información I que
lleva ese símbolo

(También llamada “Auto información”):

I = - log2 pi bits
Es el aporte de información de un Símbolo
ENTROPIA DE LA INFORMACION

La Entropía H de un mensaje es la información


promedio que lleva cada símbolo emitido por ese
mensaje, y no cada símbolo individual.

Concebido por Claude Shannon (1948) .- Dedujo


que:
“A mayor Entropía , mayor Información”.
ENTROPIA DE LA INFORMACION
Si la probabilidad de ocurrencia de un símbolo particular
no depende de que otro haya ocurrido antes (es decir
que la secuencia es estadísticamente independiente),
la entropía, viene dada por:
N

H = Σ (- pi .log2 pi) bits/símbolo


i=1

Esta Entropía, es la información promedio que lleva cada símbolo

Nótese que la información log2 pi de cada símbolo es


ponderada por la probabilidad pi de ocurrencia de dicho
símbolo.
ENTROPIA DE LA INFORMACION

Expresado en palabras, esto quiere decir que:

En promedio, podemos esperar de obtener H bits de


información por símbolo.

Pero no podemos saber por anticipado cuál será el


próximo símbolo y en consecuencia su información.
ENTROPIA DE LA INFORMACION

El valor máximo de H se alcanza cuando todos


los símbolos tienen la misma probabilidad de
ocurrencia y viene dado por:

H max = log2N

N: Numero de símbolos
ENTROPIA DE LA INFORMACION

Cuando la entropía es máxima cada símbolo lleva la


máxima cantidad de información posible.

Esto significa un símbolo binario (0,1) puede llevar al


máximo log22 = 1 bit de información.

Un símbolo ternario (0,1,2) puede llevar al máximo log23 =


1.6 bits de información

Un símbolo cuaternario (0,1,2,3) puede llevar al máximo


log24 = 2 bits de información.
ENTROPIA DE LA INFORMACION

Por ejemplo, si en un mensaje todos los 256 caracteres


ASCII fuesen igualmente probables de aparecer (p =
1/256) la entropía H de ese mensaje sería:

H = -log2 1/256 = 8 bits/carácter.


Pero usualmente eso no ocurre, por lo que la entropía de
ese mensaje podría ser, por ejemplo, de 6 bits/carácter.
MODELADO Y CODIFICACION

La compresión de datos, consiste en procesar un


conjunto de símbolos de entrada y transformarlos en un
conjunto de códigos.

Si la compresión es efectiva, el conjunto de salida tendrá


un tamaño menor que el de entrada.

La transformación de un símbolo en código se hace


mediante una regla o algoritmo basado en un modelo de
los datos de entrada.
MODELOS ESTADISTICOS

Estos modelos pueden ser divididos en 3


categoría principales, dependiendo de la forma
en que se vayan a determinar las
probabilidades relativas:

(1) fijos
(2) adaptables (2 pasadas)
(3) adaptables dinámicamente (1 sola pasada)
MODELO ESTADISTICO FIJO

El modelo fijo usa la misma estadística en cada caso.

Esta estadística representa un promedio obtenido a través


del análisis de un gran número de fuentes "típicas“.

No comprimen los datos tan bien como los otros, sin


embargo son más simples y rápidos.
MODELO ESTADISTICO FIJO
Por ejemplo, en un texto “típico” en español, la frecuencia
relativa de las letras puede ser la siguiente:

Letra Frecuencia relativa


E 0.1031
T 0.0796
A 0.0642
O 0.0632
I 0.0575
··············· ················ ·················
Q 0.0008
Z 0.0005

Cada valor en la tabla representa con buena aproximación la


probabilidad de que aparezca la letra correspondiente cuando se
está leyendo un texto en español típico.
MODELO ESTADISTICO
ADAPTABLE

Los modelos adaptables dinámicamente de 1 pasada,


en cambio, ajustan la estadística a medida que la
compresión avanza.

Tanto el codificador como el decodificador comienzan con


la misma estadística inicial usada para codificar (y
decodificar) los primeros símbolos.

Luego la estadística se va actualizando a medida que los


datos van siendo procesados.
MODELO ESTADISTICO
ADAPTABLE

Los modelos adaptables de 2 pasadas efectúan una


primera pasada sobre los datos para acumular estadística.

La segunda pasada comprime los datos usando códigos


basado en esa estadística.

Estos modelos de 2 pasadas comprimen muy bien, pero


tienen ciertas desventajas, ya que requieren mayor tiempo
de codificación.
CODIGOS DE LONGITUD VARIABLE

Técnica donde se asignan:

1. Códigos cortos a eventos que ocurren a


frecuentemente y
2. Códigos largos a eventos menos frecuentes.

Los sistemas que usan este principio son


conocidos también como codificadores de
entropía o estadísticos.
CODIGOS DE LONGITUD VARIABLE

Un ejemplo de códigos de longitud variable para las letras del alfabeto


se muestra en la tabla (donde se indican sólo algunos elementos).

En este ejemplo los símbolos de entrada pertenecen a un alfabeto de


28 símbolos y que los códigos de salida pertenecen a un alfabeto de 2
símbolos (dígitos binarios).

Letra Frecuencia relativa Código


E 0.1031 10
T 0.0796 001
A 0.0642 010
O 0.0632 0110
I 0.0575 11001
··············· ················ ·················
Q 0.0008 11110110
Z 0.0005 1111111111
Código de Shannon - Fano

Es el primer método bien conocido de códigos de longitud


variable.

Claude Shannon y Robert Fano, lo descubrieron casi


simultáneamente a principios de los años 50.

El método se basa en determinar la probabilidad de


ocurrencia de cada símbolo en un dado mensaje.

Con estas probabilidades se puede construir una tabla de


codificación que tiene varias propiedades interesantes:
Código de Shannon - Fano

En la tabla se muestra un ejemplo sencillo, utilizando


un alfabeto de 5 caracteres.

Simbolo Frecuencia Codigo


Relativa
1 0.4 00
2 0.2 01
…….. …… ……
3 0.2 10
4 0.1 110

5 0.1 111
Código de Hufman

La codificación Shannon-Fano fue desplazada por


otro método estadístico aún mejor: la codificación
Huffman – 1952

En la codificación Huffman los símbolos a codificar se


colocan primero en una tabla en orden decreciente de
frecuencia relativa de ocurrencia.
Los dos símbolos menos probables (s4 y s5) se funden
provisionalmente en un solo símbolo cuya probabilidad es
la suma de las dos (0.2).
Código de Hufman

De esta forma hay que codificar un alfabeto que contiene un


símbolo menos que el original.

Si pi pi pi pi
S1 0.4 0.4 0.4 0.6
S2 0.2 0.2 0.4 0.4
S3 0.2 0.2 0.2
S4 0.1 0.2
S5 0.1

REDUCCION
Código de Hufman

Repitiendo el proceso de reducción, se llega al punto en


que queda un alfabeto con sólo dos símbolos, a los cuales
se les empieza por codificar con 0 y 1 respectivamente.
Código de Hufman
Efectuando ahora el proceso en sentido inverso, se va
añadiendo un 0 y un 1 cada vez que un símbolo codificado
se expande en dos, hasta completar la codificación.
Código de Hufman
Huffman demostró que su codificación es óptima, en el
sentido que la longitud promedio L es mínima para un
modelo dado con cierta distribución de probabilidades.

En el ejem. que hemos ilustrado, se tienen

Si Pi
S1 0.4
S2 0.2
L = 2.2 dígitos/símbolo. S3 0.2
S4 0.1
S5 0.1
Código de Hufman
La codificación Huffman utilizando una estructura de
datos basada en árbol binario. Se muestra 2 posibles
árboles de Huffman para los 5 símbolos del ejemplo
visto anteriormente.
En la figura se muestran 2 posibles árboles de Huffman para los 5 símbolos
del ejemplo visto anteriormente.

0 10 110 1110 1111 00 01 10 110 111


Comparacion de Códigos
En la tabla comparativa entre el código Shannon-Fano , Huffman y Morse.
Se utilizan como ejemplo las letras del alfabeto, con la frecuencia relativa típica
que aparece en un texto en inglés (incluyendo el espacio).
Codificación Aritmética

Es otra codificación estadística muy


eficiente, se definen unos intervalos de
números entre 0 y 1 para los símbolos.
A mayor cantidad de símbolos, su
correspondiente intervalo será cada vez
menor.
Para mensajes largos su eficiencia es
cercana al 100%.
Codificación Aritmética

Los intervalos en esta técnica se definen


como:

Sn(inf) = Sn-1 (inf)+(Sn-1(sup) – Sn-1(inf))*Sn (inf)

Sn(sup) = Sn-1 (inf)+(Sn-1(sup) – Sn-1(inf))*Sn (sup)


Codigo Lempel Ziv (LZ77)

A fines de la década de los 70, sistemas de compresión


mayormente utilizaban modelos estadísticos, es decir:

Se lee un símbolo (o varios símbolos) y se codifica de


acuerdo a su probabilidad obtenida a partir de un modelo
estadístico.

Pero los matemáticos israelíes, Abraham Lempel y Jacob


Ziv, en 1977 presentaron método de compresión basado
en diccionario, consiguiendo tasas de compresión mas
altas.
Codigo Lempel Ziv (LZ77)
Descrito en el artículo "A universal algorithm for sequential
data compression" de la revista IEEE Transactions on
Information Theory (Mayo 1977).
Al diferencia de la codificación Huffman, la compresión
basada en diccionario no codifica símbolos individuales de
longitud fija en forma de códigos de longitud variable, sino
que codifica cadenas de símbolos, esto es secuencias de
longitud variable, por medio de códigos de longitud
prefijada.
Básicamente los que se hace es leer una cadena de
símbolos de entrada y se busca en un diccionario
guardado en memoria.
Código Lempel Ziv (LZ77)

Un diccionario de verdad contiene palabras, pero en LZ77


se manejan cadenas (Strings) de símbolos (por ejemplo
ASCII). por lo que son más bien frases y no palabras.

Los seres humanos estamos acostumbrados a una forma


de diccionario adaptable cuando realizamos la sustitución
de acrónimos en libros y revistas.

Así, la primera vez que mencionemos en un texto a la


Universidad Nacional de Ingeniería (UNI), se define tanto la
frase completa en el diccionario y su sustitución (UNI).
Código Lempel Ziv (LZ77)
Con la compresión adaptable, en vez de tener un
diccionario predefinido desde el mismo inicio de la
compresión, se empieza sin diccionario o con
un diccionario muy pequeño.

A medida que la compresión avanza, el algoritmo


añade nuevas cadenas para ser utilizadas
posteriormente como códigos.

La compresión basada en LZ77 es del tipo


adaptable y se caracteriza además por las
siguientes propiedades:
Propiedades: Código Lempel Ziv

 ES UNIVERSAL:
 En el sentido de que no se requiere conocer nada en
particular acerca de las características de los datos que se
quieren comprimir.

 OPERA SOBRE LA MARCHA:


 Con este algoritmo no se necesita determinar
previamente la estadística de esos datos, es decir que la
compresión se efectúa con una sola pasada sobre los
datos a comprimir.
Propiedades: Código Lempel Ziv
(LZ77)

 NO PRODUCE PÉRDIDA DE INFORMACIÓN:


 Por que los datos originales se recuperan completamente
en la descompresión, sin ningún tipo de error (siempre y
cuando, por supuesto, no haya habido errores durante el
almacenamiento en disco o durante la transmisión de los
datos comprimidos).
Código Lempel Ziv

En LZ77 el diccionario consiste de todas las


cadenas o frases existentes en una porción previa
del mensaje.

El método se basa en el reconocimiento de


cadenas de símbolos ya existentes en esa porción
previa del mensaje.

A este proceso se le conoce en inglés como


parsing y es análogo al análisis gramatical de una
palabra o frase.
Código Lempel Ziv
A medida que se va construyendo la cadena de
entrada, se comprueba si esa cadena ya existía en
la porción previa del mensaje.
Si se encuentra una concordancia (match), se
codifica como un puntero y se envía al flujo de
salida.
Si no es así, se envía a la salida otro tipo de
código.
El proceso se repite hasta codificar todos los datos
de entrada.
Código Lempel Ziv (LZ77)

Para entender mejor el proceso de codificación,


imaginemos que estamos viendo los datos de entrada
(alineados de izquierda a derecha) a través de una
ventana deslizante en la cual caben N símbolos.

Esta ventana es el diccionario dinámico.

Ventana Buffer

(N símbolos) (B símbolos)
Código Lempel Ziv (LZ77)

Ventana Buffer
(N símbolos) (B símbolos)

Los datos visibles en la ventana son los más recientes N


símbolos, que ya fueron codificados.

Los próximos símbolos a codificar se encuentran fuera de


la ventana, en un look-ahead buffer, de tamaño B, que
contiene los símbolos que han sido leídos del flujo de
entrada pero que todavía no han sido codificados.
Código Lempel Ziv (LZ77)
Cuando se consigue una coincidencia en la ventana, el
evento se puede representar mediante un código 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 término L indica la longitud de la cadena


encontrada.

El último P indica su posición con respecto al extremo


derecho de la ventana.
Código Lempel Ziv (LZ77)

Cuando no se consigue una coincidencia, se usa el


código 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 término C es el primer carácter o símbolo


en el buffer (para el cual no se encontró coincidencia).
Código Lempel Ziv (LZ77)

La descompresión (o decodificación) es el proceso inverso


al anterior:

Si la bandera F es 1, indica que el código corresponde a una


cadena conocida, así que se determina con ese mismo
código su longitud L y su posición P en la ventana.

A continuación 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 código.

Si la bandera F es 0, se extrae a la salida el carácter ASCII


que sigue a la bandera.
Codigo Lempel Ziv (LZ77)
La descompresión requiere mucho menos trabajo y es
mucho más rápida que la compresión, ya que no hay que
buscar coincidencias.

LZ77 es un sistema asimétrico: La rutina de compresión


es complicada y debe realizar bastante trabajo para cada
cadena que comprime.

En cambio, la rutina de descompresión es más simple.

Esta característica hace que LZ77 sea más apropiado para


datos que son comprimidos una sola vez, pero que son
descomprimidos muchas veces (por ejemplo los programas
que se distribuyen a través de discos o a través de
Internet).
Código Lempel Ziv (LZ77)
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


Tamaño:
redundancia que existe en patrones que se
153600 bytes (sin compresión)
repiten varias veces (archivos de texto,
52577 bytes (JPEG)
programas fuentes e ejecutables, bases de datos,
37044 bytes (PCX)
gráficas de computadoras), pero no27592
es bytes (BMP)
particularmente bueno para comprimir audio e
17770 bytes (LZ77)
imágenes digitalizadas. 10221 bytes (GIF)
8723 bytes (PNG)
Codigo Compresion LZ78 y LZW

En 1978 Ziv y Lempel describieron un segundo método de


compresión en el artículo "Compression of individual
sequences via variable-rate coding" de la revista IEEE
Transactions on Information Theory de septiembre 1978
y por tal razón posteriormente se le denominó compresión
LZ78.

Históricamente, LZ78 fue el primero de los algoritmos LZ


en hacerse popular, debido a su adaptación por parte de
Terry Welch en el algoritmo LZW y su posterior inclusión
en el programa COMPRESS utilizado bajo el sistema
operativo Unix.
Código Compresión LZ78 y LZW

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 símbolos previos, tal como se
hace en LZ77.

En vez de utilizar una ventana de tamaño limitado que se


desliza sobre los símbolos de entrada ya procesados,
LZ78 construye su diccionario a partir de todos los
símbolos de entrada ya procesados.
Código Compresión LZ78 y LZW

El diccionario de cadenas o frases se construye


añadiendo un solo símbolo a la vez a las
cadenas ya existentes.

Cada código contiene 2 componentes: la


posición de la cadena en el diccionario y el
carácter que le sigue.

Pero a diferencia de LZ77, la longitud no se


codifica, ya que el descompresor la puede
determinar por su cuenta.
Código Compresión LZ78 y LZW
Veamos un ejem. de cómo funciona el compresor, usando
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
vacía.

El primer carácter que se lee (esto es B) corresponde a una


cadena que todavía no existe en el diccionario.

Así que la cadena B se añade en el diccionario en la


posición 1 y se emite a la salida el código formado por
prefijo + extensión, en esto caso 0B.
Código Compresión LZ78 y LZW
BCBCACBCBCABCABCABACABCBC···

El siguiente carácter C tampoco existe en el diccionario y


se añade en la posición 2, emitiendo el código 0C.

Cuando se llega al tercer carácter, 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 todavía
no existe en el diccionario, por lo que se le añade y se
emite el código 1C, ya que 1 corresponde al índice en el
diccionario donde está guardado el carácter B.

A medida que avanza el proceso, se añaden al diccionario


cadenas cada vez más largas.
Código Compresión LZ78 y LZW
Secuencia de entrada: BCBCACBCBCABCABCABACABCBC···

Posición Contenido Código de


salida
0 nulo
Por ejemplo, si en la
posición 9 se guarda 3A, se
1 B 0B
puede saber que
2 C 0C corresponde a BCA ya que
3 BC 1C el prefijo 3 nos envía a la
4 A 0A posición 3 donde está la
5 CB 2B
extensión BC y el prefijo 1,
el cual nos envía a la
6 CBC 5C
posición 1 donde está la
7 AB 4B extensión A.
8 CA 2A
9 BCA 3A
Código Compresión LZ78 y LZW

Por su lado el descompresor puede recrear un


diccionario idéntico a partir de los códigos
recibidos, por lo que el método es muy
conveniente ya que no se necesita enviar el
diccionario al descompresor.

Recién en junio de 1984 debido a un artículo de


IEEE titulado "A technique for high-performance
data compression", escrito por Terry Welch, se
popularizo esta técnica.
FORMATOS DE COMPRESION
DE DATOS
Entre algunos de los conocidos tenemos:

SIN PERDIDAS:
 ZIP
 RAR (Roshal ARchive)

 CAB (Cabinet- nativo de Microsoft Windows).

CON PERDIDAS:
 JPEG (Compresión de Imagen)
 MPEG (Compresión de Video)

 WMA (Compresión de Audio)

También podría gustarte