Buscar

aula08_compressao_p2-expanded

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 127 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 127 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 127 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Natureza da 
Informação
Prof. Thiago F. Covões
baseado no material do Prof. David Correa 
Códigos Eficientes II
 
Compressão
 Objetivo: converter cadeia de bits 
representando símbolos sucessivos em uma 
cadeia menor para economia em:
 Transmissão
 Armazenamento
 Processamento
 
Compressão
 Objetivo: converter cadeia de bits 
representando símbolos sucessivos em uma 
cadeia menor para economia em:
 Transmissão
 Armazenamento
 Processamento
 Diminui mensagens, mas aumenta 
processamento necessário 
 
Tipos de compressão
 Sem perda ou reversível
 Símbolo original/codificado pode ser reconstruído 
exatamente a partir da versão comprimida
 
Tipos de compressão
 Sem perda ou reversível
 Símbolo original/codificado pode ser reconstruído 
exatamente a partir da versão comprimida
 Usualmente explora redundâncias
 Ex. tem padrões de bits não usados ou tem alguns símbolos 
mais usados que outros
 
Tipos de compressão
 Sem perda ou reversível
 Símbolo original/codificado pode ser reconstruído 
exatamente a partir da versão comprimida
 Usualmente explora redundâncias
 Ex. tem padrões de bits não usados ou tem alguns símbolos 
mais usados que outros
 Com perda ou irreversível
 Símbolo original/codificado não pode ser reconstruído 
exatamente a partir da versão comprimida
 Expansor produz aproximação
 
Tipos de compressão
 Exemplo: mensagem 25.888888888
 Pode ser comprimida sem perda como: 25.[9]8
 “vinte e cinco ponto 9 oitos“
 Cadeia original pode ser perfeitamente recriada
 
Tipos de compressão
 Exemplo: mensagem 25.888888888
 Pode ser comprimida sem perda como: 25.[9]8
 “vinte e cinco ponto 9 oitos“
 Cadeia original pode ser perfeitamente recriada
 Ou comprimida com perda como: 26
 O dado exato é perdido, porém há o benefício de uma 
codificação menor
 
Técnicas de compressão 
sem perda
 Permitem reconstrução exata da mensagem:
 Codificação run-length
 Codificação de tamanho variável
 Dicionário estático
 Dicionário semi-adaptativo
 Dicionário dinâmico
 
Codificação run-length
 Suponha mensagem com sequências longas 
de repetições de símbolos
 
Codificação run-length
 Suponha mensagem com sequências longas 
de repetições de símbolos
 Pode codificar mensagem como lista do símbolo 
e número de vezes que ele ocorre
 Ex.: mensagem “a B B B B B B a a a B B a a a a” 
poderia ser codificada como “a[1] B[6] a[3] B[2] a[4]”
 
Codificação run-length
 Suponha mensagem com sequências longas 
de repetições de símbolos
 Pode codificar mensagem como lista do símbolo 
e número de vezes que ele ocorre
 Ex.: mensagem “a B B B B B B a a a B B a a a a” 
poderia ser codificada como “a[1] B[6] a[3] B[2] a[4]”
 Funciona bem em poucas circunstâncias
 
Codificação run-length
 Exemplos:
 Bandeira da Alemanha
 X pixels pretos, X pixels vermelhos, X pixels amarelos
 
Codificação run-length
 Exemplos:
 Bandeira da Alemanha
 X pixels pretos, X pixels vermelhos, X pixels amarelos
 Fax
 Documento é escaneado em preto e branco
 Longos grupos de pixels brancos ou pretos são transmitidos 
como o número desses pixels
 
Codificação run-length
 Não funciona bem para mensagens sem 
repetições de sequências de um mesmo 
símbolo
 
Codificação run-length
 Não funciona bem para mensagens sem 
repetições de sequências de um mesmo 
símbolo
 Ex.: fotografias, em que pequenas mudanças em 
sombreamento de um pixel a outro requer o uso 
de vários símbolos 
 
Codificação de tamanho 
variável
 Atribuição de códigos menores a símbolos 
mais frequentes
 
Codificação de tamanho 
variável
 Atribuição de códigos menores a símbolos 
mais frequentes
 E códigos maiores para símbolos menos 
frequentes
 
Codificação de tamanho 
variável
 Atribuição de códigos menores a símbolos 
mais frequentes
 E códigos maiores para símbolos menos 
frequentes
 Codificações de Shannon-Fano e Huffman 
(vide última aula)
 
Codificação de tamanho 
variável
 Shannon-Fano e Huffman assumem que a 
distribuição de probabilidades dos símbolos não 
muda ao longo da sequência de emissões
 
Codificação de tamanho 
variável
 Shannon-Fano e Huffman assumem que a 
distribuição de probabilidades dos símbolos não 
muda ao longo da sequência de emissões
 Huffman é ótimo nessa situação
 
Codificação de tamanho 
variável
 Shannon-Fano e Huffman assumem que a 
