tipos de c odigos de fonte -...

24
Tipos de c´ odigos de fonte Luis Henrique Assump¸ ao Lolis 13 de setembro de 2013 Luis Henrique Assump¸ ao Lolis Tipos de c´ odigos de fonte 1

Upload: dominh

Post on 12-Nov-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

Tipos de codigos de fonte

Luis Henrique Assumpcao Lolis

13 de setembro de 2013

Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 1

Conteudo

1 Codigo de prefixo

2 Codigo de Fano

3 Codigo de Huffman

4 Lempel-Ziv

Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 2

Codigos de fonte

Compressao de dados sem perda : compactacao de dados.

Relembrando

Relembrando : O codigo deve ser unicamente decodificavelQualquer sequencia de palavras codigo e ligada a uma unicasequencia de sımbolos da fonte.

Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 3

Sumario

1 Codigo de prefixo

2 Codigo de Fano

3 Codigo de Huffman

4 Lempel-Ziv

Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 4

Codigo de prefixo

Para garantir a condicao, as palavras codigos pequenas naopodem ser prefixos de outras palavras codigo maiores.

O prefixo e do primeiro ao penultimo digito da palavra-codigo.

Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 5

Para calcular um codigo de prefixo

1 Ordenar os sımbolos por ordem decrescente de probabilidade.2 Alocar 0 para o primeiro sımbolo e 1 aos seguintes.3 Alocar 0 no segundo digito e 1 para os seguintes.4 Repetir a operacao ate chegar no ultimo sımbolo.

Sımbolo Probabilidade

u1 1/4

u2 1/4

u3 1/8

u4 1/8

u5 1/16

u6 1/16

u7 1/32

u8 1/32

u9 1/32

u10 1/32

Codigo binario

Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 6

Para calcular um codigo de prefixo

1 Ordenar os sımbolos por ordem decrescente de probabilidade.2 Alocar 0 para o primeiro sımbolo e 1 aos seguintes.3 Alocar 0 no segundo digito e 1 para os seguintes.4 Repetir a operacao ate chegar no ultimo sımbolo.

Sımbolo Probabilidade

u1 1/4

u2 1/4

u3 1/8

u4 1/8

u5 1/16

u6 1/16

u7 1/32

u8 1/32

u9 1/32

u10 1/32

Codigo binario

0

10

110

1110

11110

111110

1111110

11111110

111111110

111111111

Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 6

Esse codigo e conhecido como codigo de vırgula, pois o zeroindica o fim da palavra codigo e o fato de uma palavra codigonao ter mais que 9 sımbolos.

Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 7

Sumario

1 Codigo de prefixo

2 Codigo de Fano

3 Codigo de Huffman

4 Lempel-Ziv

Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 8

Codigo de Fano

1 Ordenar os sımbolos por ordemdecrescente de probabilidade

2 Para o grupo de maiorprobabilidade atribuir 0 aosdois primeiros e 1 para osdemais

3 Para o grupo com 0 atribuıdo,diferenciar os sımbolos por 0 e1 na segunda linha

4 Na segunda linha a partir dosegundo grupo mais provavel,atribuir 0 aos dois primeiros e 1aos demais.

5 Repetir o procedimento aossımbolos seguintes.

Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 9

Ex:Codigo de Fano

Calcular o codigo binario usando o metodo de Fano para aseguinte sequencia de sımbolos e probabilidades:

Sımbolo Probabilidade

u1 0,3u2 0,2u3 0,15u4 0,1u5 0,1u6 0,05u7 0,05u8 0,05

Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 10

Sumario

1 Codigo de prefixo

2 Codigo de Fano

3 Codigo de Huffman

4 Lempel-Ziv

Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 11

Codigo de Huffman

Criado para se aproximar ao maximo do limite do teorema deShannon : L ≥ (V)Para isso cada palavra codigo e analisada por vez. O numerode bits da palavra codigo e a mais perto da quantidade deinformacao do sımbolo que ela representa.

O codigo basicamente reagrupa os dois sımbolos de menorprobabilidade em um so e vai reagrupando ate sobrar somentedois grupos.

O codigo e calculado da seguinte maneira:

Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 12

1 Listar os sımbolos em ordem decrescente de probabilidade. Osdois sımbolos de menor probabilidade sao listados com 0 e 1.Essa etapa e chamada de Splitting.

2 Esses dois sımbolos sao combinados e geram um outrosımbolo cuja probabilidade e a soma das probabilidades dossımbolos de origem. Etapa chamada de Combining

3 Repete as operacoes ate sobrar dois sımbolos, onde vai seacordar um 0 e um 1 para esses sımbolos

sımbolo pk pk pk pk pk Codigo r = 2

u1 0,4

u2 0,3

u3 0,1

u4 0,1

u5 0,06

u6 0,04

Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 13

Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 14

Calcular a eficiencia do codigo

1 Primeiro se calcula a entropia do codigo

H(V) =K−1∑k=0

pk log2

(1

pk

)=

0, 4 log2

