UNIÃO EDUCACIONAL DO PLANALTO CENTRAL FACULDADES INTEGRADAS DA UNIÃO EDUCACIONAL DO PLANALTO CENTRAL Aprovadas pela pela Portaria SESu/MEC SESu/MEC Nº 368/2008 de 19/05/2008 (DOU 20/05/2008)
Faculdade de Ciência e Tecnologia do Planalto Central – FACIPLAC Curso de Sistemas de Informação
Reconhecido pela Portaria Ministerial nº 290 -MEC de 27/01/2005 DOU de 28/01/05
Compressão de Dados
Maydson Alves Ribeiro Sâmella Martins Oliveira Silva Willian Henrique Pereira Fontenele
Kleython Kell
Brasília - DF Setembro/2014
1.Introdução A compressão de dados ou técnica de compressão de dados e muito difundida no momento em que vivemos onde a tecnologia já está e um nível alto, desta forma a compressão de dados e muito utilizada ainda por todos independente com o que trabalhe, simplesmente pelo fato de reunir e um único arquivo ou local um grande quantidade de arquivos, imagens, documentos. A compressão de dados é uma técnica utilizada para reduzir espaço que um dispositivo necessita de ocupar. Isto é conseguido através de vários algoritmos de compressão reduzindo a quantidade de Bytes precisa para representar um dado (FERREIRA, Sergio, 2010).
Conforme dito a compressão sempre foi utilizada por muitos, contudo as classificações ou formas de compressão não são conhecida por todos. Desta forma serão os pontos abordados no trabalho a respeito do que seja a Compressão de Dados algumas técnicas que são utilizadas.
ii
Sumario Compressão de Dados ........................................................................................ i 1.Introdução ........................................................................................................ ii 2. Desenvolvimento ............................................................................................ 4 2.1 Compressão de Dados .......................................................................... 4 2.2 Tipos de Compressão .......................................................................... 4 2.2.1 Compressão com perdas ................................................................... 4 2.2.2 Compressão sem perdas ................................................................... 5 2.2.2.1 Supressão de Repetições ("Run lenght") ........................................ 5 2.2.2.2 Codificação Huffman ....................................................................... 6 2.2.2.3 Código de Lempel-Ziv (LZW) .......................................................... 8 2.2.3 Compressão Simétrica e Assimétrica................................................. 9 2.2.4 Compressão Adaptativa, não adaptativas ........................................ 10 2.3 Compactadores mais conhecidos ....................................................... 11 3. Conclusão .................................................................................................... 13 4.Referências Bibliográficas ............................................................................. 14
iii
2. Desenvolvimento 2.1 Compressão de Dados Compressão de dados de forma clara e no pé da letra significa reduzir, diminuir, ato de comprimir dados afim de reduzir espaços ocupados por algum tipo de arquivo em algum dispositivo qualquer. Com o intuito de uma unidade de armazenamento ocupar o menor espaço possível, comprimir dados, ou seja, reduzir o tamanho das informações, esse procedimento tornou-se necessário. Atualmente, existem vários métodos de compressão, alguns deles utilizados de forma genérica, para vários tipos de dados, e outros de forma específica. Compressão de dados é uma forma de codificar um certo conjunto de informações de maneira que o código gerado seja menor que a fonte, afim de reduzir espaço físico utilizado, agilização na transmissão de dados. A redução do espaço físico permite um significativo ganho em termos de ocupação em disco e velocidade de acesso. A compressão é aquela realizada sobre dados, a partir dos quais é verificada a repetição de caracteres para efetivar a redução de número de elementos de dados(PIVETTA CANTARELLI,Elisa M., 2009).
Os Objetivos da Compressão de dados são:
Ocupar menos espaço, ficando mais barato;
A transmissão ser mais rápida;
Poder processar os dados de forma mais rápida;
reduzir o tempo e espaço necessário para backups.
2.2 Tipos de Compressão 2.2.1 Compressão com perdas A compressão com perdas (Lossy compression), por oposição á compressão sem perdas, permite eliminar algumas informações para ter a melhor taxa de compressão possível, conservando ao mesmo tempo um resultado que seja o mais próximo possível dos dados originais. É o caso, por exemplo, de certas compressões de imagens ou de sons. Em contrapartida, os dados multimídia (áudio, vídeos) podem tolerar um certo nível de degradação sem que os captores sensoriais (olho, tímpano, etc) distingam uma degradação significativa. Em geral quando digitalizamos 4
informações que normalmente existem de forma analógica, como fotografias, sons filmes, podemos considerar algumas perdas que não seria percebidas pelo olho ou ouvido humanos.
2.2.2 Compressão sem perdas Na compressão sem perdas (lossless), o arquivo reconstruído coincide com o arquivo original podendo ser utilizado por computadores, esta técnica explora estatísticas de dados (redundância de dados). A Técnica de compressão de dados sem perdas e dividida em: Técnicas pontuais - Supressão de Repetições ("Run lenght") Codificação Estatística - Código de Huffman Codificação por Dicionário - Código de Lempel-Ziv (LZW)
2.2.2.1 Supressão de Repetições ("Run lenght")
Quando temos um arquivo de texto onde ocorre uma repetição contínua de determinando caracter, por exemplo "AAAAAA", é possível sua representação através da codificação run-length, da seguinte forma: "AAAAAA" = 12 A, onde A é o caracter repetido 6 vezes. Ex:
5
2.2.2.2 Codificação Huffman
Esa técnica de compressão foi criada por D. A. Huffman em 1950, onde 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. Em geral, este código f orma um número binário. Um algoritmo de determinação de códigos binários para caracteres baseado na frequência de uso destes caracteres foi sugerida por Huffman, na qual a ideia é associar números binários com menos bits aos caracteres mais usados nos textos. Neste método de compressão, é atribuído menos bits a símbolos que aparecem mais frequentemente e mais bits para símbolos que aparecem menos Codificação Huffman é um exemplo de técnica de codificação estatística, que diz respeito ao usi de um código curto para representar símbolos comuns, e códigos longos para representar símbolos pouco frequentes. Muito parecido com o código Morse.
6
Ex:
Nesse exemplo e possível ver claramente como é feita a atribuição da frequência, será dada pela quantidade de vezes em que a letra aparece na mensagem.
Então selecionamos os valores menor que tem e os juntamos em uma nova árvore, que fará parte da nossa coleção.
7
Continuamos o mesmo processo de somar sempre os menores valores ate chegar a nossa árvore completamente construída.
Com a árvore completamente montada, chegamos ao ponto final onde será associada 0 ás arestas que ligam um vértice com seu filho esquerdo e 1 ás arestas que ligam um vértice com seu filho á direta. O código correspondente á cada letra será formado pelo número binário associado ao caminho da raiz até a folha correspondente. 2.2.2.3 Código de Lempel-Ziv (LZW)
Criada em 1977 por Abraham Lempel e Jacob Ziv , a compressão LZW 8
é 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, com os bitmaps. Em 1984, Terry Welch modificou o compressor LZ&* para sua implementação em controladores de discos de elevado desempenho O resultado foi o algoritmo LZW que é encontrado e usado nos nossos dias (como o ARJ e o PKZIP/WinZip) O LZW é um algoritmo que constrói um dicionário dos dados (normalmente chamado de tabela de tradução) originais. Os padrões dos dados são identificados e registrados no dicionário, se o padrão não esta presente no dicionário, é codificado e registrado no mesmo. Este método de compressão de dados sem perdas é encontrado em vários formatos de imagem, como o GIF, TIFF e PDF A codificação LZW é basiada na construção de um dicionário de plavaras (grupos de um ou mais caracteres) a partir do fluxo de entrada. Quando uma nova palavra é encontrada, a máquina de compressão adicionada ao dicionário substitui a frase, se a frase já foi resgistrada, ela é substituída pelo valor de posição no dicionário. Ex:
ABACABA 0=A
1=B
2=C
3=D
Primeiro 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 Tomamos para prefixo o caracter B, buscando o próximo caracter, obtém-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 Novo prefixo é o A, concatenada com próximo caracter, obtemos a string AC, enviamos 0 e fazemos 6=AC Novo prefixo é o C, concatenado com próximo caracter, string CA. Enviamos o código 2, e fazemos 7=CA Novo 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 Este prefixo concatenado com próximo caractere forma ABA, que não se encontra na tabela. Enviamos o código 4, e fazemos 8=ABA O novo prefixo passa a ser A e como não tem mais caracter, enviamos o código 0. Desta forma obtemos a seguinte sequência codificada : 0 1 0 2 4 0.
2.2.3 Compressão Simétrica e Assimétrica Refere-se à simetria da complexidade computacional dos algoritmos de compressão e descompressão.
Compressão Simétrica: Os algoritmos de compressão e
descompressão possuem a mesma complexidade, estando 9
associado
a
aproximadamente
o
mesmo
tempo
de
processamento. Procedimentos simétricos são indicados em aplicação que envolvem a transmissão e apresentação das imagens
simultaneamente.
Quando
a
compressão
e
descompressão são feitas executando-se métodos ou algoritmos idênticos ou bem semelhantes dizemos que o método de compressão e simétrico. Bons exemplos são os algoritmos de codificação aritmética, ou o método LZW, baseado em dicionário.
Compressão assimétrica: Há um forte balanceamento de tempo
de processamento entre a compressão e descompressão. Uma aplicação típica de compressão assimétrica, com o processo de descompressão mais rápido que o de compressão e aplicação envolvendo um banco de imagens (uma imagem será armazenada apenas uma vez, porém será lida várias vezes). Procedimento de backup tende a privilegiar uma compressão mais
rápida
em
detrimento
do
tempo
necessário
à
descompressão. Este tipo de método é útil quando vamos comprimir apenas uma vez, mas descomprimir várias vezes (musicas em formato MP3 são um bom exemplo disso). Nesse caso temos todo tempo do mundo para comprimir, mas a descompressão tem de ser feita em tempo real.
2.2.4 Compressão Adaptativa, não adaptativas A adaptabilidade refere-se à características do processo/algoritmo de se adaptar aos dados de entrada. É possível identificar segundo esse aspecto as seguintes variações: Compressão Adaptativa: São aqueles que não se baseiam em dicionários pré definidos, construindo o dicionário em função dos dados de entrada. Métodos baseados em dicionários da família LZW são naturalmente adaptativos já que é inviável que os programas de compressão carreguem dicionários de dados padronizados, o que os dicionários seja enviados junto com os arquivos. Compressão Não Adaptativa: Em geral, baseiam-se em dicionários estáticos definidos à prioridade em função de estatística de frequência de dados. Um dicionário de codificação/ compressão é em essência um tabela que associa símbolos a códigos de menor tamanho.Uma compressão de dados que tem base em métodos rígidos, cujas regras não variam de acordo com os dados, nem a medida que os dados são lidos.
10
Métodos de aproximação como a codificação de Huffman pode ser tanto adaptativo, inferindo as probabilidades a medida que os dados são lidos, como não adaptativos, usando probabilidades fixas ou determinadas por uma leitura prévia dos dados.
2.3 Compactadores mais conhecidos Principais programas e formatos de arquivos compactados: WINZIP: É um dos mais populares programas de compactação utilizados pelos usuário da plataforma Windows. Tem por finalidade compactar arquivos paro o formato .zip (reduzir o tamanho dos memos). Suporta alguns formatos de leitura como .ARC, .ARJ, .ZIP, .ZIPX, .BZ entre outro. Suportando também alguns formatos de escrita como o .CAB, .HQX, .UUE entre outros.
Winrar: É um software que trabalha com arquivos dos mais diferentes formatos de compressão (ZIP, ARJ, CAB, LZH, ACE, TAR, GZip, UUEcode) e suporta arquivos até 8.589 Bilhoes de Gigabytes. Em português interface bastante completa e intuitiva, rapidez na compressão dos dados, integração bastante completa com o Windows Explorer e Multiplataforma.
BraZip: É um software brasileiro de compactação e descompactação que trabalha com as seguintes formatos: Compactação: Zip, Lha, Bh, Cab, Gz, Tar e Jar. Descompactação: Ace, Arc, Arj, Bh, Cab, Gz, Ha, Jar, Lha, Lzh, Pak, Rar, Tar, Z, Zip e Zoo.
7-Zip: É um compactador de nível altíssimo de compressão de dados, possui o código fonte aberto. Atualmente o formato 7z,o principal formato de compactação do programa, é o que leva maior taxa de compactação, ganhando inclusive do formato RAR (Exceto em arquivos multimídia, onde este último leva vantagem até à ausência de um filtro ainda não implementado no código 7Zip).
11
Formados de compactação e descompactação: 7z, ZIP, Gzip, Bzip2 e TAR. Formato somente de descompactação: RAR, CAB, ISO, ARJ, LZH, CHM, Z, CPIO, RPM, DEB e NSIS
12
3. Conclusão Através da presente pesquisa sobre o tema compressão de dados nós observamos que aquilo que o software de compressão executa não e simples da forma como vesmos, pois através dele existe um código com regras e tipo de compressão que foram taxadas na presente pesquisa, as quais definem como serão comprimidos os arquivos. Dessa forma levamos um grande conhecimento acerca do assunto compressão de dados.
13
4.Referências Bibliográficas Disponível em : < http://pt.kioskea.net/contents/715-compressao-de-dados > Acesso em: 08 set. 2014. Disponível em : < http://coral.ufsm.br/tielletcab/Telframe/compacta.html > Acesso em: 08 set. 2014. Disponível em : < http://compactacaofacil.150m.com/compactacao.html#topo > Acesso em: 08 set. 2014. Disponível em : < http://www.lncc.br/~jauvane/SMM/2002/SMM-A04.pdf > Acesso em: 08 set. 2014. Disponível em : <
http://www.ic.unicamp.br/~thelma/gradu/MC326/2010/Slides/Aula03bcompressao.pdf > Acesso em: 08 set. 2014. Disponível
em
:
<
http://www.dca.fee.unicamp.br/~martino/disciplinas/ea978/na4.pdf > Acesso em: 08 set. 2014. Disponível
em
:
<
http://www.ime.usp.br/~pf/mac0323-2014/aulas/24-
compress.html > Acesso em: 08 set. 2014. Disponível em : < http://pt.slideshare.net/Sergio10INF/tcnicas-de-compresso-
de-dados-14872769 > Acesso em: 08 set. 2014. Disponível
em
:
<
http://fatecgarca.edu.br/revista/Volume2/Artigo_2_Volume_2.pdf > Acesso em: 08 set. 2014. Disponível em : < http://www.cafw.ufsm.br/~elisa/compressaodados.pdf > Acesso em: 08 set. 2014. Disponível
em
:
<
http://www.ice.unifei.edu.br/ramos/download/SistemasMultimidia/3_slides.pdf > Acesso em: 08 set. 2014.
14
Disponível
em
:
<
http://www.ic.unicamp.br/~thelma/gradu/MC326/2010/Slides/Aula03bcompressao.pdf > Acesso em: 08 set. 2014. Disponível em : < http://www.lncc.br/~jauvane/SMM/2002/SMM-A04.pdf > Acesso em: 08 set. 2014.
15