Compresión de vídeo http://www.infoab.uclm.es/asignaturas/42609/Te ma4/sld035.htm Estándares MPEG • • • Motion Pictures Expert Group Estándar ISO/IEC JTC1/SC29/WG11 MPEG 1: – El primer trabajo del grupo, iniciado en 1988 se concentró en la compresión de vídeo con velocidades bajas y adecuadas a dispositivos de almacenamiento tales como CD-ROM y transmisión a 1,554 y 2,048 Mbits/s • MPEG 2 – Método de codificación de señales audiovisuales para proporcionar una buena calidad sobre la base de la norma de televisión digital 601 del CCIR. • MPEG 4 – Desarrollado para aplicaciones de comunicaciones multimedia a muy bajo caudal, en las cuales se requiere la comunicación de información audiovisual. • MPEG 7 – Se basa en la realización de bases de datos de información multimedia que permitan la búsqueda de imágenes utilizando características como su color, textura o información de su forma o contorno de los objetos. 1 MPEG 1 • Estuvo basado inicialmente en el trabajo del grupo de expertos del ITU para videotelefonía y en el estándar H.261 • Para aumentar el factor de compresión, MPEG introdujo el concepto de predicción bidireccional, que consiste en el almacenamiento de imágenes pasadas y futuras para la predicción del cuadro (frame) presente. • Para conseguir esto, los cuadros en el flujo de bits codificado deben estar en orden diferente al orden de visionado. Esto fuerza la creación de la estructura llamada Grupo de cuadros (GOP). MPEG 1 • El conjunto de objetivos establecido para MPEG 1 fue el siguiente: – – – – – – – – – Acceso aleatorio Búsqueda rápida/rebobinado rápido Visionado inverso Sincronización audiovisual Robustez frente a errores Retardo de codificación/descodificación Editabilidad Compatibilidad de formatos Costes 2 MPEG 1: Características • • • • Los requerimientos de capacidad de edición total y acceso aleatorio condujeron a la introducción de cuadros codificados completamente como intra-cuadro, de forma periódica en el flujo de bits codificado. La codificación de estos cuadros con codificación intra-cuadro se basó en gran parte en el estándar JPEG. Para compensar la reducción del factor de compresión, debido a la introducción periódica de imágenes intra-codificadas, se introdujo la predicción bidireccional. El estándar fue finalmente diseñado para conseguir compresiones óptimas en el rango entre 1 y 1.5 Mbps, para secuencias de vídeo progresivo en color (MPEG 1 no soporta vídeo entrelazado), tanto para sistemas NTSc como PAL, con formato de muestreo 4:2:0 y un espacio de colores YCbCr. Para este formato de entrada, el factor de compresión alcanzado por el estándar MPEG 1 es de 26:1 aproximadamente. 3 MPEG 1: Parámetros restringidos • El conjunto de parámetros restringidos del flujo de bits que como mínimo debe soportar cada descodificador compatible con MPEG 1 son: Parámetros Valor máximo Tamaño horizontal 768 píxeles Tamaño vertical 576 líneas Número macrobloques 396 Caudal de píxeles 396x25 MB/s Caudal de cuadros 30 cuadros/s Rango de los vectores de movimiento ± 64 píxeles Tamaño del buffer de entrada 327.680 bits Caudal de bits 1.856 kbits/s MPEG-1 Residuo de movimiento compensado • Con el método de compensación de movimiento, se crea una imagen de predicción con la imagen actual, o nueva, y la imagen precedente (ya codificada y en memoria) mediante la estimación del movimiento entre las dos imágenes y una compensación para el movimiento. • La diferencia entre la imagen actual y la predicción que se ha hecho para esta imagen actual es lo que se llama residuo de movimiento compensado. • En una secuencia típica de vídeo, este residuo, contendrá valores muy pequeños y próximos a cero, que se codificarán con unos pocos bits. • Para la estimación del movimiento se supone que en las imágenes de vídeo consecutivas, aparecen los mismos componentes de la escena aunque posiblemente en diferentes posiciones (movimiento traslación). 4 5 MPEG 1: Predicción bidireccional • La predicción bidireccional realiza el proceso de estimación de movimiento dos veces: – Una en una imagen pasada – Y otra en una imagen futura, – De forma que obtiene dos vectores de movimiento y dos predicciones para cada macrobloque. • El codificador puede obtener el residuo de movimiento compensado utilizando: – Cualquiera de las dos predicciones (pasada o futura) – O un promedio de ellas, eligiendo la estimación mas eficiente de las tres. • En la terminología MPEG, este proceso es referido como codificación intercuadro bidireccional o interpolada. 6 MPEG 1: Predicción bidireccional • Cuando la compensación es hacia delante o hacia atrás, sólo se genera un vector de movimiento. • Cuando la compensación es interpolada se generan dos vectores de movimiento, uno para cada cuadro de referencia pasado y futuro. • Tanto si se genera uno como si se generan dos, estos son codificados diferencialmente con respecto a los vectores de movimiento del macrobloque anterior. • Posteriormente se les aplica una codificación Huffman para ser transmitidos o almacenados junto al residuo, para este macrobloque. MPEG 1: Tipos de cuadros • Cuadros I (Intra) – Utilizan únicamente información contenida en el propio cuadro y no dependen de la información de otros cuadros (codificación intracuadro). – Los cuadros I proporcionan un mecanismo para el acceso aleatorio al flujo de bits de vídeo comprimido pero proporcionan solamente una moderada compresión. • Cuadros P (Predicted) – Utilizan para la codificación, la información contenida en el cuadro previo, I o P, mas próximo (codificación intercuadro). – A esta técnica se le conoce como predicción hacia delante y proporciona un mayor grado de compresión. • Cuadros B (Bidirectional o Interpolated) – Utilizan la información contenida en los cuadros pasado y futuro, I o P, mas próximos. – A esta técnica se le conoce como predicción bidireccional o interpolada y proporciona el mayor grado de compresión. – Estos cuadros no propagan errores ya que nunca se utilizan como referencia, al contrario que las imágenes I y P. 7 8 MPEG 1: Estructura de capas • La estructura está definida para hacer del flujo de bits una secuencia de entidades individuales entre sí. • Cada capa tiene una cabecera con información, seguida de un número de elementos de la siguiente capa: – Así, cada secuencia es precedida de una cabecera de secuencia seguida de un número de GOPs, y por último una marca de fin de secuencia. – Cada GOP es precedido por una cabecera de inicio de GOP, y después por un número de cuadros. – Cada cuadro a su vez se descompone en un número de franjas – Cada franja por un número de macrobloques. – Finalmente, los macrobloques se dividen en varios bloques. • Cada cabecera de inicio coincide con un código que está alineado al inicio de un byte para facilitar su detección, y que no se puede producir en ningún otro lugar durante la codificación. 9 MPEG 1: Estructura de capas Capas Significado funcional Secuencia de vídeo Secuencia completa visible con un formato determinado Grupo de cuadros Unidad mínima independientemente descodificable Cuadro Unidad primaria de display Franja Unidad de sincronización. Permite resincronización ante errores Macrobloque Unidad de compensación de movimiento Bloque Unidad de transformada DCT MPEG 1: Estructura de capas Capa de secuencia • Define una secuencia completa de vídeo codificada, como por ejemplo una película o un programa de TV. • Los principales parámetros (sintaxis) que se pueden definir en la capa de secuencia son: – – – – Las dimensiones (horizontal y vertical) de los cuadros La razón de aspecto de los píxeles La frecuencia de cuadro Las matrices de cuantificación 10 MPEG 1: Estructura de capas Capa de Grupo de Cuadros (GOP) • Un GOP debe empezar (en orden de presentación) con un cuadro B o I. En caso de éste último el GOP se denomina cerrado. • Si el GOP no es cerrado entonces necesitará el último cuadro I o P del GOP anterior para ser descodificado correctamente. • El estándar no define ningún método para elegir la estructura de GOP, pero en la mayoría de las aplicaciones, éste suele tener una longitud de 12 (PAL) o 15 (NTSC), y dos cuadros B entre cada par de cuadros I o P. • Los parámetros (sintaxis) que se pueden definir en esta capa, son principalmente dos variables booleanas – Para indicar si el GOP es cerrado, – Y por otra para indicar si el GOP necesita el último cuadro I o P del anterior GOP para descodificar el GOP actual. 11 MPEG 1: Estructura de capas Capa de cuadro • La capa de cuadro tiene toda la información necesaria para formar una imagen. • Los parámetros (sintaxis) que se pueden definir en la cabecera de esta capa son: – La referencia temporal del cuadro. – El tipo de codificación (I, P o B) – El rango de los vectores de movimiento entre otros parámetros. MPEG 1: Estructura de capas Capa de franja • Esta capa que es innecesaria por si misma para el correcto funcionamiento del codificador, permite hacer al sistema mas robusto frente a errores. • En el comienzo de cada una de las franjas, las predicciones para los vectores de movimiento y el coeficiente de continua (DC) de los bloques intra (se codifican diferencialmente) son puestos a cero. • La cabecera de franja permite al descodificador resincronizarse ante un error en la transmisión o en la descodificación, perdiendo parcialmente la franja donde se produjo el error en la descodificación, desde el error hasta la siguiente cabecera de franja, pero no el cuadro entero. 12 MPEG 1: Estructura de capas Capa de franja • El tamaño horizontal (de izquierda a derecha y de arriba abajo) de las franjas puede ser cualquiera, siendo el tamaño elegido en la mayoría de las aplicaciones una franja horizontal completa. • El tamaño vertical es siempre de 16 píxeles, puesto que una franja está compuesta de una serie macrobloques y estos son de 16 x 16 píxeles. • Los parámetros (sintaxis) que se definen en la cabecera de franja son: – La posición de la franja dentro del cuadro. – El factor de escala para la cuantificación (entre 1 y 31), lo que más tarde llamaremos factor de escala Q de cuantificación o MQUANT. Este factor se pueden definir a este nivel o a nivel de macrobloque. MPEG 1: Estructura de capas Capa de Macrobloque (MB) • El MB es la unidad básica de compensación del movimiento. Los vectores de movimiento y el residuo de movimiento compensado, son obtenidos en el codificador en el módulo de estimación de movimiento. • Cada MB está formado por: – cuatro bloques de luminancia – y 2 de crominancia. • Algunos de los parámetros (sintaxis) más importantes de la capa MB son: – – – – – La posición de MB en la franja El factor de escala Q de cuantificación (MQUANT) El patrón de codificación de los bloques del MB. El tipo de MB. Los vectores de movimiento para el MB. 13 MPEG 1: Estructura de capas Capa de Macrobloque • La sintaxis de MPEG-1 permite a cada MB ser codificado utilizando diferentes factores de escala Q de cuantificación. • Este factor es variado por el codificador, entre 31 niveles (desde 1 a 31) acorde al estado de ocupación del buffer de salida, para que éste pueda ser drenado al caudal constante, sin que se quede vacío o se desborde. • Hay varios tipos de codificación de los MB para un tipo de cuadro determinado: – De acuerdo con la forma en que se realizó la compensación de movimiento, si es que la hubo, – Si tienen un nuevo valor de MQUANT para la cuantificación – O si los bloques van codificados o no, 14 MPEG 1: Estructura de capas Capa de Bloque • Un bloque es una matriz de 8 x 8 valores que contienen: – O bien valores de píxeles del cuadro, tal cual, si pertenece a un MB que se decidió que fuese Intra-codificado, – O bien valores del residuo del movimiento compensado si se decidió que fuese Inter-codificado. • Sobre estos bloques que todavía presentan redundancia espacial, se aplicara: – – – – • DCT Cuantificación zig-zag RLE. Hay dos tipos de matrices de cuantificación, – una para bloques intra-codificados – y otra para bloques inter-codificados; estas fueron definidas en la capa de secuencia. • Estas matrices son diferentes porque: – los bloques intra contienen valores de la imagen (cuantificación con menor precisión acorde a las características psicovisuales del ojo humano), – mientras que los bloques inter contienen residuos de movimiento compensado. MPEG 1: Estructura de capas Capa de Bloque: Bloques Intra • El coeficiente DC: se cuantifica de forma diferente a como lo hacen los coeficientes AC. El coeficiente DC es cuantificado dividiéndolo por un valor de cuantificación 8 y redondeado después al entero mas próximo. • Para los coeficientes AC la cuantificación se realiza mediante la utilización del coeficiente MQUANT y redondeando después al entero mas próximo. 15 MPEG 1: Estructura de capas Capa de Bloque: Bloques Intra • En los bloques intra, el coeficiente DC se trata de manera diferente al resto; este coeficiente se codifica diferencialmente con respecto al coeficiente DC del bloque anterior. • Este valor que puede estar en el rango [-2047,2047], es codificado mediante un par tamaño/amplitud donde el tamaño indica una de las 12 categorías en que se divide el rango, que a su vez significa el número de bits necesario para codificar la amplitud. • El tamaño es codificado mediante código Huffman, mientras que la amplitud es la representación binaria del valor diferencial. • El resto de coeficientes AC se ordenan en zig-zag y se aplica la codificación por entropía. MPEG-1: Estructura de capas Capa de bloque: Inter •Tanto los coeficientes AC como el DC se cuantifican de la misma manera; utilizando el coeficiente MQUANT. •Para el caso de los bloques inter, tanto el coeficiente DC como los coeficientes AC se codifican igual, se ordenan en zig-zag y se les aplica Huffman. 16 MPEG-1: Detalles • Cuando se emplea la codificación de entropía, – las palabras del código son de longitud variable en función de la estructura del vídeo – es decir, la velocidad binaria no es constante. • Si se pretende que la salida del codificador sea un flujo de bits constante, es necesario intercalar un buffer, para que el flujo de bits se transmita a una velocidad constante, acorde al canal que se vaya a utilizar. • Para evitar que el buffer se sature o se vacíe, mediante un bucle de control se envían datos al cuantificador para que éste varíe su MQUANT a nivel de Macrobloque. • Si la velocidad binaria disminuye apreciablemente, la codificación puede hacerse mas precisa para aumentarla, lo cual se consigue disminuyendo el valor de MQUANT. Si por el contrario, el buffer está cerca de su capacidad máxima, se dan instrucciones al cuantificador para que éste codifique los valores con menor precisión, lo cual se consigue aumentando el valor MQUANT. 17 MPEG-1: Detalles • • • • • El descodificador es simplemente el lazo de realimentación del codificador, salvo que no incorpora el módulo de la estimación del movimiento (el mas costoso computacionalmente), por no serle necesario. A la salida se sitúa un buffer para reordenar los cuadros en el orden de presentación acorde a la referencia temporal transportada en el cuadro. Por último hay que hacer notar que el par codificador/descodificador es un par asimétrico. El precio del coste del codificador, será mucho mas elevado ya que requerirá sistemas basados en hardware más potente, mientras que el precio del descodificador será asequible para la mayoría del público. En aplicaciones VOD o televisión digital, harán falta: unos pocos codificadores (grandes compañías que ofrecen estos servicios), y muchos descodificadores de precio asequible (público). 18