Sie sind auf Seite 1von 112

CAPÍTULO 1: INTRODUCCIÓN A LA

COMPRESIÓN DE INFORMACIÓN
DEFINICIÓN COMPRESIÓN
JPEG y MPEG: estándares para representar imagen, video y audio. Algoritmos de
compresión de información se utilizan en estos estándares para reducir el número de
bits requeridos para representar la información.
Son las técnicas o métodos de representar la información de una manera compacta.
La compresión es necesaria debido a que el número de bits necesarios para
representar la información que se genera en la actualidad puede ser demasiado
grande.
DEFINICIÓN COMPRESIÓN
Un segundo de video sin comprimir necesita de 20MB a 160MB, utilizando el
estándar CCIR-601.
Dos minutos de música requieren 168 millones de bits.
La compresión ayuda a optimizar el uso de almacenamiento y recursos de red
Las necesidades de almacenamiento y transmisión incrementan dos veces mas rápido
que su mejora (Parkinson’s Law)
HISTORIA
Un ejemplo de compresión de datos antes de conocer el concepto formal fue el
código Morse.
Las cartas enviadas por telégrafo eras codificadas por puntos y guiones-
Samuel Morse notó que algunas letras se repiten mas a menudo que otras, por lo que
asignó secuencias mas cortas a las letras mas repetitivas como la e (.) y la a (.-) y
secuencias largas a letras menos frecuentes como la q(--.-) y la j(.---)
HISTORIA
Esta idea de utilizar códigos cortos para caracteres frecuentes, y códigos largos
para caracteres menos frecuentes es usada en la codificación de Huffman.
Otro ejemplo es el código Braille, este código utiliza la frecuencia de ocurrencia de
palabras en lugar de caracteres.
 En código Braille una matriz de puntos de 2 x 3 es utilizada para representar texto.
HISTORIA
Con la matriz de 2 x 3 tenemos 6 posiciones, y la letra representada depende de si
cada uno de estos 6 puntos están en relieve o planos, por lo que se tendrían 26 (64)
combinaciones.
26 de las combinaciones se utilizan para representar un solo carácter del alfabeto.
En Braille grado 2, las 34 combinaciones restantes se utilizan para representar
palabras comunes (ejemplos de palabras comunes en el ingles: and, for, the, etc.).
Una combinación se utiliza para indicar que el símbolo que sigue es una palabra.
HISTORIA
Con esto se permite que muchas palabras sean representadas por dos matrices de
puntos.
Estas modificaciones en conjunto con algunas contracciones de algunas palabras,
resultan en una reducción de espacio (o compresión) de aproximadamente 20%.
Estos son ejemplos de información con estructura estadística.
GENERALIDADES
El objetivo principal del campo de la compresión es buscar la mínima representación
de la información.
La modificación de un algoritmo para mejorar compresión en un 1% puede llegar a
significar 10% más de procesamiento.
CONCLUSIÓN
La compresión ayuda a representar la información de forma compacta reduciendo la
redundancia, esto es posible debido a que la información digital (sin comprimir) es
representada con cadenas de bits mas largas de lo necesario (ASCII)
MÉTODOS DE COMPRESIÓN
No adaptivo
Con/sin perdidas
En cascada
Por percepción
Simétrica
MÉTODO NO ADAPTIVO
No modifica operaciones, parámetros o tablas en relación con el tipo de información
que se está comprimiendo.
Este método es bueno para comprimir datos del mismo tipo.
Hacen un mal trabajo para comprimir un tipo de dato diferente.
En oposición un método adaptivo cambia de acuerdo al tipo de datos que se están
comprimiendo.
Métodos semi-adaptivos utilizan la metodología denominada de dos pasadas
(modelado y codificación).
MÉTODO DE COMPRESIÓN CON/SIN PÉRDIDAS
Ciertos métodos tienen pérdidas de datos, lo que significa que una vez comprimida
la información, no hay forma de obtener la secuencia original (audio, video,
imágenes).
Por otro lado, archivos de texto no pueden perder datos, ya que al cambiar un solo
bit se podría invalidar el archivo.
MÉTODO DE COMPRESIÓN EN CASCADA
Permite relacionar los métodos de compresión con pérdida y sin pérdida:
En codificación/compresión sin pérdidas, suponga que se tiene un archivo A ha sido
comprimido por un codificador X, este archivo comprimido se denomina B. Si a B se
lo pasa por otro codificador Z, se obtiene el archivo C. Si se realiza el proceso
contrario, al pasar el archivo por los decodificadores Z y X se obtendrá exactamente
el archivo A.
Esto no ocurre si se utiliza codificación/compresión con pérdidas, incluso es posible
que el decodificador X no pueda leer el archivo B decodificado por Z.
MÉTODO DE COMPRESIÓN DE PERCEPCIÓN
Cuando se eliminan datos que no pueden ser detectados por los sentidos de quien
vaya a escucharlos/verlos.
Por ejemplo frecuencias altas para humanos o detalles en las imágenes.
MÉTODO DE COMPRESIÓN SIMÉTRICA
El compresor y descompresor utilizan básicamente el mismo algoritmo pero en
direcciones opuestas. En un método de compresión asimétrico, uno de los dos, el
compresor o el descompresor, puede tener que realizar más procesamiento.
CÓDIGOS CON LONGITUD FIJA O VARIABLE
Dada la secuencia:
𝑎𝑏𝑎𝑟𝑎𝑦𝑎𝑟𝑎𝑛𝑏𝑓𝑎𝑟𝑎𝑟𝑓𝑎𝑎𝑎𝑟𝑏𝑎𝑤𝑎𝑦
podemos observar que tenemos 8 caracteres diferentes, para representar cada uno
de estos como binario debemos usar 3 bits, esto se conoce como longitud fija.
En la siguiente tabla tenemos un diccionario con códigos variables:
CÓDIGOS CON LONGITUD FIJA O VARIABLE
𝑎𝑏𝑎𝑟𝑎𝑦𝑎𝑟𝑎𝑛𝑏𝑓𝑎𝑟𝑎𝑟𝑓𝑎𝑎𝑎𝑟𝑏𝑎𝑤𝑎𝑦

 Calcular el promedio de bits por carácter (suma del número total de bits/número
caracteres)
 Calcular el número de bits con los que se representaría la cadena mencionada:
