Beruflich Dokumente
Kultur Dokumente
Aritmtica
Rafael Molina y Javier Mateos
Depto Ciencias de la Computacin
e Inteligencia Artificial
Universidad de Granada
Rafael Molina
Javier Mateos
Contenidos
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
Ejemplo IV.2.1
Consideremos una fuente S con el alfabeto A={a1,a2,a3} con
las siguiente probabilidades
Se cumple
Cdigo
a1
a2
10
a3
11
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
FX (i ) = P ( X = k )
k =1
10
0.5
0.75
Observamos a1
Observamos
despus a2
Rafael Molina
Javier Mateos
11
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
13
Recuerda
F(1)=0.7, F(2)=0.8, F(3)=1 y para codificar a1 estbamos en [0,0.7)
14
1
1
TX (ai ) = P ( X = k ) + P ( X = i ) = FX (i 1) + P ( X = i )
2
2
k =1
Rafael Molina
Javier Mateos
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
Resultado
Etiqueta
0.0833
0.4166
0.5833
0.9166
16
1
T (x i ) = P(y ) + P(x i )
2
y <xi
m
X
(1)
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
18
Rafael Molina
Javier Mateos
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
20
i(k)=i(k-1)+(s(k-1)-i(k-1))FX(xk)
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
22
23
Rafael Molina
Javier Mateos
24
Rafael Molina
Javier Mateos
25
1
l(x) = log
+ 1 bits
P(x)
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
27
entonces
Demostracin:
como
=
=
,
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
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)
P (x)
,
2
1
2 l (x)
TX (x)
FX (x).
(probarlo)
1
2
l (x)
1
2l( x )
< TX ( x) l ( x )
TX (x) l ( x ) > FX (x 1)
Rafael Molina
Javier Mateos
29
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
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
31
32
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
33
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
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
36
37
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
franja
38
Codificador
de capa de
diferencias
Id-1
Codificador
de capa de
diferencias
Id-2
I0
Codificador
de capa
base
C0
Cd-1
Cd
39
40
41
42
43
44
45
Smbolos
codificador
aritmtico
CODIFICADOR
estimacin de
probabilidad
Modelo
estimacin de
probabilidad
distribucin
de probabilidad
1001100001
flujo de bits
codificados
decodificador
aritmtico
Smbolos
DECODIFICADOR
46
Rafael Molina
Javier Mateos
47
48
Patrn de 10 pxeles
en dos lneas
x x x x x A
x x x x ?
Pxel a codificar
49
6 10
Pxel de la imagen
Pxel a codificar
Patrn
detemplate:
contexto
Context
9
6 10
Contexto
Context:
1
9 10
ndice
Rafael Molina
Javier Mateos
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
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
52
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
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
54
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
56
57
000
001
010
011
100
101
110
111
Gray
000
001
011
010
110
111
101
100
58
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
BLOCK = Hierarchical block coding [KJ80] JBIG = ISO/IEC Standard draft [PM93]
RLE = Run-length coding [NM80]
Rafael Molina
Javier Mateos
59
Rafael Molina
Javier Mateos
60
Rafael Molina
Javier Mateos
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
62