compressão de imagens guilherme defreitas juraszek

Post on 21-Apr-2015

108 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Compressão de Imagens

Guilherme Defreitas Juraszek

Por que precisamos da compressão de imagens?

1920 x 1080 x 24 = 6MB

Altura Largura Cores (RGB, 8 bits cada)

= 1 frame!

Por que precisamos da compressão de imagens?

6MB x 30 x 60 = +10GB

Quadro fps 1 min

= vídeo de 1 minuto

Por que precisamos da compressão de imagens?

Hubble transmitia 120GB de dadospor SEMANA.

Fonte: http://ssd.jpl.nasa.gov/horizons.cgi#results

Curiosity se comunica com a terra a 32kbps,ou 2mbps através de satélites intermediários(janela de comunicação de 8 minutos por dia)

Fonte: https://www.aiaa.org/SecondaryTwoColumn.aspx?id=13350

Por que precisamos da compressão de imagens?

*Requisito: 2Gbps (GIGA)

Como podemos comprimir?

• A maioria das imagens não apresentam pixels com cores completamente diferentes entre si.

© 1992–2008 R. C. Gonzalez & R. E. Woods

Compressão de Imagens

Compressão de Imagens

JPEG

8x8 DCT Codificação de Huffman

Mapping

JPEG – Blocos 8x8

• Uma imagem RGB pode ser decomposta em 3 matrizes, uma R, uma G e B.

JPEG – Blocos 8x8

• JPEG transforma o RGB para o espaço de cores YCbCr

JPEG – Blocos 8x8

• Subdividir a imagem em blocos de 8x8

DCT – Discrete Cosine Transform

• Com a imagem dividida em pedaços de 8x8 (64 pixels)– A ideia é transformar esse pedaço para um domínio

onde o primeiro elemento possibilite recriar a imagem com o menor erro possível (root mean square error), os demais 63 elementos são descartados.

– Kahunen-Loève Transform• É dependente da imagem• Lento para calcular• Necessita da imagem inteira para gerar os dados para o

cálculo, não pode ser calculado de forma “online” ou “on the fly”.

DCT – Discrete Cosine Transform

T(u,v) = Σ Σ f(x,y) . R(x,y,u,v)n x n x=0 y=0

n-1 n-1

F(x,y) = Σ Σ T(x,y) . S(x,y,u,v)n x n x=0 y=0

n-1 n-1

Usando Kahunen-Loève R e S tem valores específicos de acordo com a imagem, usandoDCT os valores são fixos para todas as imagens.

DCT – Discrete Cosine Transform

R(x,y,u,v) = S(x,y,u,v)

= α(x) α(v) cos +(2x + 1)uπ

2n

(2y + 1)vπ

2n

α(x) = 1/n se u = 0

2/n se u ≠ 0

n = tamanho do bloco

n = 4

8x8

DCT vs DFT

JPEG

8x8 DCT Codificação de Huffman

Mapping

Quantização

Quantização

Quantização

Quantização

JPEG

8x8 DCT Codificação de Huffman

Mapping

Codificação/Compressão de Huffman

Codificação/Compressão de Huffman

Codificação/Compressão de Huffman

Exercício

• Executar manualmente a codificação de Huffman

1

128:0.47 0.53

87:0.25 0.28

255:0.03 186:0.25

1 0

0

0

1

1

Codificação/Compressão de Huffman

Como saber se vou ter uma boa compactação dos dados usando Huffman?R: Entropia – Ela diz qual é a média do tamanho da representação dos símbolosapós a codificação.

P(s) = Probabilidade do símbolo S

- Σ p(s) log2 p(s)Entropia = H = Símbolos

Exercícios

• Implementar o algoritmo JPEG– Implementar em tons de cinza– Usar a implementação DCT do adessowiki– Efetuar a quantização usando a tabela do slide 20– Representar usando a forma do slide figura d– Não precisa implementar Huffman

1. Imagem Original -> DCT -> Quantização2. Quantização inversa -> DCT inversa -> Exibe

imagem

top related