Compactação em Arquivos de Imagens
 
          “Melhore o rendimento de seus trabalhos entendendo como funciona e qual a diferença entre sistemas de compactação com perda e sem perda.”
 
          Não é difícil pensar em compactação de arquivos como sendo um arquivo que foi espremido por um programa. Afinal, os ícones dos compactadores de arquivos, como o winzip, são desenhos de morsas com pastinhas de arquivos dentro. Esses ícones nos dão a idéia de que um arquivo pode ficar menor do que ele é, facilitando seu transporte na net e ocupando menos espaço em disco. Mas vamos com calma, nada no computador é “espremido”, pois estamos falando de informações expressas em forma de BIT, e não em alguma coisa física que possa ser espremida. Então, você pergunta, porque o arquivo fica menor quando compactado? Vamos descobrir!

 

Compactação com perda e sem perda
 
          Antes de começarmos a entender os processos, não vamos esquecer que compactação nada mais é que matemática aplicada. Aqui vou apresentar os diferentes tipos de compactação, usando de analogias e imagens gráficas, afinal, somos designers gráficos e não programadores. Tendo isso em mente, vamos usar uma palavra - chave para entendermos como funciona a compactação. Essa palavra - chave será Informação, pois os BITs de um arquivo nada mais são do que as informações de processamento que um arquivo tem. Quando um arquivo é compactado, significa que ele fica com um número menor de informações do que o arquivo original. Para isso, são usadas duas formas de diminuir sua informação: a compactação sem perda e a com perda. Na compactação sem perda, o arquivo permanece com suas informações originais depois de descompactado, enquanto a compactação com perdas causa falhas, deixando o arquivo final com qualidade inferior ao original.

 

Entendendo a Compactação sem perda
 
          Tudo em uma imagem é informação. Temos informações de cor, de quantidade de pixel, de uso de pixeis em espaços de impressão e informação do nome do arquivo. Cada uma dessas informações é encontrada em partes distintas do arquivo de imagem e a função da compactação sem perdas é diminuir essa quantidade de informação sem que haja perda.

 

 

 
          Quando o computador lê um arquivo, ele o faz lendo suas informações de forma linear, ou seja, da esquerda para direita, identificando cada pixel como uma informação. No exemplo de leitura da imagem sem compactação, atribuímos a letra A para pixeis brancos e a letra B para pixeis pretos. Nesse exemplo didático, cada letra é uma informação, logo, nossa imagem tem 49 informações. O que possibilita à compactação diminuir a quantidade de informação do arquivo sem que ele perca sua forma original é a leitura inteligente de informações. No exemplo, é usada a leitura por tabela e reconhecimento. O software de compactação faz uma leitura inteligente de todo o arquivo e organiza as coincidências de informação em uma tabela. A cada coincidência é atribuído um código e esse código é colocado na forma da leitura do arquivo. Esse comportamento de leitura não está apenas em compactadores específicos. Cada extensão de arquivo diferente tem seu compactador e sua forma de leitura. A leitura por tabela é encontrada nos arquivos GIF e nas extensões que possibilitam o sistema LZW (como o TIF). É por isso que o GIF fica cada vez menor, conforme diminuímos a quantidade de cores. Quanto menos cores houver num arquivo que irá ser compactado por tabela, maior probabilidade de coincidências de informações terá. A diminuição de cores, em alguns casos, também possibilita a alteração de BITs da imagem.

 

Compactação de Cores por BITs
 
          Quando falamos de cores de imagens, falamos de BITs. Os BITs são os responsáveis pela quantidade de cores que um arquivo suporta. A conta é simples: eleve o número de BITs de uma imagem a 2, e temos a quantidade de cores que uma imagem pode ter (ex: imagem de 8Bits = 28= 256 cores). Cada pixel de uma imagem de 8 Bits equivale a 8 informações, ou seja, uma imagem com dois pixeis de 1BIT tem 2 informações, enquanto uma imagem com a mesma quantidade de pixel gravada em 8 BITs tem 16 informações.

 

 
