Introducción al estándar de compresión de video H.264







Frank Wang  |  Ingeniero de software







RESUMEN - En la industria de las cámaras IP, H.264 es el estándar de compresión de video más popular que proporciona el formato para grabar video digital. El estándar H.264 se publicó por primera vez en 2003, con varias revisiones y actualizaciones desde entonces. Ha logrado una mejora significativa en la eficiencia de distorsión de la tasa en relación con los estándares existentes. Ha logrado un progreso significativo en la eficiencia de la compresión y utiliza menos capacidad cuando se almacenan o transmiten datos.



I. Introducción

En una aplicación típica de H.264, como la videovigilancia, el video de una cámara se codifica usando H.264 para producir un flujo de bits H.264. Se envía a través de una red a un decodificador que reconstruye una versión del video fuente.

Este estándar aprovecha tanto la correlación temporal como la espacial para eliminar la redundancia de píxeles en una secuencia de vídeo. Además, la alta correlación entre cada elemento de sintaxis también se utiliza para predecir y luego representar el elemento de sintaxis de destino. Por tanto, la interdependencia entre cada elemento sintáctico es bastante grande.



II - La estructura del flujo de bits H.264

Una imagen codificada consta de uno o más segmentos que se componen de una serie de macrobloques codificados. En la siguiente sección se ofrece una descripción general de la estructura del flujo de bits H.264.


A. Grupo de imágenes

Un grupo de imágenes (GOP) comprende un conjunto sucesivo de imágenes que comienza con una imagen clave [1]. En una estructura de codificación de GOP cerrado, la imagen clave puede ser una imagen de actualización de decodificación instantánea (IDR) que consta de uno o más segmentos IDR o un tipo especial de segmento intracodificado. Si se recibe una imagen IDR en el decodificador, todas las imágenes almacenadas que están en la memoria intermedia de imágenes decodificadas (DPB) se marcan inmediatamente como "no utilizadas". Por lo tanto, las imágenes que preceden a la imagen IDR en orden de codificación ya no están disponibles para la predicción.

En una estructura de codificación jerárquica-P (es decir, el orden de codificación es igual al orden de salida), las imágenes P se predicen a partir de las imágenes que ya están codificadas. Esta estructura está diseñada para escenarios que requieren una operación de bajo retardo. En la figura 1 se presenta un ejemplo de estructura de codificación jerárquica-P.






B. Unidad de capa de abstracción de red

Una secuencia de vídeo codificada H.264 consta de una serie de unidades de capa de abstracción de red (NALU). Cada uno de ellos puede incluir conjuntos de parámetros, información complementaria, una imagen codificada completa o partes de una imagen codificada [2]. Una VCL NALU consta de un encabezado NALU de un byte que se utiliza para definir la información dentro de la carga útil NALU. Hay tres campos en el encabezado NALU:

1. Un bit forbidden_zero_bit (F) de 1 bit: indica la pérdida de datos que se puede utilizar para activar la ocultación de errores en el decodificador 2. un nal_ref_idc (NRI) de 2 bits: indica la importancia de NALU

3. a nal_unit_type (NUT) de 5 bits: señala el tipo de paquetes de secuencia de bytes encapsulados (EBSP) en la NALU

Las NALU más comunes se enumeran en la Tabla I. El decodificador puede detectar el tipo NALU en el encabezado NALU para realizar los diferentes procesos.






C. Capa de macrobloque

La composición de una capa de codificación de video (VCL) NALU se presenta en la Fig. 2. El macrobloque es la unidad básica para el proceso de codificación en una imagen. El tamaño de la región es de 16 × 16 píxeles y contiene una muestra de luminancia de 16 × 16 y dos muestras de crominancia de 8 × 8 en formato 4: 2: 0 YUV.



Figura 2: La composición de un VCL NALU, solo un corte en una imagen.





La información del macrobloque se presenta mediante una gran cantidad de elementos de sintaxis que forman la cadena de bits de datos (SODB). Debido a que un SODB puede o no estar alineado por bytes, es necesario transferir el SODB a la carga útil de secuencia de bytes sin procesar alineado por bytes (RBSP) para los requisitos de especificación. Para evitar que ocurran zero_byte (es decir, 0x00) y start_code_prefix_one_3bytes (es decir, 0x000001) en la carga útil de NALU, se inserta una prevención de emulación (es decir, 0x03) en el flujo de bits cuando está sucediendo 0x0000.

La Figura 3 ilustra una arquitectura de codificador H.264 / AVC general; el proceso de codificación relacionado se describe como sigue: una imagen sin procesar se divide en muchos macrobloques no superpuestos, y luego se genera un macrobloque de predicción por predicción intra o inter y se resta del macrobloque objetivo para formar un macrobloque residual. Luego, el macrobloque residual se transforma y cuantifica de acuerdo con el parámetro de cuantificación (QP) seleccionado. Finalmente, el macrobloque residual se codifica en el tren de bits mediante codificación de entropía. Hay dos modos de codificación de entropía permitidos en H.264 / AVC; una es la codificación adaptativa de longitud variable basada en el contexto (CAVLC) y la otra es la codificación aritmética binaria adaptativa basada en el contexto (CABAC). Solo la herramienta de codificación de entropía CAVLC es compatible con el perfil de línea base.



Figura 3: Arquitectura del codificador H.264 / AVC





1. Predicción intra

Un intra macrobloque (I-macrobloque) se codifica usando correlación espacial. El segmento que tiene el mismo número de grupo de segmento puede actuar como referencia prevista para la predicción intra en la imagen I.

La Figura 4 muestra un conjunto de modos de predicción intra 4 × 4 que están disponibles en H.264, incluida una DC y 8 predicciones angulares para crear diferentes combinaciones de predicción. Estos modos de predicción son adecuados para la región compleja.



