You are on page 1of 39

Trabalho da disciplina de Algoritmos e Estruturas de Dados

:
Compressão de Imagens: JPEG

Alexandre Costa, Leandro Dias & Thiago Cardoso

Centro de Desenvolvimento Tecnológico (CDTec)
Universidade Federal de Pelotas (UFPEL)
Pelotas – RS – Brasil
alexandre.costa@inf.ufpel.edu.br lwdias@gmail.com & thiagocar@gmail.com

2 de julho de 2014

Sumário
Introdução
Compressão por transformadas
Padrão JPEG
RGB para YCbCr
Downsampling
Transformada discreta de cosseno
Quantização
Codificação
Decodificação
Quantização inversa
Transformada Discreta dos Cossenos Inversa
Processo completo
Conclusões
Referências

Introdução

I Um método é dito “com perdas” (lossy data) quando a informação obtida após a
descompressão é diferente da informação original (antes da compressão)
I O resultado é um arquivo comprimido bem menor do que os gerados pelas
técnicas sem perdas
I Muitos métodos recorrem às limitações da anatomia explorando determinadas
caracterı́sticas das imagens
I Necessidade de trocar informações com uma largura de banda limitada e o
armazenamento de mais informações em um espaço menor
I Aplica-se em vários tipos de mı́dia (música, vı́deo e imagens)

possui três partes distintas: Figura : Operações da compressão JPEG I Transformadas: os dados são descorrelacionados I Quantização: são eliminados os coeficientes não essenciais para recriar a imagem I Codificação: elemina todos os zeros resultantes e compacta os coeficientes quantizados .Compressão por Transformadas Em geral.

especialemente em imagens fotográficas I O arquivo final apresenta perdas em relação ao original proporcionaisa um coeficiente variável de compressão (armazenado no header do arquivo) I Possui 4 modos de operações definidos: I Sequencial DCT-based encoding I Progressive DCT-based encoding I Hierarchical coding I Lossless encoding I A implementação do primeiro modo é a mais simples .Padrão JPEG I JPEG (Joint Photographic Expert Group) é um padrão altamente utilizado para compressão de imagens.

como um conjunto de data-units. de 8x8 pixel. pelo software responsável.Padrão JPEG I É divido em 5 etapas: I Transformação de RGB para YCbCr I Downsampling I Transformada discreta dos Cossenos em 2D (DCT2) I Quantização I Codificação por entropia I Toda a imagem a ser comprimida para JPEG é visto. .

o que torna inviável o processamento de cada uma das partes isoladas. I Crominancias: apresentam as informações de cores de azul (Cb) e de vermelho (Cr). I RGB é convertido para um espaço de cores formado por luminancia e crominancias (as partes não estão intimamente ligadas) I Luminancia (Y): é a imagem em tons de cinza. .RGB para YCbCr I Os componentes RGB apresentam uma relação muito ı́ntima entre si.

I Com isso. parte das informações de Cb e Cr podem ser descartadas sem prejuı́zo aparente I Especifica-se a proporção: I 4:1:1 = para cada 4 informações de luminância tem-se uma de Cb (azul) e uma de Cr (vermelho) .Downsampling I Inicia-se o processo de redução de dados (perdas irreversı́veis) I O olho humano é mais sensı́vel às informações de luminância do que as de cores.

