Laboratório de quantização

como a quantização transforma tons suaves em degraus

A carregar a simulação interativa...

a compressão muitas vezes começa com a dor da quantização

A quantização é onde valores contínuos ou de alta precisão são arredondados para um codebook finito. O erro costuma ser pequeno por amostra, mas gradientes suaves o expõem como bandas de contorno, porque pixels vizinhos arredondam para os mesmos poucos valores de saída. O dither adiciona ruído deliberadamente antes do arredondamento: ele aumenta o ruído local, mas quebra bandas coerentes, o que muitas vezes parece melhor para a visão humana e é comprimido de forma diferente nos codecs. • Gradiente de origem vs. saída: a faixa superior mostra o gradiente de entrada matematicamente suave. A faixa inferior mostra a saída quantizada, arredondada para os níveis selecionados. Em profundidades de bits baixas, esse arredondamento cria bandas de contorno visíveis. • Gráfico de erro de quantização: isso plota a diferença (saída − entrada) em cada posição ao longo do gradiente. A linha amarela é o erro, e a linha verde representa erro zero. Grandes ondas de erro periódicas indicam banding, enquanto adicionar dither randomiza esse erro em ruído de alta frequência.

Bits são só quantos degraus você tem

Um degradê no mundo real é contínuo, mas um computador precisa escolher de uma lista fixa de valores. A profundidade de bits define o tamanho dessa lista: cada bit a mais dobra a quantidade, então 8 bits dão 2⁸ = 256 tons e 10 bits dão 1024. Menos degraus significam arredondamento mais grosseiro; por isso, ao cair para 6 bits (64 tons), um céu suave se quebra em faixas visíveis.

Cada bit a mais rende cerca de 6 dB

Há uma regra limpa escondida no valor de SNR: na quantização uniforme, cada bit adicional melhora a relação sinal-ruído em cerca de 6.02 dB, segundo SNR ≈ 6.02·N + 1.76 dB para uma senoide de plena escala. A mesma fórmula rege conversores de áudio e codificadores de imagem, de modo que uma faixa de áudio de 16 bits e uma imagem de 16 bits compartilham o mesmo piso de ruído de quantização teórico. Um bit a mais, 6 dB de ganho — não importa o meio.

UMA ETAPA DE UMA CADEIA — O QUE ENTRA, O QUE SAI E O QUE QUEBRA DEPOIS

Onde isto fica no pipeline de codificação

Um codificador de vídeo não é um algoritmo, mas oito etapas numa ordem fixa, e a ordem não é arbitrária: cada etapa existe porque a anterior tornou o seu trabalho possível. Esta ferramenta modela uma delas. A cadeia abaixo liga às outras sete.

Laboratório de quantização — divide coeficientes por um passo e arredonda — o único passo deliberadamente com perda

O que entra
Coeficientes de transformada do resíduo, em precisão plena.
O que sai
Inteiros mais grosseiros, com a maioria dos pequenos coeficientes de alta frequência arredondados para zero.
O que a etapa seguinte pressupõe
A codificação entrópica pressupõe longas sequências de zeros para explorar. É esta etapa que as fabrica.
O que dá errado aqui
É a única etapa que descarta informação de propósito, então é aqui que a qualidade é realmente decidida. Um passo grosseiro demais faz um gradiente suave desabar em faixas visíveis, porque tons vizinhos arredondam para o mesmo inteiro.

Problema resolvido na íntegra

  1. Reconciliar 56,18 dB de quantização de 8 bits com a regra dos manuais 6 passos

    A quantização de 8-bit dá 56,18 dB aqui, mas a regra dos manuais diz 6,02 × 8 + 1,76 = 49,92 dB. Ambas estão certas. Concilie-as.

    1. O tamanho do passo é a gama dividida pelos intervalos entre níveis, e não pelos níveis — 256 níveis deixam 255 intervalos, e o erro por um vale 0,017 dB que ninguém notaria e uma fórmula errada que todos herdariam.

      Δ=1L−1=1255=0.003922\Delta=\frac{1}{L-1}=\frac{1}{255}=0.003922
    2. O arredondamento para o nível mais próximo deixa um erro distribuído uniformemente ao longo de um passo. O seu valor RMS é o passo a dividir por √12, que é o único elemento de estatística em toda a dedução.

      e∼U ⁣(−Δ2,Δ2) ⟹ σe=Δ12=0.0039223.4641=0.001132e\sim\mathcal U\!\left(-\tfrac{\Delta}{2},\tfrac{\Delta}{2}\right)\ \Longrightarrow\ \sigma_e=\frac{\Delta}{\sqrt{12}}=\frac{0.003922}{3.4641}=0.001132
    3. Compare essa previsão com o que a ferramenta mediu ao longo das 900 amostras. A concordância até 1% mostra o valor da hipótese de erro uniforme numa rampa real.

      measured RMSE=0.001124=0.993 Δ12\text{measured RMSE}=0.001124=0.993\,\frac{\Delta}{\sqrt{12}}
    4. A SNR é o rácio dos dois valores RMS em decibéis. Ambos os números estão impressos, pelo que este passo é uma verificação e não uma dedução.

      SNR=20log⁡10σsσe=20log⁡100.7237280.001124=20log⁡10643.9=56.18 dB\mathrm{SNR}=20\log_{10}\frac{\sigma_s}{\sigma_e}=20\log_{10}\frac{0.723728}{0.001124}=20\log_{10}643.9=56.18\ \mathrm{dB}
    5. Agora a regra dos manuais, com o seu pressuposto tornado explícito. É deduzida para uma sinusoidal que preenche exatamente a gama de entrada.

      6.02N+1.76=49.92 dBassumes a full-scale sine, σ=122=0.35366.02N+1.76=49.92\ \mathrm{dB}\quad\text{assumes a full-scale sine},\ \sigma=\tfrac{1}{2\sqrt2}=0.3536
    6. Calcule o rácio dos dois valores RMS e converta. A correção reduz a diferença para menos de quatro centésimos de decibel.

      20log⁡100.7237280.3536=6.22 dB;49.92+6.22=56.14≈56.1820\log_{10}\frac{0.723728}{0.3536}=6.22\ \mathrm{dB};\qquad 49.92+6.22=56.14\approx56.18

    Resposta

    A diferença de 6,2 dB é o fator de crista, e nada mais. 6,02N + 1,76 não é uma lei sobre conversores, é uma lei sobre ondas sinusoidais a toda a escala — uma sinusoidal que preencha a gama tem um valor RMS de 1/(2√2) = 0,354 dessa escala. Esta rampa de imagem tem um valor RMS de 0,724, ligeiramente mais do dobro, e 20 log₁₀(2,05) é 6,22 dB. Somando este valor obtém-se 56,14 contra os 56,18 do painel, sendo os 0,04 dB restantes o erro medido a ficar 0,7% abaixo do Δ/√12 teórico. Assim, a SNR indicada de qualquer sistema real é uma afirmação tanto sobre o sinal como sobre o hardware, razão pela qual os engenheiros de áudio indicam o headroom separadamente e por que uma passagem silenciosa num disco de 16-bit não obtém 96 dB de nada.

    SNR=6.02N+1.76+20log⁡10σs1/(22)\mathrm{SNR}=6.02N+1.76+20\log_{10}\frac{\sigma_s}{1/(2\sqrt2)}
Referências (1)