Por supuesto, es incorrecto contrastar MPEG-4 y H.264, ya que H.264 y MPEG-4 (Parte 10) son lo mismo. Sin embargo, resultó más conveniente escribir la parte principal del artículo, entendiendo MPEG-4 solo como MPEG-4 (parte 2).
Estructura MPEG-4 y un poco de historia Los algoritmos de codificación de vídeo juegan un papel importante en el mundo moderno. Se utilizan para la presentación, compresión, almacenamiento, transmisión y procesamiento digital de información de video en una amplia variedad de sistemas. La mayoría de estos algoritmos recientes están asociados con las actividades de dos organizaciones: MPEG (Motion Picture Experts Group), que opera bajo los auspicios de la Organización Internacional de Normalización (ISO), y VCEG (Video Coding Experts Group), que opera como parte del Unión Internacional de Telecomunicaciones (UIT). El primer grupo produce estándares MPEGxx (-1, -2, -4, -7, -21), el segundo grupo crea recomendaciones ITU Hxx (.261, .263, .263+, .263++, .264). Este artículo analizará los últimos desarrollos de estos grupos en el campo de la codificación de video: el estándar MPEG-4 (parte 2) y la recomendación H.264. La última recomendación es tanto un estándar MPEG-4 (parte 10) como un estándar ISO/IEC 14496-10. Esta combinación de dos estándares fue posible gracias al trabajo conjunto de los grupos MPEG y VCEG en el marco del proyecto Joint Video Team. La Tabla 1 muestra los antecedentes de la creación de estos estándares. Tabla 1 – Recomendaciones de la UIT y estándares MPEG
|
Cabe señalar que el núcleo del estándar MPEG-4 (Parte 2) se basó en la recomendación H.263. Por lo tanto, el último estándar en el campo de la codificación de vídeo puede llamarse MPEG-4 (parte 10), ISO/IEC 14496-10 o H.264/AVC. La abreviatura AVC significa codificación de vídeo avanzada. Aquí está el contenido de las partes restantes del estándar MPEG-4: Parte 1 – Descripción del sistema: escenas, combinación de audio, vídeo e información de servicio, sincronización, gestión del buffer, gestión de derechos de propiedad intelectual. . Parte 3 – Codificación de audio. Parte 4 – Pruebas conformes: condiciones, procedimientos, flujos de bits. Parte 5: Software disponible públicamente que implementa los requisitos del estándar de acuerdo con el estándar. Parte 6 – Protocolos para distribuir información multimedia. Parte 7 – Software de codificación de vídeo optimizado (informe técnico, no estándar). Parte 8: Especifica mecanismos para transmitir secuencias MPEG-4 a través de redes IP. Parte 9 – Descripción de la implementación de MPEG-4 en VHDL (informe técnico, no estándar). Parte 11 – Mecanismo para describir una escena. Parte 12 – Formato de archivo multimedia ISO. Parte 13 – Adiciones relativas a la gestión de los derechos de propiedad intelectual. Parte 14 – Formato de archivo MPEG-4 (Parte 2). Parte 15 – Formato de archivo MPEG-4 (Parte 10). Parte 16: Adiciones a la codificación de animaciones. En una presentación adicional, para reducir la confusión, llamaremos al estándar MPEG-4 (parte 2) el estándar MPEG-4 y al estándar MPEG-4 (parte 10) el estándar H.264.
Cómo el pragmatismo derrotó al romanticismo Si observamos la Tabla 1, veremos que el estándar de codificación de vídeo MPEG-2, que sigue siendo popular hoy en día (por ejemplo, se utiliza en DVD), se desarrolló en 1996. ¿Por qué se desarrolló el estándar MPEG-4? Oh, había grandes razones para esto… En primer lugar, ¿por qué limitarse a codificar algunas imágenes rectangulares? ¡Dame una imagen de cualquier forma! ¿Qué pasa si necesitamos codificar no solo imágenes naturales, sino también sintéticas, así como híbridos de la primera y la segunda? Después de todo, ¡la realidad virtual está a la vuelta de la esquina! ¿Cómo no cuidar a los astrónomos y otros consumidores para quienes 8 bits por componente de color no son nada? De todos modos, ¿qué clase de idea retrógrada es tratar el vídeo como una secuencia de imágenes estáticas rectangulares? ¡Danos un enfoque objetivo! Codificaremos objetos que interactúan, superficies tridimensionales. ¿El aparato Superduper (wavelets) no es adecuado para la codificación de vídeo? Bueno, usémoslos para codificar imágenes fijas. Bueno, que MPEG-4 sea para vídeo: wavelets, después de todo. Probablemente así es como los entusiastas, los creadores de MPEG-4, razonaron y desarrollaron un estándar verdaderamente revolucionario. Es cierto que los detalles técnicos de la decodificación han aumentado de 17 páginas para H.261 a 539 páginas para MPEG-4, aunque la presentación aquí está lejos de ser tan detallada. Pero los principios de codificación de video no han cambiado durante muchos años, solo se están perfeccionando y perfeccionando. Es cierto que había hasta 19 perfiles de desarrollador (de hecho, es necesario desarrollar 19 algoritmos de decodificación). Pero el principal fracaso relativo de la norma fue que sus creadores no tuvieron en cuenta las necesidades del mercado. No hay muchas aplicaciones que requieran codificar objetos de forma arbitraria, alta profundidad de bits de color, muestreo de color no estándar y otras cosas exóticas. Pero a los usuarios les encanta crear videoclips digitales, enviarlos a través de la red, utilizar la televisión digital y los servicios de vídeo a la carta. Por supuesto, para estas aplicaciones MPEG-4 resultó más eficaz que su predecesor, pero aquí también hubo problemas con la pureza de las licencias de las soluciones. En general, dos años después de la adopción de MPEG-4, MPEG se asoció con VCEG y creó un nuevo estándar: H.264. La piedra angular de este estándar es la pureza de las soluciones bajo licencia y la máxima eficiencia debido al rechazo de todos los exóticos mencionados anteriormente.
Principales características de H.264 Las áreas de aplicación esperadas del estándar H.264 son las siguientes: radiodifusión (cable, cable módem, satélite, DSL, TV); almacenamiento en diversos soportes (DVD, discos magnéticos); videoconferencia (ISDN, Ethernet, LAN, DSL, redes de radio, redes móviles, módems); servicios como vídeo a la carta; Servicios MMS (DSL, RDSI). La eficiencia del algoritmo en el estándar H.264 significa un alto grado de compresión de vídeo con una calidad aceptable y la robustez del flujo de bits ante errores/pérdidas de transmisión. El ascetismo de H.264, a diferencia de MPEG-4, se manifiesta en el hecho de que aquí sólo hay tres perfiles: Baseline — para videoconferencias; Extendido: para transmisión de video a través de la red; Principal: para almacenar y transmitir vídeo. Cabe destacar que el perfil Extendido cubre completamente el perfil Baseline, mientras que el perfil Principal se ubica algo al costado. El estándar H.264 implementa nuevas soluciones técnicas importantes como: 1) Para mejorar la predicción: compensación de movimiento basada en pequeños bloques de tamaño ajustable adaptativamente; Precisión de compensación de movimiento de hasta ¼ cuenta atrás; compensación de movimiento basada en uno o más marcos de referencia; independencia del orden de visualización de los fotogramas del orden de los fotogramas de referencia; la capacidad de utilizar cualquier marco como referencia; predicción utilizando factores de ponderación; predicción espacial directa basada en codificación intracuadro; filtrado cíclico para eliminar el efecto de bloqueo. 2) Otras soluciones que aumentan la eficiencia de la codificación: conversión de bloques pequeños (4 x 4); transformación de bloques jerárquicos; algoritmos de conversión rápida de números enteros; codificación aritmética; codificación de entropía adaptativa al contexto. 3) Para aumentar la inmunidad al ruido y la flexibilidad de transmisión a través de diversos medios: nueva estructura de muchos parámetros; Estructura sintáctica NAL que le permite abstraer datos de servicios de red a partir de datos de servicios de codificación; tamaño de rebanada ajustable de manera flexible; orden arbitrario de rebanadas; introducción de cortes repetidos en el flujo; pedido de datos; conmutación de flujo basada en el uso de sincronización SI/SP. Al igual que los estándares de codificación de vídeo anteriores, H.264 define tres cosas: 1) sintaxis de flujo de bits de representación de vídeo; 2) semántica de este flujo; 2) método de decodificación para reconstrucción de vídeo. Es decir, el estándar define sólo las secuencias de salida, pero no los principios para construir un codificador de señal de vídeo. Esto permite a los fabricantes competir para crear el mejor codificador. El esquema de codificación de vídeo de acuerdo con el estándar H.264, en general, repite los esquemas de codificación de estándares anteriores. La única diferencia es la presencia en la última etapa del procesamiento para eliminar el bloqueo. El algoritmo de codificación (no se describe explícitamente en el estándar) consta de cuatro componentes principales: compensación de movimiento y resta del fotograma actual del de referencia; transformada de coseno discreta (DCT) de un marco diferencial; cuantificación de coeficientes de conversión; codificación entrópica de coeficientes cuantificados. Echemos un vistazo más de cerca a estos componentes.
Compensación de movimiento La alta eficiencia de H.264 se debe a mejoras en cada uno de los componentes. La energía del marco diferencial depende de una compensación efectiva del movimiento. Cuanto más exactamente se compense este movimiento, menor será la energía y, por lo tanto, mayor será la relación de compresión. Sería posible calcular vectores de movimiento para cada píxel, pero esto es difícil, por lo que se calculan para bloques rectangulares. La ventaja aquí es que, dado que la imagen también es rectangular, se puede aplicar una transformación como DCT más adelante. Las desventajas son obvias: los límites de los objetos generalmente no se encuentran en un rectángulo y el movimiento, por regla general, tampoco es horizontal ni vertical. Sin embargo, este es actualmente el único método. A medida que aumenta el tamaño del bloque, aumenta la eficiencia computacional y disminuye la cantidad de bits asignados a codificar vectores de movimiento. Sin embargo, al mismo tiempo, la precisión de la compensación se deteriora y, en consecuencia, aumenta la energía de la imagen diferencial. Por lo tanto, existe la necesidad de optimización, y en H.264 se implementa una selección adaptativa del tamaño de bloque de 4 x 4 a 16 x 16 píxeles y la precisión del vector aumenta a ¼ píxel (debido a la interpolación preliminar). Si los fotogramas son completamente diferentes entre sí, entonces no se utiliza la compensación de movimiento, sino la codificación dentro del fotograma.
Transformación y cuantificación de cuadros de diferencia Como es sabido, se pueden utilizar varias transformaciones ortogonales para convertir una imagen en la región espectral. El objetivo de la transformación es redistribuir la energía de la imagen: la mayor parte se concentra en un pequeño número de coeficientes. La transformada wavelet se considera la más efectiva en este sentido entre las rápidas. Esto es lo que se utiliza en MPEG-4 para codificar imágenes fijas. Sin embargo, la transformada wavelet requiere más memoria (se debe recordar el cuadro completo) y no encaja bien con la compensación de movimiento en bloque, por lo que no se utiliza para la codificación de vídeo. MPEG-4, al igual que MPEG-2 (así como JPEG), utiliza DCT con un tamaño de bloque básico de 8 x 8. H.264 utiliza una transformación ortogonal entera sobre bloques de tamaño 4 x 4, que se aproxima, dice DCP. Como resultado, el núcleo de transformación utiliza sólo sumas, restas y desplazamientos. El escalado posterior requiere una multiplicación por un factor para cada píxel, pero esta operación puede atribuirse a una mayor cuantificación. Todos los cálculos aritméticos son de 16 bits, es decir, se pueden realizar en un microcontrolador económico. El propósito de la cuantificación es reducir muchos valores de coeficientes a una pequeña cantidad de valores diferentes. Esto normalmente se logra dividiendo y redondeando el resultado. Sin embargo, los coeficientes de cuantificación en H.264 se eligen para evitar divisiones computacionalmente complejas (en su lugar, se realizan multiplicación, acumulación y desplazamiento a la derecha). Después de la cuantificación, los coeficientes se reordenan. En MPEG-4, se trata de un escaneo en zigzag para bloques de 8 x 8 o del uso de una estructura de árbol nulo para los coeficientes wavelet. H.264 realiza escaneo en zigzag para bloques de 4 x 4
.Codificación de entropía y generación de flujo de bits El propósito de la codificación entrópica es designar una secuencia de símbolos (bits) que ocurre con mayor frecuencia con un código más corto. MPEG-4 hace esto realizando primero la codificación de longitud de ejecución (RLE) y luego aplicando la codificación de velocidad variable utilizando tablas de Huffman precalculadas. Cabe señalar que el codificador Huffman es sensible a errores en el canal de transmisión. Además, es necesario que el codificador/decodificador tenga las mismas tablas. En H.264, dependiendo del perfil, se utilizan códigos Golomb exponenciales o un codificador aritmético sensible al contexto. La ventaja de un codificador aritmético es una mayor relación de compresión, ya que un carácter se puede codificar en un número fraccionario de bits, mientras que un codificador Huffman sólo se puede codificar en un número entero de bits. Como transporte se puede utilizar MPEG-2, cuya parte 1 define el procedimiento para combinar datos de vídeo, audio y servicios en un solo flujo. Otra solución es utilizar el protocolo de tiempo real (RTP). La estructura NAL del flujo H.264 es ideal para la transmisión de paquetes según este protocolo. Otra opción es utilizar el estándar MPEG-4 parte 6
¿Cuál es mejor? Desde la llegada de H.264, se han realizado numerosas comparaciones entre este estándar y MPEG-4. Los resultados generalmente mostraron una ganancia de 1 a 3 dB con respecto al estándar H.264 en una amplia gama de velocidades de codificación. Visualmente, el vídeo en el estándar H.264 también se ve mejor (en gran parte debido al uso de un filtro de desbloqueo). Aquí hay un resultado típico:
|