𝑎𝑏𝑎𝑟𝑎𝑦𝑎𝑟𝑎𝑛𝑏𝑓𝑎𝑟𝑎𝑟𝑓𝑎𝑎𝑎𝑟𝑏𝑎𝑤𝑎𝑦
RADIO DE COMPRESIÓN
𝑅𝑎𝑑𝑖𝑜 𝑑𝑒 𝑐𝑜𝑚𝑝𝑟𝑒𝑠𝑖ó𝑛 = 𝑡𝑎𝑚𝑎ñ𝑜 𝑐𝑜𝑚𝑝𝑟𝑖𝑚𝑖𝑑𝑜/𝑡𝑎𝑚𝑎ñ𝑜 𝑜𝑟𝑖𝑔𝑖𝑛𝑎𝑙
Calcular el radio de compresión para el ejemplo anterior.
TRABAJO EN CLASE
Realizar el trabajo en un archivo de Word llamado ejercicio1_apellido_nombre y enviar
al correo electrónico.
1. Para la siguiente tabla producir una cadena de bits lo más corta posible.

2. Utilizar 4 diferentes tipos de archivos (imagen, texto, audio, video) y comprimirlo


utilizando las herramientas disponibles en el computador y calcular el radio de
compresión.
DEBER
Consultar como funciona la codificación RLE para texto e imágenes, y explicarlas con
dos ejemplos.
Compresión RLE y
TÉCNICAS DE COMPRESIÓN de texto ad hoc
RLE: DEFINICIÓN
Codificación run-lenght: Compresión reversible, lo que quiere decir sin pérdidas.
Si un dato d aparece n veces consecutivas en el flujo de entrada, se cambian las n
ocurrencias con el par único nd.
Este tipo se codificación tiene aplicaciones en la compresión de texto y en la
compresión de imágenes.
RLE: EJEMPLO
2.⊔all⊔is⊔too⊔well –> 2.⊔a2⊔is⊔t2⊔we2 (Este ejemplo presenta ambiguedades)
Para resolver este problema es necesario agregar antes de cada repetición un
carácter especial (@). De esta manera la cadena 2.⊔a@2l⊔is⊔t@2o⊔we@2l puede
ser descomprimida sin ambigüedades.
Sin embargo, esta cadena es más larga que la original, ya que sustituye dos letras
consecutivas, con tres caracteres. Es necesario adoptar la convención de que sólo se
reemplacen por un factor de repetición, aquellos grupos compuestos por tres o más
repeticiones de un mismo carácter.
RLE: IMÁGENES
Una imagen digital, se compone de pequeños puntos llamados píxeles. Cada píxel
puede ocupar, uno o varios bits; con un bit, sólo se pueden representar dos colores
(normalmente blanco o negro); con n bits por píxel, el número de tonalidades
disponibles aumenta a 2n, colores o tonos de gris.
Los píxeles se disponen normalmente en el mapa de bits en líneas de exploración
(scan lines), de manera que el primer píxel del mapa de bits, es el punto situado en
la esquina superior izquierda de la imagen, y el último, es el situado en la esquina
inferior derecha.
RLE: IMÁGENES
La compresión de una imagen mediante RLE, se basa en la observación de que, al
seleccionar un píxel de la imagen al azar, existe una probabilidad muy alta de
encontrar otros adyacentes a él con el mismo color.
Si el bitmap comienza, e.g., con 17 pixeles blancos, seguidos de 1 pixel negro, 55
blancos, etc, entonces solo es necesario escribir, como datos de salida, los numeros:
17, 1, 55,. . .
El tamaño de la cadena comprimida, depende de la complejidad de la imagen. A
más detalle, peor compresión.
RLE EN IMÁGENES: EJEMPLO
Indicar cómo quedaría la compresión RLE de la siguiente imagen, tomando en cuenta
que el compresor asume que el bitmap empieza con un píxel blanco.
TEXTO AD-HOC: DEFINICIÓN
Compresión reversible, lo que quiere decir sin pérdidas
Se eliminan espacios que no necesariamente se ubican consecutivamente. Se
representa con 0 cada carácter que no es espacio, y 1 para los espacios
Ejemplo:
esto es una cadena
000010010001000000 seguido de estoesunacadena
COMPRESIÓN PREFIJA
Lista ordenada
Cada palabra se comprime eliminando n
caracteres iniciales que comparte con su
predecesora
Codificación
TÉCNICAS DE COMPRESIÓN mover al frente
DEFINICIÓN
La idea básica es tratar el alfabeto como una lista en la que los elementos se
ordenan alfabéticamente.
Un elemento e del diccionario se codifica con el número de elementos que lo preceden
en la lista. Ejemplo:
A = (a,d,e,f)
En esta secuencia, a la entrada e se codifica como 2, ya que esta precedida por dos
elementos. El método mover al frente consiste en colocar el elemento codificado al
inicio del diccionario para la codificación del siguiente elemento.
DEFINICIÓN
Supongamos que nuestro diccionario es el siguiente:
Símbolo a b c d m n o p
Código 0 1 2 3 4 5 6 7
La cadena de entrada es: dmacdom
sin aplicar mover al frente: C=(3,4,0,2,3,6,4)
promedio=3.14
aplicando mover al frente: C’=(3,4,2,4,3,6,4)
promedio=3.71
No se crea un buen resultado para esta entrada ya que la cadena de entrada no contiene
concentración de símbolos idénticos
DEFINICIÓN (CONT)
El método mover al frente es localmente adaptivo ya que se adapta a la aparición
de los elementos en la cadena de entrada.
El método funciona si existen símbolos repetitivos y la frecuencia es variable entre
símbolos.
Para decodificar se envían los números resultantes y el diccionario final.
EJERCICIOS
Usando el diccionario utilizado para el ejemplo anterior:
1) Calcular la codificación aplicando mover al frente y sin aplicar mover al frente de las
siguientes cadenas y calcular el promedio:
abcddcbamnopponm
abcdmnopabcdmnop
2) Decodificar (ponmdcba) (7777777776543210)
EJEMPLO DE CÓDIGOS DE TAMAÑO VARIABLE
VARIACIÓN DE MOVER AL FRENTE – AVANZAR -K
El elemento del diccionario que coincide con el símbolo actual se desplaza k
posiciones (no necesariamente llega al inicio del diccionario). El valor de k puede ser
especificado por el usuario. Para tener un buen rendimiento, el valor de k debe ser
mayor a 1 y menor al número de elementos del diccionario.
EJERCICIO
Utilizando el diccionario anterior, codificar las siguientes cadenas y calcular el
promedio:
abcddcbamnopponm
abcdmnopabcdmnop
para k = 1 y k = 2
SOLUCIÓN

