Você está na página 1de 13

Departamento de Engenharia de Telecomunicaes - UFF

Fundamentos de Sistemas Multimdia

Tcnicas de Compactao e Compresso


Fundamentos de Sistemas Multimdia

Compactao X Compresso Classificao das tcnicas de compresso


Codificao por Entropia, na Origem e Hbrida

Tcnicas de Compactao e Tcnicas de Compactao e Compresso Compresso


Profa. Dbora Christina Muchaluat Saade Profa. Dbora Christina Muchaluat Saade

Tcnicas de Compactao
Codificao por carreira Codificao por Shannon-Fano Codificao de Huffman Codificao de Lempel-Ziv-Welch (LZW) Codificao aritmtica
2

deborams@telecom.uff.br deborams@telecom.uff.br
1

Tcnicas de Compactao e Compresso


Fundamentos de Sistemas Multimdia

Compactao x Compresso
Fundamentos de Sistemas Multimdia

Tcnicas de Compresso
Reduo do domnio Reduo do espao de quantizao Codificao preditiva Codificao por sub-bandas Codificao por transformadas Quantizao vetorial

Compactao:

Quando eliminamos apenas a redundncia de um sinal No h perda de informao Compresso sem perdas Podem ser usadas para qualquer sinal (mdia) Quando, na reduo dos dados, h perda de informao Compresso com perdas Algumas tcnicas so usadas em sinais especficos Compresso perceptualmente sem perdas
humanos no percebem Ex.: MP3 para udio

Compresso:

Classificao das Tcnicas de Compresso


Fundamentos de Sistemas Multimdia

Compactao
Fundamentos de Sistemas Multimdia

Codificao por Entropia


trata cadeias de bits sem levar em conta seu significado tcnica genrica, sem perda e totalmente reversvel Ex.: tcnicas de compactao: codificao por carreira, codificao de

Codificao por carreira (Run Length Coding)

Huffman, codificao aritmtica

Codificao na Origem
leva em considerao a semntica dos dados processa o dado original distinguindo o dado relevante e o irrelevante removendo dados irrelevantes comprime o dado original Ex.: tcnicas de compresso: codificao preditiva, codificao por

sub-bandas, codificao por transformadas, quantizao vetorial

Codificaes Hbridas
Combinam tcnicas com e sem perdas (vrias tcnicas so agrupadas

para formar uma nova tcnica de codagem) Ex.: JPEG, MPEG, H.263, ...
5

Tcnica boa quando informao se repete OBS.: Toda tcnica de compactao pode diminuir ou aumentar o volume de dados
6

Codificao por Shannon-Fano


Fundamentos de Sistemas Multimdia

Codificao por Shannon-Fano


Fundamentos de Sistemas Multimdia

A seqncia a ser compactada deve ser analisada previamente, identificando-se os caracteres e suas respectivas freqncias/probabilidades Ordene os smbolos de acordo com suas freqncias. Ex.: ABCDE Divida recursivamente em 2 partes, cada uma com aproximadamente o mesmo nmero de contagem

Seqncia ABDEACD...
00 01 110 111 00 10 110 ...

Envia:
smbolos rvore seqncia

Codificao de Huffman
Fundamentos de Sistemas Multimdia

Codificao de Huffman
Fundamentos de Sistemas Multimdia

Codificao Estatstica A seqncia a ser compactada deve ser analisada previamente, identificando-se os caracteres e suas respectivas freqncias/probabilidades Atribui menos bits a smbolos que aparecem mais freqentemente e mais bits para smbolos que aparecem menos

Algoritmo:
Insira os ns (smbolos/freqncias) em uma lista Repita at que a lista contenha apenas um n:
Selecione os dois ns de mais baixa freqncia e crie

um n pai para ambos Atribua ao n pai a soma das freqncias e insira-o na lista Atribua os cdigos 0 e 1 aos dois ramos da rvore e retire os filhos da lista

10

