Quantificadores

Resumo

A quantificação é em processamento de sinais digitais um conjunto de métodos que englobam processos de compressão de qualquer tipo de conteúdos mídia com perda sem que esta seja perceptível aos sensores humanos como os olhos e os ouvidos.

 

Introdução

O mundo dos quantificadores divide-se em três categorias de quantificadores: os lineares, os não-lineares e os vectoriais. Um exemplo de método de compressão que usa um quantificador linear é o DPCM, enquanto que o compressor de audio A-low recorre a um quantificador não linear.O MPEG-4 recorre a um quantificador vectorial.

 

Objectivo do trabalho

Este artigo tem por objectivo permitir compreender de forma simples os métodos mais populares de quantificação escalar : o mid-thread e o mid-raise.

 

Justificação:

Temas como a compressão de mídia carecem de meios de exposição de forma acessível a grupos de indivíduos com curiosidade em obter conhecimentos que vão para lá do simples clique no icon. Justifica-se então a realização deste projecto de forma a facultar um meio de aquisição de conhecimento numa abordagem clara e comum.

 

Áreas de aplicação

Como foi explicado anteriormente, os métodos explicados neste projecto podem ser utilizados em qualquer tipo de mídia, dependendo do método a aplicar. Um dos exemplos mais comuns é o JPEG. Ao usar o DCT no JPEG vai ser possível tirar partido de um dos aspectos mais fortes do quantificador escalar: a compressão de zeros . Isto de acordo com referências bibliográficas.

 

Quantificação escalar

O quantificador escalar tem como característica interpretar valores escalares aos dados do ficheiro  a comprimir (caso de uma imagem os dados são pixeis) e solicitar o número de níveis a aplicar ao ficheiro. É neste momento que ocorre a separação dos dois quantificadores mais comuns o mid-thread e o mid-rise. Caso o número de níveis seja par,  será aplicado o mid-thread. Caso seja impar o mid-raise.

O objectivo é combinar o valor original com o numero de níveis através de uma expressão analítica de forma a obter novos valores (valores codificados), que estará sempre entre o máximo e o mínimo do intervalo obtido.

O erro de quantificação (ou ruído) é chamado de distorção granular. A distorção granular ocorre porque como  o valor codificado para um intervalo é delimitado pelo delta(valor constante do intervalo), é sempre o valor intermédio desse intervalo, ou seja será introduzidos erros na quantificação.  Para calcular esse erro existe a seguinte formula:

 Captura de ecrã 2014-09-8, às 17.20.18

Formula para o calculo de ruído

 Algoritmo:

O algoritmo começa por alocar um ficheiro mídia e solicitar o número de níveis a aplicar. Do ficheiro deve obter o maior e o menos valor, determinando assim a largura do intervalo. De seguida determina o numero de bits por nível através da expressão:

Nºde bits=Log(2) N (arredondado para cima)

 Também é determinado o valor do delta:

delta= 2 * Vmax/ N

 

Mid-thread:

Exemplo:

Uma imagem de 8bpp;

Intervalo: ]-10; 10[

N= 5

Nºde bits= Log(2) 5 = 3 bpnível

 

Aplica-se a seguinte formula analítica:

 

Captura de ecrã 2014-09-8, às 17.40.17

Formula Analítica MidThread

 

e obtem-se uma matriz bi-dimensional similar á seguinte:

 

 

 

Captura de ecrã 2014-09-8, às 17.30.27

Matriz MidThread

Mid-rise:

Para este caso o número de níveis terá de ser par.

Exemplo:

Uma imagem de 8bpp;

Intervalo: ]-10; 10[

N= 6

Nºde bits= Log(2) 5 = 3 bpnível

 

Aplica-se a seguinte formula analítica:

 

 

Captura de ecrã 2014-09-8, às 17.37.09

Formula Analítica MidRise

e obtem-se uma matriz bi-dimensional similar á seguinte:

 

 

 

Captura de ecrã 2014-09-8, às 17.19.45

Matriz MidRise

    De reparar que o valor ‘zero’ não tem valores, tal como expectável no mid-rise.

 Descodificação:

A partir da matriz que contém os pixéis codificados, a descodificação é realizada através altura e a largura da matriz . Associando a matriz obtida, com a matriz que contém os valores dos pixéis(ou outro tipo de dados) correspondentes aos códigos, como por exemplo a que se segue:

codigos[i][0]223.5625

codigos[i][1]111

codigos[i][0]159.6875

codigos[i][1]110

codigos[i][0]95.8125

codigos[i][1]101

codigos[i][0]31.9375

codigos[i][1]100

Como a matriz de pixéis codificados, apenas contém os conjuntos de bits, e já com as posições correctas, basta verificar a que valor corresponde e através de uma função já existente criar a cor do pixel em RGB.

 

Comparação

Este tipo de quantificador tem a vantagem de ser de simples implementação e de ser “leve” em termos de processamento o que constitui uma vantagem. No entanto o nível de ruído tende a ser elevado de tal forma que a informação eliminada pode ser mais do que a desejada.

 

Conclusão

O artigo demonstra de forma sucinta as diversas fases da compressão e descompressão do quantificador.  O objectivo de transparecer os processos não visíveis da compressão permite um conhecimento mais aprofundado e esclarecedor dos algoritmos de compressão. Obviamente muito mais poderia ser escrito sobre este tipo de métodos, alguns deles mais eficazes até, mas com outro nível de complexidade.

 

Bibliografia:

Sayood, K., “Introduction.to.Data.Compression”, Morgan.Kauffman, 2006.

Salomon, D., “A.Concise.Introduction.to.Data.Compression”, Springer, 2008.

Ribeiro, N.,Torres,J.,”Tecnologias Compressão Multimédia”,FCA,2009