Fuente: Salomon, D., Bryant, D. and Motta, G. (2007). Data compression. (Fourth ed.). London: Springer.
CAPÍTULO 2: COMPRESIÓN SIN
PÉRDIDAS
VISIÓN GENERAL – BASES MATEMÁTICAS
La Teoría de Información proporciona las bases matemáticas para realizar la
compresión de datos sin pérdidas.
Claude Elwood Shannon desarrollo la teoría de cuantificación de la información.
Shannon definió una cantidad llamada cantidad de información (I).

2
VISIÓN GENERAL – BASES MATEMÁTICAS
Supongamos que se tiene que transmitir de UIO a GYE el clima de quito y se tiene
los siguientes estados:

Mensaje Probabilidad
Soleado 1/4
Nublado 1/4
Lluvioso 1/4
Húmedo 1/4

3
VISIÓN GENERAL – BASES MATEMÁTICAS
Podemos representar cada mensaje utilizando 2 bits de la siguiente manera:

Mensaje palabra código


Soleado 00
Nublado 01
Lluvioso 10
Húmedo 11

4
VISIÓN GENERAL – BASES MATEMÁTICAS (CONT.)
Ahora supongamos que las probabilidades no son las mismas:

Mensaje Probabilidad
Soleado 1/4
Nublado 1/8
Lluvioso 1/8
Húmedo 1/2

