Articulo de referencia

Codificación de longitud variable adaptativa al contexto

La codificación de longitud variable adaptativa al contexto ( CAVLC ) es una forma de codificación de entropía utilizada en la codificación de vídeo H.264/MPEG-4 AVC . Es una té...

La codificación de longitud variable adaptativa al contexto ( CAVLC ) es una forma de codificación de entropía utilizada en la codificación de vídeo H.264/MPEG-4 AVC . Es una técnica de compresión intrínsecamente sin pérdidas , como casi todos los codificadores de entropía. En H.264/MPEG-4 AVC, se utiliza para codificar bloques residuales de coeficientes de transformación en orden zigzag. Es una alternativa a la codificación aritmética binaria adaptativa al contexto (CABAC). CAVLC requiere considerablemente menos procesamiento para su decodificación que CABAC, aunque no comprime los datos con la misma eficacia. CAVLC es compatible con todos los perfiles H.264, a diferencia de CABAC, que no es compatible con los perfiles Baseline y Extended.

CAVLC se utiliza para codificar bloques residuales ordenados en zigzag de 4×4 (y 2×2) de coeficientes de transformación. CAVLC está diseñado para aprovechar varias características de los bloques cuantizados de 4×4:

  • Tras la predicción, la transformación y la cuantización, los bloques suelen ser dispersos (contienen principalmente ceros).
  • Los coeficientes no nulos más altos después del escaneo en zigzag suelen ser secuencias de +/− 1. CAVLC indica el número de coeficientes de alta frecuencia +/−1 de forma compacta.
  • Existe una correlación entre el número de coeficientes distintos de cero en bloques vecinos. El número de coeficientes se codifica mediante una tabla de consulta; la elección de dicha tabla depende del número de coeficientes distintos de cero en los bloques vecinos.
  • El nivel (magnitud) de los coeficientes distintos de cero tiende a ser mayor al inicio de la matriz reordenada (cerca del coeficiente de CC) y menor hacia las frecuencias más altas. CAVLC aprovecha esto adaptando la tabla de búsqueda VLC para el parámetro "nivel" en función de las magnitudes de nivel codificadas recientemente.

Elementos codificados

Los parámetros que debían codificarse y transmitirse incluyen la siguiente tabla:

Ejemplos de CAVLC

En todos los ejemplos siguientes, asumimos que la tabla Num-VLC0 se utiliza para codificar coeff_token.

0, 3, 0, 1, −1, −1, 0, 1, 0… TotalCoeffs = 5 (indexado desde la frecuencia más alta [4] hasta la más baja [0])

Total de ceros = 3

T1s = 3 (de hecho hay 4 unos finales, pero solo 3 pueden codificarse como un "caso especial")

Codificación:

El flujo de bits transmitido para este bloque es 000010001110010111101101.

Decodificación: La matriz de salida se construye a partir de los valores decodificados, como se muestra a continuación. Los valores añadidos a la matriz de salida en cada etapa están subrayados.

El decodificador ha insertado dos ceros; sin embargo, TotalZeros es igual a 3, por lo que se inserta otro cero antes del coeficiente más bajo, lo que da como resultado la matriz de salida final: 0, 3, 0, 1, −1, −1, 0, 1

Véase también

Referencias

  • Richardson, Iain (28 de agosto de 2011). "H.264 / Codificación de longitud variable adaptativa al contexto AVC" (PDF) . Vcodex . Consultado el 17 de noviembre de 2024 .