Está en la página 1de 2

Aplicaciones

Numerosos códecs de señales utilizan un código de Arroz para predicción de residuos. En


algoritmos de predicción, tales residuos tienden a caer en una de dos caras distribución
geométrica , con pequeños residuos de ser más frecuente que los residuos grandes, y el
código de Rice se aproxima mucho el código Huffman para una distribución tal sin la
sobrecarga de tener que transmitir la tabla de Huffman . Una señal que no coincide con una
distribución geométrica es una onda sinusoidal , debido a que los residuos de diferenciales
crear una señal sinusoidal cuyos valores no están creando una distribución geométrica (los
valores más altos y más bajos de residuos tienen una alta frecuencia similar de ocurrencias,
sólo la mediana positiva y negativa residuos se producen con menos frecuencia).

Varios sin pérdidas codecs de audio , tales como Shorten , FLAC , Apple Lossless , y MPEG-4


ALS , utilizan un código de Rice después de la etapa de predicción lineal (denominado "filtro
FIR adaptativo" en Apple Lossless). Codificación de arroz también se utiliza en el Felics códec
de imágenes sin pérdida.

Código Tunstall
Descripción
Es un código de longitud fija en el que cada palabra del código puede representar un número
diferente de letras.
Supongamos que tenemos inicialmente m símbolos y queremos usar como salida
representaciones de longitud fija con n bits, siendo 2 n>m. Suponemos que las realizaciones de
dichos símbolos son independientes. Construcción del árbol: •Formar un árbol con una raíz y m
hijos con arcos etiquetados con los símbolos del alfabeto, •Si el número de hojas del árbol, l,
cumple l+(m-1)< 2 n seguir, en caso contrario parar.* •Encontrar la hoja con mayor probabilidad
(la probabilidad es el producto de las probabilidades de los símbolos del camino de la raíz a las
hojas) y expandirla para que tenga m hijos.

Aplicación
Imágenes: Usaremos imágenes de niveles de gris, es decir, que en cada punto toman un valor
entre 0 y 255.
Estimaremos la probabilidad de ocurrencia de cada nivel de gris usando el histograma y
aplicaremos Huffman. El modelo será por tanto no adaptativo. Como los valores de los píxeles
están muy correlados codificaremos la diferencia entre un píxel y el anterior usando Huffman,
veremos que mejoramos el nivel de compresión. También usaremos imágenes binarias y
códigos de Huffman adaptativos
Texto: Usaremos diferentes tipos de texto y aplicaremos Huffman habiendo calculado antes las
probabilidades de cada letra a partir del texto. Eliminar la correlación aquí es más complicado y
veremos como hacerlo en capítulos posteriores.
Sonido: Cada canal estéreo se muestrea a 44.1 kHz y utiliza una representación de 16 bits.
Aunque no vamos a construir el código Huffman (tendría 216 entradas), calcularemos la
entropía y por tanto una estimación de la mejor compresión que podemos alcanzar. Podemos
también eliminar (o disminuir) la correlación entre los datos y volver a calcular la entropía y por
tanto una estimación de la compresión a alcanzar con este modelo.
Demostración de que estas condiciones las cumple un código prefijo óptimo:
La primera condición es obvia. El número medio de bits por símbolo sería mayor si esta
condición no se cumple.
Para probar la segunda condición usaremos reducción al absurdo. Supongamos que existe un
código prefijo óptimo, C, en el que los dos símbolos menos probables no tienen la misma
longitud. Sean P1 y P2 las correspondientes palabras del código y supongamos que long(P1)=k
y long(P2)=n con k
Al ser un código prefijo, P1 no puede ser prefijo de P2. Por tanto podemos suprimir los n-k
últimos dígitos de P2 y tener aún dos códigos distintos. Sea C’ el nuevo código, ¿sigue siendo
prefijo?
Como estos símbolos son los menos probables ninguna otra palabra puede ser más larga que
estas dos y por tanto no hay peligro de que al hacer más corta esta palabra del código (la de
P2) se convierta en prefijo de ninguna otra. Por tanto, C’ sigue siendo prefijo.
Hemos creado un nuevo código, C’, que hace que C no sea óptimo, lo que contradice la
hipótesis inicial sobre C.
Algoritmo
1. Ordena los símbolos de más probable a menos probable
2. Comienza a construir un árbol por las hojas combinando los dos símbolos menos probables
3. Itera el procedimiento

Ejemplo
Entrad Salida
El código de Tunstall ha generado la siguiente representación ¿Qué ocurre a
si queremos codificar la secuencia AA?. AA no tiene representación. Para
AAA 000
codificar el AA enviamos el código no utilizado (111) y un código fijo para
AA. Generalmente, si hay k nodos internos en el árbol necesitaremos k-1 AAB 001
códigos fijos. En nuestro problema A y AA.
AAC 010

AB 011

AC 100

B 101

C 110

También podría gustarte