distribuição de probabilidades dos símbolos não 
muda ao longo da sequência de emissões
 Huffman é ótimo nessa situação
 Porém, em muitas situações, a distribuição de 
probabilidades dos símbolos pode depender de 
uma história de emissões
 
Codificação de tamanho 
variável
 Shannon-Fano e Huffman assumem que a 
distribuição de probabilidades dos símbolos não 
muda ao longo da sequência de emissões
 Huffman é ótimo nessa situação
 Porém, em muitas situações, a distribuição de 
probabilidades dos símbolos pode depender de 
uma história de emissões
 Textos em geral
 
Codificação de tamanho 
variável
 Shannon-Fano e Huffman assumem que a 
distribuição de probabilidades dos símbolos não 
muda ao longo da sequência de emissões
 Huffman é ótimo nessa situação
 Porém, em muitas situações, a distribuição de 
probabilidades dos símbolos pode depender de 
uma história de emissões
 Textos em geral
 Exemplo: a distribuição de probabilidades torna-se mais 
concentrada do que o normal nas vogais “a”, “e”, “i”, “o”, após 
a emissão das letras “q” e “u” considerando a língua 
portuguesa (a probabilidade de ser uma consoante é zero 
após “qu”)
 
Dicionário estático
 Apropriado para mensagens de texto
 
Dicionário estático
 Apropriado para mensagens de texto
 Se um código tem padrões não usados, eles 
podem ser atribuídos a sequências que 
ocorrem frequentemente
 
Dicionário estático
 Apropriado para mensagens de texto
 Se um código tem padrões não usados, eles 
podem ser atribuídos a sequências que 
ocorrem frequentemente
 Por exemplo: abreviações
 
Dicionário estático
 Apropriado para mensagens de texto
 Se um código tem padrões não usados, eles 
podem ser atribuídos a sequências que 
ocorrem frequentemente
 Por exemplo: abreviações
 E essas sequências passam a requerer menos 
bits do que a transmissão símbolo a símbolo
 
Dicionário estático
 Apropriado para mensagens de texto
 Se um código tem padrões não usados, eles 
podem ser atribuídos a sequências que 
ocorrem frequentemente
 Por exemplo: abreviações
 E essas sequências passam a requerer menos 
bits do que a transmissão símbolo a símbolo
 Ex.: DEL em ASCII pode ser desnecessário
  atribuir código 127 à palavra “the”
 
Dicionário estático
 Apropriado para mensagens de texto
 Se um código tem padrões não usados, eles 
podem ser atribuídos a sequências que 
ocorrem frequentemente
 Por exemplo: abreviações
 E essas sequências passam a requerer menos 
bits do que a transmissão símbolo a símbolo
 Ex.: DEL em ASCII pode ser desnecessário
  atribuir código 127 à palavra “the”
 Lista de códigos e seus significados é chamada 
livro de códigos ou dicionário
 
Dicionário estático
 Uso de abreviações para comprimir 
mensagens implica necessidade de 
dicionário
 
Dicionário estático
 Uso de abreviações para comprimir 
mensagens implica necessidade de 
dicionário
 E de transmití-lo antes da primeira mensagem
 Deve ser cuidadosamente construído e não pode ser 
alterado com frequência
 
Dicionário estático
 Uso de abreviações para comprimir 
mensagens implica necessidade de 
dicionário
 E de transmití-lo antes da primeira mensagem
 Deve ser cuidadosamente construído e não pode ser 
alterado com frequência
 Bom para conjuntos de mensagens similares
 
Dicionário estático
 Uso de abreviações para comprimir 
mensagens implica necessidade de 
dicionário
 E de transmití-lo antes da primeira mensagem
 Deve ser cuidadosamente construído e não pode ser 
alterado com frequência
 Bompara conjuntos de mensagens similares
 Não adequado para mensagens diversas
 
Dicionário semi-
adaptativo
 Se um novo dicionário pudesse ser definido para 
cada mensagem, a compressão seria maior
 Sequências de símbolos da mensagem em particular 
poderiam ser entradas do dicionário
 
Dicionário semi-
adaptativo
 Se um novo dicionário pudesse ser definido para 
cada mensagem, a compressão seria maior
 Sequências de símbolos da mensagem em particular 
poderiam ser entradas do dicionário
 Problemas:
 Novo dicionário teria que ser transmitido junto à mensagem 
 
Dicionário semi-
adaptativo
 Se um novo dicionário pudesse ser definido para 
cada mensagem, a compressão seria maior
 Sequências de símbolos da mensagem em particular 
poderiam ser entradas do dicionário
 Problemas:
 Novo dicionário teria que ser transmitido junto à mensagem 
 Mensagem deve ser analisada antes para descobrir as 
melhores entradas para o dicionário
 Deve ser conhecida antes e armazenada como um todo antes
 
Dicionário semi-
adaptativo
 Se um novo dicionário pudesse ser definido para 
cada mensagem, a compressão seria maior
 Sequências de símbolos da mensagem em particular 
