Mi informacion de contacto
Correo[email protected]
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.
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.
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):
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.
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:
Pasos de ejecución de agrupación de cuadros H264:
Cuando se completa la agrupación, el problema de la compresión de predicción de cuadros comienza a resolverse.
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.
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)。
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.
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:
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.
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:
Interpretación de la redundancia temporal:
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:
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.
marco original: Se refiere a los cuadros de imagen originales realmente capturados en la secuencia de video.
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.
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:
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.