Código de Huffman. Código aritmético Run-Length Encoding (RLE)

Post on 27-Mar-2015

269 views 1 download

Tags:

Transcript of Código de Huffman. Código aritmético Run-Length Encoding (RLE)

Código de HuffmanCódigo de Huffman

Código de HuffmanCódigo de Huffman

Código aritméticoCódigo aritmético

Run-Length Encoding (RLE)Run-Length Encoding (RLE)

Codificação preditivaCodificação preditiva

• Predictive Coding

transmit the difference between

estimate of future sample &

the sample itself.

- Delta modulation

- DPCM

- Adaptive predictive coding

- Differential frame coding

Differential Pulse Code Differential Pulse Code Modulation (DPCM) Modulation (DPCM)

Delta ModulationDelta Modulation

+-

f (t)

y (t)

x(t) (t)

Delta modulationDelta modulation

f(t)t

y(t)

x(t)

Codificação de planos de bitCodificação de planos de bit

a b c d e f

f

e

d

c

b

a

Codificação por Codificação por transformaçãotransformação• Transform Coding

- transform image

- code the coefficients of the transform

- transmit them

- reconstruct by inverse transform

• Benefits

- transform coeff. relatively uncorrelated

- energy is highly compacted

- reasonable robust relative to

channel errors

Padrão JPEGPadrão JPEG

"Joint Photographic Expert Group". "Joint Photographic Expert Group". Voted as international standard in Voted as international standard in 1992. 1992.

Works with color and grayscale Works with color and grayscale images, e.g., satellite, medical, ... images, e.g., satellite, medical, ...

Lossy and losslessLossy and lossless

JPEG (intraframe)JPEG (intraframe)

First generation JPEG uses First generation JPEG uses DCT+Run length Huffman entropy DCT+Run length Huffman entropy coding.coding.

Second generation JPEG Second generation JPEG (JPEG2000) uses wavelet transform (JPEG2000) uses wavelet transform + bit plane coding + Arithmetic + bit plane coding + Arithmetic entropy coding.entropy coding.

Visão geral JPEGVisão geral JPEG

DCT (Discrete Cosine Transformation)Quantization zigzag Scan

DPCM on DC componentRLE on AC Components

Entropy Coding

Porquê DCT e não DFTPorquê DCT e não DFT

• DCT is similar to DFT, but can provide a better approximation with fewer coefficients

• The coefficients of DCT are real valued instead of complex valued in DFT.

• DCT reduces Gibbs effect between sub-image boundaries.

Porquê DCT e não DFTPorquê DCT e não DFT

DCTDCT

Transformada discreta de cosseno

Inversa:

Funções base DCT de 8x8Funções base DCT de 8x8

• Each 8x8 block can be looked at as a weighted sum of these basis functions.

• The process of 2D DCT is also the process of finding those weights.

DCTDCT

QuantizaçãoQuantização

F'[u, v] = round ( F[u, v] / q[u, v] ). F'[u, v] = round ( F[u, v] / q[u, v] ). Why? -- To reduce number of bits per Why? -- To reduce number of bits per sample sample

Example: 101101 = 45 (6 bits). Example: 101101 = 45 (6 bits). q[u, v] = 4 --> Truncate to 4 bits: q[u, v] = 4 --> Truncate to 4 bits: 1011 = 11. 1011 = 11.

Quantization error is the main source Quantization error is the main source of the Lossy Compression. of the Lossy Compression.

Tabelas de quantizaçãoTabelas de quantização

Luminância Cromaticidades

Um fator de qualidade multiplica a matriz de quantização.

Varredura Zig-Zag Varredura Zig-Zag

Why? -- To group low frequency Why? -- To group low frequency coefficients in top of vector.coefficients in top of vector.

Maps 8 x 8 to a 1 x 64 vector.Maps 8 x 8 to a 1 x 64 vector.

Codifica DC com DPCMCodifica DC com DPCM

DC component is large and varied, DC component is large and varied, but often close to previous value. but often close to previous value.

Encode the difference from previous Encode the difference from previous 8 x 8 blocks -- DPCM 8 x 8 blocks -- DPCM

Codifica AC com RLECodifica AC com RLE

1 x 64 vector has lots of zeros in it 1 x 64 vector has lots of zeros in it Keeps Keeps skipskip and and valuevalue, where , where skipskip is is

the number of zeros and the number of zeros and valuevalue is the is the next non-zero component. next non-zero component.

Send (0,0) as end-of-block sentinel Send (0,0) as end-of-block sentinel value. value.

Codificação entrópicaCodificação entrópica Categorize DC values into SIZE (number of Categorize DC values into SIZE (number of

bits needed to represent) and actual bits. bits needed to represent) and actual bits. ExampleExample: if DC value is 4, 3 bits are needed. : if DC value is 4, 3 bits are needed. Send off SIZE as Huffman symbol, followed by Send off SIZE as Huffman symbol, followed by

actual 3 bits. actual 3 bits. For AC components two symbols are used: For AC components two symbols are used:

Symbol_1: (Symbol_1: (skip, SIZEskip, SIZE), Symbol_2: actual bits. ), Symbol_2: actual bits. Symbol_1 (Symbol_1 (skip, SIZEskip, SIZE) is encoded using the ) is encoded using the Huffman coding, Symbol_2 is not encoded. Huffman coding, Symbol_2 is not encoded.

Huffman Tables can be custom (sent in Huffman Tables can be custom (sent in header) or default. header) or default.

Categorias de codificaçãoCategorias de codificaçãoSize Amplitude

  -1.1

2 -3..-2,2..3

3 -7..-4,4..7

4 -15..-8,8..15

5 -31..-16,16..31

6 -63..-32,32..63

7 -127..-64,64..127

8 -255..-128,128..255

9 -511..-256,256..511

10 -1023..512,512..1023

Código de luminânciaCódigo de luminânciaCategoria Tamanho Code

0 5 00

1 3 010

2 4 011

3 5 100

4 7 101

5 8 110

6 10 1110

7 12 11110

8 14 111110

9 16 1111110

10 18 11111110

11 20 111111110

ExemploExemplo

JPEG 2000JPEG 2000

ExemplosExemplos

Original

ExemplosExemplos

JPEG

27:1

ExemplosExemplos

JPEG2000

27:1