poderiam ser entradas do dicionário
 Problemas:
 Novo dicionário teria que ser transmitido junto à mensagem 
 Mensagem deve ser analisada antes para descobrir as 
melhores entradas para o dicionário
 Deve ser conhecida antes e armazenada como um todo antes
Uso limitado
 
Dicionário dinâmico
 Calculado à medida que a mensagem é 
processada
 
Dicionário dinâmico
 Calculado à medida que a mensagem é 
processada
 Não precisa acompanhar a mensagem
 
Dicionário dinâmico
 Calculado à medida que a mensagem é 
processada
 Não precisa acompanhar a mensagem
 Pode ser usado antes do fim da mensagem 
ser processada
 
Dicionário dinâmico
 Ex. técnica de compressão LZW
 Abraham Lempel, Jacob Ziv, Terry Welch
 Lempel e Ziv: várias técnicas de compressão, LZ77 e 
LZ78
 Modificações de Welch em 1984
 
Dicionário dinâmico
 Welch queria reduzir número de bits enviados à 
cabeça de gravação em discos
 Aumentar capacidade dos discos
 Melhorar velocidade de transmissão de dados
 
Dicionário dinâmico
 Welch queria reduzir número de bits enviados à 
cabeça de gravação em discos
 Aumentar capacidade dos discos
 Melhorar velocidade de transmissão de dados
 Aplicado a arquivos de: 
 Textos: reduz tipicamente a metade do tamanho
 Imagens, com grandes áreas com mesma cor: pode 
reduzir a menos da metade
 GIF usa compressão LZW
 Em fotos com mudanças graduais de cor, compressão é 
muito mais modesta
 
Dicionário dinâmico
 Welch queria reduzir número de bits enviados à 
cabeça de gravação em discos
 Aumentar capacidade dos discos
 Melhorar velocidade de transmissão de dados
 Aplicado a arquivos de: 
 Textos: reduz tipicamente a metade do tamanho
 Imagens, com grandes áreas com mesma cor: pode 
reduzir a menos da metade
 GIF usa compressão LZW
 Em fotos com mudanças graduais de cor, compressão é 
muito mais modesta
Problema: patente até 2004
 
Compressão LZW
 Reversível: não perde informação, decodificador reconstrói 
mensagem original exatamente
 
Compressão LZW
 Reversível: não perde informação, decodificador reconstrói 
mensagem original exatamente
 Dicionário inicial: 8 bits (0 a 255)
 ASCII nos primeiros caracteres
 
Compressão LZW
 Reversível: não perde informação, decodificador reconstrói 
mensagem original exatamente
 Dicionário inicial: 8 bits (0 a 255)
 ASCII nos primeiros caracteres
 Entrada 256: começo da transmissão (limpar dicionário)
 Entrada 257: fim de transmissão ou parada
 
Compressão LZW
 Reversível: não perde informação, decodificador reconstrói 
mensagem original exatamente
 Dicionário inicial: 8 bits (0 a 255)
 ASCII nos primeiros caracteres
 Entrada 256: começo da transmissão (limpar dicionário)
 Entrada 257: fim de transmissão ou parada
 Mensagem codificada = sequência de números
 Códigos representando as entradas no dicionário
 
Compressão LZW
 Dicionário inicialmente contém caracteres 
isolados, mas novas entradas com dois ou 
mais caracteres vão sendo definidas a 
medida que a mensagem é analisada
 
Compressão LZW
 Codificação:
 nova_entrada = novas entradas do dicionário = 
 Manda código de início (256)
 Adiciona a nova_entrada os caracteres, um a um, da 
mensagem sendo comprimida
 Assim que nova_entrada se torna diferente de qualquer outra 
cadeia já no dicionário, coloca-a no dicionário e manda 
código da cadeia sem o último caractere
 Quando mensagem termina, manda código de 
nova_entrada e código de parada (257)
 
Compressão LZW
 Decodificação:
 Se recebe código de início (256), limpa dicionário novo e seta 
nova_entrada' = 
 Para o código seguinte recebido, produz como saída o caractere 
representado pelo código e coloca-o em nova_entrada’
 Para códigos subsequentes recebidos
 Se conhece o código:
 Adiciona o primeiro caractere da cadeia representada pelo código a 
nova_entrada', insere resultado no dicionário e produz como saída a 
cadeia do código recebido
 Coloca em nova_entrada' a cadeia anterior, para começar nova 
entrada do dicionário
 Senão:
 Repete em nova_entrada' primeiro caractere do código recebido 
anteriormente, insere resultado no dicionário e produz como saída a 
cadeia do código recebido
 Quando o código de parada (257) é recebido, nada precisa ser feito
 
 Exemplo 1: mensagem “itty bitty bit bin”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
Entrada: caracte-
res com 8 bits
(código ASCII)
Transmissão: ca-
racteres com 9 bits
 
 Exemplo 1: mensagem “itty bitty bit bin”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
1) Nova_entrada = 
2) Manda 
código de início
3) Recebendo 
código de início, 
limpa dicionário e faz 
nova_entrada’ =  
4) Nova_entrada = i
 
 Exemplo 1: mensagem “itty bitty bit bin”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