(1

0, 4

)+ 0, 3 log2

(1

0, 3

)+ 2 · 0, 1 log2

(1

0, 1

)+

0, 06 log2

(1

0, 06

)+ 0, 04 log2

(1

0, 04

)= 2, 1435

2 Depois se calcula o tamanho medio da palavra codigo

L =

K−1∑k=0

pklk =

0, 4 + 2 · 0, 3 + 3 · 0, 1 + 4 · 0, 1 + 4 · 0, 06 + 4 · 0, 04 = 2, 2

Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 15

Calcular a eficiencia do codigo1 Primeiro se calcula a entropia do codigo

H(V) =K−1∑k=0

pk log2

(1

pk

)=

0, 4 log2

(1

0, 4

)+ 0, 3 log2

(1

0, 3

)+ 2 · 0, 1 log2

(1

0, 1

)+

0, 06 log2

(1

0, 06

)+ 0, 04 log2

(1

0, 04

)= 2, 1435

2 Depois se calcula o tamanho medio da palavra codigo

L =

K−1∑k=0

pklk =

0, 4 + 2 · 0, 3 + 3 · 0, 1 + 4 · 0, 1 + 4 · 0, 06 + 4 · 0, 04 = 2, 2

Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 15

Calcular a eficiencia do codigo1 Primeiro se calcula a entropia do codigo

H(V) =K−1∑k=0

pk log2

(1

pk

)=

0, 4 log2

(1

0, 4

)+ 0, 3 log2

(1

0, 3

)+ 2 · 0, 1 log2

(1

0, 1

)+

0, 06 log2

(1

0, 06

)+ 0, 04 log2

(1

0, 04

)= 2, 1435

2 Depois se calcula o tamanho medio da palavra codigo

L =

K−1∑k=0

pklk =

0, 4 + 2 · 0, 3 + 3 · 0, 1 + 4 · 0, 1 + 4 · 0, 06 + 4 · 0, 04 = 2, 2

Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 15

Exercıcio:

1 Faca o codigo de Huffman dos seguines sımbolos

2 Indique sua eficiencia

Sımbolo Probabilidade Codigo Binariou1 1/32u2 1/16u3 1/4u4 1/8u5 1/8u6 1/4u7 1/32u8 1/32u9 1/32

u10 1/16

Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 16

Sumario

1 Codigo de prefixo

2 Codigo de Fano

3 Codigo de Huffman

4 Lempel-Ziv

Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 17

Lempel-Ziv

Huffman necessita das probabilidades da fonte. Lempel-Ziv eadaptativo e nao necessita de conhecer o modeloprobabilıstico da fonte.

Codigo de tamanho constante. O numero de palavraspossıveis indica o tamanho do codigo. O dicionario e enviadojuntamente com a informacao para decodificacao. Eficientepara grandes sequencias com alta taxa de repeticao.

O codigo separa a fonte em segmentos que sao as menoressubsequencias nao encontradas anteriormente. Baseado nanocao de dicionario. Se a letra ja esta no dicionario nao eadicionada.

No caso de sequencia binaria, as duas primeiras palavras(”0”e ”1”) ja tem o endereco 0 como indicado.

O enderecos sao contados a partir do ”1”, que e o enderecoda palavra ”0”

Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 18

Lempel-Ziv

Separar a sequencia0101011100010101110100101110101010110

1 0 esta no dicionario.2 01 nao esta no dicionario, adicionar.3 0 esta. 01 esta, 010 nao, adicionar.4 1 esta, 11 nao, adicionar.

01,010,11,10,00,101,011,1010,0101,110,10101,0110

Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 19

Lempel-Ziv

Indexar os segmentos que foram separados. O ”0”ja esta noendereco ”1”e o ”1”ja esta no endereco ”2”.

01,010,11,10,00,101,011,1010,0101,110,10101,0110

Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 20

Lempel-Ziv

O codigo e o endereco do prefixo do seguimento e o ultimodıgito.

0,01,1,010,11,10,00,101,011,1010,0101,110,10101,0110

0 1 000001 2 00001

01 3 00011010 4 0011011 5 0010110 6 0010000 7 00010

101 8 01101011 9 00111

1010 10 100000101 11 01001110 12 01010

10101 13 101010110 14 10010

sem prefixo

sem prefixoprefixo 01, endereço 1, último dígito 0prefixo 1, endereço 2 (10 binário), último dígito 1

prefixo 011, endereço 8 (1000 binário), último dígito 0

o ”0”recebe o prefixo 0000 (pois naotem prefixo de ninguem) e o valor ”0”.o ”1”recebe o prefixo 0000 (pois naotem prefixo de ninguem) e o valor ”1”.o ”01”recebe o prefixo 0001 (pois oprefixo e o ”0”de endereco ”1”) e ovalor ”1”.

0 ”010”recebe o prefixo 0011 (pois o

prefixo e o ”01”de endereco ”3”) e o

valor ”0”.Luis Henrique Assumpcao Lolis Tipos de codigos de fonte 21