• Save
Data Compression Fundamentals (Spanish)
Upcoming SlideShare
Loading in...5
×
 

Data Compression Fundamentals (Spanish)

on

  • 448 views

Presentation about algorithms, data-structures and techniques for Data Compression

Presentation about algorithms, data-structures and techniques for Data Compression

Statistics

Views

Total Views
448
Views on SlideShare
448
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Data Compression Fundamentals (Spanish) Data Compression Fundamentals (Spanish) Presentation Transcript

    • Instituto Tecnológico de Costa RicaDepartamento de Ingeniería en Computación Compresión de Datos Prof. Aníbal Gómez-Estrada Algoritmos y Estructuras de Datos 2 - II Semestre 2010
    • Motivación•  Datos representados de forma “amigable” a programas: •  Código ASCII/UNICODE en datos textuales •  Código máquina en instrucciones •  Registros en programas de cualquier propósito •  “Amigable” NO es usualmente una representación compacta L•  Almacenamiento externo y transmisión de datos es cara L: •  En modem de 33.6 kbps, bajar imagen no comprimida (600K) = 142 s •  Comprimida SIN pérdida de datos (i.e. GIF) = 71 s •  Comprimida CON pérdida de información (i.e. JPG) = 12 s!•  Compresión ahorra espacio y reduce tráfico de red J! •  Útil cuando tiempo de [des]comprimir no es tan caro como el recurso•  ¿Para pasar el curso? L Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Introducción•  Algoritmo de compresión (y descompresión) convierte datos de “formato amigable” a “formato compacto” (y viceversa)•  Clasificados con respecto a la pérdida de información: •  Sin pérdida (lossless): dato descomprimido es idéntico al original •  Con pérdida (lossy): el dato es degradado en forma “permisible”•  Uso depende de la naturaleza de los datos y su empleo: •  Sin pérdida (lossless): •  Necesario en datos textuales, código ejecutable, etc •  Ni un bit se puede perder en este tipo de información! •  Con pérdida (lossy): •  Permisible al digitalizar señales analógicas(imagen, video, audio) •  Entre mayor el factor de compresión, más “ruido” agregan al dato Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Sin Pérdida de InformaciónCodificación Run-Length•  Archivos pueden repetir el mismo dato consecutivamente: •  En texto, el mismo carácter… •  En imágenes, el mismo pixel…•  La idea: compactar “corridas” adyacentes del mismo dato…•  Si sólo compactamos ceros, cada ocurrencia genera 2 datos: •  0: bandera que indica inicio de una corrida •  <contador>: cantidad de ceros adyancentes •  Si el tamaño de la “corrida” es mayor que dos, compacta! Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Sin Pérdida de Información (2)Codificación Run-Length (2)•  Existen diferentes esquemas de codificación Run-Length: •  Por bytes individuales o por grupos de bytes •  Sobre un carácter (como con el cero), varios o todos los caracteres•  En PackBits (Macintosh): •  Cada byte (8 bits, [0,255]) se reemplaza por 9 nueve bits ([-255, 255]) •  Por ejemplo, la secuencia 1,2,3,4,2,2,2,2,4 produce 1,2,3,4,2,-3,4 •  En la salida (comprimida): •  Número positivo indica el dato literalmente •  Número negativo (bit de signo encendido) indica una cantidad de veces consecutiva del dato anterior •  Por ejemplo: 4,-2 = 4,4,4 y 21,-4 = 21,21,21,21,21 Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Sin Pérdida de Información (3)Codificación Huffman•  En un archivo de ejemplo: •  Más del 96% usa 31 caracteres •  ¿Cómo aprovechar esto? •  ¿Se rinden?•  La idea: representar caracteresmás frecuentes con menos bits… •  Asignar código de 5 bits en caracteres más frecuentes reduce 5/8 •  Código 11111 indica que siguientes 8 bits es carácter NO frecuente •  En el ejemplo, el promedio de bits requerido por carácter original es: •  0.96x5 + 0.04x(5+8) = 5.32 J •  Un factor de compresión de (8)/(5.32) ~ (1.5):(1) Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Sin Pérdida de Información (4)Codificación Huffman (2)•  Códificación de Huffman lleva la idea anterior al límite: •  Entre más frecuente es el carácter, menor la cantidad de bits q ocupa •  En el ejemplo: al “espacio” le asigna 1 bit, 2 bits a los siguientes,3…•  Cómo empaca códigos de tamaño variable sin ambigüedad? •  Códigos que selecciona Huffman aseguran forma única de separar! •  [Alumno]: Profe, ¿y cómo así? •  [Profesor]: Pues, con mucho cuidado… Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Sin Pérdida de Información (5)Codificación Huffman (3)•  Cada código contiene dos partes: •  Una cantidad de 0s antes de un 1 •  Código binario opcional después del 1 •  Descompresión examina los bytes (bit por bit) de manera serial y va separando los códigos sin necesitar delimitadores•  Compresión genera tabla de códigos a partir de frecuencias: •  La tabla se incluye en el archivo pues se necesita al descomprimir •  [Alumno]: Profe, ¿y cómo genera los códigos? •  [Profesor, más serio]: Pues, con algoritmos y estructuras de datos J •  ¿Hechamos un vistazo? Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Sin Pérdida de Información (6)Codificación Huffman (4)•  El código Huffman se genera a de la tabla de frecuencias: •  En la hilera "beekeepers_&_bees“: •  Genera árbol binario a partir de la tabla de frecuencias: •  Las hojas corresponden a los caracteres •  Entre más profunda es la hoja, más largo su código Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Sin Pérdida de Información (7)Codificación Huffman (5)•  Construcción del árbol: •  Inicia con una lista de nodos generados a partir de la tabla de frecuencias) •  Nodos tienen contador y dato (carácter) •  WHILE(LENGTH(lista) > 1)) { •  Une los 2 nodos con menor contador } •  Listo! (lista[0] tendrá el árbol de Huffman) •  ¿Nos falta algo? •  ¿Y los códigos cómo los sacamos? Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Sin Pérdida de Información (8)Codificación Huffman (6)•  Asignación de códigos recorre el árbol: •  En cada descenso, concatena: •  0, si va por la izquierda •  1, si va por la derecha Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Sin Pérdida de Información (9)Compresión Lempel, Ziv y Welch – LZW•  Técnica popularmente usada: •  Incorporada como parte del formato de archivos TIFF y GIF •  Es base de otros algoritmos como DEFLATE (ZIP y PNG)•  Popularidad radica en Versatilidad y Simpleza: •  Factor de compresión es usualmente 2:1 (texto, código y similares) •  Crea la tabla de códigos sobre la marcha (en una única pasada)•  Si tabla de códigos se limita a 4096 entradas (12 bits): •  Compresión desde las entradas [256, 4096] Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Sin Pérdida de Información (10)Compresión Lempel, Ziv y Welch – LZW (2)•  Entradas [256, …] codifican secuencias de bytes: •  Entre más grande y repetida es una secuencia, mayor la compresión•  Existen dos grandes problemas por resolver: 1.  ¿Cómo determinar las secuencias que deberían estar en la tabla? 2.  ¿Cómo proveer la misma tabla usada al descomprimir?•  Al comprimir: •  Tabla al inicio tiene las primeras 256 entradas •  Primeros bytes serán “comprimidos” en 12 bits •  Sigue tratando de identificar secuencias repetidas •  Primera ocurrencia no se comprime •  Ocurrencias subsecuentes SI! Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Sin Pérdida de Información (11)Compresión Lempel, Ziv y Welch – LZW (3)•  Por ejemplo, en “the/rain/in/Spain/falls/mainly/on/the/plain”: Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Sin Pérdida de Información (12)Compresión Lempel, Ziv y Welch – LZW (4) •  Paso 7 no escribe en la salida pues intenta hacer “un match” más grande: •  Tan sólo acumula y se escribirá en el momento que NO haya match (Paso 4) •  Paso 9 escribe por si quedo algo… •  Secuencia se agrega a la tabla hasta que sus caracteres individuales se hayan agregado: •  Permite q descompresión reconstruya tabla desde datos comprimidos •  No hay necesidad de transferir la tabla J •  Ocurrencias subsecuentes SI! Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Sin Pérdida de Información (13)Compresión Lempel, Ziv y Welch – LZW (5)•  Descompresión realiza el proceso inverso (Old/New Code) Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Sin Pérdida de Información (14)Compresión Lempel, Ziv y Welch – LZW (6)•  Dificultad de LZW radica en manejo eficiente de memoria: •  Con fuerza bruta consume mucha memoria en la tabla de códigos •  Mucha redundancia en tabla de códigos •  No se sabe cuán grande será cada hilera de cada código•  Herramientas comerciales usan “trucos” para rendimiento: •  código(“ainl”)=278 se puede expresar como: •  código(“ain”)+“l” => (código(“ai”)+“n”)+“l” =>… •  Tiempo de ejecución acotado por búsqueda en tabla de códigos: •  Si no está ordenada => búsqueda compara hileras = O(n) •  Otras estructuras de datos optimizan problemas de memoria y tiempo •  Suffix Trees (Árboles de Sufijos)… Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Sin Pérdida de Información (15)Compresión Lempel, Ziv y Welch – LZW (7)•  ¿Hechamos un vistazo? J Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Sin Pérdida de Información (16)Compresión Lempel, Ziv y Welch – LZW (8)•  ¿Hechamos un vistazo? J Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Sin Pérdida de Información (17)Compresión Lempel, Ziv y Welch – LZW (9)•  Trie de Sufijos (Suffix Trie) Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Sin Pérdida de Información (18)Compresión Lempel, Ziv y Welch – LZW (10)•  Árbol de Sufijos (Suffix Tree) Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Con Pérdida de Información•  En procesamiento de señales digitales, muchos métodos •  Especializadas en tipos de datos particular (imágenes, audio, video) •  Tipos de datos donde cantidad de datos representados es grande: •  Cantidad de datos “se reduce” para producir efecto deseado •  Datos más pequeños a expensas de la calidad en la señal •  En JPG, compresión por transformación (Transform Compression)•  1. JPG separa la compresión en grupos de 8 pixeles - En blanco y negro: cada pixel es un número [0, 255] (escala de grises) - En color: podría ser RBG con tres números [0,255] (aunque en realidad se convierte a otro espacio de colores: (Y, Cb, Cr)) Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Con Pérdida de Información (2)•  Por tiempo/simplicidad pero sin pérdida de generalidad: •  Nuestro enfoque en compresión y en escala de grises…•  2. JPG aplica una transformada discreta del coseno (DCT) •  Antes de DCT, los valores centrados en cero (restar 128): [−128,127] •  Luego, representación “es movida” a un dominio de frecuencias… •  El objetivo: “Correlacionar” el valor de cada pixel con su grupo Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Con Pérdida de Información (3)•  2. JPG aplica una transformada discreta del coseno (DCT) •  A cada pixel, le aplica: •  Representa señal como onda de coseno •  Muestra (pixel) con amplitud en onda de coseno •  En imagen, muestras adyacentes varian poco: •  Bajas frecuencias en esquina superior-izq! •  NO introduce perdida, solo transforma dominio •  [0,0] coeficiente DC y el resto coeficientes AC Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Con Pérdida de Información (4)•  3. JPG realiza cuantización para reducir tamaño de imagen: •  El ojo humano es bueno distinguiendo pequeñas diferencias de color/ brillo en grandes áreas pero no tan bueno al distinguir cantidad exacta en variación de brillo en muestras con alta frecuencia… •  El objetivo: “Descartar” información NO significativos visualmente J •  En el dominio de frecuencia, cada componente se divide por una constante para ese componente (basado en tabla de cuantización): Ej: (-415/16) = -25.93 ~ -26 Q G B Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Con Pérdida de Información (5)•  3. JPG realiza cuantización para reducir tamaño de imagen: •  Tabla de cuantización especificada externamente (aplicación/usuario) •  Introduce pérdida de información L PEEERO… •  Habilita compresión •  4. JPG utiliza codificación por entropía para “empaquetar”: •  Coeficiente DC es como una medida del valor promedio de las 64 muestras •  Coeficiente DC se codifica como la diferencia con el del bloque previo •  Luego, los coeficientes AC se ordenan en una secuencia “zig-zag” •  Los coeficientes de alta frecuencia quedan adyacentes J! ¿Con qué objetivo? Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Con Pérdida de Información (6)•  4. JPG utiliza codificación por entropía para “empaquetar”: •  ¿Y que podemos hacer aquí? •  Paso 1: Codificación Run-Length comprime secuencias de ceros! •  Paso 2: Codificación Huffman comprime stream (“chorro”) de bits resultante! J•  5. “LISTO”! (Bueno, hay otros detalles pero no hay más tiempo ) Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Con Pérdida de Información (7)•  Compresión JPG: Resumen •  Descompresión realiza proceso inverso: Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Con Pérdida de Información (8)•  Compresión JPG: Resumen (2) COMPRESION Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Con Pérdida de Información (9)•  Compresión JPG: Consideraciones Finales •  La calidad de la imagen (compresión) puede ser seleccionada! •  Factores de compresión: 45:1, 10:1, etc •  Asociada con la cantidad de bits por bloque! Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Referencias1.  http://www.dspguide.com/ch27.htm2.  Drake Peter. Data Structures and Algorithms in Java. (Sección 17.2)3.  http://white.stanford.edu/~brian/psy221/reader/ Wallace.JPEG.pdf Motivación | Introducción | Sin Pérdida | Con Pérdida | Referencias Instituto Tecnológico de Costa Rica – Algoritmos y Estructuras de Datos 2 – Compresión de Datos – II Semestre 2010
    • Instituto Tecnológico de Costa RicaDepartamento de Ingeniería en Computación Compresión de Datos Prof. Aníbal Gómez-Estrada Algoritmos y Estructuras de Datos 2 - II Semestre 2010