Artigos

Compressão de arquivos

Qualquer usuário com um pouco de vivência em microcomputadores sabe “zipar” um arquivo de modo a reduzir o seu tamanho em bytes. Mas poucos conhecem a teoria que está embutida em programas usados para compactação de arquivos como o PKZIP, WinZIP, WinRAR, etc.

A compressão de arquivos nunca foi tão utilizada como nos dias de hoje. Com o advento da Internet, cada vez mais queremos “espremer” a informação de forma que mais dados possam passar pelos meios de transmissão existentes. Também usamos compressão para armazenar filmes digitais nos DVDs, criar músicas no padrão MP3, etc.

Bem mais fácil que ter um robozinho pra compactar, não?
Bem mais fácil que ter um robozinho pra compactar, não?

Um pouco de teoria

Apesar de existirem vários métodos de compressão disponíveis, existem apenas duas categorias: compressão com perdas e compressão sem perdas. A compressão sem perdas é conhecida também como compactação.

Como o próprio nome diz, na compressão com perdas uma parte da informação é perdida durante o processo. Um exemplo típico é o da transformação dos arquivos de áudio para o padrão MP3. É claro que a perda nestes casos não altera significativamente a qualidade do som. Normalmente o grau de compressão desta categoria é muito maior do que o obtido na compactação.

Já na compactação, ou compressão sem perdas, nenhum bit do arquivo original será perdido após o processo. Assim, se compactamos um arquivo e o descompactamos em seguida, o arquivo original é restaurado sem nenhum tipo de perda. Quando utilizamos o programa Winzip, por exemplo, estamos usando uma técnica de compactação.

Algoritmos de compactação de arquivos

A compactação de um arquivo é obtida através da redução da redundância na informação. E para isto são utilizados vários tipos de algoritmos matemáticos diferentes.

O mais conhecido é o algoritmo LZ, assim batizado por causa de seus idealizadores: Abraham Lempel e Jacob Ziv. O algoritmos LZ (também chamado de Lempel-Ziv) funciona de uma maneira bem simples: ele procura pela ocorrência de conjuntos de caracteres repetidos em um arquivo e os substitui por um código que usa menos bits para representar aquele conjunto de caracteres. Mais tarde, Terry Welch aperfeiçoou o algoritmo LZ e chegou ao LZW, que é o um dos mais utilizados pelos programas de compactação atuais.

Outro algoritmo muito utilizado em compactação é o código de Huffman. No código de Huffman, utilizamos mais bits para representar os caracteres que aparecem menos em um arquivo e menos bits para representar os que aparecem mais. Assim, na média, o número de bits para codificar todo o arquivo diminui consideravelmente.

Quase todos os programas de compactação utilizam estes ou mais métodos em conjunto para obter maior eficiência.

Onde usar compactação

A compactação de arquivos é usada onde a integridade da informação é indispensável. Assim, a compactação é utilizada na transmissão de arquivos pela Internet, nas aplicações de “duplicação de discos rígidos”, em utilitários de compactação como Winzip, PKZIP, etc.

Arquivadores” – Os utilitários de compactação também são conhecidos como “arquivadores”. Isto porque além de diminuir o tamanho dos arquivos eles também “juntam” vários arquivos em um só arquivo. Isto facilita muito a distribuição de programas pela Internet, por exemplo.

Duplicação de HD”- A “duplicação de HD” é uma das aplicações onde a compactação é empregada. Na verdade, o nome “duplicação” está errado. Ele surgiu por causa de programas como o “DoubleSpace” que prometia, “em média”, dobrar o espaço disponível em um HD. Como ele fazia isso? Simples: Quando se instalava o programa “duplicador”, este ficava residente em memória. Toda vez que fosse feita uma gravação no disco rígido, o programa entrava em ação e compactava o arquivo que seria gravado. Isto ocorria automaticamente, sem a intervenção do usuário. Assim, como o grau médio de compactação era de 50%, ou seja, os arquivos se reduziam a metade de seu tamanho original, o programa se dizia “duplicador” de HD. É bom salientar que se o arquivo já estivesse compactado, não havia redução e conseqüentemente não existia ganho do espaço em disco. Além disto estes programas deixavam o computador um pouco mais lento.

