Conocimientos básicos de codificación de video H.264

1. La historia del desarrollo de
   la tecnología de codificación de video La tecnología de codificación de video es básicamente la introducción de dos series de estándares internacionales de codificación de video, MPEG-x formulado por ISO / IEC y H.26x formulado por ITU-T. Desde sugerencias de codificación de video H.261 hasta H.262 / 3, MPEG-1/2/4, etc., existe un objetivo común que se persigue continuamente, es decir, obtener la mayor cantidad posible con la menor tasa de bits (o capacidad de almacenamiento) posible Buena calidad de imagen. Además, a medida que aumenta la demanda del mercado de transmisión de imágenes, el problema de cómo adaptarse a las características de transmisión de los diferentes canales se hace cada vez más evidente. Por tanto, IEO / IEC e ITU-T, dos importantes organizaciones internacionales de normalización, formularon conjuntamente el nuevo estándar de vídeo H.264 para resolver estos problemas.
    H.261 es la primera sugerencia de codificación de video que tiene como objetivo estandarizar la tecnología de codificación de video en aplicaciones de videoconferencia y televisión en redes ISDN. El algoritmo que utiliza combina un método de codificación híbrido que puede reducir la redundancia temporal con la predicción entre cuadros y reducir la redundancia espacial con la transformada DCT. Coincidiendo con el canal ISDN, su tasa de código de salida es p × 64 kbit / s. Cuando el valor de p es pequeño, solo se pueden transmitir imágenes con baja definición, lo que es adecuado para llamadas de TV cara a cara; cuando el valor de p es grande (como p> 6), se pueden transmitir imágenes de TV de conferencia con mejor definición. H.263 sugiere un estándar de compresión de imágenes de baja tasa de bits, que técnicamente es una mejora y expansión de H.261, y admite aplicaciones con una tasa de bits inferior a 64 kbit / s. Pero, de hecho, H.263 y posteriores H.263 + y H.263 ++ se han desarrollado para admitir aplicaciones de tasa de bits completa. Se puede ver en el hecho de que admite muchos formatos de imagen, como Sub-QCIF, QCIF , CIF, 4CIF e incluso 16CIF y otros formatos.
    La tasa de código del estándar MPEG-1 es de aproximadamente 1,2 Mbit / s, y puede proporcionar 30 fotogramas de imágenes de calidad CIF (352 × 288). Está diseñado para el almacenamiento y la reproducción de vídeo en CD-ROM. El algoritmo básico de la parte de codificación de video estándar MPEG-1 es similar a H.261 / H.263, y también se adoptan medidas tales como predicción entre cuadros con compensación de movimiento, DCT bidimensional y codificación de longitud de ejecución VLC. Además, se introducen conceptos como intratrama (I), trama predictiva (P), trama predictiva bidireccional (B) y trama DC (D) para mejorar aún más la eficiencia de codificación. Sobre la base de MPEG-1, el estándar MPEG-2 ha realizado algunas mejoras para mejorar la resolución de imagen y la compatibilidad con la televisión digital. Por ejemplo, la precisión de su vector de movimiento es de medio píxel; en operaciones de codificación (como estimación de movimiento y DCT) Distinguir "marco" y "campo", introducir tecnologías de escalabilidad de codificación, como escalabilidad espacial, escalabilidad temporal y escalabilidad de la relación señal / ruido. El estándar MPEG-4 introducido en los últimos años ha introducido la codificación basada en objetos audiovisuales (AVO: Audio-Visual Object), que ha mejorado enormemente las capacidades interactivas y la eficiencia de codificación de las comunicaciones de vídeo. MPEG-4 también ha adoptado algunas tecnologías nuevas, como la codificación de formas, DCT adaptativo, codificación de objetos de vídeo de formas arbitrarias, etc. Pero el codificador de video básico de MPEG-4 todavía pertenece a un tipo de codificador híbrido similar al H.263.
    En resumen, la recomendación H.261 es una codificación de video clásica, H.263 es su desarrollo y la reemplazará gradualmente en la práctica, utilizada principalmente en comunicaciones, pero las numerosas opciones de H.263 a menudo hacen que los usuarios se sientan perdidos. La serie de estándares MPEG ha evolucionado desde aplicaciones para medios de almacenamiento hasta aplicaciones que se adaptan a medios de transmisión. El marco básico de su codificación de video central es consistente con H.261. La llamativa "codificación basada en objetos" de MPEG-4 se debe en parte a Hay obstáculos técnicos y es difícil de aplicar universalmente. Por lo tanto, la nueva propuesta de codificación de video H.264 desarrollada sobre esta base supera las debilidades de las dos, introduce un nuevo método de codificación en el marco de la codificación híbrida, mejora la eficiencia de la codificación y se enfrenta a aplicaciones prácticas. Al mismo tiempo, fue formulado conjuntamente por las dos principales organizaciones internacionales de normalización y sus perspectivas de aplicación deben ser evidentes.

