La codificación aritmética binaria adaptativa al contexto ( CABAC ) es una forma de codificación de entropía utilizada en los estándares H.264/MPEG-4 AVC [ 1 ] [ 2 ] y de codificación de vídeo de alta eficiencia (HEVC). Es una técnica de compresión sin pérdidas , aunque los estándares de codificación de vídeo en los que se utiliza suelen ser para aplicaciones de compresión con pérdidas . CABAC destaca por proporcionar una compresión mucho mejor que la mayoría de los demás algoritmos de codificación de entropía utilizados en la codificación de vídeo, y es uno de los elementos clave que proporciona al esquema de codificación H.264/AVC una mayor capacidad de compresión que sus predecesores. [ 3 ]
En H.264/MPEG-4 AVC , CABAC solo es compatible con los perfiles Main y superiores (pero no con el perfil extendido) del estándar, ya que requiere un procesamiento mayor para su decodificación que el esquema más simple conocido como codificación de longitud variable adaptativa al contexto (CAVLC), que se utiliza en el perfil Baseline del estándar. CABAC también es difícil de paralelizar y vectorizar, por lo que otras formas de paralelismo (como el paralelismo de regiones espaciales) pueden combinarse con su uso. En HEVC, CABAC se utiliza en todos los perfiles del estándar.
Algoritmo
CABAC se basa en la codificación aritmética , con algunas innovaciones y cambios para adaptarlo a las necesidades de los estándares de codificación de vídeo: [ 4 ]
- Codifica símbolos binarios, lo que mantiene la complejidad baja y permite modelar la probabilidad de los bits más utilizados de cualquier símbolo.
- Los modelos de probabilidad se seleccionan de forma adaptativa en función del contexto local, lo que permite una mejor modelización de las probabilidades, ya que los modos de codificación suelen estar bien correlacionados localmente.
- Utiliza una división de rango sin multiplicación mediante el uso de rangos de probabilidad cuantificados y estados de probabilidad.
CABAC cuenta con múltiples modos de probabilidad para diferentes contextos. Primero, convierte todos los símbolos no binarios a binarios. Luego, para cada bit, el codificador selecciona el modelo de probabilidad a utilizar y, posteriormente, emplea información de elementos cercanos para optimizar la estimación de probabilidad. Finalmente, se aplica la codificación aritmética para comprimir los datos.

