Compartir tecnología

Aprendizaje sistemático del proceso de compresión de datos de codificación de video H264 (03) y conceptos relacionados

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Nota: Nos referimos al método de aprendizaje del Círculo Dorado (¿Qué es la regla del círculo dorado? -> Modelo de regla del círculo dorado, este artículo utiliza: por qué-qué) para aprender la codificación de audio y video H264. Esta serie de artículos se centra en la comprensión del sistema de conocimiento y los métodos prácticos de codificación de video. El aspecto teórico explicará más sobre el origen de los conceptos en audio y video y las conexiones entre varios conceptos. Sepa cómo es, sepa por qué es así. Al mismo tiempo, se pone más énfasis en el establecimiento de sistemas de conocimiento.

En este artículo, hablamos principalmente sobre el proceso de compresión de datos H.264 y conceptos relacionados. La compresión de datos H.264 tiene un solo propósito: comprimir, comprimir y recomprimir para reducir el tamaño de los datos de video y al mismo tiempo garantizar la calidad de la imagen tanto como sea posible. Entonces, antes de aprender a comprimir datos H.264, primero debemos comprender: aunque hay muchos conceptos y métodos involucrados en este proceso, todos los métodos y procesos tienen este propósito: la compresión.

1 Interpretación del proceso de compresión de datos H.264

El proceso de compresión de datos de H.264 se resume principalmente en los siguientes pasos clave: división de macrobloques y división de subbloques -> agrupación de tramas -> predicción de tramas -> transformada de coseno discreto entero (DCT) -> compresión CABAC. Las instrucciones de expansión específicas son las siguientes.

1.1 Dividir macrobloques && dividir en subbloques

Bloque macro: se puede entender que cuando el cuadro de video se envía al búfer del codificador H264, el codificador divide el bloque macro en cada imagen. De forma predeterminada, la codificación H264 usa un área de 16X16 píxeles como macrobloque (H265 usa un área de 64X64 píxeles El efecto de dividir un cuadro de video en macrobloques es el siguiente):

El efecto general después de la división del macrobloque.

Al mismo tiempo, en la imagen de arriba, podemos dividir el macrobloque de 16X16 píxeles en subbloques más pequeños. El tamaño del subbloque puede ser 8X16、16X8、8X8、4X8、8X4、4X4 es muy flexible. El propósito de dividirlo nuevamente en subbloques es registrar estos datos con datos muy pequeños. Una vez divididos los macrobloques, se pueden agrupar todas las imágenes en la caché del codificador H264.

La división de macrobloques y subbloques permite que la codificación de video analice y procese el contenido de video con mayor precisión y logre una compresión de datos más eficiente. Los fotogramas de vídeo se dividen en macrobloques de tamaño 16x16 píxeles, y estos macrobloques se pueden dividir en bloques más pequeños, como 8x8, 8x4, 4x8, etc., para adaptarse a la complejidad del contenido de la imagen.

1.2 Agrupación de cuadros

La agrupación de cuadros (estructura GOP) se define antes de la intra predicción y la inter predicción. En el proceso de codificación de video, la configuración de la agrupación de cuadros es uno de los pasos iniciales, que determina la organización y el orden de codificación de los cuadros de video. El objetivo principal de la agrupación de tramas es reducir la redundancia de datos. La redundancia de datos de vídeo se divide principalmente en dos categorías:

  • La redundancia de datos temporales, que requiere el uso de compresión de predicción entre cuadros, representa una proporción mayor.(Porque incluso si la cámara captura 30 cuadros por segundo, estos 30 cuadros de datos están relacionados en la mayoría de los casos. Puede haber más de 30 cuadros de datos, y tal vez docenas de cuadros de datos estén particularmente relacionados. Y para la correlación es particularmente Cerrar fotogramas, solo necesitamos guardar un fotograma clave(encuadro)datos, otros marcos(Marco B y marco P)Todo se puede predecir a través de este cuadro de acuerdo con ciertas reglas, por lo que los datos de video tienen la mayor redundancia temporal).
  • La redundancia de datos espaciales, que requiere el uso de compresión de predicción intracuadro, representa una proporción relativamente pequeña.

