Sie sind auf Seite 1von 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

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

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

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

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

Cdigo

a1

a2

10

a3

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

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

los
en
la
de

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

Letra
a1a1

Probabilidad
0.9025

Cdigo
0

a1a2
a1a3
a2a1
a2a2
a2a3
a3a1
a3a2
a3a3

0.0190
0.0285
0.0190
0.004
0.0006
0.0285
0.0006
0.0009

111
100
1101
110011
110001
101
110010
110000

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

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

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
i

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

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

0.5

0.75

Observamos a1
Observamos
despus a2
Rafael Molina
Javier Mateos

Tema 4: Codificacin Aritmtica

11

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?
i 1

1
1
TX (ai ) = P ( X = k ) + P ( X = i ) = FX (i 1) + P ( X = i )
2
2
k =1

Rafael Molina
Javier Mateos

Tema 4: Codificacin Aritmtica

15

Ejemplo 4.3.2:
Consideremos el lanzamiento de un dado equilibrado. El alfabeto es
A={1,2,,6}
P(i)=1/6

i=1, 2, , 6

La etiqueta para el 2 sera


TX(2)=P(X=1)+(1/2)P(X=2)=0.25

Resultado

Etiqueta

0.0833

0.4166

0.5833

0.9166

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

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)

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

FX

TX

En binario

1
log P( ) + 1

bits

Cdigo

0.5

0.25

.01

01

0.75

0.625

.101

101

0.875 0.8125

.1101

1101

1.0

.1111

1111

Rafael Molina
Javier Mateos

0.9375

Tema 4: Codificacin Aritmtica

27

Probemos ahora el resultado enunciado. Probaremos que si

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


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

entonces
Demostracin:
como

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
2
2
Tema 4: Codificacin Aritmtica P ( x )

1
log

+1
P(x)

log

1
+1
P(x)

28

(usando el resultado en ecuacin (*) de


la transparencia anterior)

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

FX (x 1)

Usando ahora que


lo que implica
de donde

P (x)
,
2
1

2 l (x)

TX (x)

FX (x).

(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
+ 1P(x)
= l(x )P( x) = log

P(x )

1
log
+ 2 P(x) = P(x) log P(x ) + 2 = H(X m ) + 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

25 ppp

Resolucin
ms alta

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

Smbolos

codificador
aritmtico

CODIFICADOR

estimacin de
probabilidad

Modelo

estimacin de
probabilidad

distribucin
de probabilidad

1001100001
flujo de bits
codificados

decodificador
aritmtico

Smbolos

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 ?

Patrn de 10 pxeles
en dos lneas
x x x x x A
x x x x ?

Pxel a codificar

Pxel ya codificado en la posicin relativa a ? marcada

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

6 10

Pxel de la imagen

Pxel a codificar

Patrn
detemplate:
contexto
Context
9

6 10

Contexto por defecto

Contexto
Context:
1

9 10

ndice

De valores de pxel a ndices

Rafael Molina
Javier Mateos

Tema 4: Codificacin Aritmtica

Qe

codificador
QM

Tabla de
bsqueda

50

Ejemplos de contextos
2.

1.

3.

4.

5.

9 6 10

9 6 10

9 6 10

9 6 10

9 6 10

7 3 2 4 8

7 3 2 4 8

7 3 2 4 8

7 3 2 4 8

7 3 2 4 8

5 1 ?

5 1 ?

5 1 ?

5 1 ?

5 1 ?

pw = 0.999
pb = 0.001
bits = 13.4%

pw = 0.025
pb = 0.975
bits = 7.8%

pw = 0.201
pb = 0.799
bits = 5.8%

pw = 0.116
pb = 0.884
bits = 5.0%

pw = 0.822
pb = 0.178
bits = 4.9%

6.

7.

8.

9.

9 6 10

9 6 10

9 6 10

9 6 10

7 3 2 4 8

7 3 2 4 8

7 3 2 4 8

7 3 2 4 8

5 1 ?

5 1 ?

5 1 ?

5 1 ?

pw = 0.206
pb = 0.794
bits = 4.8%

pw = 0.874
pb = 0.126
bits = 4.4%

pw = 0.836
pb = 0.164
bits = 3.5%

pw = 0.660
pb = 0.440
bits = 3.1%

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;

S
A
C
Qe

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

smbolo a codificar.
amplitud del intervalo.
lmite inferior del intervalo (tambin cadena codificada).
probabilidad del LPS

Rafael Molina
Javier Mateos

Tema 4: Codificacin Aritmtica

53

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

000

001

010

011

100

101

110

111

Gray

000

001

011

010

110

111

101

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

Compression ratio

20.0
15.0
23.3

10.0
5.0

18.0
8.9

10.8

11.2

7.9

18.9

17.9
10.3

9.8

0.0
COMPRESS GZIP PKZIP BLOCK RLE 2D-RLE ORLE

G3

G4

JBIG

COMPRESS = Unix standard


compression software

2D-RLE = 2-dimensional RLE [WW92]

GZIP = Gnu compression software

G3 = CCITT Group 3 [YA85]

PKZIP = Pkware compression software

G4 = CCITT Group 4 [YA85]

ORLE = Ordered RLE [NM80]

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

Das könnte Ihnen auch gefallen