Você está na página 1de 39

Processamento de Imagens

C O M PR E S S Ã O D E IM A G E N S

amlucena@cruzeirodosul.edu.br
Prof.: Alexandre M. Lucena 2023
Compressão de Imagens
A compressão de imagem é um tipo de compressão de dados aplicada a imagens digitais,
para reduzir seu custo de armazenamento ou transmissão.

Os algoritmos podem aproveitar a percepção visual e as propriedades estatísticas dos


dados da imagem para fornecer resultados superiores em comparação com os métodos
genéricos de compressão de dados que são usados para outros dados digitais.
Recapitulando... Aquisição de Imagens
Recapitulando... Aquisição de Imagens

Bits por Pixel Quantidade de cores


que pode ser associada
a um pixel
1 2^1 = 2
2 2^2 = 4
4 2^4 = 16
8 2^8 = 256
16 2^16 = 65,536
24 2^24 = 16,777,216
Bitmap
Um bitmap é uma matriz de bits que especifica a cor de cada pixel em uma matriz retangular de pixels. O
número de bits dedicados a um pixel individual determina o número de cores que podem ser atribuídos a
esse pixel.

http://paulbourke.net/dataformats/bitmaps/index_pt.html
Bitmap
A ilustração a seguir mostra um bitmap que armazena as cores diretamente (24 bits por pixel). A ilustração
também mostra uma exibição ampliada da imagem correspondente.

8 bits + 8 bits + 8 bits

No bitmap, FFFFFF representa branco, FF0000 representa vermelho, 00FF00 representa verde e 0000FF
representa azul.

https://learn.microsoft.com/pt-br/dotnet/desktop/winforms/advanced/types-of-bitmaps
Bitmap
A quantidade de armazenamento em disco necessária para qualquer bitmap é fácil de calcular, dado as
dimensões do bitmap (N x M) e a profundidade de cor nos bits (b).

N x M x b = tamanho em bits

Ex. 512 x 512 x 24 = 6.291.456 bits


Bitmap
A quantidade de armazenamento em disco necessária para qualquer bitmap é fácil de calcular, dado as
dimensões do bitmap (N x M) e a profundidade de cor nos bits (b).

N x M x b = tamanho em bits

Ex. 512 x 512 x 24 = 6.291.456 bits

Dado que 1 Byte são 8 bits, e 1kB são 1024 Bytes são A fórmula para o tamanho do arquivo em kB é portanto

N x M x b = kB 6.291.456 bits = 768 kB


8 x 1024 8 x 1024
Verifique no
Paint!
Bitmap
A quantidade de armazenamento em disco necessária para qualquer bitmap é fácil de calcular, dado as
dimensões do bitmap (N x M) e a profundidade de cor nos bits (b).

Dimensões da imagem bits de cor tamanho do arquivo


N x M x b = kB 128 x 128 1 bit 2 KB
8 x 1024 8 bits 16 KB
24 bits 48 KB
256 x 256 1 bit 8 KB
8 bits 64 KB
24 bits 192 KB
1K x 1K 1 bit 128 KB
8 bits 1 MB
24 bits 3 MB
Compressão de Imagens
O tamanho dos arquivos de imagem correlacionado com o número de pixels na imagem e a profundidade de
cor (bits por pixel).
No entanto, as imagens podem ser compactadas de várias maneiras. Um algoritmo de compressão armazena
uma representação exata ou uma aproximação da imagem original em um número menor de bytes que pode
ser expandido de volta à sua forma não compactada com um algoritmo de descompactação
correspondente.
Perdas e Sem Perdas

GIF PNG JPEG MPEG

SEM PERDAS COM PERDAS


É normalmente aplicada em imagens em que a É utilizada nos casos em que a redução da imagem é
qualidade e a fidelidade da imagem são importantes, mais importante que a qualidade. Há situações em
como para um fotógrafo profissional, ou um médico que a imagem possui mais informação do que o olho
quanto às radiografias. São exemplos deste tipo de humano detecta: alguns algoritmos usam isso com
compressão os formatos: PNG e GIF vantagem, podendo ignorar dados "irrelevantes". Ex.
JPEG
Bitmap (Indexado)
A cor indexada é uma maneira mais econômica de armazenar bitmaps a cores sem usar 3 bytes por pixel.
Tal como acontece com bitmaps cinza de 8 bits, cada pixel tem um byte associado a ele; Agora o valor nesse
byte não é mais um valor de cor, mas um índice em uma tabela de cores, chamado paleta ou tabela de cores

https://learn.microsoft.com/pt-br/dotnet/desktop/winforms/advanced/types-of-bitmaps
Sem Perdas
Bitmap (Indexado)
Um bitmap que armazena os índices em uma tabela de cores é chamado um bitmap indexado por paleta. A
ilustração a seguir mostra uma imagem ampliada juntamente com sua tabela de cores e bitmap.

•Uma tabela de cores mapeia os números no bitmap


para cores específicas

•Cada pixel é representado por um número de 4 bits,


portanto, existem 2^4 = 16 cores na tabela de cores.

•Cada cor na tabela é representada por um número


de 24 bits: 8 bits para vermelho, 8 bits para verde e
8 bits para azul.

•Os números são exibidos em formato hexadecimal


(base 16):
• um = 10, B = 11, C = 12, D = 13, E = 14, F = 15.

