La matriz de cuantización en la cuantización perceptual

[latexpage]De entre las etapas de la codificación de imagen y vídeo, la cuantización es la única en la que se produce una pérdida real de información.

Los codificadores basados en bloques utilizan una matriz de cuantización QM (Quantization Matrix) para reducir la precisión de los coeficientes resultantes de la etapa de transformación al dominio de la frecuencia, habitualmente utilizando la transformada DCT.

Suponiendo un bloque de 8×8 de coeficientes $\begin{aligned} F(u,v) \end{aligned}$ resultantes de la transformada DCT o similar, la matriz de cuantización define la cantidad de reducción que se va a aplicar a cada coeficiente para reducir el bit-rate resultante en la compresión. $u, v$ son la frecuencia horizontal y vertical respectivamente. Cuando la cuantización es uniforme, a todos los coeficientes se les aplica el mimso divisor y cuando no lo es, para cada coeficiente la matriz de cuantización tiene divisores diferentes. La cuantización se regiría por la ecuación (\ref{eq:quantization}) y la decuantización por la ecuación (\ref{eq:dequantization})

\begin{equation} \label{eq:quantization}

F_Q(u,v)=Round(\frac{F(u,v)}{Q(u,v)})

\end{equation}

\begin{equation} \label{eq:dequantization}

F'(u,v)=F_Q(u,v)\times Q(u,v)

\end{equation}

Cada uno de los valores $\begin{aligned} Q(u,v) \end{aligned}$ de la matriz de cuantización es un entero entre 1 y 255 que especifica el tamaño del quantization step (QStep) a aplicar en la frecuencia $(u,v)$. El error máximo de cuantización en la reconstrucción de $\begin{aligned} F(u,v) \end{aligned}$ es por tanto $\begin{aligned} Q(u,v)/2 \end{aligned}$.

El objetivo es reducir la precisiónd e los coeficientes que son perceptualmente insignificantes.

Fundamentalmente hay dos formas de definir la matriz de cuantización:

  1. Utilizando la teoría de rate-distortion.
  2. Utilizando experimentos psico-visuales basados en el HVS.

1) Se obtiene una QM específica para la imagen asignando, de los bits disponibles, cierto número de bits a cada coeficiente DCT utilizando un criterio rate-distortion.

Normalmenta a los coeficientes de baja frecuencia se les asigna más bits dada la compactación de energía de la DCT. El problema de esta técnica  es que la QM generada depende de la imagen y tiene un coste computacional a tener en cuenta. Habitualmente se implementa un algoritmo rate-distortion adaptativo que gerera la QM para cada imagen.

2) La idea es determinar el umbral T para cada coeficiente DCT de forma que idealmente, las distorsiones bajo ese umbral no se perciban. Normalmente los QSteps para coeficientes de alta frecuencia serán mayores que los de baja, lo que producirá mayores distorsiones para las altas frecuencias que para las bajas, lo que concuerda con la sensibilidad del HVS.

 




Calculo del tamaño del Dead Zone

[latexpage]

El tamaño del dead zone en un UVDZQ (Uniform Variable Dead Zone Quantizer) depende de tres factores, $\xi$, $\rho$ y $\Delta$. Aquí está la forma de calcular el DZ Size en función de los mismos.

En las figuras viene la formulación del UVDZQ y los parámetros fundamentales. Este cuantizador se ha utilizado en el PETW. (En la entrada Nuevo PETW se explica cómo se implementa.)

Cuantizador UVDZQ

Parámetros de un UVDZQ

DZ(ξ ; ρ ; Δ)
 Δ  3
 ξ  0.375
 ρ  0
 n 1
 Lb1  1.875
 DZ(Δ)  1.25 Δ
DZ size 3.75

Las celdas en gris son resultados de los cálculos.

Los valores del DZ (en rojo) se expresan de dos formas, en función del Qstep o $\Delta$ y con su tamaño numérico (valor Real).

En la tabla vemos un ejemplo, el QStep ($\Delta$) tiene un ancho de 3, es decir cada uno de los intervalos de cuantización tienen ancho 3. El Deadzone tiene ancho 1.25 veces el ancho de $\Delta$, es decir, 3.75. En la siguiente imagen vemos esto en la recta real.

DZSize

Lb1 es el LowerBound del primer Qstep, que si lo multiplicamos por 2 tenemos el ancho del DZ. El valor de $\rho$ lo fijamos en 0, es decir, sin redondear.

El LowerBound se calcula como viene en la imagen Parámetros de un UVDZQ y depende de los parametros.

Manteniendo el valor de $\Delta$ fijo y con $\rho=0$, mantendremos fijos los QSteps y variando $\xi$ podremos aumentar o disminuir el tamaño del Deadzone.

Por tanto para calcular el tamaño del Dead Zone, sustituyendo $n=1; \rho=0$ en la  formula de  $L_b$ tenemos:

$\\
DZ = 2L_b \\
L_b=(1-\xi)\Delta \\
DZ = \tau \Delta \\
\tau = \frac{DZSize}{\Delta}=\frac{2L_b}{\Delta}=2(1-\xi) \rightarrow  DZ = 2\Delta (1-\xi)
$