1) Nova_entrada = i t
(não tem no dicionário) 
 2) Insere no dicionário
3) Manda 
código de 
nova_entrada, 
sem o caractere 
final  i
5) Produz como saída 
o caractere do código 
recebido  i
6) Nova_entrada’ = i
4) nova_entrada=t
 
 Exemplo 1: mensagem “itty bitty bit bin”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
1) Nova_entrada = t
(tem no dicionário)
2) Nova_entrada = t t
(não tem) 
 3) Insere no dicionário
4) Manda 
código de 
nova_entrada, 
sem o caractere 
final  t
6) Nova_entrada’ = i t
7) Insere 
nova_entrada’ no 
dicionário
8) Produz saída = 
cadeia do código 
recebido  t
5) nova_entrada=t
9) nova_entrada’=t
 
 Exemplo 1: mensagem “itty bitty bit bin”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
1) Nova_entrada= t
(tem no dicionário)
2) Nova_entrada = t y
(não tem) 
 3) Insere no dicionário
4) Manda 
código de 
nova_entrada, 
sem o caractere 
final  t
5) nova_entrada=y
6) Nova_entrada’ = t t
7) Insere 
nova_entrada’ no 
dicionário
8) Produz saída = 
cadeia do código 
recebido  t
9) nova_entrada’=t
 
 Exemplo 1: mensagem “itty bitty bit bin”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
1) Nova_entrada = y
(tem no dicionário)
2) Nova_entrada = 
y space (não tem) 
 3) Insere no dicionário
4) Manda 
código de 
nova_entrada, 
sem o caractere 
final  y
5) nova_entrada=space
6) Nova_entrada’ = t y
7) Insere 
nova_entrada’ no 
dicionário
8) Produz saída = 
cadeia do código 
recebido  y
9) nova_entrada’=y
 
 Exemplo 1: mensagem “itty bitty bit bin”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
1) Nova_entrada = space
(tem no dicionário)
2) Nova_entrada = 
space b (não tem) 
 3) Insere no dicionário
4) Manda 
código de 
nova_entrada, 
sem o caractere 
final  space
5) nova_entrada=b
6) Nova_entrada’ = y 
space
7) Insere 
nova_entrada’ no 
dicionário
8) Produz saída = 
cadeia do código 
recebido  space
9) nova_entrada’=space
 
 Exemplo 1: mensagem “itty bitty bit bin”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
1) Nova_entrada = b
(tem no dicionário)
2) Nova_entrada = 
b i (não tem) 
 3) Insere no dicionário
4) Manda 
código de 
nova_entrada, 
sem o caractere 
final  b
5) nova_entrada=i
6) Nova_entrada’ = 
space b
7) Insere 
nova_entrada’ no 
dicionário
8) Produz saída = 
cadeia do código 
recebido  b
9) nova_entrada’=b
 
 Exemplo 1: mensagem “itty bitty bit bin”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
1) Nova_entrada = i
(tem no dicionário)
2) Nova_entrada = 
i t (tem)
 
 Exemplo 1: mensagem “itty bitty bit bin”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
1) Nova_entrada = i t
(tem no dicionário)
2) Nova_entrada = 
i t t (não tem) 
 3) Insere no dicionário
4) Manda 
código de 
nova_entrada, 
sem o caractere 
final  i t
5) nova_entrada=t
6) Nova_entrada’ = b i
7) Insere nova_entrada’ 
no dicionário
8) Produz saída = cadeia 
do código recebido  i t
9) nova_entrada’=i t
 
 Exemplo 1: mensagem “itty bitty bit bin”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
1) Nova_entrada = t
(tem no dicionário)
2) Nova_entrada = 
t y (tem) 
 
 Exemplo 1: mensagem “itty bitty bit bin”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
1) Nova_entrada = t y
(tem no dicionário)
2) Nova_entrada = 
t y space (não tem)
 3) Insere no dicionário 
4) Manda 
código de 
nova_entrada, 
sem o caractere 
final  t y
5) nova_entrada=space
6) Nova_entrada’ = i t t
7) Insere nova_entrada’ 
no dicionário
8) Produz saída = cadeia 
do código recebido  t y
9) nova_entrada’=t y
 
 Exemplo 1: mensagem “itty bitty bit bin”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
1) Nova_entrada = space
(tem no dicionário)
2) Nova_entrada = 
space b (tem) 
 
 Exemplo 1: mensagem “itty bitty bit bin”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
1) Nova_entrada = space 
b (tem no dicionário)
2) Nova_entrada = 
space b i (não tem)
 3) Insere no dicionário 
4) Manda 
código de 
nova_entrada, 
sem o caractere 
final  space b
5) nova_entrada=i
6) Nova_entrada’ = t y spa
7) Insere nova_entrada’ 
no dicionário
8) Saída = cadeia do 
código recebido  spa b
9) nova_entrada’=spa b
 
 Exemplo 1: mensagem “itty bitty bit bin”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
