Sei sulla pagina 1di 3

Curso Profissional de Técnicos de Gestão e Programação de Sistemas Informáticos

COMPRESSÃO DE DADOS

Objectivos da compressão de dados:


 ocupar menos espaço, ficando mais barata a transmissão;
 a transmissão ser mais rápida (menor tempo de acesso;
 poder processar os dados sequencialmente de forma mais rápida;
 reduzir o tempo e espaço necessários para backups (e portanto o custo).
Ao transmitir determinada informação, tentaremos sempre enviar o menor número de bits possível.
Não só estaremos a diminuir o tempo necessário para completar a transmissão, como (e
consequentemente) os seus custos. Se os ganhos daí decorrentes podem ser mínimos para pequenas
quantidades de informação, já para grandes mensagens assim não o será. (p.e. downloads da
Interne).
Por vezes, comprimir os dados é a única forma de viabilizar aplicações. Podemos ter como
exemplo: a transmissão de imagens em canais com baixa largura de banda (linha telefónica), a
utilização de aplicações como videofones e videoconferência seriam impraticáveis.

A compressão de dados envolve a codificação da informação de modo que o arquivo tome menos
espaço. Algumas técnicas são gerais, e outras específicas para certos tipos de dados, tais como voz,
imagem ou texto. A variedade de técnicas é enorme, de forma que veremos apenas alguns
exemplos. Começamos por dividir as técnicas de compressão de dados em duas metades bem
distintas: compressão sem perdas e compressão com perdas.

Compressão sem perdas - A informação é recuperada sem qualquer alteração após o processo de
descompressão. Este tipo de compressão é usada em texto e algumas aplicações multimédia críticas
onde a informação é essencial. Como exemplo, aplicações médicas, trocas de informação entre duas
sucursais bancárias, etc.. Este tipo de compressão é também designada por compressão reversível.

Compressão com perdas - Neste tipo de compressão também designada por irreversível, a
informação descomprimida é diferente da original. Técnicas irreversíveis são pouco comuns em
ficheiros de dados, mas existem situações em que a informação perdida é de pouco ou nenhum
valor, como em compressão de voz, imagem, por exemplo. Observe-se que “O facto de na
compressão sem perdas a informação descomprimida ser diferente da original não significa que a
percepção dum observador seja diferente”. Vejamos um exemplo de compressão irreversível: seria
reduzir uma imagem matricial de 400x400 para 100x100 pixels. Na imagem resultante, cada pixel
representa 16 pixels da imagem original, sendo que, normalmente, não existe método para obter os
valores originais novamente.

Miguela Fernandes Página 1


Curso Profissional de Técnicos de Gestão e Programação de Sistemas Informáticos

Há vários tipos de abordagem à compressão de dados, assentando cada uma delas numa ideia base
diferente. Os algoritmos de compressão originados serão assim também bastante diferentes entre si
e, o que para nós é talvez mais importante, dar-nos-ão diferentes taxas de compressão.
As ideias base mais comuns, e que mais frutos têm dado, são as seguintes:
 Alterar o tipo de representação dos caracteres, recorrendo a códigos de comprimento variável;
 Utilizar um dicionário comum à transmissão e à recepção.
 Usar representações especiais para repetições de caracteres.

Códigos de comprimento variável


Suponha que pode usar dois símbolos diferentes num esquema de codificação: "." e "-". As
combinações desses símbolos devem ser utilizadas para codificar as letras do alfabeto. Para as duas
letras mais utilizadas do alfabeto (na língua inglesa) "e" e "t", devemos escolher representar uma
com o símbolo ".", e a outra com "-". As outras letras receberão combinações de 2 ou mais
símbolos, de forma a que as letras mais frequentes sejam codificadas por um número menor de
símbolos. Por exemplo a letra “O”, poderá ter a seguinte representação “---”.

Parece familiar? Este esquema é equivalente ao código de comprimento variável mais antigo e mais
conhecido do mundo, o código Morse. Códigos de comprimento variável, em geral, são baseados no
princípio que os valores com maior frequência de ocorrência devem ser codificados de forma a
ocupar o menor espaço possível.

Concluindo, a forma de diminuir o comprimento total da mensagem é atribuindo representações


curtas aos caracteres mais frequentes, mesmo que isso implique representações mais longas para os
caracteres menos frequentes. Atribuir a representações mais curtas o menor numero de bits possível.

Exemplo 1

Suponhamos que temos um alfabeto com quatro letras L1, L2, L3 e L4.
O ficheiro contém uma mensagem com 1000 letras que, após a contagem descobrimos estarem
distribuídas da seguinte forma:
L1 – 700
L2 – 200
L3 – 50
L4 – 50

Miguela Fernandes Página 2


Curso Profissional de Técnicos de Gestão e Programação de Sistemas Informáticos

a) Se o código for de comprimento fixo, as letras deverão ter todas do mesmo tamanho. 22 = 4.
Teremos então, a seguinte representação:

LETRAS REPRESENTAÇÃO COMPRIMENTO (em bits) COMPRIMENTO (por letra)


L1 00 2 2 bits * 700 letras = 1400 bits
L2 01 2 2 bits * 200 letras = 400 bits
L3 10 2 2 bits * 50 letras = 100 bits
L4 11 2 2 bits * 50 letras = 100 bits
Espaço que ocupa o Total do ficheiro 2000 bits

b) Exemplo com a utilização de um código de comprimento variável:

LETRAS REPRESENTAÇÃO COMPRIMENTO (em bits) COMPRIMENTO (por letra)


L1 1 1 1 bits * 700 letras = 700 bits
L2 01 2 2 bits * 200 letras = 400 bits
L3 001 3 3 bits * 50 letras = 150 bits
L4 000 3 3 bits * 50 letras = 150 bits
Espaço que ocupa o Total do ficheiro 1400 bits

Como podemos analisar, temos uma taxa de compressão de 30%. Esta compressão foi conseguida
sem perda de informação. Uma vez que todas as letras continuam a existir no ficheiro comprimido,
será sempre possível voltar a reconvertê-las para o código de comprimento fixo, recuperando
integralmente o ficheiro original.

O cálculo da taxa de compressão pode ser feito pela seguinte fórmula:

 Tamanho Comprimido 
Taxa de compressão = 1 −  × 100
 Tamanho Original 

Este código deverá representar os caracteres mais frequentes com o menor número de bits possível,
mesmo que, para isso tenha de usar representações longas para os caracteres pouco frequentes.
É um conceito extremamente simples, mas por vezes bastante eficaz. A sua eficácia depende da
forma como se distribuem as frequências de ocorrência dos vários caracteres.
Quanto mais desiguais forem as frequências dos vários caracteres, maior taxa de compressão
conseguiremos, por aumentar a percentagem de tempo em que estaremos a transmitir
representações curtas.

Bibliografia:
Mónica, P. (1998). Comunicação de dados e redes de computadores Lisboa: CTI

Miguela Fernandes Página 3

Potrebbero piacerti anche