https://learn.microsoft.com/pt-br/dotnet/desktop/winforms/advanced/types-of-bitmaps
GIF - Graphics Interchange Format
GIF é uma criação da Compuserve Inc., e é projetado para
a codificação de imagens RGB (e a paleta apropriada com
profundidades de pixel entre 1 e 8 bits.

O formato suporta até 8 bits por pixel para cada imagem,


permitindo que uma única imagem faça referência à sua
própria paleta de até 256 cores diferentes escolhidas no
espaço de cores RGB de 24 bits.

Blocos de dados são codificados usando o algoritmo LZW.

O GIF tem duas versões - 87a e 89a, esta última


suportando o armazenamento de texto e gráficos no
mesmo arquivo.
Lempel–Ziv–Welch (LZW)

https://www.youtube.com/watch?v=lPM5hLchrFI
Lempel–Ziv–Welch (LZW)

https://www.youtube.com/watch?v=lPM5hLchrFI
Como o GIF utiliza o LZW?
Como o GIF utiliza o LZW?
PNG - Portable Network Graphics
PNG (Portable Network Graphics) é um formato de dados
utilizado para imagens, que surgiu em 1996 como
substituto para o formato GIF, devido ao formato GIF
incluir algoritmos patenteados.

Esse formato livre é recomendado pela W3C,


suporta canal alfa, tem uma maior gama de profundidade
de cores, alta compressão (regulável), além de outras
características.

https://www.w3.org/TR/2003/REC-PNG-20031110/#4Concepts.PNGImageTransformation
PNG - Portable Network Graphics
Com Perdas
JPEG - Joint Photographic Express Group
Adotado como padrão internacional ISSO/IEC 10918 em
1994.
Diferentemente do GIF e PNG, o padrão JPEG especifica o
codec (codificador/decodificador), e não um formato de
arquivo.
Como todo padrão de compressão com perdas, o JPEG
precisa jogar "parte" da informação original fora com
base em características de como a visão humana percebe
imagens.

São necessárias algumas etapas:


•Amostragem do espaço de cores
•Quantização de coeficientes DCT
compressão
•Codificação Huffman sem perdas.
JPEG – Etapa 1
A representação de cores é convertida de RGB para YCbCr, consistindo em uma componente de brilho Y e
duas componentes de cores Cb e Cr (b e r de blue e red).

A resolução dos dados de cores é reduzida, usualmente, pela metade. Isto reflete o fato de que o olho é
menos sensível a detalhes finos de cor do que de brilho.
YCbCr

https://en.wikipedia.org/wiki/YCbCr
YCbCr

https://en.wikipedia.org/wiki/YCbCr
YCbCr - subamostragem
JPEG – Etapa 2
A imagem é dividida em blocos de 8×8 pixels, e a cada bloco é aplicada a Transformada Discreta de
Cosseno com sigla DCT, do inglês.

Preenchimento dos
blocos na lateral
Blocos de direita
8x8 pixels

Preenchimento dos
blocos de fronteira
JPEG – Etapa 3
O que é DCT? - Discrete Cosine Transformation
Ela é semelhante à transformada de Fourier (para funções periódicas) no sentido de que ela produz um tipo de espectro
de espaço-frequência:

https://sites.icmc.usp.br/frasson/jpeg/jpeg.html
JPEG – Etapa 3 (cont.)
A visão humana é muito mais sensível a pequenas variações de cor e brilho em áreas maiores do que à variações de
brilho em altas frequências. Assim, as amplitudes dos componentes de frequência são “quantizadas”, isto é, reescaladas
usando um sistema de pesos, onde pesos maiores são aplicados a frequências menores.
JPEG – Etapa 3 (cont.)
Aqui entra a qualidade da compactação. A configuração de qualidade do codificador (por exemplo 50% ou
95% numa escala de 0 a 100%) afeta a extensão com a qual cada componente de frequência é reduzida. Se
uma configuração de baixa qualidade é usada, os componentes de alta frequência são todos descartados.

•Os dados resultantes para todos os blocos 8×8, que tipicamente são matrizes onde os números significativos estão no
canto superior esquerdo, e com aspecto de matriz esparsa, são novamente compactados com um algoritmo sem perdas,
uma variante da codificação de Huffman e armazenados no arquivo JPEG.
Alguns Exemplos
Alguns Exemplos
Alguns Exemplos
Alguns Exemplos
Alguns Exemplos

JPEG Compressed
Images at Different
Quality Levels. Blocking
artifacts can be
observed with increasing
compression rate:
a) 23 dB PSNR
b) 25 dB PSNR
c) 28 dB PSNR
d) 31 dB PSNR

https://www.researchgate.net/publication/324077874_The_Effects_of_JPEG_and_JPEG2000_Compression_on_Attacks_using_Adversarial_Examples
Exercícios
Acesse o link: https://www.hlevkin.com/hlevkin/06testimages.htm
1. Quais as dimensões da imagem?
2. Qual a profundidade de bits utilizada? Quantos níveis são possíveis por pixel?
3. Faça o cálculo do tamanho da imagem e compare com o que é mostrado em
"Propriedades".
4. Abra a imagem no Paint. Selecione "Salvar Como" e salve no formato PNG.
a) Qual o novo tamanho da imagem?
b) Qual foi a taxa de compressão obtida?
c) Houve alterações perceptíveis no resultado final?

5. Repita o item Ex. 4 (incluindo a,b e c) para o formato GIF.


6. Repita o item Ex. 4 (incluindo a,b e c) para o formato JPEG.
Exercícios (cont.)
7) Quantos níveis são possíveis representar utilizando-se de 8 bits de profundidade
por pixel?

8) Quantos bits são necessários para a representação de 16 níveis por pixel?

9) Ainda no Paint, salve a imagem escolhida como BMP de 256 cores. O que
aconteceu com o tamanho da imagem? Quantos bits são utilizados por pixel?
Você consegue justificar o cálculo do tamanho (kB) para esta imagem?

Você também pode gostar