Dos, introducción a H.264
  H.264 es un nuevo estándar de codificación de video digital desarrollado por el equipo de video conjunto (JVT: equipo de video conjunto) de VCEG (Grupo de expertos en codificación de video) de ITU-T y MPEG (Grupo de expertos en codificación de imágenes en movimiento) de ISO / IEC. Es parte 10 de ITU-T's H.264 y ISO / IEC's MPEG-4. La solicitud de borradores comenzó en enero de 1998. El primer borrador se completó en septiembre de 1999. El modelo de prueba TML-8 se desarrolló en mayo de 2001. La placa FCD de H.264 se aprobó en la quinta reunión de JVT en junio de 2002. . Publicado oficialmente en marzo de 2003.
    Al igual que el estándar anterior, H.264 también es un modo de codificación híbrido de DPCM más codificación de transformación. Sin embargo, adopta un diseño simple de "retorno a lo básico", sin muchas opciones, y obtiene un rendimiento de compresión mucho mejor que H.263 ++; refuerza la adaptabilidad a varios canales, adopta una estructura y sintaxis "amigables con la red", Propicia para el procesamiento de errores y pérdida de paquetes; una amplia gama de objetivos de aplicación para satisfacer las necesidades de diferentes velocidades, diferentes resoluciones y diferentes ocasiones de transmisión (almacenamiento); su sistema básico es abierto y no se requieren derechos de autor para su uso.
    Técnicamente, hay muchos aspectos destacados en el estándar H.264, como codificación de símbolos VLC unificada, estimación de desplazamiento multimodo de alta precisión, transformación de enteros basada en bloques 4 × 4 y sintaxis de codificación en capas. Estas medidas hacen que el algoritmo H.264 tenga una eficiencia de codificación muy alta, con la misma calidad de imagen reconstruida, puede ahorrar aproximadamente el 50% de la tasa de código que H.263. La estructura de flujo de código de H.264 tiene una gran adaptabilidad de red, aumenta las capacidades de recuperación de errores y puede adaptarse bien a las aplicaciones de red inalámbrica e IP.

3. Aspectos técnicos destacados de H.264
1. Diseño en capas
  El algoritmo H.264 se puede dividir conceptualmente en dos capas: la capa de codificación de video (VCL: Capa de codificación de video) es responsable de la representación eficiente del contenido de video, y la capa de abstracción de red (NAL: Capa de abstracción de red) es responsable de la forma apropiada requerida por la red Empaquetar y transmitir datos. Se define una interfaz basada en paquetes entre VCL y NAL, y el empaquetado y la señalización correspondiente son parte de NAL. De esta manera, VCL y NAL completan las tareas de alta eficiencia de codificación y facilidad de uso de la red, respectivamente.
    La capa VCL incluye codificación híbrida de compensación de movimiento basada en bloques y algunas características nuevas. Al igual que los estándares de codificación de video anteriores, H.264 no incluye funciones como preprocesamiento y posprocesamiento en el borrador, lo que puede aumentar la flexibilidad del estándar.
    NAL es responsable de utilizar el formato de segmentación de la red de capa inferior para encapsular los datos, incluido el entramado, la señalización del canal lógico, la utilización de la información de tiempo o la señal de fin de secuencia, etc. Por ejemplo, NAL admite el formato de transmisión de video en el canal de conmutación de circuitos y admite el formato de transmisión de video en Internet mediante RTP / UDP / IP. NAL incluye su propia información de encabezado, información de estructura de segmento e información de carga real, es decir, los datos de VCL de capa superior. (Si se utiliza tecnología de segmentación de datos, los datos pueden constar de varias partes).