El modelado de contexto proporciona estimaciones de las probabilidades condicionales de los símbolos de codificación. Mediante modelos de contexto adecuados, se puede aprovechar una redundancia entre símbolos determinada alternando entre diferentes modelos de probabilidad según los símbolos ya codificados en la vecindad del símbolo que se está codificando. El modelado de contexto es responsable de la mayor parte del ahorro de aproximadamente un 10 % en la tasa de bits que ofrece CABAC en comparación con el método de codificación de entropía CAVLC .
La codificación de un símbolo de datos implica las siguientes etapas.
- Binarización: CABAC utiliza codificación aritmética binaria, lo que significa que solo se codifican decisiones binarias (1 o 0). Un símbolo con valor no binario (por ejemplo, un coeficiente de transformación o un vector de movimiento) se "binariza" o se convierte en un código binario antes de la codificación aritmética. Este proceso es similar al de convertir un símbolo de datos en un código de longitud variable, pero el código binario se codifica adicionalmente (por el codificador aritmético) antes de la transmisión.
- Las etapas se repiten para cada bit (o "bin") del símbolo binarizado.
- Selección del modelo de contexto: Un "modelo de contexto" es un modelo de probabilidad para uno o más intervalos del símbolo binarizado. Este modelo puede elegirse de entre una selección de modelos disponibles, según las estadísticas de los símbolos de datos codificados recientemente. El modelo de contexto almacena la probabilidad de que cada intervalo sea "1" o "0".
- Codificación aritmética: Un codificador aritmético codifica cada intervalo según el modelo de probabilidad seleccionado. Cabe destacar que cada intervalo tiene solo dos subrangos (correspondientes a "0" y "1").
- Actualización de probabilidad: El modelo de contexto seleccionado se actualiza en función del valor codificado real (por ejemplo, si el valor del intervalo era "1", se incrementa el recuento de frecuencia de "1").
Ejemplo
1. Binarice el valor MVDx, la diferencia del vector de movimiento en la dirección x .
El primer bit de la palabra clave binarizada es el bin 1; el segundo bit es el bin 2; y así sucesivamente.
2. Elija un modelo de contexto para cada intervalo. Se selecciona uno de los 3 modelos para el intervalo 1, basándose en los valores MVD codificados previamente. Se calcula la norma L1 de dos valores codificados previamente, e k :
Si e k es pequeño, entonces hay una alta probabilidad de que el MVD actual tenga una magnitud pequeña; por el contrario, si e k es grande, entonces es más probable que el MVD actual tenga una magnitud grande. Seleccionamos una tabla de probabilidad (modelo de contexto) en consecuencia. Los intervalos restantes se codifican utilizando uno de los 4 modelos de contexto adicionales:
3. Codifique cada contenedor. El modelo de contexto seleccionado proporciona dos estimaciones de probabilidad: la probabilidad de que el contenedor contenga "1" y la probabilidad de que contenga "0". Estas estimaciones determinan los dos subrangos que el codificador aritmético utiliza para codificar el contenedor.
4. Actualizar los modelos de contexto. Por ejemplo, si se seleccionó el modelo de contexto 2 para el bin 1 y el valor de este bin era "0", se incrementa el conteo de frecuencia de "0". Esto significa que la próxima vez que se seleccione este modelo, la probabilidad de obtener un "0" será ligeramente mayor. Cuando el número total de ocurrencias de un modelo supera un valor umbral, los conteos de frecuencia de "0" y "1" se reducen, lo que en la práctica da mayor prioridad a las observaciones recientes.
El motor de decodificación aritmética
El decodificador aritmético se describe con cierto detalle en el estándar. Tiene tres propiedades distintas:
- La estimación de probabilidad se realiza mediante un proceso de transición entre 64 estados de probabilidad separados para el "Símbolo Menos Probable" (LPS, el menos probable de las dos decisiones binarias "0" o "1").
- El rango R que representa el estado actual del codificador aritmético se cuantifica a un pequeño rango de valores preestablecidos antes de calcular el nuevo rango en cada paso, lo que permite calcular el nuevo rango utilizando una tabla de búsqueda (es decir, sin multiplicaciones).
- Se define un proceso simplificado de codificación y decodificación para símbolos de datos con una distribución de probabilidad casi uniforme.
La definición del proceso de decodificación está diseñada para facilitar implementaciones de baja complejidad de codificación y decodificación aritmética. En general, CABAC ofrece una mayor eficiencia de codificación en comparación con la codificación basada en CAVLC, a costa de una mayor complejidad computacional.
Historia
En 1986, los investigadores de IBM Kottappuram MA Mohiuddin y Jorma Johannes Rissanen presentaron una patente para un algoritmo de codificación aritmética binaria sin multiplicación. [ 5 ] [ 6 ] En 1988, un equipo de investigación de IBM que incluía a RB Arps, TK Truong, DJ Lu, WB Pennebaker, L. Mitchell y GG Langdon presentó un algoritmo de codificación aritmética binaria adaptativa (ABAC) llamado Q-Coder. [ 7 ] [ 8 ]
Las patentes y los artículos de investigación anteriores, junto con otros de IBM y Mitsubishi Electric , fueron citados posteriormente por el CCITT y el Joint Photographic Experts Group como base para el algoritmo de codificación aritmética binaria adaptativa del formato de compresión de imágenes JPEG en 1992. [ 5 ] Sin embargo, los codificadores y decodificadores del formato de archivo JPEG, que tiene opciones tanto para la codificación Huffman como para la codificación aritmética, normalmente solo admiten la opción de codificación Huffman, lo que se debió originalmente a preocupaciones sobre patentes, aunque las patentes de codificación aritmética de JPEG [ 9 ] han expirado desde entonces debido a la antigüedad del estándar JPEG. [ 10 ] El primer uso informado de la codificación aritmética binaria adaptativa en la compresión de vídeo en movimiento fue en una propuesta de investigadores de IBM al grupo MPEG en 1989. [ 11 ] [ 12 ] Esta propuesta extendió el uso de la codificación aritmética de JPEG intraframe a la codificación de vídeo interframe.
En 1999, Youngjun Yoo ( Texas Instruments ), Young Gap Kwon y Antonio Ortega ( Universidad del Sur de California ) presentaron una forma de codificación aritmética binaria adaptativa al contexto. [ 13 ] El algoritmo moderno de codificación aritmética binaria adaptativa al contexto (CABAC) se introdujo comercialmente con el formato H.264/MPEG-4 AVC en 2003. [ 14 ] La mayoría de las patentes para el formato AVC pertenecen a Panasonic , Godo Kaisha IP Bridge y LG Electronics . [ 15 ]
Véase también
Referencias
- ↑ Richardson, Iain EG, H.264 / MPEG-4 Parte 10 Libro Blanco , 17 de octubre de 2002.
- ↑ Richardson, Iain EG (2003). Compresión de vídeo H.264 y MPEG-4: codificación de vídeo para multimedia de próxima generación . Chichester: John Wiley & Sons Ltd.
- ↑ Ze-Nian Li; Mark S. Drew; Jiangchuan Liu (9 de abril de 2014). Fundamentos de multimedia . Springer Science & Business Media. ISBN 978-3-319-05290-8.
- ↑ Marpe, D., Schwarz, H., y Wiegand, T., Codificación aritmética binaria adaptativa basada en contexto en el estándar de compresión de vídeo H.264/AVC , IEEE Trans. Circuits and Systems for Video Technology , vol. 13, n.º 7, págs. 620–636, julio de 2003.
- 1 2 "T.81 – COMPRESIÓN DIGITAL Y CODIFICACIÓN DE IMÁGENES FIJAS DE TONO CONTINUO – REQUISITOS Y DIRECTRICES" (PDF) . CCITT . Septiembre de 1992. Recuperado el 12 de julio de 2019 .
- ↑ Patente estadounidense 4,652,856
- ↑ Arps, RB; Truong, TK; Lu, DJ; Pasco, RC; Friedman, TD (noviembre de 1988). "Un chip VLSI multipropósito para la compresión adaptativa de datos de imágenes de dos niveles". IBM Journal of Research and Development . 32 (6): 775– 795. doi : 10.1147/rd.326.0775 . ISSN 0018-8646 .
- ↑ Pennebaker, WB; Mitchell, JL; Langdon, GG; Arps, RB (noviembre de 1988). "Una visión general de los principios básicos del codificador aritmético binario adaptativo Q-Coder". IBM Journal of Research and Development . 32 (6): 717– 726. doi : 10.1147/rd.326.0717 . ISSN 0018-8646 .
- ↑ "Recomendación T.81 (1992) Corrección 1 (01/04)" . Recomendación T.81 (1992) . Unión Internacional de Telecomunicaciones. 9 de noviembre de 2004. Consultado el 3 de febrero de 2011 .
- ↑ Estándar de compresión de datos de imágenes fijas JPEG , WB Pennebaker y JL Mitchell , Kluwer Academic Press, 1992. ISBN 0-442-01272-1
- ↑ Codificación DCT para almacenamiento de vídeo en movimiento mediante codificación aritmética adaptativa , CA Gonzales. L. Allman, T. McCarthy, P. Wendt y AN Akansu, Procesamiento de señales: comunicación de imágenes, 2, 145, 1990.
- ↑ Codificación de secuencias de vídeo en movimiento para el entorno MPEG mediante codificación aritmética , E. Viscito y C. Gonzales, SPIE Visual Communications and Image Processing '90, 2-4 de octubre de 1990.
- ↑ Ortega, A. (octubre de 1999). "Compresión integrada en el dominio de la imagen mediante modelos de contexto". Actas de la Conferencia Internacional de Procesamiento de Imágenes de 1999 (Cat. 99CH36348) . Vol. 1. págs. 477–481. doi : 10.1109/ICIP.1999.821655 . ISBN 0-7803-5467-2. S2CID 27303716 .
- ↑ "Codificación aritmética binaria adaptativa basada en contexto (CABAC)" . Instituto Fraunhofer Heinrich Hertz . Consultado el 13 de julio de 2019 .
- ↑ "AVC/H.264 – Lista de patentes" (PDF) . MPEG LA . Consultado el 6 de julio de 2019 .
- Presentaciones audiovisuales en 2003
- Codificación de entropía
- MPEG
- Compresión de vídeo
- Compresión de datos