Entendendo a compactação com perdas
          Quando uma imagem é uma foto ou um render 3d, é muito difícil de encontrar as coincidências de informações, pois essas imagens são dotadas de muitos degradês. Para essas imagens, a melhor forma de diminuir o arquivo é com a compactação com pedras.  

 

 

          O compressor com perdas mais usado em imagens, o sistema JPG, é tecnicamente complicado de explicar, pois ele utiliza técnicas matemáticas avançadas.           No entanto, o exemplo nos dá uma pequena compreensão de como ele funciona. Depois de fazer a leitura completa da imagem por pequenos blocos de 5 pixeis, o algoritimo descobre onde estão as áreas de degradê da imagem e exclui pontos de informação da imagem original. No exemplo acima, o compressor excluiu do degradê metade das informações da imagem, deixando-a com a metade do tamanho em arquivo. Quando um software descompactar a imagem, ele inventará os pixeis que faltam, tendo como base a freqüência ótica dos pixeis em torno. No nosso exemplo, o primeiro pixel é branco, o terceiro tem 20% de preto. Ao abrir a imagem o descompressor colocará 10% de preto entre esses dois pixeis, e fará a mesma coisa nas lacunas restantes. Em uma imagem com degradê perfeito como esse exemplo, o compressor funciona perfeitamente, mas nem todas as imagens são assim. Se o pixel 2 do meu degradê por algum motivo fosse vermelho, ele seria excluído e o descompressor colocaria o tom cinza 10%, desconfigurando minha imagem original. Em fotos, essa falha fica pouco perceptível, mas conforme vamos aumentando o grau de compactação com perda do arquivo, mais os degradês da imagem começam a se confundir. Quanto mais comprimimos uma imagem, mais pixeis e informações do arquivo ele exclui e com menos qualidade fica a imagem final. O JPG não é apenas uma extensão, mas sim um sistema de compactação, podendo ser usado em qualquer outra extensão de arquivo. Sistemas de compactação com perdas não só excluem pontos e preenchem depois. Eles também podem funcionar como moduladores de freqüências. Por exemplo: a cor RGB (10,10,11) e a cor (10, 10, 10) são de tons visualmente imperceptíveis. Assim, o compactador transformará as duas cores em apenas um tom e aplicará a tabela de informações na imagem comprimida. Nesse caso, a compactação sem perda complementa a com perda. Em outros casos, mesmo quando um sistema exclui pontos, os pontos dos arquivos comprimidos são inspecionados por uma tabela, aumentando o grau de compactação do arquivo. 

 

Compactação de Vídeo
          

          Entendendo a definição de vídeo “várias imagens paradas que nos dão a sensação de movimento”, podemos concluir que a compactação de vídeo sem perda funciona da mesma maneira que da imagem. E, realmente, num primeiro momento, funciona. Num segundo momento, não podemos esquecer que um vídeo tem cenários, e que cenários podem ficar parados de um frame para o outro. Assim, o sistema de compactação não só faz a tabela de uma imagem individual, como faz uma tabela das tabelas encontrada em cada frame. Nos compressores de vídeo com perda existem várias técnicas. Algumas com quadros-chave (quadros com menor qualidade entre quadros com maior qualidade), outras com técnicas matemáticas que encontram cenários mesmo em movimento e diversos outros que ainda hoje estão sendo evoluídos devido à grande demanda de vídeos sendo passados pela Internet. O melhor a fazer, nesse caso, é ter as noções dadas nessa matéria e ler as especificações de cada fabricante de Codec, que podem ser encontradas em seus respectivos sites. 

 

Considerações sobre compactação
          

          1 – Utilize sempre LZW e GIF em desenhos e logotipos. (quando esses não puderem ser vetoriais)

          2 – Limpe um desenho ou logotipo com Pixel-art antes de colocá-lo na net como GIF. Limpando o logotipo manualmente, você garantirá a uniformidade de algumas cores e ajudará o sistema de tabela do GIF a encontrar mais coincidências de cor.

          3- Utilize as informações de BITs de sua imagem. Ex..:quando sua imagem tiver 17 cores, diminua-a para 16 com Pixel-art e grave-a em 4BITS, pois você além de ajudar na compactação da tabela de cor, usará inteligentemente os BITs de sua imagem, garantindo um arquivo menor. (Utilize esse processo em logotipos e desenhos)

          4 – Sempre tenha uma imagem original para cada JPG gerado. Manipular imagens que já foram gravadas em JPG só diminuirá a qualidade da imagem, pois cada vez que um JPG é gravado, ele exclui outros pontos e não os mesmo da ultima gravação. A tendência é que a imagem sempre fique pior.

          5 – Se você está criando algum game, mesmo que seja em 3d, lembre-se que quanto mais elementos iguais um cenário tiver, maior será a compactação final do arquivo. Utilize a mesma modelagem de portas, de chão, etc..; use criatividade para desenvolver pedaços de cenários reaproveitando blocos já existentes.

          6- Lembre-se que Compactação por tabela é usado em TUDO que diz respeito à mídia digital. Criatividade e visão global de blocos e seções são sempre muito bem-vindas. 

 

Criado por Raul tabajara
raultabajara@3darts.com.br
www.3darts.com.br

Indique esse tutorial