CODIFICADOR POR ENTROPIA
O JPEG especifica dois métodos que podem ser usados para esta etapa de codificação: Algorítmo de Huffman ou codificação aritmética. Descrevemos a seguir o funcionamento do codificador Huffman.
Na saída do ordenador zig-zag, encontra-se muitos coeficientes com valor zero devido as etapas de DCT+Quatização. Seqüência de coeficientes com valor zero, seguida de um coeficiente de um valor diferente de zero são codificadas em run-length segundo o formato chamado símbolo intermediário:
Run-length |
Size |
Amplitude |
Quantidade de coeficientes com valor zero |
Número de bits necessários para codificar o coeficiente diferente de zero |
Valor do coeficiente diferente de zero |
Por exemplo, a seqüência de coeficientes 0,0,0,0,0,0,476 será codificada como (6,9)(476) onde 6 é a quantidade de zeros consecutivos e 476 é o valor do coeficiente diferente de zero que segue a seqüência de zeros, nove é o número de bits necessários para codificar 476.
O termo run-length usa 4 bits, de maneira que podemos representar seqüências de até 15 zeros. Caso existam mais do que 15 zeros, usamos o símbolo intermediário (15,0) como indicador de 16 zeros. Podemos Ter até 3 (15,0) consecutivos. Por exemplo, a seqüência de símbolos intermediários (15,0) (15,0)(7,4)(12) corresponde a uma seqüência de 16+16+7=39 coeficientes zero seguido de um coeficiente igual a 12.
O termo size usa quatro bits para representar valores de 0 a 10 é o número máximo de bits para representar o termo Amplitude, cujo valor está no intervalo [-1024,1023]. O símbolo (0,0) significa fim do bloco (EOB, end of block) de 8x8 (matriz).
Já os coeficientes DC são codificados na forma:
Número de bits necessários para codificar os coeficientes DC |
Valor do coeficiente DC |
Cada símbolo intermediário é então transformado numa seqüência binária de comprimento variável, de acordo com o algoritmo de Huffman: aos símbolos com maior probabilidade de ocorrência são atribuídas seqüências binárias mais curtas e aos de menor probabilidade, atribuem-se seqüências binárias mais longas. As tabelas de Huffman para codificação seqüencial JPEG são encontradas em [Pennenbacker e Mitchell 1993]. As mesmas podem ser obtidas ou ser utilizada uma pré-definida, no nosso caso utilizamos uma pré definida.