Pasos de ejecución de agrupación de cuadros H264:

  1. Cada vez, se toman dos cuadros adyacentes para comparar macrobloques y se calcula la similitud entre los dos cuadros.
  2. La similitud se logra después de la cuantificación: si los píxeles con diferencias están solo dentro del 10% de los puntos, la diferencia de brillo no cambia más del 2% y la diferencia de croma cambia solo dentro del 1%, creemos que dichas imágenes se pueden agrupar. en un grupo.

Cuando se completa la agrupación, el problema de la compresión de predicción de cuadros comienza a resolverse.

1.3 Compresión de predicción de cuadros

Esta parte incluye principalmente predicción intracuadro y predicción entre cuadros. La predicción dentro del cuadro consiste en comprimir cuadros de imágenes estáticas, predecir el valor de píxel de cada macrobloque a través de 9 modos diferentes y luego calcular el valor residual con la imagen original. Y predicción entre cuadros (estimación de movimiento y compensación de movimiento): para cuadros P y cuadros B, encuentre el vector de movimiento entre el cuadro anterior o dos cuadros a través de la estimación de movimiento, luego realice la predicción de compensación de movimiento, genere una imagen predicha y calcule el Residual a partir de el cuadro actual.

Nota: El orden de la intra e inter predicción depende del tipo de trama codificada y de la estrategia de codificación. En una implementación real de un codificador de video, estos pasos son parte del proceso de codificación y el codificador los maneja automáticamente. No tiene por qué ser quién lo maneje primero.

1.3.1 predicción intra

Compresión de predicción intracuadro: resuelve el problema de la redundancia de datos espaciales. Los datos redundantes del espacio aéreo se refieren al color, el brillo, etc., que son principalmente para información que es insensible al ojo humano y la codificación se comprime eliminándola.El principio utilizado en la predicción intracuadro es que el ojo humano tiene un cierto grado de reconocimiento de imágenes y es muy sensible al brillo de baja frecuencia y menos sensible al brillo de alta frecuencia.(Puede entenderse como un tamaño de macrobloque de 16X16. En H264, otros datos se predicen a través de los 16 píxeles superiores y los 16 píxeles más a la izquierda, de modo que la información de representación de píxeles que originalmente requería 16 * 16 = 256 se puede convertir a 16+ 16-1 =31 píxeles para representar información)

1.3.2 Predicción entre cuadros (estimación de movimiento y compensación de movimiento)

