Compressão de Dados
Elisa M. Pivetta Cantarelli
PDF created with pdfFactory Pro trial version www.pdffactory.com
Compressão de Dados
zCompressão de dados é uma forma de
codificar um certo conjunto de
informações de maneira que o código
gerado seja menor que o fonte.
zPara que comprimir?
yPara redução do espaço físico utilizado
yPara agilização na transmissão de
dados.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Compressão de Dados
zA redução do espaço físico permite um
significativo ganho em termos de
ocupação em disco e velocidade de
acesso.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Compressão
zA compressão é aquela realizada sobre
dados, a partir dos quais é verificada a
repetição de caracteres para efetivar a
redução do número de elementos de
dados.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Técnica de Compressão sem
perda
zSe a informação, após sua compressão, pode
ser exatamente reconstruída a técnica de
compressão é dita sem perdas.
zEstas técnicas exploram estatísticas de dados
(redundância de dados)
zComo exemplo de técnicas sem perda temos:
codificaçãoRun-length e codificação Huffman.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação run-length
zQuando temos um arquivo onde ocorre
uma repetição contínua de determinado
caracter, por exemplo AAAAAAAAAAAA, é
possível sua representação através da
codificação run-length , da seguinte
forma:
zCe 12 A
yonde A é o caracter repetido 12 vezes, e é
indicado pelo caracter especial Ce .
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação run-length
zO que fazer quando não for possível a
colocação de caracteres especiais?
zHá determinados casos que os
caracteres especiais utilizados conflitam
com outros aplicativos, de transmissão
de dados, por exemplo.
zDesta forma, utiliza-se um caracter
convencional
como
indicador
de
compressão.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação run-length
zComo na língua portuguesa utiliza-se
muito pouco as letras W, Y,#,$,|, podese, por exemplo, indicar a compressão
de um arquivo de texto na forma:
z# 12 A
PDF created with pdfFactory Pro trial version www.pdffactory.com
zAs técnicas de compressão orientadas a
caracter não são as mais eficientes ou as mais
sofisticadas.
zPelo contrário, em geral elas são utilizadas num
primeiro nível de compressão multinível, onde
os demais níveis podem ser técnicas
estatísticas de compressão.
zAqui serão analisados 8 técnicas de
compressão orientada a caracter, de modo a
dar uma noção das possíveis aplicações deste
tipo de compressão.
PDF created with pdfFactory Pro trial version www.pdffactory.com
1)Supressão de Caracteres
Nulos
zNesta técnica, temos como objetivo
comprimir apenas os caracteres nulos ou
brancos. Em geral, são comprimidos
caracteres correspondentes ao espaço em
branco.
zPara a compressão, utiliza-se a seguinte
seleção de caracteres indicadores:
yCe N
PDF created with pdfFactory Pro trial version www.pdffactory.com
Supressão de Caracteres
Nulos
zonde Ce é um caracter especial e N é o
número de caracteres brancos repetidos
seqüencialmente.
zEntão, por exemplo, uma seqüência do
tipo:
... vazio.
Exatamente o que...
pode ser comprimida como sendo:
... vazio. Ce8 Exatamente o que...
PDF created with pdfFactory Pro trial version www.pdffactory.com
O algoritmo para a técnica
apresentada
z 1. inicializa-se um contador para o cálculo do número de
repetições de brancos;
z 2.
lê-se o caracter do arquivo a comprimir;
z 3.
verifica-se se o caracter é um branco;
z 4. se for, incrementa-se o contador - verifica-se se o contador é
maior que 2, valendo a pena comprimir - verifica-se se o número
de caracteres ultrapassou a 255 (limite binário); se verdadeiro,
colocam-se os caracteres indicadores no arquivo comprimido e
volta-se ao passo 1, caso contrário, volta-se ao passo 2;
PDF created with pdfFactory Pro trial version www.pdffactory.com
2- Mapeamento de Bit
z Quando é sabida a existência de múltiplas ocorrências não
consecutivas de determinado caracter no arquivo a comprimir,
utiliza-se a compressão por mapeamento de bit.
z Esta técnica utiliza-se de um byte no arquivo comprimido para
indicar, através dos bits, a ocorrência do caractere repetido.
z Desta forma, caso desejarmos comprimir todos os caracteres
a de um texto, devemos indicá-lo no mapa de bits. Cada
mapa descreve 8 bytes, um por bit do arquivo manipulado.
Portanto, para letra encontrada a cada trecho de 8 bytes, será
assinalada no mapa de bits.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Mapeamento de Bit
z. Por exemplo:
... abacate ...
será descrito como:
... Mbbcte...
zonde Mb é o mapa de bits correspondente à
compressão do caracter a .
PDF created with pdfFactory Pro trial version www.pdffactory.com
Mapeamento de Bit
zEste mapa é composto,
zpara o exemplo, dos bits:
zonde o primeiro zero indica a presença de
um caracter a na primeira posição, valor um
em seguida indica um caracter diferente, e
assim por diante, até completar o mapa.
zConvenciona-se, portanto, que o bit 0
indica a presença do caracter a comprimir e
o bit 1 a sua ausência.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Algoritmo
z 1. inicializa-se o mapa de bits colocando todos os bits em
zero;
z 2. inicializa-se o contador;
z 3. realiza-se a leitura do caracter no arquivo a comprimir;
z 4. compara-se o caracter lido com o caracter procurado-se
for o mesmo
z 5. troca-se para 1 o bit da posição atual;
z 6. incrementa-se o contador;
z verifica-se se o contador chegou a 8; se verdadeiro, então
grava-se o mapa de bits e os caracteres diferentes do
comprimido, e volta-se para o passo 1; senão, volta-se ao
passo 3.
PDF created with pdfFactory Pro trial version www.pdffactory.com
3-Comprimento de Fileira
zEsta técnica aplica a indicação semelhante à
run-length de compressão.
zO formato permite
caracter repetido:
a
determinação
yCe C N
yonde Ce é o caracter especial, C é o
caracter repetido e N é o número binário
de repetições. Como podemos perceber,
esta técnica também permite apenas a
compressão de um caracter por vez.
PDF created with pdfFactory Pro trial version www.pdffactory.com
do
4- Compactação de Meio
Byte
z Este tipo de compactação é utilizado quando encontramos uma
seqüência de bits em comum nos caracteres de determinado
arquivo. Um tipo de repetição de bits de grande ocorrência é a
que acontece em caracteres numéricos.
z Por exemplo, se observarmos o conjunto binário da tabela
ASCII para os caracteres numéricos, teremos:
•se isolarmos os primeiros 4 bits de cada byte
de caracter numérico, veremos que há uma
constância de valores.
•Estes valores constantes são um exemplo de
objetos de compactação de meio byte.
•A compactação de meio byte propriamente
dita consiste na seguinte seqüência de
caracteres indicadores:
PDF created with pdfFactory Pro trial version www.pdffactory.com
Compactação de Meio
Byte
z onde Ce é o caracter especial,
z N é o número binário dos caracteres comprimidos e Cn é a
metade do caracter comprimido.
z Na seqüência de caracteres indicadores apresentada são
apresentados 5 caracteres (Cn=c1c2c3c4c5) porque este é o
mínimo para que a compressão seja válida, uma vez que até
4 caracteres ela necessita um número de byte igual ou
maior.
z Cada Cn é a ocorrência de 4bits
yCe 0011 0000 0001 0010 0011 0100
PDF created with pdfFactory Pro trial version www.pdffactory.com
5 -Codificação Diatômica
z Esta técnica de compressão permite a representação de
um par de caracteres em apenas um caracter especial.
z Normalmente utilizam-se tabelas com pares de
caracteres e sua freqüência de ocorrência em
determinado tipo de arquivo.
z Obviamente procura-se substituir os caracteres de maior
freqüência, associando a cada dupla um caracter
especial.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Diatômica
z Em texto da língua portuguesa, por exemplo, duplas de ocorrência
freqüente são a letra a acentuada com til seguido da letra o (ão) e
a letra e com acento agudo seguido de um espaço em branco (é ).
A cada uma dessas seqüência deve-se atribuir um caracter especial
para nos permitir a compactação através da codificação diatômica.
z Obviamente, estes são apenas dois exemplos de duplas de
caracteres, numa tabela normal para compactação utilizam-se mais
de 20 duplas para que seja obtida uma compressão razoável.
PDF created with pdfFactory Pro trial version www.pdffactory.com
6 -Substituição de Padrões
z A substituição de padrões é semelhante à codificação diatômica, pois também
ocorre a substituição de um conjunto de caracteres por um caracter especial.
y PALAVRA => Ce
z O processamento desta técnica é semelhante ao da substituição de padrões, com
a diferença de que são avaliados um número maior de caracteres.
z Desta forma, são estabelecidas tabelas de palavras de maior freqüência de
ocorrência para substituição com o caracter especial.
z com a diferença de que são avaliados um número maior de caracteres. Desta
forma, são estabelecidas tabelas de palavras de maior freqüência de ocorrência
para substituição com o caracter especial.
z A utilização mais comum para este tipo de compressão é a de arquivos de
programas de linguagens de programação. Uma vez que as linguagens contém
diversas palavras que se repetem freqüentemente em programas, utiliza-se esta
característica para a sua compressão.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Substituição de Padrões
z Uma variante da substituição de padrões para permitir a
codificação de um maior número de palavras é a
utilização de dois caracteres para indicação da
ocorrência de determinada palavra:
zC N
yonde C é um caracter escolhido para indicar a
compressão
yN é o número (binário) da palavra a substituir. Isso
permite a codificação de até 256 palavras reservadas,
o que anteriormente era limitado ao número de
caracteres especiais que poderíamos utilizar.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Substituição de Padrões
zPor exemplo, as palavras reservadas begin e end
da linguagem Pascal poderiam ser, por exemplo,
substituídas pelos códigos $1 e $2 .
zAs demais palavras reservadas da linguagem
também poderiam ser codificadas desta maneira,
permitindo uma compressão considerável de um
arquivo de programa.
PDF created with pdfFactory Pro trial version www.pdffactory.com
7 -Codificação Relativa
z Esta técnica de compressão é realizável quando existe a
transmissão de seqüências de caracteres numéricos.
z Estas seqüências podem ser valores dentro de intervalos
definidos ou valores binários.
z A transmissão de valores intervalares pode ser exemplificada
por transmissões de dados provenientes de sinais de sensores.
z Um exemplo de transmissão binária é o fax. Nestes dois casos,
suas transmissões podem ser comprimidas através da
codificação relativa.
z Para cada um dos casos existe um processamento adequado
aos tipos de valores envolvidos, por isso, veremos como é o
processamento para a codificação de valores intervalares e
para valores binários.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Relativa
Valores Intervalares
z A compressão somente é válida se existe um intervalo definido de
valores, caso contrário não ocorre uma compressão satisfatória. Isso
porque este tipo de compressão baseia-se na colocação da variação
numérica de um valor a outro, desta forma:
y Val Var1 Var2...
z onde Val é o primeiro valor da seqüência, VarN é a variação do valor
anterior para o atual. Exemplificando de forma numérica, seja a seguinte
seqüência de caracteres numéricos:
y 10.3 10.1 10.8 10.4 10.4 10.9 10.2
z pode ser compactada através da codificação relativa, ficando os
caracteres na forma:
y 10.3 -.2 .7 -.4 0 .5 -.7
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Relativa
Valores Binários
z o fax utiliza-se desta forma de compressão, portanto a comparação
existente não será mais entre um valor e outro, mas entre uma linha e a
seguinte.
z Cada linha é um vetor de valores binários, que representam o mapa de
bits do desenho da página. O que ser quer é transmitir apenas a variação
de uma linha para outra, evitando-se a transmissão de toda a linha.
z Então, um trecho de linha binária poderia ser:
x... 01001011100010101...
z e a sua seguinte:
x... 01001011111100001...
z a diferença seria em 5 bits:
y .. _________MMMM_M__...
PDF created with pdfFactory Pro trial version www.pdffactory.com
8 - Compressão Estatística
zA idéia da compressão estatística é
realizar uma representação otimizada de
caracteres ou grupos de caracteres.
zCaracteres de maior freqüência de
utilização são representados por códigos
binários pequenos, e os de menor
freqüência são representados por códigos
proporcionalmente maiores.
PDF created with pdfFactory Pro trial version www.pdffactory.com
8 - Compressão Estatística
zNeste tipo de compressão portanto, não
necessitamos saber qual caracter vai ser
comprimido, mas é necessário, porém, ter o
conhecimento da probabilidade de ocorrência de
todos os caracteres sujeitos à compressão.
zCaso não seja possível a tabulação de todos os
caracteres sujeitos à compressão, utiliza-se uma
técnica adequada para levantamento estatístico
dos dados a comprimir, formando tabelas de
probabilidades.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Huffman
z Esta técnica de compressão foi criada por D. A.
Huffman em 1950
z No envio de uma mensagem de um dispositivo
origem a um dispositivo destino os caracteres da
mensagem são enviados um a um modificados
através de alguma tabela de codificação.
z Em geral, este código forma um número binário.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Huffman
z Como a velocidade de transmissão é importante, é
interessante tornar a mensagem tão curta quanto
possível sem, é claro, perder a capacidade de
decodificar o texto enviado.
z Um algoritmo de determinação de códigos binários
para caracteres baseado na freqüência de uso destes
caracteres foi sugerida por Huffman.
z A idéia é associar números binários com menos bits
aos caracteres mais usados nos textos.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Huffman
zNeste método de compressão, é atribuído menos bits
a símbolos que aparecem mais freqüentemente e
mais bits para símbolos que aparecem menos.
zCodificação de Huffman é um exemplo de técnica de
codificação estatística, que diz respeito ao uso de um
código curto para representar símbolos comuns, e
códigos longos para representar símbolos pouco
freqüentes.
zEsse é o princípio do código Morse, onde:
yE = ?
yQ = --?PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Huffman
zSabemos que todo caracter é formado por
sequencia de 8 bits (1 byte). A idéia para a
compressão é criar seqüências de bits de
tamanhos variáveis, onde os caracteres que
tiverem mais freqüência no arquivo usarão uma
seqüência de bits menor e os caracteres que
tiverem mais freqüência no arquivo usarão uma
seqüência de bits maior.
zAssim para um arquivo grande ocorrerá uma
diminuição no seu tamanho.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Huffman
zUma aplicação interessante de
árvores binárias em codificação de
dados a serem transmitidos e
compactação de arquivos são os
códigos de Huffman.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Huffman
zExemplo:
ysuponha que uma mensagem seja composta
pelos caracteres A,B,C,D,E, R e que a
freqüência de uso destas letras na mensagem
seja 22, 8, 10, 12, 18, 7.
zA técnica de Huffman consiste em construir uma
árvore binária baseada na freqüência de uso das
letras de tal forma que as mais freqüentemente
usadas (A, E) apareçam mais perto da raiz que as
menos freqüentemente usadas (B, R).
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Huffman
zA construção desta árvore binária será
feita de baixo para cima, começando a
partir das letras menos usadas até
atingir a raiz.
zNesta árvore binária, as letras serão
representadas nas folhas e o seus
vértices internos conterão um número
correspondente
à
soma
das
freqüências dos seus descendentes.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Huffman
z Em cada passo do algoritmo teremos uma coleção
de árvores de Hoffman da qual tomaremos as duas
com menor valor associado e as transformaremos
num só, cujo valor é a soma dos valores dos
descendentes.
z Inicialmente, cada uma das letras será uma árvore
composta apenas pela raiz e cujo conteúdo é o
valor da freqüência de uso.
A
B
C
D
E
R
22
8
10
12
18
7
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Huffman
zSelecionamos, então, as duas raízes
de menor valor (7 e 8) e as juntamos
em uma nova árvore,
que
fará
parte da nossa coleção.
15
R
B
C
D
E
A
10
12
18
22
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Huffman
zRepetindo o processo, escolhemos as
árvores com raízes 10 e 12, obtendo
uma 22 na raiz. Neste ponto, nossa
coleção de árvores tem a forma:
22
15
R
B
C
PDF created with pdfFactory Pro trial version www.pdffactory.com
D
E
A
18
22
Codificação Huffman
zContinuando o mesmo processo
escolhemos 18 e 15, formando:
33
15
R
22
E
B
C
D
A
22
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Huffman
zDepois, 22 e 22
33
44
A
15
R
22
E
B
PDF created with pdfFactory Pro trial version www.pdffactory.com
C
D
Codificação Huffman
zE, finalmente:
77
1
0
33
44
0
1
15
E
0
0
1
A
22
1
0
R
1
B
C
PDF created with pdfFactory Pro trial version www.pdffactory.com
D
Temos, então, a árvore de
Huffman completamente
construída.
Associamos 0 às arestas
que ligam um vértice com
seu filho esquerdo e 1 às
arestas que ligam um
vértice com seu filho à
direito.
O código correspondente a
cada letra será formado
pelo número binário
associado ao caminho da
raiz até a folha
correspondente.
Codificação Huffman
77
1
0
33
44
0
1
15
0
A
E
0
1
22
1
0
R
1
B
C
D
Com isso,
tabela:
A
10
B
001
PDF created with pdfFactory Pro trial version www.pdffactory.com
C
110
D
111
obtemos
E
01
R
000
a
Codificação Huffman
Para decodificar uma mensagem obtida através da
tabela acima por exemplo:
10 001 000 10 110 10 111 10 001 000 10
•basta ir utilizando cada bit da seqüência para
percorrer a árvore de Huffman desde a raiz até se
atingir uma folha, quando se obtém o caracter
correspondente. Devemos, então voltar à raiz e
continuar a percorrer a árvore para continuar a
decodificação.
•No exemplo da string de bits acima temos a
mensagem
ABRACADABRA.
Veja
como
esta
mensagem foi compactada: de 11 bytes (88 bits)
para 28 bits.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Huffman
zAssim acontece com os demais
caracteres, em ordem crescente do
número de bits, conforme a prioridade.
zA codificação Huffman manteve a
propriedade de permitir a decodificação
direta, não permitindo que os bits da
codificação de um caracter confundisse
com a de outro.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Shannon-Fano
zA forma desta técnica tem muitas semelhanças
com a de Huffman.
z Necessita-se de uma tabela com a probabilidade
de ocorrência de cada caracter, e de um
procedimento para a codificação em binário.
zO procedimento para a codificação, baseia-se na
divisão de conjuntos de probabilidades para a
obtenção do código binário
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Shannon-Fano
z Para a codificação, devemos ter os caracteres com suas
probabilidades de ocorrência:
• O passo seguinte é ordenar colocando os
caracteres de maior probabilidade no topo da
tabela, até o menor, na base:
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Shannon-Fano
z Uma vez feito isso, divide-se a tabela em dois grupos cuja
soma de probabilidades seja igual ou semelhante.
z No caso da tabela, serão obtidos dois grupos, um
composto pelo caracter C1 e outro pelos demais.
z O primeiro grupo recebe como primeiro valor de código o
binário 0 e o segundo recebe 1:
PDF created with pdfFactory Pro trial version www.pdffactory.com
z Como para o primeiro grupo não há ambigüidade em
termos apenas um bit,Shannon-Fano
vamos resolver o problema do
Codificação
segundo grupo.
z Para isso, repetimos o procedimento anterior, dividindo
em dois subgrupos de probabilidades equivalentes.
z O caracter C2 forma o primeiro subgrupo e os demais
formam o segundo.
z Mais uma vez vamos colocar 0 para distinguir o primeiro e
1 para o segundo
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Shannon-Fano
zFinalmente, para resolução da última
duplicidade, repete-se o processo, inserindo o
binário 0 na seqüência do código de C1 e 1
para C3
PDF created with pdfFactory Pro trial version www.pdffactory.com
Compressão Fixa x
Compressão Auto-adaptável
zAs técnicas de compressão estatística de
Huffman e Shannon-Fano permitem apenas a
criação de uma tabela fixa de códigos
associados a cada caracter tabelado.
zCaso as probabilidades nas quais foram
concebidos os códigos da tabela forem distintos
para determinado arquivo a comprimir, este
será prejudicado na compressão.
zPara resolver este caso utiliza-se uma tabela
adaptável.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Compressão Fixa x
Compressão Auto-adaptável
z A tabela adaptável consiste na mesma tabela que
conhecemos, contendo o caracter e seu código,
acrescida de mais uma coluna contendo a contagem de
ocorrência do caracter no arquivo a comprimir.
z Efetua-se, portanto, uma contagem de quantos
caracteres ocorrem no arquivo, e ordena-se a coluna
dos caracteres em ordem crescente a partir desta coluna
da contagem, mantendo a coluna de código inalterada.
z Como resultado, obtém-se uma tabela com os
caracteres de ocorrência mais freqüente sendo
codificados com menos bits.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Compressão Fixa x
Compressão Auto-adaptável
zSeja, então, a tabela, contendo o caracter o código
e a contagem:
zCaso o caracter C3 ocorra 21 vezes, o C2 18 vezes,
C1 10 vezes, o C5 3 vezes e o C4 2 vezes, a tabela
agora será a seguinte:
PDF created with pdfFactory Pro trial version www.pdffactory.com
Compressão Fixa x
Compressão Auto-adaptável
zA codificação continuou a mesma, mas a
correspondência foi alterada para a situação
específica do arquivo comprimido em questão.
z Observamos, portanto, a necessidade de
realizarmos um processamento de leitura e cálculo
anterior à compressão propriamente dita, o que
implica em maior tempo gasto do que com a
utilização da tabela fixa.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Compressão Fixa x
Compressão Auto-adaptável
zCom a compressão auto-adaptável ganha-se,
obviamente, uma compressão mais eficiente.
zPor outro lado, há um problema pela própria
variabilidade da tabela: para a descompressão, há a
necessidade de se anexar a tabela ao arquivo
comprimido, para que os códigos correspondentes
possam ser devidamente decodificados.
zIsso pode significar, em alguns casos, perda da
compressão eficientemente obtida.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação de
Lempel-Ziv-Welch (LZW)
z Criada em 1977 por Abraham Lempel e Jacob Ziv, a
compressão LZW é encontrada na compressão de texto
e de programas. Os algoritmos de compressão LZ78
são usados na compressão de dados binários, como os
bitmaps.
z Em 1984, Terry Welch modificou o compressor LZ78
para a sua implementação em controladores de discos
de elevado desempenho.
z O resultado foi o algoritmo LZW que é encontrado e
usado nos nossos dias (como o ARJ e o
PKZIP/WinZip)
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação de
Lempel-Ziv-Welch (LZW)
z Criada em 1977 por Abraham Lempel e Jacob Ziv, a
compressão LZW é encontrada na compressão de texto e
de programas. Os algoritmos de compressão LZ78 são
usados na compressão de dados binários, como os
bitmaps.
z Em 1984, Terry Welch modificou o compressor LZ78 para
a sua implementação em controladores de discos de
elevado desempenho.
z O resultado foi o algoritmo LZW que é encontrado e
usado nos nossos dias (como o ARJ, Gunzip,
PKZIP/WinZip e o formato imagem GIF)
z Inicialmente o algoritmo era de domínio público,
atualmente a patente é propriedade da Unisys.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação de
Lempel-Ziv-Welch (LZW)
z O LZW é um algoritmo que constrói um dicionário dos dados
(normalmente chamado de tabela de tradução) originais.
z Os padrões dos dados são identificados e registrados no
dicionário.
z Se o padrão não está presente no dicionário, é codificado e
registrado no mesmo.
z O LZW é um dos algoritmos de compressão mais utilizados
nos nossos dias.
z Este método de compressão de dados sem perdas é
encontrado em vários formatos de imagem, como o GIF, TIFF
e PDF.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação de
Lempel-Ziv-Welch (LZW)
zCodificação LZW é baseada na construção de
um dicionário de palavras (grupos de um ou
mais caracteres) a partir do fluxo de entrada.
zQuando uma nova palavra é encontrada, a
máquina de compressão adicionada ao
dicionário e um valor que identifica a posição da
frase no dicionário substitui a frase.
zSe a frase já foi registrada, ela é substituída
pelo valor de posição no dicionário.
PDF created with pdfFactory Pro trial version www.pdffactory.com
zExemplo:String ABACABA
ytabela de códigos : 0=A, 1=B, 2=C, 3=D
yPrimeiro caractere da string é A, e está na nossa
tabela. Analisar o caracter seguinte que é o B,
junta-se AB que não está na tabela. Neste caso
enviamos o código 0 e adicionamos a nova string
na tabela fazendo 4=AB
yTomamos para prefixo o caracter B, buscando o
próximo caracter, obtem-se BA, que não está na
tabela, repetindo o anterior, enviar o código 1 e
adicionamos nova string na tabela fazendo 5=BA
yNovo prefixo é o A, concatenada com próximo
caracter, obtemos a string AC, enviamos 0 e
fazemos 6=AC
PDF created with pdfFactory Pro trial version www.pdffactory.com
zString ABACABA
yNovo prefixo é o C, concatenado com próximo caracter,
string CA. Enviamos o código 2, e fazemos 7=CA
yNovo prefixo é o A, concatenado com próximo caracter,
string AB, a qual se encontra na tabela, não enviamos
nenhum código e tomamos para novo prefixo AB
yEste prefixo concatenado com próximo caractere forma ABA,
que não se encontra na tabela. Enviamos o código 4, e
fazemos 8=ABA
yO novo prefixo passa a ser A e como não tem mais caracter,
enviamos o código 0.
yDesta forma obtemos a seguinte seqüência codificada:
0 1 0 2 4 0.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Tipos de Compactações
z ARJ: criado pelo programa de compactação homônimo, batizado
em homenagem ao inventor, Robert Jung (ARJ = Archive Tobert
Jules). Foi o principal concorrente do ZIP no tempo do DOS, mas
caiu em desuso com a popularização do Windows.
CAB: usado pela Microsoft na distribuição de seus software e
descompactado na instalação. CAB é a abreviatura de Cabinet.
GIF: muito usado para imagens, foi criado pelo serviço on-line
CompuServe no tempos pré-Internet. Por usar compressão LZW,
o Gharphics Interchange Format é protegido por patentes da
Unisys, cuja autorização é necessaria para o desenvolvimento de
produtos nele baseados.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Tipos de Compactações
z GZ ou GZIP: o nome vem de GNU Zip, por fazer parte do Projeto
GNU (que originou o Linux). Seu grande beneficio é ser livre, de
código aberto.
JAR: dos mesmos criadores do ARJ, atinge maiores níveis de
compressão e é mais rápido que a maioria dos rivais. Não
confudir com o formato de distribuição de applets Java.
JPG: criado a partir dos padrões definidos pelo JoinPhoto-graphic
Experts Group (JPEG), é o mais usado para imagens,
principalmente fotos. Permite vários níveis de compactação.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Tipos de Compactações
z
MP3: o vilão do mercado fonográfico caiu nas graças dos
internautas ao permitir a compressão de áudio em até 12 vezes.
Tecnicamente, é parte do padrão MPEG-2. MP3 vem do MPEG-2,
layer 3.
MPG: criado pelo Moving Picture Experts Group (semelhante ao
JPEG, mas dedicado ao vídeo), usado até nos DVD´s.
PNG: foi desemvolvido para substituir o GIF, evitando problemas
de licenciamento, além de ter algumas vantagens técnicas. A
sigla vem de Portable Network Graphics.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Tipos de Compactações
z
RAR: formato usado pelo compactador WinRAR, que emprega
diferentes métodos de compressão de acordo com o tipo de
arquivo.
TAR: criado pelo comando de Unix com o mesmo nome, derivado
de Tape Archive, ele apenas agrupa vários arquiivos, sem
compressão.
ZIP: provavelment o formato mais popular, surgiu com o
compactador PKZip, criado por Phillip Katz, em 1986. Chegou ao
Windows com o WinZip e já é descompactado automaticamente
pelas versões mais novas do sistema operacional da Microsoft.
Apesar do nome, não tem relação com os ZIP drives da Iomega.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Lempel-Ziv e
CCITT V.42 bis
z A codificação Lempel-Ziv é um tipo de compressão de cadeia
que forma strings de caracteres a partir de sua ocorrência,
criando tabelas de strings conforme vão acontecendo.
z Dada a interessante abordagem utilizada nesse tipo de
compressão, a codificação Lempel-Ziv foi aprimorada e tornada
padrão para a compressão de dados transmitidos via modem.
z Esta técnica padrão baseada na Lempel-Ziv é a recomendação
V. 42 bis do CCITT (Consultative Committee for International
Telephone and Telegraph).
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Lempel-Ziv e
CCITT V.42 bis
zAs técnicas de Huffman e Shannon-Fano
estudadas anteriormente eram de compressão
estatística baseada em caracteres, uma vez que
utilizavam a probabilidade de ocorrência de
cada caracter.
zA codificação Lempel-Ziv utiliza probabilidades
de cadeias de caracteres ao invés de apenas
um caracter. Qual a vantagem disso?
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Lempel-Ziv e
CCITT V.42 bis
zEm primeiro lugar, vamos analisar qual é a influência
da probabilidade sobre o número teórico de bits para
representação de determinado conjunto de caracteres.
zPara tanto, vamos pegar os caracteres C1 e C2 para
verificar a relação entre probabilidade e número
teórico de bits.
zPara sabermos este número teórico de bits precisamos
calcular a harmonia, que nos dá o número de bits por
intervalo de símbolo.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Lempel-Ziv e
CCITT V.42 bis
zAssim, se C1 tiver probabilidade 0,8 e C2 tiver
0,2, sua entropia será 0,72, e assim
sucessivamente, conforme a tabela a seguir:
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Lempel-Ziv e
CCITT V.42 bis
z Isso indica que quanto mais distinta é a porcentagem,
maior é o aproveitamento de bits.
z Para aproveitarmos isso como forma de compressão,
basta criarmos conjuntos de caracteres de forma a
acumular porcentagens.
z Assim, podemos acumular os caracteres em cadeias do
tipo C1C1, C1C2, etc.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Lempel-Ziv e
CCITT V.42 bis
z Para verificarmos se há ganho no comprimento médio
de bits, vamos iniciar analisando as probabilidades de
cadeias de 2 caracteres na tabela a seguir, onde foi
estabelecido C1 com probabilidade 0,7 e C2 com 0,3:
z A probabilidade de ocorrência da cadeia C1C1 é de
0,7*0,7 = 0,49, ou melhor, 49%.
z O mesmo raciocínio aplica-se às demais combinações.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Lempel-Ziv e
CCITT V.42 bis
zUtilizando a codificação Huffman, podemos
estabelecer o tamanho médio ocupado pelo grupo de
cadeias da tabela anterior.
zObtendo-se os códigos binários, que podem ser
observados na tabela a seguir, pode-se calcular o
tamanho médio de bits ocupado:
T = 0,49*1 + 0,21*2 + 0,21*3 + 0,09*3 = 1,81 bits
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Lempel-Ziv e
CCITT V.42 bis
z O valor de 1,81 bits para representação da cadeia pode
parecer grande, mas se dividirmos por 2, teremos 0.905
bit por caracter, menor que 1 bit por caracter no caso de
codificarmos o bit 0 para C1 e bit 1 para C2.
z Seguindo este raciocínio, podemos ampliar a idéia para um
número maior de caracteres e chegaremos à conclusão de
que, quanto maior a cadeia, mais caracteres serão
passíveis de compressão.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Lempel-Ziv e
CCITT V.42 bis
z Desta forma, a codificação Lempel-Ziv utiliza um conjunto
de regras para analisar as cadeias de um conjunto de
caracteres pré-definido.
z As cadeias são montadas e codificadas à medida em que
são lidos os caracteres a codificar.
z A forma de composição destas cadeias está descrita na
técnica V. 42 bis.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Lempel-Ziv e
CCITT V.42 bis
zA codificação Lempel-Ziv foi melhorada e é
utilizada como uma técnica padrão para
transmissão através de modens.
zEsta técnica possui um tamanho máximo de
cadeia que pode variar de 6 a 250 caracteres
para formação de cadeia.
zExiste um dicionário com 512 cadeias básicas
codificadas.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Lempel-Ziv e
CCITT V.42 bis
zO dicionário de cadeias é dinâmico e pode ter
cadeias acrescentadas e retiradas em tempo de
compressão.
zA formação de novas cadeias é baseada na
comparação das cadeias lidas com as
existentes no dicionário.
zSe a cadeia lida não existe, ela é acrescentada
e recebe um código que a representa como
cadeia comprimida.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Lempel-Ziv e
CCITT V.42 bis
zComo o modem transmissor é o que faz a
compressão e o dicionário é dinâmico, como o
modem receptor irá decifrar os códigos para
descomprimi-los?
zA cada nova cadeia formada no transmissor
são enviados os caracteres ou a primeira
subcadeia que a compõe e o código
correspondente à nova cadeia, para que exista
uma réplica do dicionário no receptor.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Lempel-Ziv e
CCITT V.42 bis
zÉ utilizada uma estrutura de dados em árvore para
implementação do dicionário de cadeias.
zA partir de uma cadeia pré-definida é formada uma
árvore para processamento das cadeias.
zSeja a cadeia pré-definida DA , a partir da qual
derivam-se as cadeias DATA e DADO. Para esta
seqüência a estrutura seria:
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Lempel-Ziv e
CCITT V.42 bis
zOs valores ao lado de cada caracter é o código
correspondente à cadeia composta até aquele
nó da árvore.
zOu seja, a cadeia DA possui código 300, a
cadeia DAT possui código 342 e assim por
diante.
zDesta forma, amplia-se o dicionário sem
prejudicar as codificações existentes e permite,
ao mesmo tempo, a verificação de variações
destes códigos.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Lempel-Ziv e
CCITT V.42 bis
zExiste, ainda, a possibilidade de substituição de
códigos pouco utilizados.
zUma vez definida um número N de códigos
possíveis, ao atingir este número, procura-se
um código que corresponda a um nó folha que
não esteja sendo utilizado na compressão em
curso.
zCaso exista, a nova cadeia utiliza o código da
cadeia antiga não utilizada. Ocorre, portanto,
eliminação de códigos do dicionário.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Codificação Lempel-Ziv e
CCITT V.42 bis
zEsta é a técnica padrão V. 42 bis utilizada para
compressão na transmissão de dados via
modem.
zEla baseia-se na codificação em cadeia de
Lempel-Ziv, utilizando-se da multiplicação das
probabilidades de ocorrência de caracteres,
para, em cima das estatísticas de cadeias,
permitir a compressão de bits utilizados na
transmissão de dados.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Download

Compressão de dados