5
VISIÓN GENERAL – BASES MATEMÁTICAS (CONT.)
En este caso sería mas eficiente utilizar un código más corto para el estado más
probable:

Mensaje palabra código


Soleado 1
Nublado 11
Lluvioso 110
Húmedo 0

6
VISIÓN GENERAL – BASES MATEMÁTICAS (CONT.)
Si se requiere enviar toda la cadena de mensajes <soleado, húmedo, lluvioso,
nublado>:
Con longitud fija necesitaríamos la cadena de 8 bits:
00111101
Con longitud variable necesitaríamos la cadena de 7 bits:
1011011

7
FUENTE DE INFORMACIÓN DE MEMORIA NULA
Cada símbolo que emite es estadísticamente independiente

𝑆 alfabeto de una fuente


𝑠𝑖 símbolo de una fuente
𝑞 número de símbolos de una fuente
𝑃(𝑠𝑖 ) probabilidad del símbolo 𝑠𝑖 de una fuente

8
CANTIDAD DE INFORMACIÓN
Supongamos que tenemos un evento A, que es un conjunto de salidas de un experimento
aleatorio. Si P(A) es la probabilidad de que el evento A ocurra entonces el valor de I
asociado con A se calcula como:
1
𝑖 𝑠𝑖 = log 𝑏 = − log 𝑏 𝑃(𝑠𝑖 )
𝑃(𝑠𝑖 )

La cantidad media de información por símbolo de la fuente es:


1
𝐻 𝑆 = 𝑆 𝑃(𝑠𝑖 ) log 𝑏 𝑃(𝑠𝑖 )

9
CANTIDAD DE INFORMACIÓN
Donde 𝑆 indica la suma extendida a q símbolos de la fuente S. A esta medida se
la conoce como entropía de la fuente.
Ejemplo:
Consideremos la fuente 𝑆 = 𝑠1 , 𝑠2 , 𝑠3 con 𝑃(𝑠1 )=1/2 y 𝑃(𝑠2 )= 𝑃(𝑠3 )=1/4
1 1 1 3
𝐻 𝑠 = log 2 2 + log 2 4 + log 2 4 = 𝑏𝑖𝑡𝑠
2 4 4 2

10
CANTIDAD DE INFORMACIÓN
Nótese que en la ecuación 1 no se ha definido el valor de la base b.
El valor de log(1)=0, y –log(x) crece a medida de x decrece de 1 a 0.
Por lo tanto si la probabilidad de un evento es baja , la cantidad de información del
mismo es alta.
La información obtenida de la ocurrencia de dos eventos independientes es la suma
de la cantidad de información obtenida de la ocurrencia de cada evento
individualmente.

11
CANTIDAD DE INFORMACIÓN
Suponga que A y B son dos eventos independientes, la cantidad de información
asociada a la ocurrencia de los dos eventos A y B es:
1
𝑖 𝐴𝐵 = log 𝑏
𝑃(𝐴𝐵)

𝑃 𝐴𝐵 = 𝑃 𝐴 𝑃 𝐵

1
→ 𝑖 𝐴𝐵 = log 𝑏
𝑃 𝐴 𝑃(𝐵)

12
CANTIDAD DE INFORMACIÓN
1 1
𝑖 𝐴𝐵 = log 𝑏 + log 𝑏
𝑃 𝐴 𝑃(𝐵)

𝑖(𝐴𝐵) = 𝑖(𝐴) + 𝑖(𝐵)

La unidad de medida de información depende de la base del logaritmo, si se usa


b=2, entonces la unidad es bits. Si se usa base e, entonces la unidad se denomina
nats. Si se usa b=10 la unidad es hartleys.

13
LOGARITMO EN BASE 2
Recordemos que:
log 𝑏 𝑥=a
significa que:
𝑏𝑎 = 𝑥
Por lo tanto para b=2
log 2 𝑥 = 𝑎 ⇒ 2𝑎 = 𝑥
En las calculadoras básicas se dispone de ln y log10

14
LOGARITMO EN BASE 2 (CONT)
Aplicando logaritmo natural (ln) a ambos lados de la última ecuación:

ln 2𝑎 = ln 𝑥
⇒ 𝑎 ln 2 = ln 𝑥
ln 𝑥
⇒𝑎=
ln 2

15
EJERCICIO 1
Sean c(cara) y s(sello) las salidas del lanzamiento de una moneda. Si la moneda es
equitativa:
1
𝑃 𝑐 =𝑃 𝑠 =
2
⇒ 𝑖 𝑐 = 𝑖 𝑠 = 1 𝑏𝑖𝑡
Si la moneda no es equitativa, sus probabilidades son diferentes. Supongamos:
1 7
𝑃 𝑐 = 𝑃 𝑠 =
8 8

16
EJERCICIO 1
⇒ 𝑖 𝑐 = 3 𝑏𝑖𝑡𝑠, 𝑖 𝑠 = 0.193 𝑏𝑖𝑡𝑠

