COMPRESIÓN de DATOS
Transcripción
COMPRESIÓN de DATOS
COMPRESIÓN de DATOS Teoría de la Información curso 2005 Temario • Objetivo de la compresión • Principales funciones • A qué datos se puede aplicar? • Tipos de compresión • Modelos • Métodos sin pérdida (lossless compression) • Técnicas con pérdida más difundidas • Evaluación de similitud Teoría de la Información Compresión de Datos 1 Compresión de Datos Objetivo: Reducir la cantidad de datos necesarios para representar la información deseada Principales funciones : • Incrementar la capacidad de almacenamiento de los dispositivos • Aumentar el ancho de banda de los vínculos digitales de comunicación • Brindar adicionalmente encriptación de datos Datos originales Compresor Descompr. Datos decodificados canal de comunicación disp. almacenamiento Teoría de la Información Compresión de Datos Tipos de datos comprimidos • • • • • • • • • • • • Texto en lenguaje natural Código fuente y código objeto Imágenes (B/W, en escala de grises, color) datos numéricos gráficos datos geográficos – mapas de terrenos sonido – música datos binarios (Fax, etc.) video digital animaciones HDTV (High Definition TV) etc. Teoría de la Información Compresión de Datos 2 Tipos de Compresión Algoritmos sin pérdida (lossless - noiseless compression) ¾ • Los datos obtenidos luego del proceso de compresióndescompresión son idénticos a los originales no hay distorsión de los datos • La longitud media del código no puede ser menor que la Entropía • Tasas de compresión: 2:1 (texto) a 4:1 (imágenes) Algoritmos con pérdida (lossy compression) ¾ • Es posible desechar algunos datos no relevantes, para reducir aún más el tamaño de los datos hay cierta distorsión de la información • La Entropía ya no se considera cota inferior de la longitud media • Tasas de compresión: 4:1 a 32:1 (imág.fijas) o mucho más (video, etc.) Teoría de la Información Compresión de Datos Modelo de probabilidades ¾ Estático (+) requiere una sola pasada sobre los datos (+) no se debe transmitir / almacenar la distribución ( -) la distribución usada puede diferir de los datos reales ¾ Semi-estático (+) la codificación se adapta a la distribución de los datos ( -) requiere dos pasadas ( -) se debe transmitir / almacenar la distribución ¾ Dinámico (+) requiere una sola pasada (+) la codificación se va adaptando a la distribución real ( -) algoritmo y estructuras de datos más complejas Teoría de la Información Compresión de Datos 3 Modelo - Codificador Mensaje original símbolo probab. MODELO código Codificador Mensaje codificado símbolo puede usar estadística de orden 0, 1 ó más puede ser estático, semi-estático o dinámico Esquema dinámico o adaptativo: Mensaje original Leer símbolo de entrada Modelo Teoría de la Información Mensaje codificado Codificar Actualizar modelo Compresión de Datos Técnicas de Compresión sin pérdida • Shannon, Fano • Huffman (estático-semiest.) • Huffman Dinámico (FGK) • Codificación Aritmética • Algoritmos Lempel - Ziv • Run - Lenght Teoría de la Información con pérdida • Run- Lenght con pérdida • JPEG (standard) • VQ (Cuantificación Vectorial) • Codificación Fractal • DPCM (codif. diferencial) • MPEG (audio/video) Compresión de Datos 4 Algoritmos sin pérdida (LOOSLESS) • Métodos de compresión estadísticos (codifican un símbolo de la fuente por vez) • Esquemas basados en diccionario (codifican cadenas de símbolos de la fuente) Teoría de la Información Compresión de Datos Algoritmo de Huffman P(A) = 0.4 P(B) = 0.3 P(C) = 0.2 P(D) = 0.1 P(A) = 0.4 P(B) = 0.3 P(C,D) = 0.3 P(B,C,D) = 0.6 P(A) = 0.4 P(A,B,C,D) = 1 1 0 1 A 0 1 Árbol de codificación de Huffman B 0 C 1 D Se puede utilizar un modelo estático o semi-estático Teoría de la Información Compresión de Datos 5 Huffman Dinámico – FGK (1) (Faller, Gallager, Knuth) • Cada nodo tiene asociado un peso (frecuencia) • Ante cada codificación se verifica la Propiedad de Sibling: si los nodos se listan en orden de peso menor a mayor, de abajo hacia arriba y de izquierda a derecha, todos los nodos deben aparecen adyacentes a su hermano en la lista Ejemplo: Árbol In: “a” Out: “a” In: “b” Out: 0 “b” 1 Ø 2 0 1 Ø 0 1,a 1 1 1,a 0 Lista Ø 1 Ø 1 1 Ø a 1,b Ø 1 1º) codificar 2º) actualizar el árbol 1 b 1 2 a Teoría de la Información Compresión de Datos Huffman Dinámico – FGK (2) Out: 0 1 In: “b” Se intercambian los nodos en conflicto : 3 3 0 1,a 2 0 2,b Ø 2 2 b 1 1 2,b 1 0 1 Ø 0 1 3 1 Ø 1,a Ø 1 a a 1 2 3 b No cumple la propiedad de “sibling” El decodificador funciona de manera similar (algoritmo simétrico) Teoría de la Información Compresión de Datos 6 Codificación Aritmética (1) Mensaje número en el intervalo [0,1) Ejemplo: mensaje ‘b a a c’ 0 0.2 0.4 a 0,2 b a a b b c 0,2032 b c 0,6 a 0,2096 0,248 0,44 c 1 0,2 0,216 0,28 0,6 0.4 0,2 0,2 c 0,28 Codificación del mensaje: cualquier número en el rango [0,2096 , 0,216) 0,216 Rango = lim.superior – lim.inferior Nuevo lim.inferior (simb)= lim.inferior + rango * prob.acum. inferior (simb.) Nuevo lim.superior (simb)= lim.inferior + rango * prob.acum. superior (simb.) Teoría de la Información Compresión de Datos Codificación Aritmética (2) Problemas: • La operación de contracción del intervalo requiere alta precisión • No se puede enviar el mensaje hasta completar la codificación • Dificultad del decodificador para determinar el fin del mensaje Soluciones de implementación: • Se usa aritmética entera en lugar de punto flotante • Se aplica transmisión incremental (cuando los límites comienzan a tener dígitos en común) • Fin del mensaje: se utiliza un símbolo especial de EOF (con prob.<< o se indica, previo al mensaje, la longitud (en esq. semi-estáticos) El decodificador funciona de manera similar (algoritmo simétrico) Se puede aplicar también sobre modelos dinámicos Teoría de la Información Compresión de Datos 7 Algoritmos LZ (Lempel-Ziv) Codificación de Diccionario Æ cadenas de elementos de longitud variable • • • Código: puntero a una cadena coincidente ya procesada Ventana finita (LZ77) o infinita (LZ78) Existe una gran cantidad de variantes de cada uno (LZ77: LZSS, LZB, LZH, … - LZ78: LZW, LZC, LZT, LZMW, LZJ, LZFG) a b b a c c a b b a a b ... • El compresor es más lento (costo de búsqueda del mejor matching) que el descompresor (sólo debe recuperar la cadena dada por el puntero) => algoritmo asimétrico • Los compresores compress, arc, pkzip, arj, GIF se basan en LZ Teoría de la Información Compresión de Datos LZ 77 Utiliza ventana finita o corrediza N N–F (ya procesados) F (a procesar) Puntero: <i,j,a> Inicio de la cadena longitud primer símbolo diferente Se busca el matching más largo en la ventana de símbolos procesados Ejemplo: a b aa bac ab bc a <0,0,a> <0,0,b> <2,1,c> <4,3,EOF> Teoría de la Información Compresión de Datos 8 LZ78 (1) LZW Æ Es una variante de LZ78, publicada por Welch (1984) • Elimina el símbolo al final del puntero Æ pasa a integrar la frase siguiente • Comienza con el diccionario pre-cargado con los símbolos individuales • Cada vez que se codifica se agrega una nueva frase al diccionario Ejemplo: ¨a b a c a b a c a¨ codific. salida agrega 1 2 3 a b c ab ba ac ca aba a b a c ab 1 2 1 3 4 4 5 6 7 8 ac 6 9 a 1 pre-cargadas aca ____ Teoría de la Información Compresión de Datos LZ78 (2) La descompresión requiere: • Leer nro.frase y decodificarla, buscando la cadena de símbolos asociada • Agregar nueva frase al diccionario (última cadena decodif.+ 1º símb. cadena actual) Ejemplo: 1213461 entrada salida agrega 1 2 3 a b c pre-cargadas 1 2 1 3 4 a b a c ab 4 5 6 7 ab ba ac ca 6 ac 8 aba 1 a 9 aca Problema de LZ: llenado del diccionario Enfoques de solución Æ vaciado y re-inicio / comportamiento estático Teoría de la Información Compresión de Datos 9 Run Lenght Coding (RLC) Codificación: secuencia de pares (símbolo, longitud) longitud = cantidad de valores iguales a símbolo consecutivos Especialmente usado para imágenes Ejemplo: c1 c1 c1 c1 c2 c2 c1 c1 c1 c3 (c1, 4) (c2,2) (c1,3) (c3, 1) Æ Conviene fijar una longitud mínima de corrida y utilizar un bit de flag para indicar si sigue un par codificado (1) o un símbolo original (0) Imágenes B/W: secuencia de cantidad de blancos y negros alternados (inicia el ´0´ por convención) Ejemplos: 0 0 0 1 1 0 0 0 0 0 1 3 2 5 1 11000011100 02 4 Teoría de la Información 3 2 Compresión de Datos Algoritmos con pérdida (LOOSY) Teoría de la Información Compresión de Datos 10 Run-Lenght con pérdida Codificación: ( valor, longitud ) valor es la intensidad del primer pixel de la secuencia se considera un factor de toleracia (calidad de la imagen) secuencia de símbolos: tono - tol ≤ valor ≤ tono + tol Ejemplo: 10 10 12 8 8 9 54 54 55 56 50 50 120 123 121 119 120 tolerancia = 5 (10 , 6) ( 54 , 6 ) ( 120 , 5 ) Teoría de la Información Compresión de Datos Standard JPEG - compresión JPEG (Joint Photographic Experts Group) Imagen Original DCT Cuantización Codificación de Entropía Imagen Comprimida Transformada discreta del coseno (DCT) : DCT(i, j) = N −1 N −1 1 ⎡ (2x +1) ⋅ i ⋅π ⎤ ⎡ (2 y +1) ⋅ i ⋅π ⎤ ⋅ c(i) ⋅ c( j) ⋅ ∑∑( pixel ( x, y) ⋅ cos⎢ ⎥⎦ ⋅ cos⎢⎣ 2 ⋅ N ⎥⎦ ) 2⋅ N ⎣ 2⋅ N x=0 y =0 Cuantización : ValorCuantizado ( i, j ) = Codificación de Entropía : ⎧ 1 ⎪ C ( x) = ⎨ 2 ⎪1 ⎩ si x = 0 si x ≠ 0 DCT ( i, j ) Quantum ( i, j ) Según factor de calidad codificación Huffman o aritmética y RLC para secuencias de ceros Teoría de la Información Compresión de Datos 11 Standard JPEG - descompresión La decodificación consiste en el proceso inverso (algoritmo simétrico) Decodif. de Entropía Imagen Comprimida Decuantización DCT inversa Imagen Reconstruida Decodificación de Entropía : decodificación Huffman o aritmética y RLC Decuantización : Valor DCT ’( i, j ) = Valor cuantif.( i, j ) * Quantum ( i, j ) Anti-transformada : pixel ( x, y ) = N −1 N −1 ⎛ 1 ⎡ ( 2 y + 1) ⋅ i ⋅ π ⎤ ⎞ ⎡ ( 2 x + 1) ⋅ i ⋅ π ⎤ ⋅ ∑∑ ⎜ c (i ) ⋅ c( j ) ⋅ DCT ( x, y ) ⋅ cos ⎢ ⎥⎦ ⋅ cos ⎢⎣ ⎥⎦ ⎟ 2⋅ N 2⋅ N 2 ⋅ N i =0 j =0 ⎝ ⎣ ⎠ Teoría de la Información Compresión de Datos Standard JPEG - ejemplos Imagen original Imágenes descomprimidas factor 5 – (10:1) Teoría de la Información factor 15 (16:1) factor 25 (20:1) Compresión de Datos 12 Cuantificación Vectorial (VQ) Se codifican bloques de n x n pixeles (vectores) como un índice a una tabla de vectores representativos (codebook) Formar el codebook: selección inicial de vectores representativos de la imagen fase de optimización (LBG) comprimir la imagen: codebook + conjunto de índices que representan cada uno de los bloques de la imagen Algoritmo LBG Imagen Original Establecer Particiones (codificación) Codebook Inicial Calcular distorsión Є Є< Umbral si Imagen Comprimida no Obtener centroide Teoría de la Información Compresión de Datos Cuantificación Vectorial (VQ) Decodificación: leer codebook por cada índice del archivo codificado • • Acceder al índice en el codebook Recuperar el vector correspondiente factor 12:1 Teoría de la Información => Procesos asimétricos factor 30:1 Compresión de Datos 13 Compresión Fractal (1) Fractal: imagen con propiedades de autosimilitud Helecho de Barnsley Pueden ser generados por funciones matemáticas o a partir de un conjunto de transformaciones afines (rotaciones, cambios de escala, desplazamientos) copo de nieve de Koch Set de Mandelbrot Teoría de la Información Compresión de Datos Compresión Fractal (2) Problema : resolver el proceso inverso (dada una imagen → encontrar el conjunto de transformaciones que la describen) • Propuesta de Barnsley →Teorema del Collage: establecer particiones de la imagen y determinar auto-similitudes (semi-automático) • Propuesta de Fisher → correspondencia entre bloques rangos y dominios considerando transformaciones afines (automático) Dominios Rangos w1 w2 w3 w4 transformaciones afines (+) las tasas de compresión pueden ser muy altas ( -) la búsqueda de transformaciones convenientes es muy costosa Teoría de la Información Compresión de Datos 14 Descompresión Fractal Es un proceso iterativo mucho más veloz que la compresión (=> procesos asimétricos) • Se aplica a partir de cualquier imagen inicial • La imagen generada por la aplicación de las transformaciones es imagen inicial de la siguiente iteración Iteración 0 Iteración 1 Iteración 2 Iteración 3 ……. Iteración 10 Teoría de la Información Compresión de Datos Compresión de sonido Compresión sin pérdida: 80 60 40 20 • LZSS + Huffman 0 -20 1 -40 • Codificación diferencial -60 -80 Se codifica cada valor como la diferencia con respecto a la muestra anterior Compresión con pérdida: • Codificación de silencios valores de silencio = cero ± tolerancia se codifican como corrida de nulos (RLC) Teoría de la Información Compresión de Datos 15 Compresión de audio-video MPEG (Moving Picture Experts Group ) Standard para compresión de audio e imágenes en movimiento. • Logra tasas de compresión de hasta 200:1, casi a cualquier nivel de calidad • Video: explota 3 tipos de redundancias: - Espacial - Temporal - Psicovisual Codificación intra-frame (imágenes I) con JPEG + codific. inter-frame (imágenes P y B) con predicción de movimiento Teoría de la Información Compresión de Datos Parámetros de evaluación Relación de compresión (Tam.Original vs. Tam.Comprimido) Tiempo de compresión Tiempo de descompresión Error entre valores originales y reconstruidos - Error Cuadrático Medio (RMS) e RMS = 1 N .M ∑∑ [ f '( x, y) − f ( x, y)] m −1 n −1 2 x =0 y =0 - Error Absoluto promedio eabs = 1 N .M Teoría de la Información m −1 n −1 ∑∑ x =0 y =0 f ´(x, y ) − f ( x, y ) Imagen de error Compresión de Datos 16 Bibliografía • R.Gonzalez, R.Woods, “Digital Images Processing”, Addisson - Wesley, 1992 • M.Nelson, “The Data Compression Book”, M&T Publishing, 1992 • T. Bell, J.Cleary, I. Witten, “Text Compression”, Prentice - Hall, 1990 • R.Clarke, “Digital Compression of Still Images and Video”, Academic Press, 1995 • G.Wallace, "The JPEG Still Picture Compression Standard", Commun. ACM, Vol.34, pp. 31-44, Apr. 1991 • D. Gall, "MPEG: A video compression standard for multimedia applications“, Commun. ACM, Vol. 34, pp. 46--58, Apr. 1991 Teoría de la Información Compresión de Datos 17