• Nova_entrada = i 
(tem no dicionário)
2) Nova_entrada = 
i t (tem)
 
 Exemplo 1: mensagem “itty bitty bit bin”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
• Nova_entrada = i t
(tem no dicionário)
2) Nova_entrada = 
i t space (não tem)
 3) Insere no dicionário
4) Manda 
código de 
nova_entrada, 
sem o caractere 
final  i t
5) nova_entrada=space
6) Nova_entrada’ = spa b i
7) Insere nova_entrada’ 
no dicionário
8) Saída = cadeia do 
código recebido  i t
9) nova_entrada’=i t
 
 Exemplo 1: mensagem “itty bitty bit bin”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
• Nova_entrada = space
(tem no dicionário)
2) Nova_entrada = 
space b (tem)
 
 Exemplo 1: mensagem “itty bitty bit bin”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
• Nova_entrada = space 
b (tem)
2) Nova_entrada = 
space b i (tem)
 
 Exemplo 1: mensagem “itty bitty bit bin”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
• Nova_entrada = space 
b i (tem)
2) Nova_entrada = 
space b i n (não tem)
 3) Insere no dicionário 4) Manda código 
de 
nova_entrada, 
sem o caractere 
final  space b i
5) nova_entrada=n
6) Nova_entrada’= i t spa
7) Insere nova_entrada’ 
no dicionário
8) Saída = cadeia do 
código recebido  spa b i
9) nova_entrada’=spa b i
 
 Exemplo 1: mensagem “itty bitty bit bin”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
• Nova_entrada = n 
(tem)
2) Acabou mensagem 3) Manda código 
de 
nova_entrada  
n
4) Manda 
parada
6) Nova_entrada’ = spa b i 
n
7) Insere nova_entrada’ 
no dicionário
8) Saída = cadeia do 
código recebido  n
9) Recebe parada
 
 Exemplo 1: mensagem “itty bitty bit bin”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
 
 Exemplo 2: mensagem “aaaaaa”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
97 a - - 256 (início) - - -
1) Nova_entrada = 
2) Manda 
código de início
3) Recebendo 
código de início, 
limpa dicionário e faz 
nova_entrada’ =  
4) Nova_entrada = a
 
 Exemplo 2: mensagem “aaaaaa”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
 97 a - - 256 (início) - - -
 97 a 258 aa 97 (a) - - a
1) Nova_entrada = aa
(não tem no dicionário) 
 2) Insere no dicionário
3) Manda 
código de 
nova_entrada, 
sem o caractere 
final  a
5) Produz como saída 
o caractere do código 
recebido  a
6) Nova_entrada’ = a
4) nova_entrada=a 
(último caractere 
recebido)
 
 Exemplo 2: mensagem “aaaaaa”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
97 a - - 256 (início) - - -
97 a 258 aa 97 (a) - - 
a
97 a - - - - - - 
-
1) Nova_entrada = a
(tem no dicionário)
2) Nova_entrada = aa
(tem) 
 
 Exemplo 2: mensagem “aaaaaa”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
97 a - - 256 (início) - - -
97 a 258 aa 97 (a) - - a
97 a - - - - - - -
97 a 259 aaa 258 (aa) 258 aa aa
1) Nova_entrada = aa
(tem no dicionário)
2) Nova_entrada = aaa
(não tem) 
 3) Insere no dicionário
4) Manda 
código de 
nova_entrada, 
sem o caractere 
final  aa
6) Não conhece código 
258  repete 1o 
caractere de cód. anter. 
em Nova_entrada’ = aa
7) Insere nova_entrada’ 
no dicionário
8) Produz saída = cadeia 
do código recebido  aa
5) nova_entrada=a (último 
caractere recebido) 9) nova_entrada’=aa
 
 Exemplo 2: mensagem “aaaaaa”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
97 a - - 256 (início) - - -
97 a 258 aa 97 (a) - - a
97 a - - - - - - -
97 a 259 aaa 258 (aa) 258 aa aa
97 a - - - - - - - 
 
1) Nova_entrada = a
(tem no dicionário)
2) Nova_entrada = aa
(tem) 
 
 Exemplo 2: mensagem “aaaaaa”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
 97 a - - 256 (início) - - -
97 a 258 aa 97 (a) - - a
97 a - - - - - - -
97 a 259 aaa 258 (aa) 258 aa aa
97 a - - - - - - - 
97 a - - - - - - - 
 
1) Nova_entrada = aa
(tem no dicionário)
2) Nova_entrada = aaa
(tem) 
 
 Exemplo 2: mensagem “aaaaaa”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
97 a - - 256 (início) - - -
97 a 258 aa 97 (a) - - a
97 a - - - - - - -
97 a 259 aaa 258 (aa) 258 aa aa
97 a - - - - - - - 
97 a - - - - - - - 
- - - - 259 (aaa) 259 aaa aaa
- - - - 257 (parada) - - - 
1) Nova_entrada = aaa
(tem no dicionário)
2) Recebeu parada4) Manda 
código de 
nova_entrada, 
seguido por 
parada
6) Não conhece código 259 
 repete 1o carac. de cód. 
