Está en la página 1de 62

Tema 4: Codificacin Aritmtica

Rafael Molina y Javier Mateos Depto Ciencias de la Computacin e Inteligencia Artificial Universidad de Granada
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 1

Contenidos
Objetivos del tema Introduccin Codificacin de una secuencia por el cdigo aritmtico Generacin de la etiqueta Descifrado de la etiqueta Generacin del cdigo binario para el cdigo aritmtico Unicidad y eficiencia del cdigo aritmtico Comparacin del cdigo de Huffman y el cdigo aritmtico Aplicaciones El estndar JBIG Codificando imgenes no binarias Resumen Bibliografa
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 2

IV.1 Objetivos del tema


En este tema vamos a estudiar otros cdigos de longitud variable, los llamados cdigos aritmticos. Estos cdigos son especialmente tiles cuando trabajamos con alfabetos pequeos o con distribuciones de probabilidad muy sesgadas (skew). Estudiaremos los aspectos bsicos de estos cdigos, sus propiedades, y describiremos una implementacin. Compararemos los cdigos aritmtico y Huffman. Una variante del cdigo aritmtico es el cdigo usado por el estndar Joint Bi-level Experts Group (JBIG) para codificar imgenes binarias, describiremos las partes esenciales de este estndar.
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 3

IV.2 Introduccin.
El cdigo de Huffman garantiza una razn de compresin R que como mucho es superior en 1 bit a la entropa. Puede probarse tambin que otra cota alternativa es pmax+0.086 donde pmax es la probabilidad del smbolo que ocurre con mayor probabilidad. Si el valor de pmax es pequeo, la diferencia entre la codificacin Huffman y entropa es pequea, sin embargo para distribuciones muy descompensadas (sesgadas o skew) pmax puede ser bastante grande y el algoritmo de Huffman se hace bastante ineficiente. Podemos agrupar los smbolos de forma que la distribucin no sea tan descompensada, pero esto no siempre funciona como veremos ahora con un ejemplo.
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 4

Ejemplo IV.2.1 Consideremos una fuente S con el alfabeto A={a1,a2,a3} con las siguiente probabilidades Se cumple P(a1)=0.95, P(a2)=0.02 y P(a3)=0.03 H(S)=0.335 bits/smbolo.

Un cdigo Huffman para esta fuente es


Letra a1 a2 a3 Cdigo 0 10 11

que tiene una longitud media de 1.05 bits/smbolo. Este valor es 3.13 veces la entropa
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 5

Podramos agrupar smbolos de dos dos y obtener siguiente tabla probabilidades.

los en la de

Letra a1a1 a1a2 a1a3 a2a1 a2a2 a2a3 a3a1 a3a2 a3a3

Probabilidad 0.9025 0.0190 0.0285 0.0190 0.004 0.0006 0.0285 0.0006 0.0009

Cdigo 0 111 100 1101 110011 110001 101 110010 110000

Su longitud media es 1.222 bits/smbolo (para cada dos smbolos) que por smbolo significa 0.611 que en comparacin con la entropa es 1.82 veces la entropa

Rafael Molina Javier Mateos

Tema 4: Codificacin Aritmtica

La redundancia bajara a valores razonables si ussemos 8 smbolos juntos, pero esto corresponde a 6561 valores a codificar, lo que requiere mucha memoria. Es ms eficiente generar palabras de cdigo por grupos o secuencias de smbolos conforme stos van apareciendo. En la codificacin aritmtica, que ahora veremos, le asignaremos una etiqueta a la secuencia completa que queremos codificar, esta etiqueta ser una fraccin de la unidad. Generaremos un cdigo aritmtico para una secuencia de longitud m sin que tengamos que generar cdigo para todas las posibles secuencias de longitud m.
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 7

IV.3 Codificacin de una secuencia


Para distinguir una secuencia de smbolos de otra tenemos que etiquetar cada secuencia con un identificador nico. Un conjunto posible de etiquetas para representar las secuencias de smbolos es el conjunto de los nmeros reales en el intervalo unidad [0,1). Necesitamos una funcin que aplique secuencias de smbolos en el intervalo unidad. Una funcin que aplica variables aleatorias (y secuencias de variables aleatorias) en el intervalo unidad es la funcin de distribucin.
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 8