Figura 4: Modos de predicción intra 4 × 4.






Figura 5: Modos de predicción intra 16 × 16.






La Figura 5 muestra un conjunto de 4 modos de predicción intra 16 × 16. Los píxeles que están resaltados en línea roja se utilizan para formar la predicción del bloque actual. Un tamaño de bloque de predicción más grande tiende a dar menos precisión, pero se requieren menos bits para codificar el modo de predicción.

La Figura 6 muestra un ejemplo de macrobloque intra 4 × 4 del software Elecard StreamEye. El macrobloque decodificado es la combinación del macrobloque predicho y el macrobloque residual. El bloque rojo resaltado está codificado por el modo de predicción vertical intra 4 × 4 porque la textura original tiene la textura vertical; el codificador intenta seleccionar el mejor modo durante la selección del modo de distorsión de frecuencia optimizada (RDO). El mejor modo de codificación de un macrobloque se basa en la compensación entre la tasa de bits y el costo de distorsión que controla el QP. Un QP más pequeño tiende a seleccionar el modo que ofrece la menor distorsión, lo que permite una tasa de bits más alta.



Figura 6: Un ejemplo de macrobloque intra 4 × 4. (a) Macrobloque previsto. (b) Macrobloque residual. (c) Macrobloque reconstruido.





2. Predicción inter

Un inter macrobloque (P-macrobloque) se codifica utilizando la correlación temporal. El bloque de predicción se forma a partir de imágenes previamente codificadas almacenadas en el DPB. Hay muchos tamaños de partición para seleccionar en H.264 / AVC. El objetivo final es encontrar una compensación entre los bits totales que se utilizan para codificar el vector de movimiento y los datos residuales y el costo de distorsión. Como se puede ver en la Figura 7, el desplazamiento entre el bloque de ubicación conjunta y el bloque de mejor coincidencia (es decir, el neumático de automóvil) en el marco de referencia es el llamado vector de movimiento [3].



Figura 7: Encontrar un bloque de predicción adecuado.






3. Datos residuales

La salida del proceso de predicción es un bloque residual, creado restando el bloque de predicción del bloque actual, y un conjunto de parámetros que señalan el tipo de predicción intra o que describen cómo se estimó el bloque de movimiento. La Figura 8 representa los bloques residuales en un macrobloque intra 4 × 4 para muestreo YUV 4: 2: 0; el número etiquetado en el bloque es el orden de transmisión.



Figura 8: Los bloques residuales en un macrobloque intra 4 × 4, muestreo 4: 2: 0.






Figura 9: Los bloques residuales en un macrobloque intra 16 × 16, muestreo 4: 2: 0.






Los datos residuales tienen la influencia más importante en la tasa de bits de un flujo de bits. Una forma de controlar la tasa de bits es simplemente intentar hacer cumplir un número constante de bits por trama codificada, midiendo la tasa de bits de salida y realimentandola para controlar QP. El aumento de QP reduce la tasa de bits codificada y la disminución de QP aumenta la tasa de bits codificada.

D. Perfiles

El estándar H.264 especifica muchos algoritmos de sintaxis y decodificación, que cubren una amplia gama de posibles escenarios de video. Un perfil pone límites a las capacidades algorítmicas requeridas de un decodificador H.264. Cada perfil está destinado a ser útil para una clase de aplicaciones. Por lo tanto, un decodificador que se ajuste al perfil principal de H.264 solo necesita admitir las herramientas contenidas en el perfil principal. Por ejemplo, el perfil de línea de base puede ser útil para aplicaciones conversacionales o de bajo retardo, como videoconferencias, con requisitos computacionales relativamente bajos. El perfil principal puede ser adecuado para aplicaciones de televisión básicas, como los servicios de televisión de definición estándar. Los perfiles altos agregan herramientas al perfil principal que pueden mejorar la eficiencia de la compresión, especialmente para servicios de mayor resolución espacial, como la televisión de alta definición.

La Tabla II enumera las herramientas de codificación respaldadas por los perfiles de línea base, extendido, principal y alto. Podemos elegir un perfil adecuado para el escenario especial.



Cuadro II





III - Análisis de la corriente práctica

Como se puede ver en la Figura 10, capturamos una secuencia práctica de nuestra cámara IP y analizamos la secuencia mediante el software analizador StreamEye de Elecard. En este caso, una secuencia de perfil principal que comienza con un segmento IDR (barra roja) seguido de segmentos P (barra azul). Es obvio que la tasa de bits de la imagen IDR es mayor que la tasa de bits de la imagen P. Además, el método de codificación de entropía es CABAC y la velocidad de fotogramas es 30.






IV.conclusión

En este documento, ofrecemos una descripción general del estándar de compresión de video H.264. Ha mejorado significativamente la eficiencia de la distorsión de la tasa en relación con los estándares existentes. Describe el progreso significativo en la eficiencia de la compresión que usa menos capacidad cuando se almacena o se transmite. Hay dos atractivos estándares de compresión de video, H.265 y AV1. Sin embargo, todavía queda un largo camino por recorrer para satisfacer las necesidades del fabricante y del cliente.



Referencias

1. M. Wien, Codificación de vídeo de alta eficiencia: especificaciones y herramientas de codificación, Berlín: Springer-Verlag, 2015.
2. IE Richardson, The H.264 Advanced Video Compression Standard, 2ª ed., Nueva York: Wiley, 2010.
3. Y. Wang, J. Ostermann y YQ Zhang, Procesamiento de video y comunicaciones, Prentice Hall, 2001.



Descargar PDF>





Ver todos los artículos técnicos>