2. Estimación de movimiento multimodo de alta precisión
   H.264 admite vectores de movimiento con precisión de 1/4 o 1/8 píxeles. Con una precisión de 1/4 de píxel, se puede usar un filtro de 6 tomas para reducir el ruido de alta frecuencia. Para vectores de movimiento con una precisión de 1/8 píxeles, se puede usar un filtro de 8 tomas más complejo. Al realizar la estimación de movimiento, el codificador también puede seleccionar filtros de interpolación "mejorados" para mejorar el efecto de predicción.
    En la predicción de movimiento H.264, un macrobloque (MB) se puede dividir en diferentes subbloques como se muestra en la Figura 2 para formar bloques de tamaño de 7 modos diferentes. Esta división detallada, flexible y multimodo es más adecuada para la forma de los objetos en movimiento reales en la imagen, lo que mejora en gran medida la precisión de la estimación del movimiento. De esta manera, se pueden incluir 1, 2, 4, 8 o 16 vectores de movimiento en cada macrobloque.
    En H.264, el codificador puede utilizar más de un cuadro anterior para la estimación del movimiento, que es la denominada tecnología de referencia de cuadros múltiples. Por ejemplo, si 2 o 3 cuadros son simplemente cuadros de referencia codificados, el codificador seleccionará un mejor cuadro de predicción para cada macrobloque objetivo e indicará para cada macrobloque qué cuadro se utiliza para la predicción.


3. La transformación de
    números enteros de 4 × 4 bloques H.264 es similar al estándar anterior. Utiliza codificación de transformación basada en bloques para el residuo, pero la transformación es una operación de entero en lugar de una operación de número real, y su proceso es básicamente similar al DCT. La ventaja de este método es que se permiten la misma transformación de precisión y la misma transformación inversa en el codificador y el decodificador, y es conveniente utilizar operaciones simples de punto fijo. En otras palabras, no hay "error de transformación inversa". La unidad de transformación son bloques de 4 × 4, en lugar de los bloques de 8 × 8 que se usaban comúnmente en el pasado. A medida que se reduce el tamaño del bloque de transformación, la división del objeto en movimiento es más precisa, de modo que no solo la cantidad de cálculo de la transformación es menor, sino que el error de convergencia en el borde del objeto en movimiento también se reduce en gran medida. Para que el método de transformación de bloques de tamaño pequeño no produzca la diferencia de escala de grises entre los bloques en el área suave más grande de la imagen, el coeficiente de CC de 16 bloques 4 × 4 de los datos de brillo del macrobloque intracuadro (cada bloque pequeño Uno, un total de 16) realiza la segunda transformación de bloque de 4 × 4 y realiza la transformación de bloque de 2 × 2 en los coeficientes de CC de 4 bloques de 4 × 4 de datos de crominancia (uno para cada bloque pequeño, 4 en total).
    Para mejorar la capacidad de control de la tasa de H.264, el cambio del tamaño del paso de cuantificación se controla en aproximadamente un 12,5%, en lugar de un aumento constante. La normalización de la amplitud del coeficiente de transformación se procesa en el proceso de cuantificación inversa para reducir la complejidad computacional. Para enfatizar la fidelidad del color, se adopta un tamaño de paso de cuantificación más pequeño para el coeficiente de crominancia.


4. La
    codificación de entropía VLC H.264 unificada tiene dos métodos, uno es usar VLC unificado (UVLC: Universal VLC) para todos los símbolos que se codificarán, y el otro es usar codificación aritmética binaria adaptativa de contenido ( CABAC: Codificación aritmética binaria adaptable al contexto). CABAC es opcional y su rendimiento de codificación es ligeramente mejor que UVLC, pero la complejidad computacional también es mayor. UVLC utiliza un conjunto de palabras de código de longitud ilimitada, y la estructura de diseño es muy regular y se pueden codificar diferentes objetos con la misma tabla de códigos. Este método puede generar fácilmente una palabra de código, y el decodificador puede identificar fácilmente el prefijo de la palabra de código, y UVLC puede obtener rápidamente una resincronización cuando se produce un error de bit.