I No padrão JPEG.Transformada discreta de cosseno I A Transformada Discreta do Cosseno (DCT) é utilizada no padrão JPEG de compressão de imagens para a exploração da redundância psicovisual (com perdas). antes de submete-los ao processo de geração final do bitstream (ordenação zig-zag e codificação por entropia). num processo conhecido como codificação por transformadas. f > 0 .f =0 ondeCf = 2 1. I Cada bloco é transformado pelo DCT de duas dimensões (DCT-2D) de maneira independente P n−1 n−1     √1 Ci Cj P (2y +1)jπ (2x +1)iπ Gij = 2n pxy cos 2n cos 2n x =0 y =0 ( √1 . o processo de codificação por transformadas mapeia os pixels da imagem para um espaço de coeficientes mais compacto e em seguida faz uso de uma etapa de quantização desses coeficientes.

Transformada discreta de cosseno I Algoritmo da transformada discreta de cosseno .

f > 0 . f =0 ondeCf = 2 1.Transformada discreta de cosseno I Gij = n−1 P n−1     √1 Ci Cj P (2y +1)jπ (2x +1)iπ 2n pxy cos 2n cos 2n x =0 y =0 ( √1 .

Transformada discreta de cosseno I Exemplo com matriz de 8x8   1 19 37 55 73 91 109 127  19 37 55 73 91 109 127 145    37 55 73 91 109 127 145 163      55 73 91 109 127 145 163 181    73 91 109 127 145 163 181 199    91 109 127 145 163 181 199 217   109 127 145 163 181 199 217 235   127 145 163 181 199 217 235 253 .

0. 0. 0. 0. 0. 0.29 0.     −2. 0. 0.29 0. −2. 0. 0. −10. 0. 0. 0.23 0. 0. 0. 0. 0.        −34. 0. 0. 0. 0. 0. 0. 0. 0.23 0. 0.Transformada discreta de cosseno I Matriz resultante após o algoritmo da transformada   1016. −34.58 −327. 0. 0. 0. 0. −327. 0. 0. 0.99 0.   −10.58 0.    0.      0. I Após a transformada da matriz é iniciado o processo de quantização . 0. 0. 0. 0. 0. 0. 0.    0.99 0. 0. 0. 0. 0. 0.

k .Quantização I É nesta fase que o tamanho do arquivo diminui drasticamente I A partir de um coeficiente de compactação. os coeficientes DCT são truncados I São mantidos apenas os mais relevantes I A grande quantidade de informação perdida nesta fase é irreversı́vel e por isso. uma imagem JPEG possui menos detalhes que a original   Gj.k = round Qj.k I Bj.

Quantização I O padrão JPEG adota uma matriz de quantização tı́pica:   16 11 10 16 24 40 51 61 12 12 14 19 26 58 60 55    14 13 16 24 40 57 69 56      14 17 22 29 51 87 80 62    18 22 37 56 68 109 103 77    24 35 55 64 81 104 113 92    49 64 78 87 103 121 120 101   72 92 95 98 112 100 103 99 I Porém. outras podem ser utilizadas. posto que no cabeçalho JPEG a matriz de quantização deve ser especificada .

Quantização I O padrão JPEG adota uma matriz de quantização tı́pica: .

k   64 −30 0 −2 0 0 0 0 −27 0 0 0 0 0 0 0    0 0 0 0 0 0 0 0      −2 0 0 0 0 0 0 0 I    0 0 0 0 0 0 0 0    0 0 0 0 0 0 0 0    0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 .Quantização   Gj.k = round Qj.k I A matriz resultante após aplicar a matriz de quantização com Bj.

os dados são reordenados seguindo um zig-zag para que os coeficientes de baixa frequência sejam colocados na frente dos de alta frequência .Codificação I Nesta fase.

Codificação .

Codificação .

Codificação .

Codificação .

Codificação .

Codificação .

Codificação .

Codificação .

Codificação .

Codificação .

Codificação .

utilizando a codificação de Huffman ou a codificação aritimética (proprietária) I A codificação de Huffman é a mais utilizada: usa as probabilidades de ocorrência dos sı́mbolos no conjunto de dados a ser comprimido para determinar códigos de tamanho variável para cada sı́mbolo .Codificação por entropia I Aplica-se agora a codificação por entropia.

Decodificação I Nesta etapa acontece a decodificação realizada pelo algorı́tmo de huffman I Remonta o array resultante do zig-zag .

k ) .k = round (Gj.Quantização inversa I É nesta fase que vai ser realocado a os coeficientes DCT I A partir da matriz de quantização vai ser possı́vel obter os coeficientes DCT truncados na compactação I Bj.k ∗ Qj.

Quantização inversa I Resultado da quantização inversa .

Transformada Discreta dos Cossenos Inversa I A IDCT monta uma matriz proxima a matriz original n−1 P n−1     1 P (2y +1)jπ (2x +1)iπ I pxy = 4 Ci Cj Gij cos 2n cos 2n i=0 j=0 ( √1 . f > 0 . f =0 ondeCf = 2 1.

Transformada Discreta dos Cossenos Inversa I Matriz resultante do IDCT I Matriz Original .

Processo completo .

I Pelo fato das etapas de Downsampling e quantização serem irreversı́veis. em algumas etapas é necessário a utilização de bibliotecas (captura de imagem.Conclusões I O processo de compressão e descompressão de uma imagem JPEG é relativamente complexo. quantização e codificação é possı́vel escrever os algorı́tmos sem auxilho de bibliotecas. a imagem resultando da compressão JPEG é diferente da original (ao menos que se utilize o modo lossless de compressão JPEG). transformação de RGB para YCbCr e Downsampling). I O processo para descomprimir uma imagem JPEG é basicamente inverter os processos utilizados na compressão. . I Nas etapas de Transformação discreta de cosseno.

Acessado em 02 de julho de 2014..fileformat. Disponı́vel em: http://www.Referências I AGOSTINI. V. J. 2nd edition .info/mirror/egff/ch09_06. Gailly.. L. I Nelson. The Data Compression Book. Projeto de Arquiteturas Integradas para a Compressão de Imagens JPEG. M.htm. JPEG Compression. 2002 I File Format.

Leandro Dias & Thiago Cardoso Centro de Desenvolvimento Tecnológico (CDTec) Universidade Federal de Pelotas (UFPEL) Pelotas – RS – Brasil alexandre.ufpel.br lwdias@gmail.costa@inf.Trabalho da disciplina de Algoritmos e Estruturas de Dados: Compressão de Imagens: JPEG Alexandre Costa.edu.com 2 de julho de 2014 .com & thiagocar@gmail.