De acuerdo a este resultado, la ocurrencia de cara me da mayor cantidad de


información. Mas adelante se verá como esto ayuda a decidir de que manera se
debe codificar la información

17
EJERCICIO 2
Considerando la siguiente fuente con sus probabilidades:

E A M N O R
0.30 0.25 0.15 0.15 0.10 0.05

Cual seria la cantidad de información de la palabra: AEREO


⇒ 𝑖 𝐴𝐸𝑅𝐸𝑂 = 𝑖 𝐴 + 𝑖 𝐸 ∗ 2 + 𝑖 𝑅 + 𝑖(𝑂)
𝑖 𝐴𝐸𝑅𝐸𝑂 = 13.11 𝑏𝑖𝑡𝑠

18
EJERCICIO EN CLASE
1) Suponiendo un dado equitativo (cualquiera de sus 6 lados tiene la misma
probabilidad), calcular la cantidad de información que se genera en cada
lanzamiento.
2) Calcular la información entregada por una letra entre 32 equi-probables y la
entropía de la fuente.
3) Dados 3 mensajes con las siguientes probabilidades: P1=20%, P2=50% y
P3=30%. Calcular la cantidad de información suministrada por cada uno de ellos y
la entropía de la fuente.

19
EJERCICIO EN CLASE
4) Sean F1 = {1, 2, 3, 4} y F2 = {2, 4, 6, 8} dos fuentes equi-probables
independientes. Sea una fuente (F) cuya salida es el mínimo común múltiplo de la
salida de las fuentes anteriores F = mcm(F1, F2) . Calcule la entropía de las fuentes
F1,F2 y F.
5) Una fuente de información S emite los símbolos {A, B, C, D ,E , F, G, H, I} con una
probabilidad P(A) = 1/3; P(B)= P(C) = P(D) = P(E) = P(F) =1/9; P(G) = P(H) =
P(I) = 1/27. Calcular la cantidad de información para el mensaje EFDCHIIDA

20
CODIFICACIÓN
1
DEFINICIÓN
Es la asignación de secuencias binarias a los símbolos de una fuente de información.
El conjunto de estos números binarios es llamado código y cada miembro individual
del set es llamado palabra código.
Por ejemplo, el conjunto de caracteres en escritura consta de 26 letras minúsculas, 26
mayúsculas y signos de puntuación.

2
DEFINICIÓN
El código ASCII para la ‘A’ es 1000001, para la ‘,’ es 0011010 para la ‘a’ es
1000010. Nótese que este código utiliza el mismo número de bits para todos los
símbolos del alfabeto.
Los códigos de longitud variable son aconsejados si se quiere reducir el número de
bits para símbolos mas frecuentes

3
CÓDIGOS CON DECODIFICACIÓN ÚNICA
El tamaño promedio del código no es el único punto importante a considerarse para
diseñar un “buen código”.
Suponga una fuente cuyo alfabeto consta de 4 términos de probabilidades: 𝑃 𝑆1 =
1 1 1
, 𝑃 𝑆2 = , 𝑃 𝑆3 = 𝑃 𝑆4 = . La entropía de esta fuente es 1.75 bits/símbolo.
2 4 8

4
CÓDIGOS CON DECODIFICACIÓN ÚNICA
El tamaño de longitud promedio para cada código esta dato por:
4

𝑙= 𝑃 𝑠𝑖 𝑛(𝑠𝑖 )
𝑖=1
Donde 𝑛(𝑠𝑖 ) es el número de bits para codificar el símbolo 𝑠𝑖 , l esta dada en
bits/símbolo

5
CÓDIGOS CON DECODIFICACIÓN ÚNICA
C es la terminología para denotar a un código S C0 C1
C es no singular si : S1 0 0
∀𝑠𝑖 ≠ 𝑠 ′ 𝑖 ∈ 𝑆 → 𝐶(𝑠𝑖 ) ≠ 𝐶(𝑠 ′ 𝑖 ) S2 01 1
C es de decodificación única si existe un solo algoritmo S3 10 00
con el que se puede decodificar siempre de una sola
forma. S4 0 11
tipo Singular No singular

6
CÓDIGOS CON DECODIFICACIÓN ÚNICA
Usando el código no singular decodifiquemos
01100

Este código puede interpretarse de varias maneras

0 1 1 0 0
S1 S2 S2 S1 S1

0 11 0 0
S1 S4 S1 S1

0 11 00
S1 S4 S3
7
CÓDIGOS CON DECODIFICACIÓN ÚNICA
S C0 C1 C2
S1 0 0 0
S2 01 1 10
S3 10 01 110
S4 0 11 111
tipo Singular No singular Decodificación
única

