Professional Documents
Culture Documents
Codificación Huffman
‘e’ 11
‘i’ 10
‘o’ 00
‘p’ 011
‘b’ 0101
‘c’ 0100
11000110100100110100
Codificación Lempel-Ziv-Welsh
El algoritmo Lempel-Ziv-Welsh (LZW) (también conocido como LZ-78)
construye un diccionario de grupos de caracteres de uso frecuente (o valores
binarios de 8 bits). Antes de decodificar el archivo, el diccionario de compresión
debe enviarse (si se están transmitiendo datos) o almacenado (si se están
almacenando datos). Este método es bueno para comprimir archivos de texto
porque los archivos de texto contienen caracteres ASCII (que se almacenan
como valores binarios de 8 bits), pero no tan buenos para los archivos gráficos,
que pueden tener patrones de repetición de dígitos binarios que podrían no ser
múltiplos de 8 bits. Un ejemplo sencillo es utilizar un alfabeto de 6 caracteres y
un diccionario de 16 entradas, por lo que la palabra de código resultante tendrá
4 bits. Si el mensaje transmitido es:
ababacdcdaaaaaaef
A continuación, el transmisor y el receptor inicialmente agregaría lo siguiente a
su diccionario:
0000 ‘a’
0001 ‘b’
0010 ‘c’
0011 ‘d’
0100 ‘e’
0101 ‘f’
0110–1111 espacio
Primero se envía el carácter 'a' con 0000, después se envía el carácter 'b' y el
transmisor comprueba que la secuencia 'ab' se ha almacenado en el
diccionario. Como no lo ha hecho, agrega 'ab' al diccionario, para dar:
0000 ‘a’
0001 ‘b’
0010 ‘c’
0011 ‘d’
0100 ‘e’
0101 ‘f’
0110 ‘ab’
0111–1111 espacio
Codificación aritmética
La codificación aritmética es una forma de codificación entrópica utilizado
en compresión sin pérdidas. Normalmente, una cadena de caracteres como las
palabras "hola allí" está representada utilizando un número fijo de bits por
carácter, como en el código ASCII. Cuándo una cadena es convertida a
codificación aritmética, los caracteres frecuentemente usados serán
almacenados con menos bits y los no-tan-frecuentemente utilizados caracteres
serán almacenados con más bits, resultando en menos bits utilizados en total.
La codificación aritmética difiere de otras formas de codificación entrópica,
como la codificación de Huffman, en que más que separar la entrada a
símbolos componentes y reemplazar cada uno con un código, la codificación
aritmética codifica el mensaje entero a un solo número, una fracción n dónde
[0.0 ≤ ''n'' < 1.0).
En esta técnica de codificación sin pérdida de información se tiene en cuenta
los siguientes pasos:
Se toma un alfabeto de n símbolos, cada símbolo tiene una frecuencia
de aparición asociada o probabilidad de aparición del símbolo, la
probabilidad en la secuencia de símbolos no necesariamente se
presentan en orden.
Se calcula la probabilidad acumulativa para cada símbolo de una
secuencia, probabilidad que se torna para cada símbolo procesado en
un valor cada vez más pequeño.
Se asigna a cada símbolo su rango que tienen como límite superior su
probabilidad acumulativa y como límite inferior la probabilidad del
símbolo anterior de la secuencia o cero sí es el primer símbolo.
Se traduce el resultado a código binario. Los símbolos con mayor
probabilidad utilizan pocos bits, por ejemplo, 0.875 se traduce a 1110,
mientras que 0.25 a 01.
Por ejemplo, considera una pantalla que contiene texto en negro sobre un
fondo blanco. Habría muchas secuencias de este tipo con pixeles blancos en
los márgenes vacíos, y otras secuencias de pixeles negros en la zona del texto.
Supongamos una única línea con N representando las zonas en negro y B las
de blanco:
BBBBBBBBBBBBNBBBBBBBBBBBBNNNBBBBBBBBBBBBBBBBBBBBB
BBBNBBBBBBBBBBBBBB
Si aplicamos la codificación run-length a esta línea, obtendríamos lo siguiente:
12BN12B3N24BN14B
Interpretado esto como 12 bes, 1 ene, 12 bes, 3 enes, etc. El código run-length
representa el original de 67 carácteres en tan sólo 16. Esta codificación
traducida a binario, cuyo principio es el mismo, se utiliza para el
almacenamiento de imágenes. Incluso ficheros de datos binarios pueden ser
comprimidos utilizando este método. El primer byte contiene un número que
representa el número de veces que el carácter está repetido. El segundo byte
contiene al propio carácter. En otros casos se codifican en un solo byte: 1 bit (0
o 1) y 7 bits para especificar el número de caracteres consecutivos.
Bibliografía
Serna, Dra. Nora La. Compresión de imágenes: Fundamentos, técnicas y formatos . s.f.
http://sisbib.unmsm.edu.pe/BibVirtual/publicaciones/risi/2009_n1/v6n1/a04v6n1.pdf
(último acceso: 07 de 2017).