ant. em nova_entrada’ = aaa
7) Insere nova_entrada’ no 
dicionário
8) Produz saída = cadeia do 
código recebido  aaa
 
 Exemplo 2: mensagem “aaaaaa”
 Codificação Transmissão Decodificação
 Entrada nova_entrada nova_entrada Saída
 dicionário dicionário
97 a - - 256 (início) - - -
97 a 258 aa 97 (a) - - a
97 a - - - - - - -
97 a 259 aaa 258 (aa) 258 aa aa
97 a - - - - - - - 
97 a - - - - - - - 
- - - - 259 (aaa) 259 aaa aaa
- - - - 257 (parada) - - - 
 
Compressão LZW
 Codificador e decodificador criam dicionário a 
medida que processamento é feito
 Dicionário não precisa ser transmitido explicitamente
 Codificador lida com o texto em um único passo
 
Compressão LZW
 Codificador e decodificador criam dicionário a 
medida que processamento é feito
 Dicionário não precisa ser transmitido explicitamente
 Codificador lida com o texto em um único passo
 O número de bits transmitido é reduzido?
 Exemplo 1:
 Manda 18 caracteres de 8 bits (144 bits) em 14 transmissões 
de 9 bits (126 bits)
 Redução de 12,5%
 
Compressão LZW
 Codificador e decodificador criam dicionário a medida 
que processamento é feito
 Dicionário não precisa ser transmitido explicitamente
 Codificador lida com o texto em um único passo
 O número de bits transmitido é reduzido?
 Exemplo 1:
 Manda 18 caracteres de 8 bits (144 bits) em 14 transmissões 
de 9 bits (126 bits)
 Redução de 12,5%
 Exemplo 2:
 Manda 6 caracteres de 8 bits (48 bits) em 5 transmissões de 9 
bits (45 bits)
 Redução de 6,25%
 
Discussão: compressão 
sem perda
 É usada em várias aplicações
 Ex.: formato zip do Unix, formato GIF
 
Discussão: compressão 
sem perda
 É usada em várias aplicações
 Ex.: formato zip do Unix, formato GIF
 É usada em casos em que é importante que os dados originais e 
descomprimidos sejam idênticos (ou desvios nos dados originais 
podem ser prejudiciais)
 Ex.: programas executáveis, programa fonte, texto, registros de 
banco, artigos, etc.
 
Discussão: compressão 
sem perda
 É usada em várias aplicações
 Ex.: formato zip do Unix, formato GIF
 É usada em casos em que é importante que os dados originais e 
descomprimidos sejam idênticos (ou desvios nos dados originais 
podem ser prejudiciais)
 Ex.: programas executáveis, programa fonte, texto, registros de 
banco, artigos, etc.
 Não há algoritmo sem perda eficiente para todos os tipos de 
dados possíveis
 
Discussão: compressão 
sem perda
 É usada em várias aplicações
 Ex.: formato zip do Unix, formato GIF
 É usada em casos em que é importante que os dados originais e 
descomprimidos sejam idênticos (ou desvios nos dados originais 
podem ser prejudiciais)
 Ex.: programas executáveis, programa fonte, texto, registros de 
banco, artigos, etc.
 Não há algoritmo sem perda eficiente para todos os tipos de 
dados possíveis
 Sequências de dados completamente aleatórias não podem ser 
comprimidas
 
Compressão com perda
 Compressão em que alguma informação da 
mensagem original é perdida
 
Compressão com perda
 Compressão em que alguma informação da 
mensagem original é perdida
 Sequências originais não podem ser geradas 
novamente a partir da sequência comprimida
 
Compressão com perda
 Compressão em que alguma informação da 
mensagem original é perdida
 Sequências originais não podem ser geradas 
novamente a partir da sequência comprimida
 Não necessariamente implica que a qualidade do 
resultado é reduzida
 Ex. Ruído aleatório é frequente em imagens e som
 Algumas perdas em imagens e som também são 
imperceptíveis para o humano
 Ex. Perda de frequências bastante altas
 
Compressão com perda
 Para dados visuais ou auditivos, alguma 
perda de qualidade pode ser tolerada
 
Compressão com perda
 Para dados visuais ou auditivos, alguma 
perda de qualidade pode ser tolerada
 Sem perder a natureza essencial dos dados
 Levando em consideração limitações do sistema 
sensorial humano
 
Compressão com perda
 Para dados visuais ou auditivos, alguma 
perda de qualidade pode ser tolerada
 Sem perder a natureza essencial dos dados
 Levando em consideração limitações do sistema 
sensorial humano
 Compressão com perda é usada 
frequentemente na Internet
 
Compressão com perda
 Usada também em: 
 Câmeras digitais
 Para aumentar capacidade de armazenamento
 DVDs
 Compressão de vídeo com MPEG-2 Video Codec
 Audio
 Métodos de físico-acústica são usados para remover 