8
CÓDIGOS CON DECODIFICACIÓN ÚNICA
S C0 C1 C2 C3
S1 0 0 0 0
S2 01 1 10 01
S3 10 01 110 011
S4 0 11 111 0111
tipo Singular No Decodificación Decodificación
singular Única (1) Única (2)
l 1.125 1.25 1.75 1.875
El código 2 se llama código instantáneo, sabe cuando termina. A diferencia del código 3 que
sabe cuando termina solo cuando encuentra que otro empieza (casi instantáneo)

9
CÓDIGOS CON DECODIFICACIÓN ÚNICA
Mientras que las características de instantáneo o casi instantáneo son propiedades
adecuadas en un código, no se necesita que se cumpla esta propiedad para que se
tenga decodificación única
Considerando el código:

S C
S1 0
Decodificar la cadena: 011111111111111111 S2 01
S3 11

10
CÓDIGOS CON DECODIFICACIÓN ÚNICA (CONT.)
En esta cadena la primera puede ser 0 correspondiente a 𝑠1 , y también puede ser
01 correspondiente a 𝑠2 . No se puede saber cual es hasta decodificar toda la
cadena
Si tomamos como que el primer símbolo es 𝑠1 , los siguientes 8 pares de 1s serían 𝑠3 ,
pero al final nos queda un solo 1 que no corresponde a ningún código. Entonces
podemos saber que el primero en realidad corresponde a 𝑠2
Ciertamente este código no es instantáneo, sin embargo la cadena de ejemplo tiene
una decodificación única

11
CÓDIGOS CON DECODIFICACIÓN ÚNICA (CONT.)
En diccionarios pequeños es relativamente fácil darse cuenta si un código es de
decodificación única o no. Pero con diccionarios mas numerosos se debe seguir un
procedimiento sistemático

S C
S1 0
S2 01
S3 11

12
EJERCICIO EN CLASE
S C
S1 0
Para el siguiente código:
S2 01
S3 10

Usando la siguiente cadena, comprobar si el código tiene decodificación única:


01010101010101010

13
PREFIJOS
Suponga que se tienen dos palabras código en binario denominadas a y b, donde a
tiene longitud k y b tiene longitud n, y 𝑘 < 𝑛
Si los k bits de a son idénticos a los primeros k bits de b, entonces a es denominado
prefijo de b. Los últimos 𝑛 − 𝑘 bits de b, son denominados sufijo colgante.
Ejemplo: 𝑎 = 010 y 𝑏 = 01011, a es prefijo de b, y el sufijo colgante es 11

14
PREFIJOS
Para analizar un código de esta manera, primero se realiza una lista de todas las
𝑝𝑎𝑙𝑎𝑏𝑟𝑎𝑠 𝑐ó𝑑𝑖𝑔𝑜. Luego se examina cada par de palabras y se examina si una
palabra es prefijo de la otra. Cuando se encuentra este caso, se añade el
𝑠𝑢𝑓𝑖𝑗𝑜 𝑐𝑜𝑙𝑔𝑎𝑛𝑡𝑒 a la lista de palabras código, sin repetir los elementos de esta
lista. Se continúa haciendo esto hasta que una de estas dos cosas pase:
1. Se obtiene un sufijo colgante que es también palabra código
2. No hay más sufijos colgantes únicos

15
PREFIJOS
Si se obtiene la salida número 1, se puede concluir que el código no tiene
decodificación única.
Si se obtiene la salida número 2, el código tiene decodificación única.

16
EJEMPLO
Considere 𝐶 = 0,01,10
Entonces, la palabra 0 es prefijo de la palabra 01. El código quedaría 𝐶 =
{0,01,10,1}
En esta lista, la palabra 1 es prefijo de la palabra 10, el sufijo colgante en este
caso es 0. El 0 es una 𝑝𝑎𝑙𝑎𝑏𝑟𝑎 𝑐ó𝑑𝑖𝑔𝑜 por lo que se puede concluir que este código
no tiene decodificación única.

17
EJERCICIO EN CLASE
Determine si los siguientes códigos tienen decodificación única o no
(a)𝐶𝑎 = {0, 01, 11, 111}
(b)𝐶𝑏 = {0, 01, 110, 111}
(c)𝐶𝑐 = {0, 10, 110, 111}
(d)𝐶𝑑 = {1, 10, 110, 111}

18
CÓDIGOS LIBRES DE PREFIJOS
El tipo de código que no tiene posibilidad de no ser de decodificación única, es un
código que no tenga prefijos.
Un código en el que ninguna palabra es prefijo de otra se denomina
𝑐ó𝑑𝑖𝑔𝑜 𝑝𝑟𝑒𝑓𝑖𝑗𝑜.
Una manera simple de determinar si un código contiene prefijos es dibujando el
árbol binario.

19
CÓDIGOS LIBRES DE PREFIJOS (CONT.)
S C0 C1 C2 C3
S1 0 0 0 0
S2 01 1 10 01
S3 10 01 110 011
S4 0 11 111 0111