La historia del descubrimiento la codificacin aritmtica y la resolucin del problema de la precisin finita de las representaciones en un ordenador es muy interesante. Ver el libro de Sayood (pginas 79-80). Antes de comenzar el desarrollo de la codificacin aritmtica veamos alguna notacin. Comenzamos asignando un nmero a cada posible miembro del alfabeto. Es decir, si A={a1,,am} asignamos Ai i De forma que P(ai)=P(i) y tenemos la funcin de distribucin

FX (i ) = P ( X = k )
k =1

donde X es la variable aleatoria correspondiente a la probabilidad de la fuente.


Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 9

IV.3.1 Generacin de la etiqueta


Para generar la etiqueta reduciremos el tamao del intervalo en el que estar la etiqueta conforme vayamos recibiendo ms smbolos. Comenzamos dividiendo el intervalo unidad en intervalos de la forma

FX(0),FX(1) ), [ FX(1),FX(2) ), ...., [ FX(m-1),FX(m))

Recordemos que FX(0)=0 y FX(m)=1 Tenemos, por tanto, una particin del intervalo unidad en intervalos disjuntos.
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 10

Supongamos que la secuencia que vamos a codificar comienza por el smbolo ak, entonces la etiqueta que generaremos para la secuencia estar en el intervalo [ FX(k-1), FX(k) ). Dividimos ahora este subintervalo en las mismas proporciones que el intervalo unidad [llevamos el intervalo [0,1) al intervalo [ FX(k-1), FX(k) ) y seguimos dividiendo este intervalo manteniendo las proporciones de F en el intervalo [0,1)
Ejemplo P(a1)=0.5, P(a2)=0.25, P(a3)=0.25 0 Observamos a1 Observamos despus a2
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 11

0.5

0.75

Qu tipo de transformacin estamos realizando sobre el intervalo [0,1)? Para llevar el intervalo [0,1) al intervalo [FX(k-1), FX(k)). La transformacin para x [0,1) es f(x)=(FX(k)-FX(k-1))x + FX(k-1) Si el segundo smbolo observado es aj entonces la codificacin de akaj estar en el intervalo

[(FX(k)-FX(k-1))FX(j-1)+FX(k-1), (FX(k)-FX(k-1))FX(j)+ FX(k-1))


y as sucesivamente
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 12

Ejemplo 4.3.1: Supongamos que el alfabeto viene dado por A={a1,a2,a3} con probabilidades P(a1)=0.7, P(a2)=0.1, P(a3)=0.2 y por tanto con funcin de distribucin F(1)=0.7, F(2)=0.8, F(3)=1 Supongamos que queremos codificar la secuencia a1a2a3 Para codificar a1 sabemos que la etiqueta debe estar en el intervalo [0,0.7)
EN OTRAS PALABRAS, PASAMOS DEL INTERVALO [0,1) AL [0,0.7)
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 13

Recuerda F(1)=0.7, F(2)=0.8, F(3)=1 y para codificar a1 estbamos en [0,0.7)

Para codificar a1a2 sabemos que la etiqueta debe estar en [(0.7-0.0)x0.7+0, (0.7-0.0)*0.8+0) es decir en [0.49,0.56)
EN OTRAS PALABRAS, PASAMOS DEL INTERVALO [0.7, 0.8) DENTRO DEL INTERVALO [0,1) AL SUBINTERVALO DE [0,0.7) DADO POR [(0.7-0.0)x0.7+0, (0.7-0.0)*0.8+0)

Por ltimo para codificar la secuencia a1a2a3 sabemos que la etiqueta debe estar en: [(0.56-0.49)x0.8+0.49, (0.56-0.49)x1+0.49) es decir en [0.546, 0.56)
EN OTRAS PALABRAS, PASAMOS DEL INTERVALO [0.8, 1) DENTRO DEL INTERVALO [0,1) AL SUBINTERVALO DE [0.49,0.56) DADO POR [(0.56-0.49)x0.8+0.49, (0.56-0.49)x1+0.49)
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 14

Como hemos visto, el intervalo I en el que reside la etiqueta de cada secuencia de un tamao dado es disjunto con los intervalos en los que residiran las etiquetas de cualquier secuencia del mismo tamao. Cualquier miembro del intervalo I puede, por tanto, usarse como etiqueta: podemos usar, por ejemplo, el lmite inferior o el punto medio. De momento usaremos el punto medio. Buscaremos ahora una frmula que nos permita calcular la etiqueta de una secuencia. Consideremos una fuente con alfabeto A={a1,a2,,am}. Cul sera la etiqueta de una secuencia de un nico smbolo?

Rafael Molina Javier Mateos

1 1 TX (ai ) = P ( X = k ) + P ( X = i ) = FX (i 1) + P ( X = i ) 2 2 k =1
Tema 4: Codificacin Aritmtica

i 1

15

Ejemplo 4.3.2: Consideremos el lanzamiento de un dado equilibrado. El alfabeto es A={1,2,,6} P(i)=1/6 La etiqueta para el 2 sera TX(2)=P(X=1)+(1/2)P(X=2)=0.25 La del 5 cinco sera TX(5)=[P(X=1)+P(X=2)+P(X=3)+ P(X=4)]+(1/2)P(X=5)=0.75 La tabla siguiente muestra la etiqueta del resto de smbolos
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica

i=1, 2, , 6

Resultado 1 3 4 6

Etiqueta 0.0833 0.4166 0.5833 0.9166

16

Como hemos visto en el ejemplo anterior, la codificacin para secuencias de tamao uno es fcil. Para secuencias xi de mayor longitud (m) tenemos que ordenar las secuencias de longitud m y asignar a la secuencia xi la etiqueta

1 T (x i ) = P(y ) + P(x i ) 2 y <xi


m X

(1)

donde y<x significa que y precede a x en la ordenacin que utilicemos y m denota el tamao de la secuencia. Usaremos en lo que sigue como orden el orden lexicogrfico.
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 17

Ejemplo 4.3.3: Consideremos ahora el caso del lanzamiento dos veces de un dado equilibrado. Utilizando la ecuacin (1) en la transparencia anterior para generar la etiqueta del 13 tendramos que considerar los sucesos: 11, 12, 13 y la etiqueta de esta secuencia sera: TX(13)=P(y=11)+P(y=12)+(1/2)P(y=13) =1/36+1/36+(1/2)(1/36)=5/72 Observa que para generar, por ejemplo, la etiqueta del 56 necesitamos recorrer muchos ms pares de smbolos
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 18

1. Observemos que no hemos tenido que generar la etiqueta de todos los posibles mensajes de longitud dos. 2. Desgraciadamente, parece que al menos hemos de generar todos los mensajes de longitud dos que son menores que el que queremos codificar. 3. Veamos que no es necesario y que los lmites inferior y superior de la etiqueta pueden ser calculados recursivamente.

Rafael Molina Javier Mateos

Tema 4: Codificacin Aritmtica

19

Ejemplo 4.3.4: Consideremos de nuevo el dado y supongamos que queremos codificar la secuencia 322. Vamos a notar s(n) e i(n) los lmites superior e inferior del intervalo donde se encuentra la etiqueta con s(0)=1 e i(0)=0. Es obvio que para el 3 los lmite son s(1)=(s(0)-i(0))FX(3)+i(0)=FX(3) e i(1)=(s(0)-i(0))FX(2)+i(0)=FX(2) para codificar ahora el 2 en este intervalo tenemos s(2)=i(1)+(s(1)-i(1))FX(2) e i(2)= i(1)+(s(1)-i(1))FX(1) y en este nuevo intervalo la codificacin del 2 ser en s(3)=i(2)+(s(2)-i(2))FX(2) e i(3)=i(2)+(s(2)-i(2))FX(1)
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 20

En general, si queremos codificar la secuencia x=(x1,x2,,xn), partiremos de s(0)=1 e i(0)=0 y generaremos el intervalo donde se encuentra la etiqueta k utilizando s(k)=i(k-1)+(s(k-1)-i(k-1))FX(xk-1) e i(k)=i(k-1)+(s(k-1)-i(k-1))FX(xk)

aumentando k hasta llegar a k=n Finalmente utilizaremos como etiqueta de la secuencia TX(x)=(i(n)+s(n))/2
Rafael Molina Javier Mateos

1 m ( ) ( ) = + T x P y P(x i ) que coincide con X i 2 y <xi


Tema 4: Codificacin Aritmtica 21

Ejemplo 4.3.5: Consideremos el alfabeto con probabilidades P(1)=0.8, P(2)=0.02, P(3)=0.18 y codifiquemos la secuencia 1321. Tenemos FX(0)=0, FX(1)=0.8, FX(2)=0.82, FX(3)=1 s(0)=1, i(0)=0 s(1)=0.8, i(1)=0 s(2)=i(1)+(s(1)-i(1))FX(3)=0.8, i(2)= i(1)+(s(1)-i(1))FX(2)=0.656 s(3)=i(2)+(s(2)-i(2))FX(2)=0.77408, i(3)=i(2)+(s(2)-i(2))FX(1)=0.7712 i(4)=i(3)+(s(3)-i(3))FX(0)= 0.7712, s(4)=i(3)+(s(3)-i(3))FX(1)= 0.773504 TX(1321)=(0.773504+0.77129)/2=0.772352
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 22

IV.3.2 Descifrado de la etiqueta


Una vez que conocemos como codificar cada secuencia, el paso siguiente es estudiar la decodificacin de una etiqueta T.
(Recuerda si A={a1,,am} asignamos a ai el ndice i).

Sea T [0,1). Inicializamos s(0)=1 e i(0)=0. Para cada k=1,2.. (hasta que toda la secuencia haya sido procesada) encuentra t*=(T-i(k-1))/(s(k-1)-i(k-1)) encuentra el ndice xk que cumple FX(xk-1)t*<FX(xk) recalcula s(k) e i(k) usando i(k)=i(k-1)+(s(k-1)-i(k-1))FX(xk-1) s(k)=i(k-1)+(s(k-1)-i(k-1)) FX(xk)

La secuencia decodificada ser x1x2


Para saber cuando hemos terminado o bien conocemos el nmero de elementos a decodificar o mandamos un smbolo para notar el final de la transmisin
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 23

Observa que en los pasos 2.1 y 2.2 lo que hacemos es buscar el valor xk tal que i(k-1)+(s(k-1)-i(k-1))FX(xk-1) etiqueta< i(k-1)+(s(k-1)-i(k-1)) FX(xk)

Ejemplo 4.3.6: descifrado de una etiqueta. Se propone como ejemplo considerar el modelo del ejemplo 4.3.5 y decodificar el valor de la etiqueta T=0.772352.

Rafael Molina Javier Mateos

Tema 4: Codificacin Aritmtica

24

IV.4 Generacin del cdigo binario


El algoritmo descrito en la seccin anterior tiene que ser implementado para ser til. Es obvio que la precisin finita de las representaciones binarias en un computador aade dificultades al problema de implementacin. Cmo resolver este problema se estudiar en las clases de prcticas. Por otra parte, una pregunta obvia es cul es la eficiencia de este sistema de codificacin? y si est muy lejos de los lmites que marca la entropa. Veamos las respuestas a estas dos preguntas.

Rafael Molina Javier Mateos

Tema 4: Codificacin Aritmtica

25

IV.4.1 Unicidad y eficiencia del cdigo aritmtico


Sabemos que TX(x) es un nmero en el intervalo [0,1). Un cdigo binario para TX(x) puede obtenerse de la forma siguiente: T(x)=(i(n)+s(n))/2 Calcular la representacin binaria de TX(x). Usando P(x) trunca su representacin binaria a

1 l(x) = log + 1 bits P(x)


Antes de demostrar este resultado veamos un ejemplo.
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 26

Ejemplo 4.4.1: Consideremos una fuente con un alfabeto de tamao cuatro A={a1,a2,a3,a4}. Con las siguientes probabilidades P(a1)=1/2, P(a2)=1/4, P(a3)=1/8, P(a4)=1/8 Veamos en la tabla siguiente cual sera el cdigo binario segn el modelo anterior Smbolo 1 2 3 4
Rafael Molina Javier Mateos

FX 0.5 0.75

TX 0.25 0.625

En binario .01 .101 .1101 .1111

1 log P( ) + 1

bits

Cdigo 01 101 1101 1111


27

2 3 4 4

0.875 0.8125 1.0 0.9375

Tema 4: Codificacin Aritmtica

Probemos ahora el resultado enunciado. Probaremos que si

FX (x 1) TX (x) < FX (x).


entonces Demostracin: como

FX (x 1) TX (x) l ( x ) < FX (x).


El nmero que se obtiene representando TX(x) en binario y truncando a l(x) bits

0 TX (x) l( x ) TX (x) < FX (x) ,

la desigualdad de la derecha es cierta. Para probar la desigualdad de la izquierda observemos primero que 1 1 1 1 P(x) (*) = = = ,

l(x)

Rafael Molina Javier Mateos

1 log +1 P(x)

1 2 2 Tema 4: Codificacin Aritmtica P ( x )


log 1 +1 P(x)

28

adems,

P ( x) 1 TX (x) = FX (x 1) + FX (x 1) + l ( x ) 2 2 1 de donde TX (x) l ( x ) FX (x 1) 2

(usando el resultado en ecuacin (*) de la transparencia anterior)

P ( x) , 2 1

2 l (x)

FX (x 1)

TX (x)

FX (x).

Usando ahora que lo que implica de donde

(probarlo)

0 TX (x) TX (x) l ( x ) < TX ( x ) 1 2


l (x)

1 2l( x )

< TX ( x) l ( x )

TX (x) l ( x ) > FX (x 1)
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 29

Nos preguntamos ahora cmo de eficiente es el cdigo que hemos generado?. Supongamos que estamos codificando secuencias de longitud m. La longitud media del cdigo aritmtico sera

lAm

1 = l(x )P( x) = log P(x ) + 1P(x) 1 m ( ) + log 2 P ( x ) = P ( x ) log P x + 2 = H ( X )+2 P(x )

Rafael Molina Javier Mateos

Tema 4: Codificacin Aritmtica

30

y por tanto

H ( X m ) l Am H ( X m ) + 2
de donde, para cada smbolo tenemos

H ( X ) lA H ( X ) + 2 / m
As pues, aumentando la longitud de la secuencia nos garantizamos una codificacin tan prxima a la entropa como queramos.

Rafael Molina Javier Mateos

Tema 4: Codificacin Aritmtica

31

IV.5 Comparacin del cdigo de

Huffman y el cdigo aritmtico


Consideremos de nuevo el ejemplo 4.4.1. La fuente tena el alfabeto A={a1,a2,a3,a4} con las siguientes probabilidades P(a1)=1/2, P(a2)=1/4, P(a3)=1/8, P(a4)=1/8 La longitud media de la codificacin aritmtica sera l=2*0.5+3*0.25+4*0.125+4*0.125=2.75 bits/smbolo valor lejano de 1.75 de valor de entropa y de la longitud media del cdigo de Huffman.
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 32

Si codificsemos de dos en dos los smbolos la longitud medida del mensaje usando codificacin aritmtica sera 4.5 bits, que lleva a 2.25 bits/smbolo. Recuerda, sin embargo, que la codificacin aritmtica no est pensada para este tipo de distribuciones Sabemos que para el cdigo aritmtico se cumple

H ( X ) lA H ( X ) + 2 / m
Y para el cdigo de Huffman tenemos

H ( X ) lH H ( X ) + 1 / m
As que en principio parece mejor la codificacin Huffman. Sin embargo, recuerda que para el cdigo de Huffman hemos de construir el rbol para todos los posibles km valores (supuesto k el nmero de trminos del alfabeto), algo poco prctico.
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 33

Recuerda que el cdigo de Huffman ser imbatible si las probabilidades son potencias de . La ganancia depende tambin de la fuente. Sabemos que otra cota superior para el cdigo de Huffman es 0.086+pmax, donde pmax es la probabilidad mxima del alfabeto. Si el alfabeto es grande y las probabilidades no estn muy descompensadas la codificacin aritmtica no es muy ventajosa sobre la codificacin Huffman. Pensemos, sin embargo en la codificacin de un fax. Otra ventaja del cdigo aritmtico es la posibilidad de implementar simultneamente varios cdigos aritmticos (slo necesitamos tener varias tablas de probabilidades). Por ltimo, en la codificacin aritmtica podemos cambiar ms fcilmente las probabilidades conforme se va modificando la entrada.
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 34

IV.6 Aplicaciones
En esta seccin analizaremos el estndar JBIG para codificacin de imgenes binarias. Tambin se analizar su extensin a imgenes que no sean binarias y se comparar JBIG con otros mtodos de compresin.

Rafael Molina Javier Mateos

Tema 4: Codificacin Aritmtica

35

El estndar JBIG
Joint Bi-level Image expert Group. Codificacin para imgenes binarias. Grficos e imgenes usando medios tonos (half-tones).

Rafael Molina Javier Mateos

Tema 4: Codificacin Aritmtica

36

Caractersticas y elementos de JBIG


Caractersticas de JBIG: ITU-T Recomendacin T.82 (1993) ISO/IEC Estndar internacional 11544 Pensado para fax, transmisin y almacenamiento Afectado por 24 patentes, principalmente de IBM y AT&T Elementos de JBIG: Codificacin progresiva (multiresolucin) Codificacin aritmtica adaptativa Probabilidades seleccionadas mediante patrones
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 37

Codificacin progresiva (multiresolucin)


Resolucin ms baja Resolucin ms alta

25 ppp

50 ppp

100 ppp

200 ppp

Capa base Cada capa se divide en franjas (stripes). Por defecto, 35 franjas en una hoja. Para sistemas con poca memoria.
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica

franja

38

Codificacin progresiva (multiresolucin)


Id
Codificador de capa de diferencias

Id-1

Codificador de capa de diferencias

Id-2

I0

Codificador de capa base

Id imagen a toda su resolucin I0 imagen de baja resolucin (capa base)

C0 Cd-1 Cd

La resolucin se reduce por 2 en cada capa C0 Cdigo para la capa base. Sirve para reconstruir I0 Id se reconstruye a partir de Id1 y Cd

Ventaja: Una imagen sirve para varios dispositivos


Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 39

Reduccin de resolucin (media aritmtica)


Agrupar los pxeles en bloques de 2x2 y tomar el valor del valor de mayor ocurrencia en el bloque. Problema: Qu hacemos si tenemos dos pxeles negros (1) y dos pxeles blancos (0)?
?

Podemos escoger aleatoriamente.


Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 40

Reduccin de resolucin (media aritmtica)

Los resultados son muy pobres!


Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 41

Reduccin de resolucin (media ponderada)

Usar ms pxeles y ponderarlos: y = 4h+2(e+g+i+k)+(d+f+j+l)-3(B+C)-A= = 4h+2(i+k)+l+(d-A)+2(g-C)+(j-C)+2(e-B)+(f-B) Si (y > 4.5) entonces negro (1) si no blanco (0)
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 42

Reduccin de resolucin (media ponderada)

Problemas con las lneas y bordes de los objetos


Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 43

Reduccin de resolucin (preservacin de patrones)


Usar media ponderada como caso base (212 casos posibles) Excepciones para patrones: bordes (132 casos), lneas (420 casos), peridicos (10 casos), medios tonos (12 casos)

Lnea de 1 pxel lnea de 2 pxels punto aislado


Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 44

Reduccin de resolucin (preservacin de patrones)

ste es el mtodo usado por JBIG


Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 45

Codificacin aritmtica adaptativa


Modelo
distribucin de probabilidad estimacin de probabilidad

Modelo
distribucin de probabilidad

estimacin de probabilidad

Smbolos

codificador aritmtico

1001100001 flujo de bits codificados

decodificador aritmtico

Smbolos

CODIFICADOR

DECODIFICADOR

La distribucin de probabilidad de los pxeles blancos y negros se determinan de forma adaptativa basndose en subconjuntos de pxeles que ya han sido codificados
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 46

Codificacin aritmtica adaptativa


En codificacin aritmtica es muy fcil separar el modelo (probabilidades) y el codificador/decodificador. JBIG usa una modificacin del codificador aritmtico (llamado codificador QM) con mltiples modelos (1024 o 4096 modelos, dependiendo de la resolucin de la imagen). La distribucin de probabilidad de los pxeles blancos y negros se determinan de forma adaptativa basndose en pxeles del vecindario que ya han sido codificados.

Rafael Molina Javier Mateos

Tema 4: Codificacin Aritmtica

47

Codificacin aritmtica adaptativa


Ejemplo: En la imagen global: p(0) = 0.8, p(1) = 0.2 H = -0.8 log2 0.8 0.2 log2 0.2 = 0.722 bpp Si dividimos la imagen en dos partes, basndonos en el vecindario de cada pxel, una con 80% de pxeles en la que p1(0) = 0.95 y p1(1) = 0.05 y otra con el 20% de los pxeles con p2(0) = 0.3 y p2(1) = 0.7: H1 = -0.95 log2 0.95 0.05 log2 0.05 = 0.286 bpp H2 = -0.3 log2 0.3 0.7 log2 0.7 = 0.881 bpp H = 0.8 H1 + 0.2 H2= 0.8*0.286 + 0.2*0.881 = 0.405 bpp
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 48

Patrones de contexto para la capa base


Patrn de 10 pxeles x x x x x x x A x x ? ? x Pxel a codificar Pxel ya codificado en la posicin relativa a ? marcada Patrn de 10 pxeles en dos lneas x x x x x A x x x x ?

A Pxel adaptativo (AT): un pxel flotante en un vecindario (ya codificado) del patrn. Es til para captar estructuras peridicas de la imagen.
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 49

Patrones de contexto para la capa base


9 7 5 x ? 3 1 6 10 2 ? 4 8

Contexto por defecto

Pxel de la imagen Pxel a codificar

Patrn de contexto Context template:


9 8 5 3 1 6 10 2 ? 4 7

Contexto Context:
1 1 1 2 1 3 0 4 0 5 1 6 0 7 0 8 1 0 9 10

ndice

Qe Tabla de bsqueda

codificador QM

De valores de pxel a ndices

Rafael Molina Javier Mateos

Tema 4: Codificacin Aritmtica

50

Ejemplos de contextos
1. 9 6 10 7 3 2 4 8 5 1 ? pw = 0.999 pb = 0.001 bits = 13.4% 6. 9 6 10 7 3 2 4 8 5 1 ? pw = 0.206 pb = 0.794 bits = 4.8% 2. 9 6 10 7 3 2 4 8 5 1 ? pw = 0.025 pb = 0.975 bits = 7.8% 7. 9 6 10 7 3 2 4 8 5 1 ? pw = 0.874 pb = 0.126 bits = 4.4% 3. 9 6 10 7 3 2 4 8 5 1 ? pw = 0.201 pb = 0.799 bits = 5.8% 8. 9 6 10 7 3 2 4 8 5 1 ? pw = 0.836 pb = 0.164 bits = 3.5% 4. 9 6 10 7 3 2 4 8 5 1 ? pw = 0.116 pb = 0.884 bits = 5.0% 9. 9 6 10 7 3 2 4 8 5 1 ? pw = 0.660 pb = 0.440 bits = 3.1% 5. 9 6 10 7 3 2 4 8 5 1 ? pw = 0.822 pb = 0.178 bits = 4.9%

Rafael Molina Javier Mateos

Tema 4: Codificacin Aritmtica

51

Codificador QM
Es una modificacin del codificador aritmtico basada en aproximaciones. Usa aritmtica entera y aproxima multiplicacin por suma Los intervalos se representan como lmite inferior (que tambin es la cadena de salida) y amplitud del intervalo. Considera la cadena de entrada como una secuencia de smbolos smbolo ms probable (Most Probable Symbol o MPS) y smbolo menos probable (Least Probable Symbol o LPS) en lugar de smbolos 1 y 0. La probabilidad del LPS es Qe y la del MPS es (1-Qe).
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 52

Codificador QM (algoritmo bsico)


S = primer smbolo; C + A * (1 Qe) A = 1; C = 0; Mientras queden smbolos en la entrada Si S es MPS A = A * (1 Qe); Si S es LPS C = C + A * (1 Qe); A = A * Qe; S = siguiente smbolo;

Prob. LPS (Qe) Prob. MPS (1-Qe)


A

S A C Qe

smbolo a codificar. amplitud del intervalo. lmite inferior del intervalo (tambin cadena codificada). probabilidad del LPS
Tema 4: Codificacin Aritmtica 53

Rafael Molina Javier Mateos

Problemas: La amplitud del intervalo A tiende a aproximarse a 0. Multiplicacin es costosa. Soluciones: Renormalizacin del intervalo como en codificacin aritmtica clsica. Suponemos que A es prximo a 1 y aproximamos A*Qe por Qe. Por tanto, A*(1 - Qe) lo aproximamos por A - Qe. Necesitamos normalizar para mantener esta hiptesis. Si A<0.75 duplicamos el intervalo para mantener A cercana a 1.0. Esto implica que A [0, 1.5). Usando aritmtica entera de 16 bits: A [000016, FFFF16]. Por tanto, 1 = AAAA16 y 0.75 = 800016.
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 54

Codificador QM (algoritmo bsico)


S = primer smbolo; A = 1; C = 0; Mientras queden smbolos en la entrada Si S es MPS A = A Qe; Si A < 800016 // Si A<0.75 renormalizar Renormalizar (A); Renormalizar (C); Si S es LPS C = C + A Qe; A = Qe; // A siempre es menor de 0.75 Renormalizar (A); //Se renormaliza Renormalizar (C); S = siguiente smbolo;
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 55

Un ltimo problema: Si Qe tiene un valor cercano a 0.5, es posible que el tamao del subintervalo asociado a MPS sea MENOR que el asociado al LPS (AQe < Qe). Solucin: Intercambiar los valores de los smbolos MPS y LPS

Rafael Molina Javier Mateos

Tema 4: Codificacin Aritmtica

56

Codificador QM (algoritmo final)


S = primer smbolo; A = 1; C = 0; Mientras queden smbolos en la entrada Si S es MPS A = A Qe; Si A < 800016 // Si A < 0.75 renormalizar Si A < Qe // Si adems A - Qe < Qe C = C + A; // Intercambiar MPS y LPS A = Qe; Renormalizar (A); Renormalizar (C); Si S es LPS A = A Qe; Si A < Qe // Regla base. No intercambiar C = C + A; A = Qe; Renormalizar (A); // Se renormaliza siempre Renormalizar (C); S = siguiente smbolo;
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 57

Codificando imgenes no binarias


Codificacin por planos de bits. Ms eficiente si se usan cdigos Gray. Un cdigo Gray asigna valores numricamente adyacentes a valores binarios que difieren slo en una unidad.
Binario Gray 000 000 001 001 010 011 011 010 100 110 101 111 110 101 111 100

Para convertir en nmero binario estndar b0b1b2bn a su cdigo Gray g0g1g2gn se siguen las ecuaciones: g0 = b0 gk = bk XOR bk-1
Rafael Molina Javier Mateos Tema 4: Codificacin Aritmtica 58

Comparacin JBIG / otros compresores


25.0 20.0 15.0 10.0 5.0 8.9 10.8 11.2 7.9 9.8 23.3 18.0 18.9 10.3 17.9 Compression ratio

0.0 COMPRESS GZIP PKZIP BLOCK RLE 2D-RLE ORLE


COMPRESS = Unix standard compression software GZIP = Gnu compression software PKZIP = Pkware compression software

G3

G4

JBIG

2D-RLE = 2-dimensional RLE [WW92] ORLE = Ordered RLE [NM80] G3 = CCITT Group 3 [YA85] G4 = CCITT Group 4 [YA85]

BLOCK = Hierarchical block coding [KJ80] JBIG = ISO/IEC Standard draft [PM93] RLE = Run-length coding [NM80]

Rafael Molina Javier Mateos

Tema 4: Codificacin Aritmtica

59

Resumen de uso de JBIG


Reducir el tamao de la imagen usando media ponderada y preservacin de patrones hasta llegar a un tamao dado. Esta imagen submuestreada la llamaremos capa base. Tenemos que enviar la capa base y las de diferencias. Cada capa se divide en franjas que se codifican independientemente usando el codificador QM. Al usar el codificador QM, para cada nuevo smbolo (pxel) que se lee, la probabilidad del LPS (Qe) se escoge usando un contexto (ya codificado) de dicho smbolo. El contexto nos da un nmero que se usa como ndice en una tabla de bsqueda que almacena los valores de Qe.

Rafael Molina Javier Mateos

Tema 4: Codificacin Aritmtica

60

IV.7 Resumen del tema


1. Hemos estudiado el cdigo aritmtico, 2. Hemos probado que es decodificable de modo nico y proporciona una ratio cercana a la entropa para secuencias estacionarias largas. 3. Hemos estudiado tambin que esta codificacin es mejor que Huffman para distribuciones de probabilidad desequilibradas. 4. Por ltimo, se ha discutido en clase su aplicacin a la codificacin de imgenes binarias y su extensin a imgenes con ms de un bit por pxel.

Rafael Molina Javier Mateos

Tema 4: Codificacin Aritmtica

61

IV.8 Bibliografa
K. Sayood, Introduction to Data Compression, Morgan and Kaufmann, 2000. Curso de compresin de datos impartido en Chalmers University of Technology (Suecia), (clases 10 y 11): material 2003-2004 http://www.s2.chalmers.se/undergraduate/courses0304/ess155/ Curso de compresin de datos impartido en Stony Brook University (NY, USA) (tema 4): http://mnl.cs.stonybrook.edu/class/cse391/2003-spring/ Curso de compresin de imgenes impartido en la University of Joensuu (Finlandia) (tema 6): http://cs.joensuu.fi/pages/koles/imagecomp/imagecomp.html Recomendacin UIT-T T.82: Compresin de imagen binivel progresiva: http://www.itu.int/rec/T-REC-T.82/es

Rafael Molina Javier Mateos

Tema 4: Codificacin Aritmtica

62

También podría gustarte