Compresión de predicción entre cuadros (estimación y compensación de movimiento): resuelve el problema de la redundancia de datos en el dominio del tiempo. Hay varios fotogramas en el vídeo dispuestos linealmente en orden cronológico. La correlación entre fotogramas es muy fuerte, por lo que hay muchos datos que se pueden eliminar entre fotogramas.Después de la compresión, se dividirá en tres tipos: cuadro I, cuadro P y cuadro B.(Explicación: Principio de estimación y compensación de movimiento: el codificador H264 primero extrae en secuencia dos cuadros de datos de video del encabezado del búfer y luego realiza un escaneo de macrobloques. Cuando descubre que hay un objeto en una de las imágenes, Buscará la posición cercana (en la ventana de búsqueda). Si el objeto se encuentra en otra imagen en este momento, se puede calcular el vector de movimiento del objeto. La siguiente imagen es la posición de la bola de billar.

Para fotogramas P y fotogramas B, la estimación de movimiento se utiliza para encontrar el vector de movimiento entre el fotograma anterior o dos fotogramas, y luego se realiza la predicción de compensación de movimiento para generar una imagen predicha y se calcula el residual con el fotograma actual.

1.4 Transformada de coseno discreta entera (DCTTransformada de coseno discreta

Este paso realiza principalmente una transformación DCT en el residuo de predicción, convierte la correlación espacial en datos irrelevantes en el dominio de la frecuencia y luego los cuantifica. DCT se utiliza principalmente para la compresión de datos o imágenes, convirtiendo la correlación espacial en datos irrelevantes en el dominio de la frecuencia y luego cuantizándolos.(Explicación: la transformación DCT puede recopilar información más importante de la imagen y las áreas y coeficientes del dominio de frecuencia sin importancia se pueden recortar directamente)

Resumen: la secuencia de compresión de datos de cuadros es realizar primero la compresión entre cuadros e intracuadros, y luego realizar la transformación DCT en los datos residuales para eliminar la correlación de los datos y comprimirlos aún más. Como sigue:

Compresión 1,5 CABAC

La compresión CABAC es una tecnología de compresión sin pérdidas y un método de codificación entrópica. Cuando CABAC se comprime y codifica, los datos de alta frecuencia se definen como códigos cortos y los datos de baja frecuencia se definen como códigos largos. Este método es más eficiente que el método VLC. El método de codificación de entropía CABAC (codificación aritmética binaria adaptativa al contexto) se utiliza para comprimir aún más los coeficientes cuantificados para mejorar la eficiencia de la compresión. Aquí, los datos procesados ​​en los cuatro pasos anteriores se codifican en el flujo de código final utilizando el algoritmo de codificación. Los fotogramas comprimidos finales se dividen en: fotogramas I, fotogramas P y fotogramas B. Después de ejecutar el método de compresión sin pérdidas CABAC, se obtiene el flujo de código de video.

2 Conceptos relacionados en el proceso de compresión de datos

2.1 Redundancia de datos en el tiempo y el espacio

La redundancia de datos espaciales y la redundancia de datos temporales son dos conceptos básicos en la compresión de video. Describen información repetida dentro y entre cuadros de video, respectivamente.

Interpretación de la redundancia espacial

  • Se refiere a la similitud o correlación entre píxeles adyacentes dentro de un solo cuadro de video, lo que resulta en la duplicación de datos. Debido a la continuidad de las imágenes naturales, los píxeles adyacentes tienden a tener valores de brillo o color similares.
  • Los ejemplos típicos de redundancia espacial incluyen grandes áreas monocromáticas, degradados o texturas que cambian lentamente.
  • Los algoritmos de compresión de video reducen la redundancia espacial mediante predicción espacial, transforman la codificación (como DCT) y otras tecnologías, convierten la imagen del dominio espacial al dominio de frecuencia y concentran energía en unos pocos coeficientes para lograr el propósito de la compresión.

Interpretación de la redundancia temporal

  • Se refiere a la similitud que existe entre fotogramas consecutivos de una secuencia de vídeo, es decir, un mismo objeto o escena en fotogramas consecutivos no cambia visualmente de forma significativa.
  • La redundancia temporal generalmente ocurre cuando la cámara está estacionaria o cuando los objetos en la escena se mueven lentamente, y solo una pequeña área cambia en los fotogramas posteriores en comparación con el fotograma anterior.
  • Los algoritmos de compresión de video reducen la redundancia temporal a través de técnicas como la predicción entre cuadros, la estimación de movimiento y la compensación de movimiento, utilizando la correlación entre los cuadros anteriores y siguientes para predecir y codificar las diferencias entre cuadros en lugar de codificar completamente cada cuadro.

2.2 Interpretación de datos residuales y conceptos relacionados.

En la compresión de vídeo H.264, los datos residuales se refieren a la diferencia entre el fotograma de vídeo original y el fotograma previsto. Al mismo tiempo, si desea tener una comprensión más profunda de los datos residuales, debe comprender los siguientes conceptos, como se muestra a continuación:

  1. marco predicho : Durante el proceso de codificación de video, se utilizará la intra predicción (Intra Prediction) o la inter predicción (Inter Prediction) para generar fotogramas predichos. La intrapredicción se basa en la información de píxeles del fotograma actual, mientras que la interpredicción se basa en la información de compensación de movimiento de los fotogramas anteriores o posteriores.

  2. marco original: Se refiere a los cuadros de imagen originales realmente capturados en la secuencia de video.

  3. Cálculo residual : Los datos residuales se calculan restando el fotograma previsto del fotograma original. Los datos residuales representan la diferencia entre el fotograma previsto y el fotograma original.

Con la base de los conceptos anteriores, podemos comprender mejor las características de los datos residuales:

  • Los datos residuales suelen tener una alta aleatoriedad espacial porque el marco de predicción ha eliminado la mayor parte de la información redundante. Esta aleatoriedad hace que los datos residuales sean adecuados para una mayor compresión mediante transformación y cuantificación.

  • Una vez que los datos residuales se procesan mediante la transformada de coseno discreta entera (IDCT) y la cuantificación, la cantidad de datos se puede reducir significativamente. La transformación convierte la información espacial bidimensional del residual en información de frecuencia, mientras que la cuantificación reduce la precisión de estos coeficientes y elimina detalles que son imperceptibles para el ojo humano.

El propósito de codificar datos residuales es reducir aún más la tasa de bits de los datos de video manteniendo la calidad de la imagen tanto como sea posible. Al mismo tiempo, la compresión eficaz de los datos residuales es crucial para la eficiencia de la codificación H.264, porque afecta directamente la calidad del vídeo codificado y el ancho de banda de transmisión o almacenamiento requerido.

2.3 Conceptos relacionados con la codificación de entropía e interpretación ampliada.

La codificación de entropía es una técnica de compresión de datos sin pérdidas basada en el concepto de entropía de la información y tiene como objetivo representar datos con la menor cantidad de bits posible. La idea central de la codificación entrópica es asignar menos bits a los símbolos que tienen más probabilidades de ocurrir y asignar más bits a los símbolos que aparecen con menos frecuencia. De esta manera, se reduce el espacio de almacenamiento o el ancho de banda de transmisión deseado porque se reduce la tasa de bits promedio de todo el conjunto de datos.

La codificación de entropía se utiliza a menudo para texto y algunos tipos específicos de compresión de datos, y puede mejorar significativamente la eficiencia de la compresión, especialmente cuando los datos tienen una distribución de probabilidad significativamente no uniforme. En la codificación de compresión de video, los métodos de codificación de entropía más estrechamente relacionados con la compresión de video incluyen principalmente los siguientes:

  • Codificación Huffman : La codificación Huffman es una tecnología básica de codificación de entropía utilizada en muchos estándares de compresión de video (como las series JPEG y MPEG). Asigna un código de longitud variable a cada símbolo a través de un árbol de Huffman construido en función de la frecuencia de aparición del símbolo.
  • Codificación aritmética : La codificación aritmética se adopta en algunos estándares de compresión de vídeo (como JPEG-LS, JPEG 2000). Utiliza un intervalo fraccionario para representar la distribución de probabilidad de los datos de entrada y generalmente proporciona una mejor eficiencia de compresión que la codificación Huffman.
  • Codificación aritmética binaria adaptativa basada en contexto (CABAC) : CABAC es el método de codificación de entropía utilizado en los estándares de compresión de vídeo H.264/AVC y H.265/HEVC. Combina los conceptos de codificación aritmética y adaptación de contexto, y puede ajustar dinámicamente el modelo probabilístico de codificación en función de información contextual, logrando así una codificación más eficiente.
  • Codificación de longitud variable (VLC) : VLC es un término general utilizado para describir métodos de codificación, incluida la codificación Huffman, que asignan códigos de longitud variable a símbolos. En la compresión de video, VLC generalmente se refiere al método de codificación utilizado para representar coeficientes de transformación, etc.

En la compresión de video, la codificación de entropía es el paso de codificación final que se utiliza para codificar los datos residuales después de la intra e interpredicción. Los datos residuales son la diferencia entre los datos originales y los datos predichos y normalmente tienen menos energía y una distribución de probabilidad más desigual. Mediante la codificación de entropía, la velocidad de bits de estos datos residuales se puede reducir aún más, logrando así el propósito de comprimir datos de video.