20
CODIFICACIÓN SHANNON-FANO
21
DEFINICIÓN
Primer algoritmo para construir un conjunto de los mejores códigos de longitud
variable
Al conjunto A se lo divide en 2 subconjuntos B y C que tienen las mismas ( o casi las
mismas) probabilidades
A todos los símbolos del conjunto B se les asignan códigos que comienzan con 0.
A todos los símbolos del conjunto C se les asignan códigos que comienzan con 1.
A cada subconjunto se le divide en dos partes con probabilidades casi iguales.
A los nuevos subconjuntos se les asignan 0 y 1 como a los subconjuntos padres B y C.
Se repite el procedimiento hasta que el subconjunto quede con solo dos símbolos.

22
EJEMPLO DE SHANNON-FANO

 𝐸𝑙 𝑡𝑎𝑚𝑎ñ𝑜 𝑚𝑒𝑑𝑖𝑜 𝑒𝑠: 0,25 × 2 + 0,20 × 2 + 0,15 × 3 + 0,15 ×


3 + 0,10 × 3 + 0,10 × 4 + 0,05 × 4 = 2,7 𝑏𝑖𝑡𝑠/𝑠í𝑚𝑏𝑜𝑙𝑜.
23
Fuente: Salomon, D., Bryant, D. and Motta, G. (2007). Data compression. (Fourth ed.). London: Springer.
EJEMPLO DE SHANNON-FANO (CONT.)
Es un buen resultado porque la entropía del código es: −(0,25 · log20,25 + 0,20 ·
log20,20 + 0,15 · log20,15 + 0,15 · log20,15 + 0,10 · log20,10 + 0,10 ·
log20,10 + 0,05 · log20,05) ≈ 2,67.

24
EJERCICIO EN CLASE
Repetir el ejercicio haciendo la primera división entre el tercer y cuarto elemento.
Calcule el tamaño medio del código y note la diferencia con el anterior

25
EJEMPLO SHANNON-FANO BALANCEADO

26
EJEMPLO SHANNON-FANO BALANCEADO
𝑙 = 0,25 × 2 + 0,25 × 2 + 0,125 × 3 + 0,125 × 3 + 0,125 × 3 +
0,125 × 3 = 2,5 𝑏𝑖𝑡𝑠/𝑠í𝑚𝑏𝑜𝑙𝑜
𝐻 = 2,5 𝑏𝑖𝑡𝑠/𝑠í𝑚𝑏𝑜𝑙𝑜

27
EJERCICIOS EN CLASE
Supóngase que el alfabeto de una fuente tiene cinco elementos con las
probabilidades 0.4; 0.35; 0.1; 0.1; 0.05 respectivamente. Construir un código
Shannon-Fano y determinar su longitud media.
Una fuente consta de un alfabeto de 7 elementos con probabilidades 0.25 ; 0.20 ;
0.15 ; 0.15 ; 0.10 ; 0.10 y 0.05 respectivamente. Construir el código Shannon- Fano
óptimo y justificar por qué lo es.

28
CODIFICACIÓN DE HUFFMAN
DEFINICIÓN
Es un método muy valorado en la compresión de datos.
Es similar a Shannon-Fano, pero en general produce mejores códigos.
Se basa en dos características necesarias para obtener un código prefijo óptimo:
 Los símbolos que ocurren más frecuentemente son asignados palabras código más cortas.
 Los dos símbolos con probabilidades más bajas tendrán palabras código de igual longitud.
Por lo tanto las palabras código diferirán en el último bit.
EJEMPLO

El primer paso es ordenar los símbolos de acuerdo a la probabilidad de ocurrencia.


EJEMPLO

La longitud promedio del código es: l = 0,4×1+0,2×2+0,2×3+0,1×4+ 0,1×4 =


2,2 bits/símbolo
EJEMPLO
Otra forma de construir el árbol de Huffman:
CÓDIGOS HUFFMAN CON MÍNIMA VARIANZA
Permite mejorar la eficiencia del código al colocar el símbolo combinado en la parte
más alta posible de la lista.
CÓDIGOS HUFFMAN CON MÍNIMA VARIANZA
La longitud promedio del código es de 2,2 bits/símbolo. Sin embargo la varianza en
la longitud de las palabras código es diferente. El siguiente ejemplo describe la
ventaja de tener una varianza menor:
Se transmitirán los símbolos de la fuente a 10000 símbolos/segundo por un canal
cuya capacidad es de 22000 bps. En recepción se tiene un buffer para retener los
bits por decodificar.
Si se tiene una cadena de símbolos a4 o a5 por varios segundos, significa que se
generarán bits a una tasa de 40000 bits por segundo. Por cada segundo el buffer
debe almacenar 18000 bits. Por otro lado con el segundo código el buffer debe
almacenar 8000 bits en esta condición.
CÓDIGO DE HUFFMAN EXTENDIDO