5. La predicción dentro de la trama
    es el método de predicción entre tramas en la serie H.26x anterior y en los estándares de la serie MPEG-x. En H.264, la predicción intracuadro está disponible al codificar imágenes Intra. Para cada bloque de 4 × 4 (excepto por el tratamiento especial del bloque de borde), cada píxel se puede predecir con la suma ponderada diferente de los 17 píxeles codificados previamente más cercanos (algunos pesos pueden ser 0), es decir, este píxel 17 píxeles en la esquina superior izquierda del bloque. Obviamente, este tipo de predicción intracuadro no es a tiempo, sino a un algoritmo de codificación predictiva realizado en el dominio espacial, que puede eliminar la redundancia espacial entre bloques adyacentes y lograr una compresión más efectiva.
    
6. El
    borrador H.264 para entornos IP e inalámbricos incluye herramientas de eliminación de errores para facilitar la transmisión de video comprimido en un entorno con frecuentes errores y pérdida de paquetes, como la robustez de la transmisión en canales móviles o canales IP.
    Para resistir los errores de transmisión, la sincronización de tiempo en el flujo de video H.264 se puede lograr utilizando la actualización de la imagen dentro del cuadro, y la sincronización espacial es compatible con la codificación estructurada por segmentos. Al mismo tiempo, para facilitar la resincronización después de un error de bit, también se proporciona un cierto punto de resincronización en los datos de vídeo de una imagen. Además, la actualización del macrobloque intratrama y los macrobloques de referencia múltiples permiten que el codificador considere no solo la eficiencia de codificación, sino también las características del canal de transmisión al determinar el modo del macrobloque.
    Además de usar el cambio del tamaño del paso de cuantificación para adaptarse a la tasa de código de canal, en H.264, el método de segmentación de datos se usa a menudo para tratar el cambio de la tasa de código de canal. En términos generales, el concepto de segmentación de datos es generar datos de video con diferentes prioridades en el codificador para respaldar la calidad de servicio QoS en la red. Por ejemplo, se adopta un método de partición de datos basado en sintaxis para dividir los datos de cada cuadro en varias partes de acuerdo con su importancia, lo que permite descartar la información menos importante cuando el búfer se desborda. También se puede utilizar un método de partición de datos temporales similar, que se logra mediante el uso de múltiples marcos de referencia en marcos P y B.
    En la aplicación de la comunicación inalámbrica, podemos admitir el gran cambio de tasa de bits del canal inalámbrico cambiando la precisión de cuantificación o la resolución espacio / tiempo de cada cuadro. Sin embargo, en el caso de multidifusión, es imposible requerir que el codificador responda a velocidades de bits variables. Por lo tanto, a diferencia del método FGS (escalabilidad granular fina) utilizado en MPEG-4 (con menor eficiencia), H.264 usa tramas SP de conmutación de flujo en lugar de codificación jerárquica.

En cuarto lugar, la comparación de rendimiento H.264
    TML-8 es el modo de prueba de H.264, utilícelo para comparar y probar la eficiencia de codificación de video de H.264. El PSNR proporcionado por los resultados de la prueba ha demostrado claramente que, en comparación con el rendimiento de MPEG-4 (ASP: Advanced Simple Profile) y H.263 ++ (HLP: High Latency Profile), los resultados de H.264 tienen ventajas obvias.
    El PSNR de H.264 es obviamente mejor que el de MPEG-4 (ASP) y H.263 ++ (HLP). En una prueba de comparación de 6 velocidades, el PSNR de H.264 es 2dB más alto que MPEG-4 (ASP) en promedio. Es 3dB más alto que H.263 (HLP) en promedio. Las 6 velocidades de prueba y sus condiciones relacionadas son: velocidad de 32 kbit / s, velocidad de cuadro de 10 f / s y formato QCIF; velocidad de 64 kbit / s, velocidad de cuadro de 15 f / sy formato QCIF; velocidad de 128 kbit / s, 15 f / s Velocidad de fotogramas y formato CIF; velocidad de 256 kbit / s, velocidad de fotogramas de 15 f / sy formato QCIF; velocidad de 512 kbit / s, velocidad de fotogramas de 30 f / sy formato CIF; velocidad de 1024 kbit / s, velocidad de fotogramas de 30 f / sy formato CIF

Supongo que te gusta

Origin blog.csdn.net/ccsss22/article/details/108740767
Recomendado
Clasificación