Como funciona a compactação JPEG

Uma explicação simples das etapas por trás da compactação eficiente de imagens

24. January 2025 por Bianca Palmer

Como funciona a compactação JPEG

Você já se perguntou como seu celular ou câmera consegue tirar uma foto e, em poucos instantes, ela é salva como um JPEG, menor, mais rápida e ainda com aparência nítida? Por trás disso, existe um processo poderoso em ação, reduzindo arquivos de imagem grandes a uma fração do tamanho original, mantendo a qualidade alta. Mas como isso realmente funciona? Neste guia, vamos analisar os detalhes da A compressão JPEGe explicar cada etapa em termos simples para que você possa entender como esse processo de compactação de imagens funciona.

O que é JPEG?

JPEG (sigla para Joint Photographic Experts Group) é um dos formatos de imagem mais comuns. É a escolha padrão para armazenar fotos digitais. A principal vantagem do JPEG é sua capacidade de comprimir arquivos de imagem, tornando-os muito menores sem perda de qualidade perceptível.

Por exemplo, uma imagem de alta qualidade sem compactação pode ter 46 MB. Após a compactação em JPEG, a mesma imagem pode ser reduzida para apenas 4,1 MB. Mas como isso é feito mantendo a nitidez da imagem?

A resposta está no compression process, processo de compactação, que aproveita o modo como nossos olhos funcionam e remove dados desnecessários.

O que o JPEG faz?

Em termos simples, o JPEG analisa a imagem e remove elementos que nossos olhos não percebem facilmente. Quando você comprime uma imagem com JPEG, pode controlar quanto de compactação será aplicado. Ajustando a configuração de "qualidade", você decide quanto espaço deseja economizar. Conforme a qualidade diminui de 100% para 0%, o tamanho do arquivo também diminui proporcionalmente.

À medida que você comprime mais, a resolução da imagem permanece a mesma, mas alguns defeitos ou "artefatos" podem aparecer. Esses defeitos parecem pequenos quadrados e geralmente são difíceis de notar, a menos que você dê zoom. O objetivo do JPEG é deixar o arquivo o menor possível sem que a imagem pareça ruim para o olho humano.

As etapas da compactação JPEG

A compressão JPEG não é apenas um único processo; é uma série de etapas criadas para reduzir o tamanho da imagem. Aqui estão as cinco etapas principais que tornam o JPEG tão eficiente.

Etapa 1: Conversão de espaço de cor

As imagens são formadas por pixels, e cada pixel tem componentes vermelho, verde e azul (RGB) que se combinam para criar as cores. O JPEG começa convertendo esses valores RGB em um espaço de cor diferente:

  • Luminância (Brilho): É o brilho ou a claridade de um pixel e é importante para definir o contraste geral da imagem.
  • Crominância (Cor): São as informações de cor, incluindo matiz e saturação.

Essa conversão aproveita o fato de que o olho humano é mais sensível ao brilho (luminância) do que à cor (crominância). Ao separar brilho de cor, o JPEG permite uma redução de dados direcionada nas etapas seguintes, mantendo intactos os detalhes visuais mais importantes.

Nenhum dado é perdido nesta etapa, mas ela prepara a imagem para uma compressão eficiente.

Etapa 2: Redução de crominância/Chroma Subsampling

Chroma Subsampling é um é uma técnica aplicada após a conversão do espaço de cor. Lembra que dissemos que nossos olhos não são muito bons para enxergar cores (crominância) em comparação com brilho (luminância)?

O JPEG usa esse fato reduzindo a quantidade de dados de cor. Ele reduz as imagens de crominância azul e vermelha fazendo a média delas em blocos de quatro pixels. Isso torna os dados de cor muito menores, mantendo a luminância (brilho) inalterada. Neste ponto, a imagem já está significativamente comprimida.

Etapa 3: Transformada Cosseno Discreta (DCT)

A Transformada Cosseno Discreta (DCT) é uma técnica matemática usada para converter os dados da imagem do domínio espacial (em que a imagem é uma grade de pixels) para o domínio da frequência. Esse processo ajuda a identificar quais partes da imagem contêm as informações visuais mais importantes e quais partes podem ser descartados.

A DCT divide a imagem em blocos de 8x8 e converte cada bloco em uma coleção de valores de frequência. Frequências mais altas, que representam mudanças rápidas nos valores dos pixels, como bordas ou ruídos, costumam ser menos perceptíveis para o olho humano e podem ser simplificadas ou removidas.

Etapa 4: Quantização

Depois que a DCT é aplicada, os dados de frequência resultantes passam por quantização. Nessa etapa, a faixa de valores de frequência é reduzida dividindo-os por um conjunto de constantes chamado tabela de quantização. Esse processo basicamente arredonda os valores de frequência para simplificá-los.

Valores de frequência mais altos são quantizados com mais intensidade, o que significa que perdem mais precisão por serem menos importantes para a qualidade geral da imagem. Essa quarta etapa reduz a quantidade de dados necessária para representar a imagem, deixando o arquivo menor. No entanto, quantização em excesso pode gerar artefatos visíveis, como blocos ou borrões, especialmente em níveis mais altos de compressão.

Etapa 5: Codificação Run Length e Huffman

Após a quantização, os dados ainda não são compactos o suficiente para um armazenamento eficiente. É aqui que Run Length Encoding (RLE) e Codificação Huffman são utilizados.

Primeiro, a RLE é usada para simplificar longas sequências de dados repetidos (como zeros), armazenando apenas a contagem das repetições em vez de cada valor individual. Em seguida, é aplicada a Codificação Huffman, uma técnica que substitui valores que ocorrem com frequência por códigos de bits mais curtos, tornando o arquivo ainda menor.

These two métodos de codificação trabalham juntos para reduzir drasticamente o tamanho do arquivo sem sacrificar muito da qualidade da imagem.

Observações adicionais

Embora o JPEG seja um formato muito eficiente, há alguns pontos importantes a considerar:

  • Nível de compressão: o JPEG permite que os usuários escolham o nível de compressão, mas compressões maiores reduzem o tamanho do arquivo e podem introduzir artefatos visíveis, como bordas borradas ou pixelização. Isso acontece quando os valores da tabela de quantização são muito altos, o que leva à adição de mais zeros, deixando o arquivo menor, porém à custa da qualidade da imagem.
  • Perda de dados de alta frequência: a quantização reduz a precisão dos dados de alta frequência (detalhes como bordas nítidas), por isso o JPEG é ótimo para texturas suaves, mas pode ter dificuldades com linhas nítidas e gráficos vetoriais.
  • Não é ideal para gráficos vetoriais: o JPEG não é a melhor opção para comprimir gráficos vetoriais, pois pode gerar artefatos perceptíveis nos limites de formas ou linhas.

Apesar dessas limitações, o JPEG continua sendo o formato de imagem mais popular, em parte porque é antigo, bem compreendido e livre de royalties. No entanto, formatos mais recentes como WebP ou HEIF oferecem taxas de compressão ainda melhores sem comprometer a qualidade, o que os torna alternativas interessantes em determinados contextos.

Conclusão

O algoritmo de compressão JPEG é um feito notável na gestão de dados de imagem. Ao dividir as imagens em blocos menores, aplicar transformações matemáticas e usar técnicas de codificação eficientes como Run Length e Huffman, ele permite armazenar imagens de alta qualidade em tamanhos de arquivo muito menores.

Embora o JPEG tenha algumas limitações, especialmente com altos níveis de compressão ou gráficos vetoriais, seu uso amplo e a capacidade de oferecer bons resultados para imagens fotográficas fazem dele um padrão duradouro.