En aplicaciones donde el alfabeto de la fuente es grande, Pmax es generalmente


pequeño, por lo que diferencia entre la longitud promedio del código y la entropía
es pequeña.
Sin embargo en el caso opuesto, el valor de puede ser muy grande y el código
Huffman se vuelve ineficiente cuando es comparado con la entropía.
CÓDIGO DE HUFFMAN EXTENDIDO
Considerar la siguiente fuente S = 𝑎1 , 𝑎2 , 𝑎3 , con las siguientes probabilidades:
𝑃 𝑎1 = 0,8, 𝑃 𝑎2 = 0,02, 𝑃 𝑎3 = 0,18. La entropía de la fuente es de 0,816
bits/símbolo.
El código Huffman de la fuente quedaría de la siguiente manera:
CÓDIGO DE HUFFMAN EXTENDIDO
Un código de Huffman posee los siguientes límites con respecto al promedio de bits
por símbolo:
𝐻 𝑆 ≤𝑙 ≤𝐻 𝑆 +1
Para mejorar la codificación es posible generando una palabra código cada n
símbolos. Por lo tanto se tienen mn combinaciones de n símbolos.
CÓDIGO DE HUFFMAN EXTENDIDO
Por lo tanto los límites de l quedan de la siguiente manera:
𝐻 𝑆 𝑛 ≤𝑙 𝑛 ≤𝐻 𝑆 𝑛 +1
Donde l(n) es el número de bits necesarios para codificar n símbolos. Aplicando la
definición de entropía los límites quedan de la siguiente forma:
1
𝐻 𝑆 ≤𝑙≤𝐻 𝑆 +
𝑛
De esta manera se garantiza que la longitud promedio se encuentre más cerca del
valor de la entropía.
CÓDIGO DE HUFFMAN EXTENDIDO
Continuando con el ejemplo anterior:
CÓDIGO DE HUFFMAN EXTENDIDO
AL unir los símbolos es posible reducir la redundancia de los códigos de Huffman.
En el ejemplo anterior dos símbolos son agrupados para obtener una longitud
promedio cercana a la entropía. Esto significa que el tamaño del alfabeto crece de
m a m2.
Si las probabilidades de los símbolos son más disparejas, se requerirá agrupar más
símbolos para mejorar la longitud promedio. Esto provocará que el tamaño del
alfabeto crezca de manera exponencial, por lo que la codificación de Huffman se
vuelve impráctica.
CODIFICACIÓN DE HUFFMAN
ADAPTATIVO
DEFINICIÓN
Cuando no se conoce las probabilidades de los símbolos de la fuente, el código de
Huffman adopta dos nuevos pasos:

 En el primero se realiza el análisis estadístico


 En el segundo se realiza la codificación
Para describir el funcionamiento del algotirmo es necesario agregar dos nuevos
parámetros la árbol binario: el peso de cada rama y el número de nodo.
Se tendrán hasta 2n -1 nodos al momento de transmitir el mensaje.
DEFINICIÓN
La introducción de estos nuevos parámetros permite al árbol de Huffman mantener la
propiedad del sibling: Si se recorren los nodos de abajo hacia arriba y de izquierda a
derecha, los pesos de los nodos deben aparecen en orden no decreciente.
Ni el transmisor, ni el receptor tienen información acerca de las estadísticas de la
fuente al empezar la transmisión. Por lo tanto se tendrá un símbolo especial (NYT)
que tendrá un peso de cero.
Adicionalmente se tiene un código inicial para los nuevos símbolos.
EJEMPLO
La fuente es el alfabeto de 26 letras, y se transmitirá el mensaje [a a r d v a r k].
Por lo tanto el número de nodos es de 51.
EJEMPLO
EJEMPLO
DEBER
Desarrollar un diagrama de flujo para el código Huffman adaptativo.
Del ejemplo anterior decodificar la salida. Explicar el proceso.
APLICACIONES DEL CÓDIGO DE
HUFFMAN
COMPRESIÓN DE IMÁGENES SIN PÉRDIDAS
Se genera un código de Huffman a partir de los valores que tengan los pixeles de la
imagen. Por ejemplo, para imágenes monocromáticas se tendrán valores de 0 a 255.
COMPRESIÓN DE IMÁGENES SIN PÉRDIDAS
COMPRESIÓN DE IMÁGENES SIN PÉRDIDAS
Es posible mejorar la relación de compresión, utilizando la alta correlación que tiene
cada pixel con sus vecinos.
Se codifica la diferencia entre pixeles vecinos mediante el algoritmo de Huffman.
COMPRESIÓN DE TEXTO
En el caso de texto las probabilidades de cada letra son relativamente
estacionarias, lo cual facilita el uso de la codificación de Huffman.

Das könnte Ihnen auch gefallen