Compressão com perdas em aplicações multimídia

A compressão com perdas tira vantagem das limitações de nossos sentidos para diminuir o tamanho de um arquivo digital. Para que ter uma cópia perfeita de uma imagem se o nosso olho não é capaz de notar certas diferenças de cor? Assim, os algoritmos de compressão com perdas criam arquivos que tem a mesma “aparência” dos originais mas são diferentes a nível de bit, ou seja, o arquivo comprimido usa menos bits que o original mas esses bits não “fazem falta” para aquele tipo de aplicação.

Os algoritmos de compressão com perdas mais conhecidos utilizados em multimídia são:

MPEG-1 – MPEG é a sigla de Motion Pictures Experts Group, que é um grupo de pesquisadores que desenvolvem padrões para compressão de áudio e vídeo. O MPEG-1 é o padrão original do MPEG e é capaz de codificar áudio e vídeo a uma taxa de 1,15 MB/seg.

O MPEG define três níveis ou camadas de compressão para áudio. Em cada camada o nível de compressão é mais complexo e exige mais poder computacional. A terceira camada (layer 3) se tornou bastante popular para a compressão de áudio atualmente é o que conhecemos como MP3, ou melhor, MPEG Layer 3.

MPEG-2 – É um padrão de compactação de maior qualidade utilizado em radiodifusão por satélite, por exemplo. Pode ser utilizado em transmissões a taxas de 4 a 9 MB/seg. Uma versão modificada do MPEG-2 é usada pelo padrão HDTV e também nos DVDs.

MPEG-4 e derivados – O padrão MPEG 4 e seus derivados (DiVX, XViD, etc.) é um dos mais usados atualmente. Devido à melhoria dos recursos computacionais, principalmente, eles podem oferecer qualidade semelhante à MPEG-2 sem ocupar tanto espaço.

Compressão de imagens

A compressão é amplamente utilizada em imagens digitais. Existem algoritmos de compactação como GIF, PNG etc. e outros de compressão com perdas como JPEG. Vejamos algumas características destes tipos de compressão:

GIF – Ou Graphics Interchange Format é uma técnica de compressão de imagens que usa o algoritmo LZW. Uma particularidade do padrão GIF é de poder armazenar mais de uma imagem no arquivo, criando a possibilidade de vermos “animações” na Internet, por exemplo.

PNG – Também chamado de “Ping” o formato PNG é uma alternativa ao padrão GIF. Mas usa uma variação do algoritmo Lempel-Ziv e também consegue trabalhar com imagens de maior qualidade visual.

JPEG – Enquanto GIF e PNG são formatos para compactação de imagem, ou seja, não existem perdas, o padrão JPEG é de compressão com perdas. Criado pelo Joint Photographic Experts Group, o formato JPEG permite o uso de até 16 milhões de cores enquanto que o GIF está limitado a 256. Como o olho humano não consegue distinguir determinados detalhes de uma imagem, o JPEG é um dos formatos mais utilizados atualmente, já que o tamanho dos arquivos de imagens costuma ser bem pequeno. Existe um compromisso entre qualidade de imagem e tamanho do arquivo. Quanto menor for a qualidade da imagem menor será o arquivo gerado no padrão JPEG.

TIFF – O TIFF (Tagged Image File Format) é mais um padrão utilizado para compressão. Pode ser com perdas ou não, e foi desenvolvido pela Aldus. Apesar de já ter sido bastante popular, tem caído em desuso por causa de algumas incompatibilidades.

Conclusão

Acho que este artigo conseguiu mostrar de forma resumida a importância da compressão de dados nos dias de hoje. Se algum de vocês tiver maior interesse no assunto, recomendo a leitura de uma tese de mestrado, publicada na biblioteca do IME (Instituto Militar de Engenharia) em 1992 sob o título de: “Compactação de Imagens – Uma técnica preditiva com informação lateral”, de um tal de “Abel Alves”, que hoje em dia tem se dedicado a outros assuntos mais amenos… (He! He!)

Tags: Software

Você também vai gostar

Leia também!