componentes não audíveis ou pouco audíveis
 
Compressão com perda
 Vantagem sobre compressão sem perda é que 
muitas vezes compressão com perda produz 
arquivos/mensagens bem menores
 Ainda mantendo requisitos da aplicação
 Em imagens: dobro ou mais de compressão do que sem 
perda
 
Compressão com perda
 Vantagem sobre compressão sem perda é que 
muitas vezes compressão com perda produz 
arquivos/mensagens bem menores
 Ainda mantendo requisitos da aplicação
 Em imagens: dobro ou mais de compressão do que sem 
perda
 
Compressão com perda
 Importante que qualidade “degrade” em 
aspectos menos perceptíveis ao humano
 
Compressão com perda
 Importante que qualidade “degrade” em 
aspectos menos perceptíveis ao humano
 Ex. descartar pixels aleatórios é provavelmente 
mais prejudicial do que descartar alguma 
informação de cor
 
Compressão com perda
 Importante que qualidade “degrade” em 
aspectos menos perceptíveis ao humano
 Ex. descartar pixels aleatórios é provavelmente 
mais prejudicial do que descartar alguma 
informação de cor
 Portanto, maioria das técnicas de compressão 
com perda são dependentes do tipo de mídia
 
Técnicas de compressão 
com perda
 Algumas técnicas gerais:
 Quantização escalar
 Quantização vetorial
 Transformadas
 
Quantização escalar
 Reduzir conjunto de mensagens possíveis S 
a um conjunto menor S’
 
Quantização escalar
 Reduzir conjunto de mensagens possíveis S 
a um conjunto menor S’
 Mapeando cada elemento de S em um elemento 
em S’
 Ex. dividir inteiros de 8 bits por 4 (descartar dois 
menores bits)
 Ex. se há letras maiúsculas e minúsculas, transformar 
todas maiúsculas em minúsculas
 
Quantização escalar
 Reduzir conjunto de mensagens possíveis S 
a um conjunto menor S’
 Mapeando cada elemento de S em um elemento 
em S’
 Ex. dividir inteiros de 8 bits por 4 (descartar dois 
menores bits)
 Ex. se há letras maiúsculas e minúsculas, transformar 
todas maiúsculas em minúsculas
 Mapeamento é de muitos-para-um
  irreversível (com perda)
 
Quantização escalar
 Uniforme: mapeamento é linear
 Ex. dividir inteiros de 8 bits por 4
 
Quantização escalar
 Uniforme: mapeamento é linear
 Ex. dividir inteiros de 8 bits por 4
 Não uniforme: mapeamento não linear
 Em geral melhor que a uniforme 
 Ex. olho é mais sensível a valores baixos de vermelho 
do que altos
 Tornar regiões com valoresbaixos menores que regiões 
com valores maiores
 
Quantização escalar
 Uniforme: mapeamento é linear
 Ex. dividir inteiros de 8 bits por 4
 Não uniforme: mapeamento não linear
 Em geral melhor que a uniforme 
 Ex. olho é mais sensível a valores baixos de vermelho 
do que altos
 Tornar regiões com valores baixos menores que regiões 
com valores maiores
 Outra alternativa: basear mapeamento na probabilidade 
de diferentes entradas 
 
Quantização escalar
 Ex. quantizando imagem de 8 bits por canal 
RGB em 6bits, 5bits, 4bits, 3bits, 2bits, e 1 bit 
8 bits
http://www.ic.unicamp.br/~cpg/material-didatico/mo442/200101/matlab/entregues/grupo1/lab1/exercicio_3/index.html
 
Quantização vetorial
 Quantização escalar permite mapeamento 
individual de cada cor em uma imagem 
colorida em um conjunto menor de valores 
 
Quantização vetorial
 Quantização escalar permite mapeamento 
individual de cada cor em uma imagem 
colorida em um conjunto menor de valores 
 Na prática, pode ser mais efetivo mapear regiões 
tridimensionais do espaço de cores
 
Quantização vetorial
 Quantização escalar permite mapeamento 
individual de cada cor em uma imagem 
colorida em um conjunto menor de valores 
 Na prática, pode ser mais efetivo mapear regiões 
tridimensionais do espaço de cores
 Quantização vetorial: mapear espaço 
multidimensional em conjunto menor de 
mensagens S’
 
Quantização vetorial
 Tipicamente: 
 Seleção de conjuntos representativos do espaço 
de entrada; 
 
Quantização vetorial
 Tipicamente: 
 Seleção de conjuntos representativos do espaço 
de entrada; 
 Mapeamento de todos os outros pontos para o 
representante mais próximo
 
Quantização vetorial
 Tipicamente: 
 Seleção de conjuntos representativos do espaço 
de entrada; 
 Mapeamento de todos os outros pontos para o 
representante mais próximo
 Representante pode ser: 
 Fixo 
 Determinado para cada arquivo/mensagem
 E ser enviado como parte da sequência
 
