Codificación basada en la entropía. Entropía: Valor medio de información de un conjunto de símbolos procedente de una fuente de información (es imposible de medir en la práctica).
(pi = probabilidad del símbolo i)
Por ejemplo: Sea S = {4,5,6,7,8,9}, en donde la probabilidad de cada símbolo es la misma (1/6).
Según la teoría de la información (Shannon), esta fuente no puede ser codificada (sin pérdidas) con menos de 2.585 bits por símbolo. 1
Statistical encoding Trata de identificar los símbolos (patrones de bits) que más se repiten en el conjunto de datos de entrada. Se codifican con pocos bits los símbolos más frecuentes, mientras que los menos frecuentes son codificados con más bits. Ejemplos: Codificación Morse E: '.' y Q:'–.-' Codificación Huffman. Codificación aritmética. 2
Codificación Huffman Representan los símbolos con un número de bits inversamente proporcional a su frecuencia. Algoritmo genérico: Se construye un árbol binario de abajo hacia arriba agrupando los símbolos de menor frecuencia y asignado la suma de las probabilidades de ambos al nodo padre del árbol. Cada símbolo estará representado por una hoja del árbol y su código serán los bits recorridos hasta la raíz del mismo.
Ejemplo: 3
Codificación Huffman: Ejemplo 4 (Gp:) ABCDE(39) (Gp:) 0 (Gp:) 1
(Gp:) DE(11) (Gp:) 1 (Gp:) 0
(Gp:) BC(13) (Gp:) 1 (Gp:) 0
(Gp:) BCDE(24) (Gp:) 1 (Gp:) 0
A(15) B(7) C(6) D(6) E(5)
Codificación aritmética Identifica una secuencia de símbolos asignándoles una representación binaria de un intervalo de una longitud inferior a la unidad. Siempre son más eficientes que los códigos Huffman Separa el modelo probabilístico de la asignación de bits pudiendo definir codificadores adaptativos. Es computacionalmente eficiente, aunque está sujeto a patentes.
Ejemplo: Supongamos sólo dos símbolos, A y B con una probabilidad de P(A)=1/3 y P(B)=2/3. 5
Codificación aritmética: Ejemplo 6 (Gp:) A (Gp:) B (Gp:) 2/3
(Gp:) 4/9 (Gp:) 8/9 (Gp:) AA (Gp:) AB (Gp:) BA (Gp:) BB
(Gp:) 16/27 (Gp:) 8/27 (Gp:) AAA (Gp:) AAB (Gp:) ABA (Gp:) ABB (Gp:) BAA (Gp:) BAB (Gp:) BBA (Gp:) BBB
(Gp:) 0 (Gp:) 1 (Gp:) P(A) = 1/3 P(B) = 2/3
(Gp:) segmento (Gp:) 31/32 (Gp:) 15/16 (Gp:) 14/16 (Gp:) 6/8 (Gp:) 3/8 (Gp:) 1/4 (Gp:) 10/16 (Gp:) 4/8
(Gp:) código (Gp:) .11111 (Gp:) .110 (Gp:) .1010 (Gp:) .100 (Gp:) .1111 (Gp:) .1110 (Gp:) .01 (Gp:) .011
Run-length encoding Se basa en detectar las repeticiones de símbolos (bits, números, etc) en los datos a codificar.
Ejemplo: 7 (Gp:) Datos a codificar (42): (Gp:) 3150000000376541111111127000000000000003 (Gp:) 315A0737654A1827A0143 (Gp:) Datos codificados (21): (Gp:) Tasa de compresión: 50%
Este patrón es frecuente en multimedia: Audio: Tiras de ceros que representan silencios. Vídeo e imagen: Fondos del mismo color (paredes, cielos, etc.)
Codificación basada en la fuente. Se basan fundamentalmente en las propiedades de la fuente de datos a codificar. Suelen tolerar pérdidas en la codificación (lossy codecs) que perceptualmente pasan inadvertidas para el usuario. Son codificadores de propósito específico. Por término general obtienen mayores prestaciones que los codificadores basados en la entropía. 8
Codificación Diferencial Se basa en la codificación de las diferencias entre dos símbolos consecutivos. Ciertos tipos de datos tienen la propiedad de similitud entre símbolos consecutivos: Señal de Audio, vídeo, imágenes, etc. Esto permite codificar con pocos bits las diferencias.
Ejemplo: DPCM (Differential Pulse Code Modulation) Codificación con pérdida. 9
Transform encoding Se basa en transformar el dominio (Ej.: del temporal al de la frecuencia) de los datos de entrada (Ej.: señal de audio). Ejemplos: Aritmética:
DCT (Discrete Cosine Transformation): Muy común en compresión de imágenes estáticas (JPEG).
Codificación sin pérdida*. 10 (Gp:) t (Gp:) F(t) (Gp:) C (Gp:) f
(Gp:) 160 (Gp:) 160 (Gp:) 161 (Gp:) 160 (Gp:) 161 (Gp:) 165 (Gp:) 166 (Gp:) 158 (Gp:) 160 (Gp:) 167 (Gp:) 165 (Gp:) 161 (Gp:) 159 (Gp:) 160 (Gp:) 160 (Gp:) 160 (Gp:) 160 (Gp:) 0 (Gp:) 1 (Gp:) 0 (Gp:) 1 (Gp:) 5 (Gp:) 6 (Gp:) -2 (Gp:) 0 (Gp:) 7 (Gp:) 5 (Gp:) 1 (Gp:) -1 (Gp:) 0 (Gp:) 0 (Gp:) 0 (Gp:) Imágen BW 4×4 pixels (Gp:) Restar a todos los pixels el valor del primero
Vector quantization Es directamente aplicable a imágenes y audio. Consiste en lo siguiente (imágenes): La imagen se divide en bloques de tamaño fijo (vectores). Se construye una tabla, code-book, con todos los vectores diferentes encontrados. Se codifica la imagen como una sucesión de índices a la tabla. Tanto el codificador como el decodificador necesitan conocer la tabla (code-book). La tabla puede estar predefinida o ser creada dinámicamente. Si en una imagen predomina un número reducido de vectores, el índice de compresión puede ser importante. 11
Vector quantization (II) Ejemplo: 12 (Gp:) 0 (Gp:) 0 (Gp:) 1 (Gp:) 0 (Gp:) 2 (Gp:) 2 (Gp:) 2 (Gp:) 0 (Gp:) 3 (Gp:) 2 (Gp:) 2 (Gp:) 0 (Gp:) 0 (Gp:) 4 (Gp:) 0 (Gp:) 0 (Gp:) Imagen original dividida en vectores de nxn pixels
(Gp:) 0 (Gp:) 1 (Gp:) 2 (Gp:) 3 (Gp:) 4 (Gp:) Code-book
(Gp:) 001022032200400
Si un vector no se encuentra en el code-book: Buscaremos el que más se parezca. Idem + enviar algún dato para aumentar el parecido (valor medio). Idem + enviar lo que sea necesario (vector error) para reconstruir el vector. Codificación con pérdida*.
Página siguiente |