1) A teoria da informação estuda as comunicações e é baseada na concepção formal de "informação" e na capacidade de transmissão de informação pelos canais de comunicação.
2) A compressão de dados é uma aplicação da teoria da informação que reduz a quantidade de dados em uma mensagem preservando a informação.
3) A informação é uma medida da incerteza ou surpresa relacionada a um evento e é relativa ao processo de comunicação.
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Teoria da Informação e Compressão de Dados
1. Introdução à Teoria da
Informação / Compressão de
Dados
Prof. Leonardo Vidal Batista
DI/PPGI/PPGEM
leonardo@di.ufpb.br
leovidal@terra.com.br
http://www.di.ufpb.br/~leonardo
2. O Que É “Teoria da
Informação”?
Claude Shannon, 1948, “A Mathematical
Theory of Communications”
Área que estuda as comunicações
Alicerçada na conceituação formal de
“informação” e capacidade de transmissão
de informação pelos canais de
comunicação
Compressão de Dados: aplicação de
Teoria da Informação.
3. Sistemas de comunicação
Mensagem
Fonte M
De Transmissor Sinal
Informação s
Canal Ruído
Mensagem Sinal
Destinatário ~ ~s
M
Da Receptor
Informação
4. Questões
Pode-se garantir comunicação
perfeita?
Pode-se garantir comunicação
confiável?
Comunicação equivale a
quot;transmissão de dadosquot;?
5. Respostas de Shannon:
Não
Sim. Pode-se projetar e construir
sistemas de comunicação tão confiáveis
quanto se deseje: 1 bit errado em 1
bilhão, 1 em 1 trilhão,...
Não. Comunicação envolve transmissão
de informação.
Compressores sem perdas reduzem a
quantidade de dados em uma
mensagem, preservando a informação
6. O Que É “Informação”?
Informação (ou entropia) é uma
medida da incerteza ou surpresa
relacionada a um evento
O processo de comunicação é
inerentemente probabilístico
Informação é relativa!
7. Informação e Incerteza
Tarefa para a próxima aula: decorar
letra por letra o livro “Os Sertões”
Na próxima aula, farei apenas a
leitura de “Os Sertões”
Quem virá?
Transmitirei informação?
Ocorrerá comunicação?
8. Teoria da Informação e
Física
A equação de entropia (informação)
de Shannon é análoga à entropia da
termodinâmica
Era Newton: matéria, energia e
informação
Era Einstein: energia e informação
Era Shannon: informação
9. Relatividade da informação
010101010101...
Pedro Álvares Cabra...
Marcela amou-me durante quinze
meses e onze ...
14159265...
27033903618375114...
10. Entropia e Compressão
A entropia é um limite para o grau
de compressão máxima que se pode
obter
Entropia elevada => grau de
compressão reduzido
Entropia reduzida => grau de
compressão elevado
Procurar construir modelos que
reduzam a entropia!
11. Modelagem e Compressão
Um bom modelo prevê com precisão os
símbolos sucessivos da mensagem
Portanto:
Bom modelo => surpresa reduzida =>
entropia reduzida => compressão elevada
Compressão elevada=> entropia reduzida
=> surpresa reduzida => Bom modelo
Bom modelo equivale a boa compressão
Grau de compressão é uma medida da
qualidade de um modelo
12. Entropia da Língua Inglesa
Qual é a entropia da Língua Inglesa?
O que é a língua inglesa???
Qual é a entropia da língua inglesa
nos livros de Swift?
13. Entropia da Língua Inglesa
Qual é a entropia da língua inglesa
nos livros de Swift?
Por um especialista em Literatura
Inglesa?
Por um engenheiro inglês?
Por um modelo computacional?
Por uma criança recém-alfabetizada em
inglês?
14. Entropia da Língua Inglesa
Shannon, 1952: entropia da quot;língua
inglesaquot; escrita, por americanos adultos:
aprox. 1 bit/símbolo
Vários estudos posteriores confirmaram
esta estimativa
Melhores modelos computacionais: aprox.
1,2 bit/símbolo
Quando um modelo computacional tornar-
se tão bom quanto um humano, o
computador terá quot;entendidoquot; os textos??
15. Entropia da Língua Inglesa
Aplicações para um bom modelo
computacional para um idioma:
OCR; conversão de voz para texto;
síntese de voz; atribuição de autoria
etc
Dificuldade: Pedro Álvares Cabra...
17. Compressão para Não
Comprimir!
Compressores modernos possuem
excelente capacidade de modelagem
Os modelos podem ser utilizados
para vários outros fins que não
compressão: reconhecimento de
locutor, face, microorganismos,
textura, atribuição de autoria, etc.
19. Fonte de Informação
Fonte de informação: elemento de
um processo de comunicação que
produz informação
Fonte S: produz mensagens que são
seqüências de elementos
selecionados de um conjunto
A = {a0, a1, a2,...}
A: alfabeto da fonte
ai: símbolo ou letra
20. Fontes decimais e binárias
Fonte de dígitos decimais:
A = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
Mensagem M = 590126885122380546
Fonte binária:
A = {0, 1}
21. Representação da
Informação
Semáforo de três cores: informação
de interesse são cores
Representação da informação:
Texto em inglês: {R, Y, G}; {Red,
Yellow, Green}
Texto em português: {Vermelho,
Amarelo, Verde}
Computador: {00, 01, 10}
Outras aplicações: {0, 1, 2}; sons;
sinais elétricos
23. Codificação
Alguns códigos para fonte de dígitos decimais
Decimal ASCII Binário 1 Binário 2 Binário 3 Octal Alfabético
0 3016 00002 002 1111112 008 a
1 3116 00012 012 1111102 018 f
2 3216 00102 102 1111012 028 k
3 3316 00112 11002 1111002 038 m
4 3416 01002 11012 11102 048 n
5 3516 01012 11102 11012 058 b
6 3616 01102 1111002 11002 068 z
7 3716 01112 1111012 102 078 x
8 3816 10002 1111102 012 108 p
9 3916 10012 1111112 002 118 s
24. Codificador e Decodificador
Codificador: elemento (ser humano,
circuito, programa, etc) que representa as
mensagens geradas pela fonte
empregando um código específico.
Decodificador: elemento responsável por
desfazer o mapeamento realizado por um
codificador.
25. Códigos de Propósito
Específico
Códigos de propósito específico:
Códigos de transmissão (Morse, códigos
corretores de erros, etc)
Códigos de criptografia
Códigos de compressão: representar a
informação da forma mais eficiente
possível
Códigos binários -> usar o menor número de
bits possível
26. Códigos de Compressão
Em termos de compressão, qual é o melhor
código binário?
Decimal ASCII Binário 1 Binário 2 Binário 3 Octal Alfabético
0 3016 00002 002 1111112 008 a
1 3116 00012 012 1111102 018 f
2 3216 00102 102 1111012 028 k
3 3316 00112 11002 1111002 038 m
4 3416 01002 11012 11102 048 n
5 3516 01012 11102 11012 058 b
6 3616 01102 1111002 11002 068 z
7 3716 01112 1111012 102 078 x
8 3816 10002 1111102 012 108 p
9 3916 10012 1111112 002 118 s
31. Códigos de Prefixo
RGB1 e RGB3 são códigos de prefixo:
nenhuma palavra-código é prefixo de
outra.
Códigos unicamente decodificáveis.
RGB2 não é um código de prefixo.
32. Exemplo: comprimento
médio
Codificar a mensagem W usando Bin2
W= 10245001021100070306
00900024502330040500
60078600007688000785
Alfabeto: {0, 1, ..., 9}
N = 60 símbolos
Ni: No. de ocorrências de ai
N0 = 29; N1 = 4; N2 = 4; N3 = 3; N4 = 3;
N5 = 4; N6 = 4; N7 = 4; N8 = 4; N9 = 1
35. Exemplo: comprimento
médio
Para alfabeto A = {a0, a1, ... aM-1}
Pi = estimativa da probabilidade de ai
= freqüência relativa de ai = Ni/N
l = P0 b0+ P1 b1+… PM-1 bM-1
M −1
l= ∑ Pibi
i =0
36. Exemplo: comprimento
médio
Codificar a mensagem W usando Bin3
b0 = 6; b1 = 6; b2 = 6; b3 = 6; b4 = 4;
b5 = 4; b6 = 4; b7 = 2; b8 = 2; b9 =
l = 29x6 + 4x6 + 4x6 + 3x6 + 3x4 +
4x4 + 4x4 + 4x2 + 4x2 + 2x1)/60 =
5,03 bits/símbolo
Para compressão, qual é o melhor
código, BIN2 ou BIN3?
Há algum código de prefixo melhor?
37. Problema da Codificação
para Compressão
Dado um modelo probabilístico para a
fonte, encontrar um código
unicamente decodificável ótimo, ou
seja, que represente a saída da fonte
l
com o menor no. possível de bits.
Encontrar bi de forma a minimizar
M −1
l= ∑ Pibi
i =0
38. Informação
Solução: bi = Informação Ii associada ao
símbolo ai:
1
bi = Ii = log
Pi
Se log2 -> informação em bits
Se log3 -> informação em trits
Se ln -> informação em nats
Se log10 -> informação em dígitos decimais
39. Entropia
M −1 1
H = lmin = ∑ Pi log 2
i =0 Pi
Unidade (para base 2): bits/símbolo
Entropia da fonte ou da mensagem?
Shannon, 1948: entropia e compressão
Huffman, 1952: codificação ótima de
comprimento inteiro
Pesquisadores da IBM, 1978: codificação
ótima
41. Exemplo: Informação e
entropia
Comparar H = 2,602 bits/símbolo com
codificação por Bin2 e Bin3 (3,2
bits/símbolo e 5,03 bits/símbolo)
Código eficiente? Comparar sempre com a
entropia!
43. Código de Hufmann
lHuff = 29x1 + 4x4 + 4x4 + …+ 1x5 = 157
bits
Compr. Médio = (29x1 + 4x4 + 4x4 + …+
1x5)/60 = 2,62 bits/símbolo.
Entropia H = 2,60
Eficiência?
Código binário de comprimento fixo de 4
bits/símbolo:
RC = 60x4/(60x2,62) = 1,53 (1,53:1)
44. Código de Hufmann
Outras árvores de Huffman?
Como quebrar empates?
Que informação passar ao decodificador
para permitir decodificação? Tabela de
códigos OU a árvore OU contadores
Quando o Huffman se torna ineficiente?
45. Código de Hufmann
Quando o Huffman se torna ineficiente?
Pi >> 0,5
Redundância do código de Huffman:
R Huff = l Huff − H
Pode-se mostrar que
R Huff ≤ 1
Ou seja:
l Huff ≤ H + 1
47. Código de Hufmann -
Exemplo
R Huff = 0,9202 bit/símbolo
l Huff / H = 10,22
RCmax= 3/0,0998 = 30,06:1
RCmax = 10,22 x RCHuff
O que fazer para aplicar o código de
Huffman eficientemente nestes
casos? RLE, por exemplo.
Huffman para alfabetos binários?
48. Código de Hufmann
Programação = estrutura de dados +
algoritmos
Compressão = modelagem + codificação
Equiprobablidade <=> Entropia máxima:
H = log2 |A|. Se |A| = 2k, H = k.
P(ai) = 1, para algum i <=> Entropia
mínima: H = 0.
49. Modelos probabilísticos
Estáticos: probabilidades estáticas
durante todo o processo de codificação
Semiadaptativos: probabilidades
estimadas para cada mensagem a ser
codificada, e mantidas estáticas durante a
codificação
Adaptativos: probabilidades atualizadas
durante a codificação
51. Modelos probabilísticos
Família LZ (contextuais adaptativos)
PPMs (contextuais adaptativos)
Equivalência entre compressores
baseados em dicionários e compressores
estatísticos
52. Modelos probabilísticos
Exemplo: Huffman adaptativo de
decremento para abracadabra.
Exemplo: Huffman adaptativo de
incremento para abracadabra.
O que ocorre se codificarmos por Huffman
uma mensagem já codificada por
Huffman?
53. Modelos Contextuais
Fonte S com A = {ao, a1,..., aM-1}
Elemento x gerado por S é uma variável
aleatória
Modelos não-contextuais: P(x = ai)
Modelos contextuais: P(xn=ai|xn-1,xn-2,...)
Modelo de Markov de k-ésima ordem:
P(xn=ai | xn-1, xn-2,..., xn-k)
Modelos de memória finita
54. Modelos Contextuais
xk = xn-1, xn-2,..., xn-k
Define-se informação condicional
associada a ai, dado um contexto xk
como:
k 1
I(a i | x ) = log 2
P( x n = a i | x k )
56. Modelos Contextuais
Solução:
O símbolo a ocorre 5 vezes na mensagem,
mas apenas em 4 é contexto de outro.
Quatro ocorrências do contexto a:
em 2 o símbolo subseqüente é b
em 1 o símbolo subseqüente é c
em 1 o símbolo subseqüente é d
Portanto,
P(b | a) = 2/4 -> I(b | a) = 1
P(c | a) = 1/4 -> I(c | a) = 2
P(d | a) = 1/4 -> I(d | a) = 2
57. Modelos Contextuais
Solução (cont.)
Árvore de Huffman (. | a)
Por um raciocínio análogo:
P(r | b) = 1 -> I(r | b) = 0
P(a | c) = 1 -> I(a | c) = 0
P(a | d) = 1 -> I(a | d) = 0
P(a | r) = 1 -> I(a | r) = 0
58. Modelos Contextuais
Primeiro símbolo: não codificar.
Comprimento médio atingido = (1 + 1 +
1 + 2 + 2) / 11 = 0,6363 bits/símbolo.
O Huffman atingiu desempenho ótimo
porque as probabilidades eram todas
potências de 2.
O uso de modelos contextuais tende a
produzir muitos valores de informação
condicional bem inferiores a 1, mas não
nulos e o Huffman se torna ineficiente
61. Modelos Contextuais
Se uma fonte gera símbolos que
dependem dos valores presentes em um
contexto de tamanho L, um modelo de
Markov de ordem k, com k <= L, é
melhor que um modelo de ordem k-1 e,
conseqüentemente, conduz a uma
redução na entropia.
Seria natural empregar modelos de
ordem muito elevada para obter boas
compressões, mas alguns problemas
práticos limitam a aplicabilidade da idéia.
62. Modelos Contextuais
Com um modelo de ordem k e um
alfabeto de tamanho M, tem-se Mk
possíveis contextos, ou seja, o número
de contextos diferentes cresce
exponencialmente com a ordem do
modelo.
Quantos contadores devem ser passados
ao decodificador utilizando um modelo
semi-adaptativo?
63. Modelos Contextuais
Se M = 256 e k = 5: aproximadamente
um trilhão de contextos diversos.
Problemas práticos: memória, tempo de
processamento, estimativas de
probabilidades, transmissão para o
decodificador das probabilidades
condicionais.
Usar modelos adaptativos elimina apenas
o último dos problemas citados!
Na prática, para M = 256, k = 0, 1,..., 10
65. Entropia de Modelo De
Markov de Ordem 1
Fonte com alfabeto A = {a0, a1,...aM-1}.
Bigrama: par ordenado de símbolos
consecutivos gerados pela fonte.
Bigrama (ai, aj) é diferente do bigrama
(aj ai), para i diferente de j.
Experimento probabilístico: observar um
bigrama da mensagem. Eventos de
interesse:
Ai: ai é o 1o. elemento do bigrama
Bi: ai é o 2o. elemento do bigrama
66. Entropia de Modelo De
Markov de Ordem 1
Probabilidade de ocorrência simultânea
dos eventos Ai e Bj:
P(Ai, Bj) = P(Bj, Ai)
Probabilidade de ocorrência de Bj dada a
ocorrência de Ai:
P( B j | Ai ) ≠ P( Ai | B j )
67. Entropia de Modelo De
Markov de Ordem 1
Regra da probabilidade condicional:
P ( Ai , B j )
P ( B j | Ai ) =
P ( Ai )
72. Exemplo (Cont)
Distribuição de probabilidades conjuntas:
1 o símbolo 2 o símbolo do bigrama
do bigrama a b c d r
a 2/25 6/25 1/25 1/25 1/25
b 2/25 0 0 0 4/25
c 2/25 0 0 0 0
d 1/25 0 0 0 0
r 4/25 0 1/25 0 0
Observe que o somatório de todas as
células da tabela resulta em 1
73. Exemplo (Cont)
Distribuição de probabilidades condicionais
P(Bj | Ai)
1o símbolo 2o símbolo do bigrama
do bigrama a b c d r
a 2/11 6/11 1/11 1/11 1/11
b 2/6 0 0 0 4/6
c 2/2 0 0 0 0
d 1/1 0 0 0 0
r 4/5 0 1/5 0 0
O somatório de todas as células de cada
linha da tabela resulta em 1
74. Entropia de Modelo De
Markov de Ordem 1
Markov de ordem 1=>entropia de ordem 2
I(Bj|Ai)=log2[1/P(Bj|Ai)]: informação
associada a aj dado o contexto ai
Nij: no. De ocorrências de aj no contexto ai
= no. ocorrências de aiaj
Nb: total de bigramas em uma mensagem
1
H2 = − × [ N 00 log 2 P( B0 | A0 ) + N 01 log 2 P ( B1 | A0 ) +
Nb
N 02 log 2 P( B2 | A0 ) + ... + N M −1, M −1 log 2 P ( BM −1 | AM −1 )]
75. Entropia de Modelo De
Markov de Ordem 1
Estimando probabilidades por freqüência
relativa:
H 2 = −[ P ( A0 , B0 ) log 2 P ( B0 | A0 ) + P( A0 , B1 ) log 2 P( B1 | A0 ) + ...
+ P( AM −1 , BM −1 ) log 2 P( BM −1 | AM −1 )]
M −1 M −1
H2 = − ∑ ∑ P( Ai , B j ) log 2 P( B j | Ai )
i =0 j =0
76. Entropia de Ordem N
(Markov de Ordem N-1)
Contexto vi: N-1 símbolos
consecutivos
Alfabeto A = {a0, a1,...aM-1}: C = MN-1
contextos distintos
v0 = a0 a0 a0...a0
v1 = a0 a0 a0... a1
...
vC-1 = aM-1 aM-1 aM-1... aM-1
77. Entropia de Ordem N
(Markov de Ordem N-1)
Eventos
Ai: o contexto vi ocorre no início de
um N-grama
Bi: o símbolo ai ocorre na última
posição de um N-grama
Valem as mesmas equações de
probabilidades condicionais
anteriormente apresentadas.
78. Entropia de Ordem N
(Markov de Ordem N-1)
Distribuição de probabilidades conjuntas:
Contexto símbolo
a0 a1 ... aM-1
v0
v1
…
vC-1
Observe que o somatório de todas as
células da tabela resulta em 1
79. Entropia de Ordem N
(Markov de Ordem N-1)
Distribuição de probabilidades condicionais
P(Bj | Ai)
Contexto símbolo
a0 a1 ... aM-1
v0
v1
…
vC-1
O somatório de todas as células de cada
linha da tabela resulta em 1
80. Entropia de Ordem N
(Markov de Ordem N-1)
Entropia de ordem N:
C −1 M −1
HN = − ∑ ∑ P( Ai , B j ) log 2 P( B j | Ai )
i =0 j =0
Entropia (fonte estacionária):
H = lim H N
N →∞
81. PPM
Prediction by Partial Matching
Cleary, J.G. and Witten, I.H.
(1984) “Data compression using
adaptive coding and partial string
matching,quot; IEEE Transactions on
Communications,32(4), 396-402
82. Codificação Baseada em
Dicionário
Ziv e Lempel, 1976: Complexidade de
sistemas dinâmicos
Ziv e Lempel, 1977: LZ77
Ziv e Lempel, 1978: LZ78
Welch, 1984: LZW
LZA, LZM, LZFA, ...
83. Codificação Baseada em
Dicionário
Ziv e Lempel, 1976: Complexidade de
sistemas dinâmicos
Ziv e Lempel, 1977: LZ77
Ziv e Lempel, 1978: LZ78
D-1 LZ77 0 L-1
(Elementos previamente codificados) (Próx. Elem.)
dicionário área de
previsão
85. Exemplo LZW (Cont.)
Frase ‘a’ está no dicionário
Frase ‘ab’ não está no dicionário
Mensagem codificada = 0 (última
frase encontrada no dicionário)
Dicionário:
0a 5 ab
1b
2c
3d
4r
86. Exemplo LZW (Cont.)
‘b’ está no dicionário; ‘br’ não está no
dicionário
Mensagem codificada = 01
Dicionário:
0a 5 ab
1b 6 br
2c
3d
4r
87. Exemplo LZW (Cont.)
‘r’ está no dicionário; ‘ra’ não está no
dicionário
Mensagem codificada = ‘0’ ‘1’ ‘4’
Dicionário:
0a 5 ab
1b 6 br
2c 7 ra
3d
4r
88. Exemplo LZW (Cont.)
‘a’ está no dicionário; ‘ac’ não está no
dicionário
Mensagem codificada = ‘0’ ‘1’ ‘4’ ‘0’
Dicionário:
0a 5 ab
1b 6 br
2c 7 ra
3d 8 ac
4r
89. Exemplo LZW (Cont.)
‘c’ está no dicionário; ‘ca’ não está no
dicionário
Mensagem codificada = ‘0’ ‘1’ ‘4’ ‘0’ ‘2’
Dicionário:
0a 5 ab
1b 6 br
2c 7 ra
3d 8 ac
4r 9 ca
90. Exemplo LZW (Cont.)
‘a’ está no dicionário; ‘ad’ não está no
dicionário
Mensagem codificada = ‘0’ ‘1’ ‘4’ ‘0’ ‘2’
‘0’
Dicionário:
0a 5 ab 10 ad
1b 6 br
2c 7 ra
3d 8 ac
4r 9 ca
91. Exemplo LZW (Cont.)
‘d’ está no dicionário; ‘da’ não está no
dicionário
Mensagem codificada = ‘0’ ‘1’ ‘4’ ‘0’ ‘2’
‘0’ ‘3’
Dicionário:
0a 5 ab 10 ad
1b 6 br 11 da
2c 7 ra
3d 8 ac
4r 9 ca
92. Exemplo LZW (Cont.)
‘a’ está no dicionário; ‘ab’ está no
dicionário; ‘abr’ não está no dicionário
Mensagem codificada = ‘0’ ‘1’ ‘4’ ‘0’ ‘2’
‘0’ ‘3’ ‘5’
Dicionário:
0a 5 ab 10 ad
1b 6 br 11 da
2c 7 ra 12 abr
3d 8 ac
4r 9 ca
93. Exemplo LZW (Cont.)
‘r’ está no dicionário; ‘ra’ está no
dicionário; EOF
Mensagem codificada = ‘0’ ‘1’ ‘4’ ‘0’ ‘2’
‘0’ ‘3’ ‘5’ ‘7’
Dicionário:
0a 5 ab 10 ad
1b 6 br 11 da
2c 7 ra 12 abr
3d 8 ac 13 raEOF
4r 9 ca
95. Exemplo LZW (Cont.)
W codificada: ‘0’ ‘1’ ‘4’ ‘0’ ‘2’ ‘0’ ‘3’ ‘5’ ‘7’
W: a
Dicionário :
0a 5 a?
1b
2c
3d
4r
96. Exemplo LZW (Cont.)
W codificada: ‘0’ ‘1’ ‘4’ ‘0’ ‘2’ ‘0’ ‘3’ ‘5’ ‘7’
W: a b
Dicionário :
0a 5 ab
1b 6 b?
2c
3d
4r
97. Exemplo LZW (Cont.)
W codificada: ‘0’ ‘1’ ‘4’ ‘0’ ‘2’ ‘0’ ‘3’ ‘5’ ‘7’
W: a b r
Dicionário :
0a 5 ab
1b 6 br
2c 7 r?
3d
4r
98. Exemplo LZW (Cont.)
W codificada: ‘0’ ‘1’ ‘4’ ‘0’ ‘2’ ‘0’ ‘3’ ‘5’ ‘7’
W: a b r a
Dicionário :
0a 5 ab
1b 6 br
2c 7 ra
3d 8 a?
4r
99. Exemplo LZW (Cont.)
W codificada: ‘0’ ‘1’ ‘4’ ‘0’ ‘2’ ‘0’ ‘3’ ‘5’ ‘7’
W: a b r a c
Dicionário :
0a 5 ab
1b 6 br
2c 7 ra
3d 8 ac
4r 9 c?
100. Exemplo LZW (Cont.)
W codificada: ‘0’ ‘1’ ‘4’ ‘0’ ‘2’ ‘0’ ‘3’ ‘5’ ‘7’
W: a b r a c a
Dicionário :
0a 5 ab 10 a?
1b 6 br
2c 7 ra
3d 8 ac
4r 9 ca
101. Exemplo LZW (Cont.)
W codificada: ‘0’ ‘1’ ‘4’ ‘0’ ‘2’ ‘0’ ‘3’ ‘5’ ‘7’
W: a b r a c a d
Dicionário :
0a 5 ab 10 ad
1b 6 br 11 d?
2c 7 ra
3d 8 ac
4r 9 ca
102. Exemplo LZW (Cont.)
W codificada: ‘0’ ‘1’ ‘4’ ‘0’ ‘2’ ‘0’ ‘3’ ‘5’ ‘7’
W: a b r a c a d ab
Dicionário :
0a 5 ab 10 ad
1b 6 br 11 da
2c 7 ra 12 ab?
3d 8 ac
4r 9 ca
103. Exemplo LZW (Cont.)
W codificada: ‘0’ ‘1’ ‘4’ ‘0’ ‘2’ ‘0’ ‘3’ ‘5’ ‘7’
W: a b r a c a d ab ra
Dicionário :
0a 5 ab 10 ad
1b 6 br 11 da
2c 7 ra 12 abr
3d 8 ac 13 raEOF
4r 9 ca
105. LZW - Exemplo 2 (Cont.)
W = aabababaaa
‘a’ está no dicionário; ‘aa’ não está no
dicionário
Mensagem codificada: 0
Dicionário:
0a
1b
2 aa
106. LZW - Exemplo 2 (Cont.)
W = aabababaaa
‘a’ está no dicionário; ‘ab’ não está no
dicionário
Mensagem codificada: ‘0’ ‘0’
Dicionário:
0a
1b
2 aa
3 ab
107. LZW - Exemplo 2 (Cont.)
W = aabababaaa
‘b’ está no dicionário; ‘ba’ não está no
dicionário
Mensagem codificada: ‘0’ ‘0’ ‘1’
Dicionário:
0a 4 ba
1b
2 aa
3 ab
108. LZW - Exemplo 2 (Cont.)
W = aabababaaa
‘a’ está no dicionário; ‘ab’ está no
dicionário; ‘aba’ não está no dicionário
Mensagem codificada: ‘0’ ‘0’ ‘1’ ‘3’
Dicionário:
0a 4 ba
1b 5 aba
2 aa
3 ab
109. LZW - Exemplo 2 (Cont.)
W = aabababaaa
‘a’ está no dic.; ‘ab’ está no dic.; ‘aba’
está no dic.; ‘abaa’ não está no dic.
Mensagem codificada: ‘0’ ‘0’ ‘1’ ‘3’ ‘5’
Dicionário:
0a 4 ba
1b 5 aba
2 aa 6 abaa
3 ab
110. LZW - Exemplo 2 (Cont.)
W = aabababaaa
‘a’ está no dic.; ‘aa’ está no dic.; aaEOF
não está no dic.
Mensagem codificada: ‘0’ ‘0’ ‘1’ ‘3’ ‘5’ ‘2’
Dicionário:
0a 4 ba
1b 5 aba
2 aa 6 abaa
3 ab 7 aaEOF
113. LZW - Exemplo 2 (Cont.)
W codificada: ‘0’ ‘0’ ‘1’ ‘3’ ‘5’ ‘2’
W: a a
Dicionário:
0a
1b
2 aa
3 a?
114. LZW - Exemplo 2 (Cont.)
W codificada: ‘0’ ‘0’ ‘1’ ‘3’ ‘5’ ‘2’
W: a a b
Dicionário:
0a 4 b?
1b
2 aa
3 ab
115. LZW - Exemplo 2 (Cont.)
W codificada: ‘0’ ‘0’ ‘1’ ‘3’ ‘5’ ‘2’
W: a a b ab
Dicionário:
0a 4 ba
1b 5 ab?
2 aa
3 ab
116. LZW - Exemplo 2 (Cont.)
Mas 1o símbolo da frase em 5 é o último
símbolo da última frase (5):
W codificada: ‘0’ ‘0’ ‘1’ ‘3’ ‘5’ ‘2’
W: a a b ab aba
Dicionário:
0a 4 ba
1b 5 aba
2 aa 6 aba?
3 ab
117. LZW - Exemplo 2 (Cont.)
W codificada: ‘0’ ‘0’ ‘1’ ‘3’ ‘5’ ‘2’
W: a a b ab aba aa
Dicionário:
0a 4 ba
1b 5 aba
2 aa 6 abaa
3 ab 7 aaEOF
118. LZW - Observações
Dicionário de tamanho limitado a P frases
Número de bits, b, dos índices das frases
pode crescer conforme necessário, a
medida em que novas frases são
inseridas
No LZW padrão, índices de tamanho fixo
b = log2P
119. LZW - Observações
O que fazer quando o dicionário enche?
Eliminar frases LRU
Eliminar frases menos utilizadas
Manter dicionário estático
Reiniciar dicionário
Monitorar compressão e, caso se detecte
redução na RC, reiniciar dicionário.
120. Burrows-Wheeler Transform
(BWT)
Transformada reversível criada por
Wheeler in 1983, mas não publicada
Aplicação para compressão: Michael
Burrows and David Wheeler, 1994
BWT não comprime, mas torna a
seqüência mais apropriada à
compressão por métodos simples
121. Burrows-Wheeler Transform
(BWT)
Mensagem com N símbolos
Passos:
1. Listar as N mensagens diferentes obtidas
por rotações (deslocamentos cíclicos) da
mensagem original
2. Ordenar lexicograficamente as N
mensagens obtidas com as rotações e
indexar a lista ordenada
3. Reter o índice da mensagem original e o
último símbolos das mensagens da lista
ordenada, preservando a ordem
122. BWT
Exemplo:
W = quequalquasequando (N = 18);
Alfabeto = {a, d, e, l, n, o, q, s, u}
Rotações:
quequalquasequando
oquequalquasequand
doquequalquasequan
...
126. BWT – Passo 3
A BWT informa explicitamente o
último símbolo de cada rotação na
lista ordenada
Lista ordenada -> sabe-se o
símbolo que se segue a cada um
destes símbolos finais, na
mensagem original
127. BWT – Passo 3
O 1o símbolo da 1a rotação (‘a’)
encontra-se na última posição da
rotação de índice 6, e é o símbolo que
se segue ao último símbolo da 1a
rotação (‘u’)
O 1o símbolo da 2a rotação (‘a’)
encontra-se na última posição da
rotação de índice 7, e é o símbolo que
se segue ao último símbolo da 2a
rotação (‘u’)
128. BWT – Passo 3
O 1o símbolo da 3a rotação (‘a’)
encontra-se na última posição da
rotação de índice 13, e é o símbolo que
se segue ao último símbolo da 3a
rotação (‘u’)
O 1o símbolo da 4a rotação (‘d’)
encontra-se na última posição da
rotação de índice 8, e é o símbolo que
se segue ao último símbolo da 4a
rotação (‘n’)
...
129. BWT – Passo 3
Localizam-se os símbolos seguintes
observando-se apenas a BWT:
uuunusaadeeloaqqqq
130. BWT – Passo 3
Índice do símbolo na BWT->índice do
símbolo seguinte na mensagem
original:
uu u nu s a a d e e l o a q q q q
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
6 7 13 8 9 10 11 3 12 14 15 16 17 5 0 1 2 4
131. BWT – Decodificação
Índice da mensagem original informa a
posição, na BWT, do último símbolo da
mensagem
Mapeamento informa o índice do
símbolo seguinte, ou seja, do 1o
símbolo da mensagem
Seguindo-se o mapeamento,
encontram-se todos os símbolos
seguintes
132. BWT – Decodificação
uu u nu s a a d e e l o a q q q q
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
6 7 13 8 9 10 11 3 12 14 15 16 17 5 0 1 2 4
12 -> 17 (q) -> 4 (u) -> 9(e) -> 14(q)
-> 0(u) -> 6(a) -> 11(l) -> 16(q) ->
2(u) -> 13(a) -> 5(s) -> 10(e) ->
15(q) -> 1(u) -> 7(a) -> 3(n) -> 8(d)
-> 12(o)
133. Compressão com BWT
Passos:
1. BWT
2. Move-To-Front
3. Codificação de entropia (aritmético)
134. Move-To-Front (MTF)
Inicialmente, símbolos são ordenados
e indexados (índices 0, 1, ...)
Na codificação, cada símbolo da
mensagem é substituído pelo seu
índice, e então passa a ocupar a 1a
posição na lista
135. MTF - exemplo
W = quequalquasequando
BWT(W) = uuunusaadeeloaqqqq
Índice 0 1 2 3 4 5 6 7 8
Símbolo a d e l n o q s u
Codificação do 1o símbolo: 8
136. MTF - exemplo
BWT(W) = uuunusaadeeloaqqqq
Índice 0 1 2 3 4 5 6 7 8
Símbolo u a d e l n o q s
Codificação do 2o símbolo: 0
Codificação do 3o símbolo: 0
Codificação do 4o símbolo: 5
137. MTF - exemplo
BWT(W) = uuunusaadeeloaqqqq
Índice 0 1 2 3 4 5 6 7 8
Símbolo n u a d e l o q s
Codificação do 5o símbolo: 1
138. MTF - exemplo
BWT(W) = uuunusaadeeloaqqqq
Índice 0 1 2 3 4 5 6 7 8
Símbolo u n a d e l o q s
Codificação do 6o símbolo: 8
139. MTF - exemplo
BWT(W) = uuunusaadeeloaqqqq
Índice 0 1 2 3 4 5 6 7 8
Símbolo s u n a d e l o q
Codificação do 7o símbolo: 3
140. MTF - exemplo
BWT(W) = uuunusaadeeloaqqqq
Índice 0 1 2 3 4 5 6 7 8
Símbolo a s u n d e l o q
Codificação do 8o símbolo: 0
Codificação do 9o símbolo: 4
141. MTF - exemplo
BWT(W) = uuunusaadeeloaqqqq
Índice 0 1 2 3 4 5 6 7 8
Símbolo d a s u n e l o q
Codificação do 10o símbolo: 5
142. MTF - exemplo
BWT(W) = uuunusaadeeloaqqqq
Índice 0 1 2 3 4 5 6 7 8
Símbolo e d a s u n l o q
Codificação do 11o símbolo: 0
Codificação do 12o símbolo: 6
143. MTF - exemplo
BWT(W) = uuunusaadeeloaqqqq
Índice 0 1 2 3 4 5 6 7 8
Símbolo l e d a s u n o q
Codificação do 13o símbolo: 7
144. MTF - exemplo
BWT(W) = uuunusaadeeloaqqqq
Índice 0 1 2 3 4 5 6 7 8
Símbolo o l e d a s u n q
Codificação do 14o símbolo: 4
145. MTF - exemplo
BWT(W) = uuunusaadeeloaqqqq
Índice 0 1 2 3 4 5 6 7 8
Símbolo a o l e d s u n q
Codificação do 15o símbolo: 8
146. MTF - exemplo
BWT(W) = uuunusaadeeloaqqqq
Índice 0 1 2 3 4 5 6 7 8
Símbolo q a o l e d s u n
Codificação do 16o símbolo: 0
Codificação do 17o símbolo: 0
Codificação do 18o símbolo: 0
147. MTF - exemplo
MTF(BWT(W)) = 8 0 0 5 1 8 3 0 4 5 0 6
748000
No exemplo, Huffman semi-adaptativo
não- contextual produz 53 bits sobre
W, e 48 bits sobre MTF(BWT(W))
O ganho de compressão tende a
aumentar com o aumento de W
Modelos não-contextuais são eficientes
com a BWT, que já explora informação
contextual
148. Modelos Determinísticos
Modelos estatísticos contextuais: número
de contextos diferentes cresce
exponencialmente com o aumento do
tamanho do contexto
Alternativa: modelos determinísticos de
predição
Para sinais físicos: predição polinomial de
ordem K
149. Predição Polinomial de Ordem K
Predição do próximo símbolo baseada nos
últimos K símbolos
Mensagem: W = w0w1...wi-1
Predição para o próximo símbolo: vi
Valor real do próximo símbolo: wi
Erro de predição: ei = wi – vi
150. Predição Polinomial de Ordem K
K vi ei
1 wi-1 wi-wi-1
2 2wi-1- wi-2 wi-2wi-1+wi-2
3 3wi-1-3wi-2+ wi-3 wi-3wi-1+3wi-2- wi-3
151. Predição Polinomial de Ordem K
Exemplo (mensagem com 32 símbolos)
W=76544434321000012321
123555666777
N0= N1= N2= ... = N7 -> H = 3 bits/símbolo
= comprimento médio do código de
Huffman
152. Predição Polinomial de Ordem K
Exemplo (mensagem com 32 símbolos)
K = 1 -> V = 7 -1 -1 -1 0 0 -1 1 -1 -1 -1 –1
0 0 0 1 1 1 -1 -1 0 1 1 2 0 0 1
00100
N0=12; N-1=10; N1=8; N2=1; N7=1
H = 1,87 bits/símbolo
Compr. médio código de Huffman = 2
bits/símbolo
Neste caso, não codificar 1o símbolo
aumenta RC
153. Predição Polinomial de Ordem K
Exemplo (mensagem com 32 símbolos)
K = 2 -> V = 7 6 0 0 1 0 -1 2 -2 0 0 0 1 0 0
1 0 0 -2 0 1 1 0 1 -2 0 1 -1 0
1 -1 0
N0=15; N1=8; N-1=3; N-2=3; N2=1; N6=1;
N7=1 -> H = 1, 76 bits/símbolo
Compr. médio código de Huffman = 2,16
bits/símbolo
154. Predição Polinomial de Ordem K
Exemplo (mensagem com 32 símbolos)
K = 3 -> V = 7 6 5 4 3 5 ...
H=?
Compr. médio código de Huffman = ?
155. Compressão com perdas
Em alguns casos, distorções introduzidas
pela compressão são aceitáveis
Ex: vídeo, imagens, som, outros sinais
Imagens e sinais críticos (e. g. utilizados no
diagnóstico médico): distorções devem ser
cuidadosamente controladas
Eficácia medida pelo compromisso entre RC
e distorção
Sub-amostragem ou quantização (redução
de alfabeto)
156. Compressão com perdas
Compressor/descompressor genérico
x
(n bits) ~
x
Canal
Compressor Descompressor
x x
(m bits)
157. Amostragem e Quantização
Sinal analógico
Sinal digital
...
Amplitude
2q
q
0
-q
-2q
...
Erros
de
quantização 0 T 2T 3T ...
Tempo ou espaço
158. Quantização Vetorial (QV)
Complexidade computacional
extremamente elevada para compressão
Complexidade computacional
extremamente reduzida para
descompressão
Shannon, 1948: codificar elementos
agrupados em vetores é mais eficiente (do
ponto de vista de compressão) que
codificá-los isoladamente.
159. Quantização Vetorial (QV)
Mensagens são particionadas em blocos ou
vetores com L elementos consecutivos
K vetores (vetores-código) são
selecionados, dentre aqueles que podem
ser gerados pela fonte, e armazenados em
uma tabela (codebook) disponível para o
compressor e para o descompressor
Espera-se que os vetores-código
representem adequadamente a fonte
160. Quantização Vetorial (QV)
Alfabeto original com cardinalidade M:
V = ML vetores diferentes
M = 8 e L = 3 => V = 83 = 512
M = 16 e L = 4 => V = 64K
M = 256 e L = 4 => V = 4G
161. Quantização Vetorial (QV)
ck, k = 0, 1,..., K-1: k-ésimo vetor-
código do codebook
ckj, j = 0, 1,..., L-1: j-ésimo elemento
de ck
vi, i = 0, 1,...: i-ésimo vetor na
mensagem produzida pela fonte
vij, j = 0, 1,..., L-1: j-ésimo elemento
de vi.
163. Quantização Vetorial (QV)
Para codificar vi, o QV calcula a distorção
D(vi, ck), k = 0, 1, ..., K-1.
Erro médio quadrático:
L −1
1
D( v i , c k ) = ∑ (vij − c kj ) 2
L j =0
Se D(vi, ck) é mínima para k = k’, índice k’
é anexado à mensagem comprimida.
Na descompressão, k’ é substituído pelo
vetor-código ck’
164. Quantização Vetorial (QV)
Se os índices são codificados com
log2(K) bits, a taxa resultante é de
log2(K)/L bits/elemento.
Alfabeto original com cardinalidade M:
RC = log2(ML)/log2(K)
Ex: M = 256, L = 4, K = 128
RC = log2(2564)/log2(128) = 4,57
165. Quantização Vetorial (QV)
Teoricamente, quanto maior L, mais
eficiente a quantização.
Dimensão dos vetores é limitada na
prática.
Desempenho depende ainda do
tamanho do codebook, da escolha dos
vetores-código e da medida de
distorção.
Como selecionar vetores-código?
166. Quantização Vetorial (QV)
O codebook é gerado por treinamento.
No treinamento, uma quantidade elevada
de mensagens é examinada.
Vetores mais representativos são
selecionados como vetores-código.
O algoritmo LBG é um método de
treinamento popular, mas uma grande
variedade de técnicas tem sido
apresentada, incluindo redes neurais
Codebooks estáticos x dinâmicos
167. Quantização Escalar
Como QV, opera por redução de alfabeto
Símbolos tratados individualmente
Quantização uniforme: divisão seguida por
arredondamento para inteiro:
x = x // q
ˆ
Valor “dequantizado”:
~ = qx
x ˆ
q: tamanho do passo de quantização