Quantização vetorial
 Como escolher representantes?
 Tipicamente: algoritmos de agrupamento
 Encontra grupos de pontos nos dados
 Um representante é escolhido para cada grupo 
 
Quantização vetorial
Sem compressão Após quantização vetorial
http://www.steckles.com/compression.html
 
Transformadas
 Transformar entrada em forma diferente
 Para melhor compressão
 Perda de alguns termos sem muita perda 
qualitativa na saída
 
Transformadas
 Transformar entrada em forma diferente
 Para melhor compressão
 Perda de alguns termos sem muita perda 
qualitativa na saída
 Algumas transformadas comuns: seno, cosseno, 
polinômios, harmônicas esféricas, funções 
Bessel, wavelets
 
Transformadas
 Propriedades para compressão:
 Descorrelacionar os dados
 
Transformadas
 Propriedades para compressão:
 Descorrelacionar os dados
 Vários coeficientes de transformada pequenos
 Passíveis de serem descartados
 
Transformadas
 Propriedades para compressão:
 Descorrelacionar os dados
 Vários coeficientes de transformada pequenos
 Passíveis de serem descartados
 Para percepção, alguns termos são mais 
importantes do que outros
 Menos importantes: também passíveis de descartar
 
Transformada Discreta de 
Cossenos (DCT) em imagens
 Separa imagem em partes de frequências 
diferentes
 
Transformada Discreta de 
Cossenos (DCT) em imagens
 Separa imagem em partes de frequências 
diferentes
 Frequências menos importantes podem ser 
descartadas
 Quantização
 As mais importantes são usadas para recuperar a 
imagem na descompressão
 
Transformada Discreta de 
Cossenos (DCT) em imagens
 Separa imagem em partes de frequências 
diferentes
 Frequências menos importantes podem ser 
descartadas
 Quantização
 As mais importantes são usadas para recuperar a 
imagem na descompressão
 JPEG usa DCT como base
 
Transformada Discreta de 
Cossenos (DCT) em imagens
 Separa imagem em partes de frequências 
diferentes
 Frequências menos importantes podem ser 
descartadas
 Quantização
 As mais importantes são usadas para recuperar a 
imagem na descompressão
 JPEG usa DCT como base
 Reduz drasticamente a quantidade de espaço 
ocupado pela imagem
 
Ex. DCT em imagem
original Qualidade 50
Qualidade 20 Qualidade 10
http://www.dip.ee.uct.ac.za/~nicolls/lectures/eee401f/projects/dct.pdf
 
Compressão
 De forma geral, não existe uma técnica 
melhor para todas as situações
	Slide 1
	page2 (1)
	page2 (2)
	page3 (1)
	page3 (2)
	page3 (3)
	page4 (1)
	page4 (2)
	Slide 9
	page6 (1)
	page6 (2)
	page6 (3)
	page7 (1)
	page7 (2)
	page8 (1)
	page8 (2)
	page9 (1)
	page9 (2)
	page9 (3)
	page10 (1)
	page10 (2)
	page10 (3)
	page10 (4)
	page10 (5)
	page11 (1)
	page11 (2)
	page11 (3)
	page11 (4)
	page11 (5)
	page11 (6)
	page12 (1)
	page12 (2)
	page12 (3)
	page12 (4)
	page13 (1)
	page13 (2)
	page13 (3)
	page13 (4)
	page14 (1)
	page14 (2)
	page14 (3)
	Slide 42
	page16 (1)
	page16 (2)
	page16 (3)
	page17 (1)
	page17 (2)
	page17 (3)
	page17 (4)
	Slide 50
	Slide 51
	Slide 52
	Slide 53
	Slide 54
	Slide 55
	Slide 56
	Slide 57
	Slide 58
	Slide 59
	Slide 60
	Slide 61
	Slide 62
	Slide 63
	Slide 64
	Slide 65
	Slide 66
	Slide 67
	Slide 68
	Slide 69
	Slide 70
	Slide 71
	Slide 72
	Slide 73
	Slide 74
	Slide 75
	Slide 76
	Slide 77
	Slide 78
	Slide 79
	Slide 80
	Slide 81
	page50 (1)
	page50 (2)
	page50 (3)
	page51 (1)
	page51 (2)
	page51 (3)
	page51 (4)
	page52 (1)
	page52 (2)
	page52 (3)
	page53 (1)
	page53 (2)
	page53 (3)
	Slide 95
	page55 (1)
	page55 (2)
	page56 (1)
	page56 (2)
	page56 (3)
	Slide 101
	page58 (1)
	page58 (2)
	page58 (3)
	page59 (1)
	page59 (2)
	page59 (3)
	Slide 108
	page61 (1)
	page61 (2)
	page61 (3)
	page62 (1)
	page62 (2)
	page62 (3)
	Slide 115
	Slide 116
	page65 (1)
	page65 (2)
	page66 (1)
	page66 (2)
	page66 (3)
	page67 (1)
	page67 (2)
	page67 (3)
	page67 (4)
	Slide 126
	Slide 127

Outros materiais