Exemplo - Huffman
Fundamentos de Sistemas Multimdia
Smbolo A B C D E Freqncia 15 7 6 6 5 Cdigo 0 100 101 110 111 Subtotal (# de bits) 15 21 18 18 15

Huffman - Decodificao
Fundamentos de Sistemas Multimdia

Seqncia ABDEACD...
0 100 110 111 0 101 110 ...

Total (# de bits) = 87 Compactao = 117 : 87

11

13

Codificao de Huffman
Fundamentos de Sistemas Multimdia

Codificao Aritmtica
Fundamentos de Sistemas Multimdia

Nem todos os caracteres precisam ter uma representao codificada na tabela de Huffman
apenas os caracteres com alta probabilidade de

Utiliza um nico cdigo por string de caracteres codificada A seqncia a ser compactada deve ser analisada previamente, identificando-se os caracteres e suas respectivas freqncias/probabilidades
Ex.: e=0.3; n=0.3; t=0.2; w=0.1; .=0.1

ocorrncia demais so codificados diretamente e marcados com flag especial

Precisa de um caracter marcando o fim de cada seqncia (.) Algoritmo:


Dividir o intervalo de [0, 1] de acordo com a probabilidade de ocorrncia

Tcnica til quando o nmero de caracteres diferentes muito grande mas apenas alguns deles tm uma alta probabilidade de ocorrncia
14

de cada caracter na seqncia Repita at o caracter de fim de seqncia Escolha o intervalo correspondente ao prximo caracter e divida-o novamente de acordo com as probabilidades iniciais O cdigo pode ser qualquer nmero dentro do ltimo intervalo

encontrado (ValorInicial <= cdigo < ValorFinal)


15

Exemplo Codificao Aritmtica


Fundamentos de Sistemas Multimdia

Codificao Aritmtica
Fundamentos de Sistemas Multimdia

O nmero de dgitos decimais no cdigo aumenta linearmente com o nmero de caracteres na string
O nmero mximo de caracteres em uma string

determinado pela preciso com a qual nmeros de ponto flutuante so representados nos computadores de origem e destino Por essa razo, mensagens completas devem ser fragmentadas em vrias strings menores e cada string deve ser codificada separadamente
16 17

Codificao de Lempel-Ziv
Fundamentos de Sistemas Multimdia

Codificao de Lempel-Ziv
Fundamentos de Sistemas Multimdia

Codificao de Lempel-Ziv (LZ)


Ao invs de utilizar caracteres como a base da codificao,

Codificao Lempel-Ziv (LZ)


Exemplo de taxa de compactao suponha que temos um arquivo de 10000 caracteres se ns representarmos o arquivo usando 8 bits por caracter, o arquivo requer 80000 bits para represent-lo assumindo que o arquivo tenha 2000 palavras ou frases das quais 500 so diferentes
necessitamos de 9 bits como token para identificar cada palavra ou frase precisamos de 9*2000 bits para codificar o arquivo obtemos uma taxa de compresso de 80000:18000 (4,4) na prtica, o dicionrio tambm deve ser mantido/enviado

utiliza strings de caracteres baseada na construo de um dicionrio de frases (grupos de um ou mais caracteres) a partir do fluxo de entrada Quando uma nova frase encontrada
Ela adicionada ao dicionrio

Se a frase encontrada j foi registrada ela substituda pelo cdigo no dicionrio Esta tcnica boa para compresso de arquivos textos, onde

temos uma grande repetio de frases


exemplo em portugus: "ela", "Contudo", "onde"

baixando a taxa de compresso obtida


19

18

Algoritmo Lempel-Ziv
Fundamentos de Sistemas Multimdia

Exemplo de Lempel-Ziv
Fundamentos de Sistemas Multimdia

Primeiro passo: inicializar uma tabela de cdigos com todos os caracteres existentes na string que pretendemos compactar A codificao se inicia definindo a seqncia de smbolos corrente S como o primeiro smbolo a codificar 1. Se no existem mais smbolos para codificar, d como sada o cdigo de S. Em caso contrrio, 2. Pegue o prximo smbolo P e concatene a S, obtendo a nova seqncia SP 3. Se SP j estiver no dicionrio, faa S = SP e volte para o passo 1. Em caso contrrio, 4. D como sada o cdigo de S 5. Adicione SP ao dicionrio, se ainda houver espao 6. Faa S = P e volte para o passo 1
20

Exemplo de compactao LZW


Compresso da cadeia de caracteres ABACABA Primeiro passo: inicializar uma tabela de cdigos com todos os

caracteres existentes na string que pretendemos compactar: #0 = A, #1 = B, #2 = C Caracter A (existe na tabela) representamos A por #0 AB recebe #3 Caracter B (existe na tabela) representamos AB por #0#1 BA recebe #4 Caracter A (existe na tabela) representamos ABA por #0#1#0 junta AC na tabela com ndice #5
21

Exemplo de Lempel-Ziv
Fundamentos de Sistemas Multimdia

Codificao de Lempel-Ziv-Welch (LZW)


Fundamentos de Sistemas Multimdia

Exemplo de compresso LZW


Compresso da cadeia de caracteres ABACABA Tabela atual: #0 = A, #1 = B, #2 = C, #3 = AB, #4 = BA, #5 = AC Caracter C (existe na tabela) representamos ABAC por #0#1#0#2 CA recebe #6 Caracter AB (existe na tabela) representamos ABACAB por #0#1#0#2#3 ABA recebe #7 Caracter A (existe na tabela) representamos ABACABA por #0 #1 #0 #2 #3 #0
22

Codificador e decodificador constroem o contedo do dicionrio dinamicamente enquanto o texto processado Inicialmente, o dicionrio contm somente o conjunto de caracteres que foi usado na construo do texto (ex. ASCII 7 bits) As entradas restantes so utilizadas para codificar palavras que ocorrem no texto Exemplo:
This is simple as it is ...
23

Exemplo de Lempel-Ziv-Welch
Fundamentos de Sistemas Multimdia

Exemplo de Lempel-Ziv-Welch
Fundamentos de Sistemas Multimdia

24

25

Algoritmo LZ77
Fundamentos de Sistemas Multimdia

Algoritmo LZ77
Fundamentos de Sistemas Multimdia

Variao do LZW usado em vrios compactadores comerciais


Termos utilizados no algoritmo:


Seqncia de entrada Seqncia de caracteres a ser comprimida Caracter: Elemento bsico da seqncia de entrada Posio atual: Posio do caracter na seqncia de entrada que est sendo codificado no momento (incio do lookahead buffer) Lookahead buffer: Seqncia de caracteres a partir da posio atual at o fim da seqncia de entrada

PKZIP/PKUNZIP (para o DOS) ARJ GZIP/GUNZIP Compress/Uncompress (para o UNIX)

Princpio de funcionamento:
Em uma seqncia de caracteres, o algoritmo procura na

janela corrente a maior sub-seqncia que casa com o incio do lookahead buffer e d como sada um ponteiro para o incio da sub-seqncia na janela e o primeiro caracter no lookahead buffer que no casa com a seqncia. Se no houver sub-seqncia, a sada um ponteiro nulo e o caracter na posio atual da seqncia original.
26

27

Algoritmo LZ77
Fundamentos de Sistemas Multimdia

Algoritmo LZ77
Fundamentos de Sistemas Multimdia

Termos utilizados no algoritmo:


Janela:
Janela de tamanho W contm W caracteres a partir da

Algoritmo:
1. 2. 3.

posio atual em direo ao incio da seqncia de entrada, i.e. os ltimos W caracteres processados
Ponteiro:
Um ponteiro aponta para a seqncia que casa na

Faa posio atual igual ao incio da seqncia de entrada Encontre a maior sub-seqncia (longest match) na janela que casa como contedo do lookahead buffer D como sada o par (P,C), onde:

P o ponteiro para a sub-seqncia na janela C o primeiro caracter no lookahead buffer que no casa com a sub-seqncia

janela e tambm indica seu comprimento (L)

4.

Se o lookahead buffer no estiver vazio, mova a posio atual (e a janela) L+1 caracteres para frente e volte para o passo 2 (L o comprimento da sub-seqncia).

28

29

Algoritmo LZ77
Fundamentos de Sistemas Multimdia

Algoritmo LZ77
Fundamentos de Sistemas Multimdia

Exemplo: seqncia AABCBBABC

Pos Char 1 A 2 A 3 B 4 C 5 B 6 B 7 A 8 B 9 C

Decodificao:

Processo de Codificao
Step 1 2 3 4 5 Pos 1 2 4 5 7 Match -A -B AB Char A B C B C Sada (0,0) A (1,1) B (0,0) C (2,1) B (5,2) C

A janela mantida da mesma forma que na codificao. Em cada passo, o algoritmo l o par (P,C) da entrada e d como sada a seqncia da janela a partir de P seguida do caracter C

Exemplo: (0,0)A (1,1)B (0,0)C (2,1)B (5,2)C


1. 2. 3. 4. 5.

(0,0)A => W = nula, sada = A (1,1)B => W = A, sada = AAB (0,0)C => W = AAB, sada = AABC (2,1)B => W = AABC, sada = AABCBB (5,2)C = > W = AABCBB, sada = AABCBBABC
31

30

Algoritmo LZ77
Fundamentos de Sistemas Multimdia

Tcnicas de Compresso
Fundamentos de Sistemas Multimdia

Consideraes principais:
Boa taxa de compresso para vrios tipos de dados Codificao pode ser lenta, j que vrias

Compresso:

comparaes so feitas entre o lookahead buffer a a janela Decodificao muito simples e rpida Requisitos de memria so poucos tanto para codificao quanto para decodificao
A nica estrutura mantida em memria a janela, que

Quando, na reduo dos dados, h perda de informao Compresso com perdas Algumas tcnicas so usadas em sinais especficos Compresso perceptualmente sem perdas humanos no percebem Ex.: MP3 para udio Reduo do domnio Reduo do espao de quantizao Codificao preditiva Codificao por sub-bandas Codificao por transformadas Quantizao vetorial
33

Tcnicas

normalmente tem tamanho entre 4 e 64 KB.


32

Reduo do Domnio
Fundamentos de Sistemas Multimdia

Reduo do domnio em imagens


Fundamentos de Sistemas Multimdia

Idia bsica
Simplesmente descarta algumas amostras

Ex.: padres para vdeo digital


Formatos 4:2:2, 4:2:0 Informaes de luminncia so mais importantes

que crominncia, ento o nmero de amostras de crominncia pode ser menor

Ex.: compresso em imagens


diminui a resoluo geomtrica aumenta o tamanho do pixel
34 35

Reduo do Espao de Quantizao


Fundamentos de Sistemas Multimdia

Codificao Preditiva
Fundamentos de Sistemas Multimdia

Idia bsica
Diminuir a quantidade de bits por amostra

Codificao diferencial ou codificao relativa Idia bsica


Amplitude de uma amostra grande, mas a diferena de

Ex.: compresso de imagens


Imagem original com 24 bits por pixel (16 milhes

de cores) Imagem comprimida com 8 bits por pixel (256 cores) fazendo uma correspondncia entre os cdigos

amplitude entre amostras sucessivas relativamente pequena Ao invs de codificar o valor de cada amostra, codifica a diferena entre seu valor e o anterior
Utiliza menos bits e obtm o mesmo erro

Ex.: DPCM (Differential Pulse Code Modulation) ADPCM (Adaptive Differential Pulse Code Modulation)
37

36

Codificao por Sub-Bandas


Fundamentos de Sistemas Multimdia

Codificao por Transformadas


Fundamentos de Sistemas Multimdia

Idia bsica
Diviso da banda passante do sinal em vrias sub-bandas codificadas de

Idia bsica
Transformar os dados para outro domnio matemtico onde

forma distinta Trata com maior preciso as sub-bandas mais importantes do sinal

uma tcnica de compresso seja melhor aplicada


Ex.: Transformada de Fourier => transforma sinais no domnio

Por exemplo, sinal de voz:


300-800Hz qualidade e timbre 8 bits por amostra 800-1400Hz pouca informao 2 bits por amostra 1400-2400Hz reconhecimento e intelegibilidade 8 bits por amostra Maior informao de contedo (ex.: voz metlica) 2400-3400Hz pouca informao 3 bits por amostra
38

do tempo para o domnio da freqncia Deve existir uma transformada inversa Transformadas eficazes para reduo de dados so: DCT Discrete Cosine Transform (JPEG) FFT Fast Fourier Transform (MPEG-udio)

40

Transformadas em Imagens
Fundamentos de Sistemas Multimdia

Codificao por Transformadas


Fundamentos de Sistemas Multimdia

Existem vrias similaridades entre amostras (no tempo) e pixels. Na verdade, podemos considerar os pixels como se fossem amostras do sinal imagem, s que amostras obtidas no no tempo, mas no espao. exatamente por isso que podemos aplicar todas as tcnicas aplicadas em sinais contnuos nas imagens estticas.

42

43

Codificao por Transformadas


Fundamentos de Sistemas Multimdia

Quantizao Vetorial
Fundamentos de Sistemas Multimdia

Fluxo de dados divido em blocos Constri uma tabela (ou usa uma predefinida) contendo o conjunto de valores que mais aparecem (valores padres) Para cada bloco, a tabela consultada para achar o padro mais parecido Ento cada bloco codificado com o ndice do vetor O decodificador deve conhecer a mesma tabela e usa os ndices para gerar uma aproximao do fluxo de dados original

44

45

Departamento de Engenharia de Telecomunicaes - UFF


Fundamentos de Sistemas Multimdia

Compresso de Texto
Fundamentos de Sistemas Multimdia

Texto no tolera erros Compactao = Compresso sem perdas Classificao das tcnicas de compactao:

Mdia Texto Mdia Texto


Profa. Dbora Christina Muchaluat Saade Profa. Dbora Christina Muchaluat Saade

Tcnicas que usam caracteres nicos como base X

Tcnicas que usam strings de caracteres como base Codificao esttica X Codificao dinmica

deborams@telecom.uff.br deborams@telecom.uff.br

46

47

Compresso de Texto
Fundamentos de Sistemas Multimdia

Compresso de Texto
Fundamentos de Sistemas Multimdia

Tcnicas que usam caracteres nicos como base


Codificao por carreira
S usa se repetir no mnimo 4 vezes

Tcnicas que usam strings de caracteres como base


Codificao por carreira pode-se substituir seqncias maiores que um requer que o tamanho da seqncia seja codificado ou pode-se usar um caracter especial de fim
(smbolo (!), nmero de vezes, seqncia, delimitador de fim ($)) entrada: UFYUGDUFHUFHUFHUFHUFHBFD sada: UFYUGD!5UFH$BFD Se smbolos especiais aparecerem nos dados (character stuffing) entrada: U!HIIIIID sada: U!!HI!1D

(caracter, smbolo (!), nmero de vezes)


entrada: ABCCCCCCCCDEFGGG sada: ABC!4DEFGGG

Codificao de Shannon-Fano Codificao aritmtica Codificao de Huffman

Codificao de Lempel-Ziv-Welch
48 49

Compresso de Texto
Fundamentos de Sistemas Multimdia

Codificao de Huffman Dinmica


Fundamentos de Sistemas Multimdia

Codificao esttica
Tabelas de cdigos so conhecidas a priori (padronizadas) Tabelas de cdigos so enviadas junto com a seqncia codificada Exemplos: Codificao de Shannon-Fano Codificao aritmtica Codificao de Huffman Codificao de Lempel-Ziv

Codificao dinmica
Tabelas de cdigos so calculadas dinamicamente no momento da

decodificao
Exemplos: Codificao de Lempel-Ziv-Welch Codificao de Huffman dinmica
50

A rvore de Huffman construda dinamicamente na codificao e na decodificao No necessrio saber a freqncia dos smbolos a priori Se o caracter no estiver presente na rvore ainda (da primeira vez que aparece), ele no compactado Usa o conceito de uma folha vazia que representa o local onde o prximo caracter ser inserido na rvore
51

Codificao de Huffman Dinmica


Fundamentos de Sistemas Multimdia

52

Você também pode gostar