Conceptos básicos de MPEG Decodificador vídeo MPEG-2 3 CONCEPTOS BÁSICOS DE MPEG (Moving Pictures Experts Group) 3.1 Introducción El Moving Picture Experts Group (Grupo de Expertos de Imágenes en Movimiento) referido comúnmente como MPEG, es un grupo de trabajo del ISO/IEC encargado de desarrollar estándares de codificación de audio y video. Desde su primera reunión (año 1988 en Ottawa, Canadá), el MPEG ha crecido hasta incluir 350 miembros de distintas industrias y universidades. La designación oficial del MPEG es ISO/IEC JTC1/SC29 WG11. MPEG es una de las técnicas de compresión de audio/vídeo más populares porque no es sólo un estándar, si no que es una familia de estándar que se pueden aplicar en diferentes aplicaciones pero todos basados en principios similares. MPEG ha normalizado los siguientes formatos de compresión y normas auxiliares: • MPEG-1: estándar inicial de compresión de audio y vídeo. Usado después como la norma para CD de vídeo, incluye popular formato de compresión de audio Capa 3 (MP3). • MPEG-2: normas para audio y vídeo para difusión con calidad de televisión. Utilizado para servicios de TV por satélite como DirecTV (Cadena estadounidense de televisión vía satélite de difusión directa), señales de televisión digital por cable y (con ligeras modificaciones) para los discos de vídeo DVD. • MPEG-3: diseñado originalmente para HDTV (Televisión de Alta Definición), pero abandonado posteriormente en favor de MPEG-2. • MPEG-4: expande MPEG-1 para soportar "objetos" audio/vídeo, contenido 3D, codificación de baja velocidad binaria y soporte para gestión de derechos digitales (protección de copyright). • MPEG-7: sistema formal para la descripción de contenido multimedia • MPEG-21: MPEG describe esta norma futura como un "marco multimedia". 29 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 3.2 Historia Podríamos decir que todo empieza en 1987 cuando el italiano Leonardo Chiariglione, que había pertenecido al comité consultivo internacional de radiocomunicaciones (CCIR, International Radio Consultative Comittee), era el encargado de la estandarización de la televisión de alta definición (HDTV, High Definition Television), pero se encontraba un tanto desilusionado por el fracaso en adoptar un único estándar internacional ya que Japón, Europa y Estados Unidos pugnaban por su propio formato. Ese año asistía al encuentro del grupo unido de expertos en imágenes (JPEG, Joint Pictures Experts Group) que había sido formado en 1982 por la organización de estándares internacionales (ISO, International Organization for Standardization) y por la comisión electrotécnica internacional (IEC, International Electrotechnical Comittee) y cuyo objetivo era establecer un conjunto de formatos que permitieran obtener una codificación eficiente de imágenes estacionarias, de uso público, que mitigaran la aparición de formatos propietarios. En este encuentro, Chiariglione quedó profundamente impresionado por lo que se podía lograr entre un grupo de expertos cuando no se manejaban intereses de ninguna industria. Así que se aproximo al director del grupo JPEG, el japonés Hiroshi Yoshuda, y le sugirió la creación de un grupo semejante al JPEG, que se encargara de estandarizar la codificación digital de las imágenes en movimiento. De esta manera, en 1988 y con Yoshuda como representante ante la ISO, la organización ISO/IEC crea el comité técnico unido sobre tecnologías de la información, subcomité 29, grupo de trabajo 11 (ISO/IEC JTC1/SC29/WG11), más conocido como MPEG, bajo la dirección de Chiariglione, encargándole el desarrollo de estándares para la representación codificada de imágenes en movimiento, la información del audio asociado y su combinación para la grabación y lectura en un medio de almacenamiento digital. En ese momento el grupo estaba formado por 12 personas pero durante los años posteriores expertos de todo el mundo en video, audio y sistemas fueron uniéndose llegando a ser 200 participantes en el año 1992. Una vez creado el grupo MPEG, su primer objetivo fue la posibilidad de almacenar y reproducir de señales de video y audio en soporte CD-ROOM para su uso en aplicaciones multimedia. La inclusión de una señal de vídeo y audio en un soporte como el CD, que originalmente había sido pensado para incluir únicamente la información asociada a un canal de audio estereofónico, representó un importante problema tecnológico durante el desarrollo del 30 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 estándar MPEG-1, ya que los factores de compresión que debían utilizarse se situaban entre 100 y 200. El flujo de datos que admite un CD-ROOM de simple velocidad (150Kbytes/s) es de unos 1,2 Mbps mientras que el fuljo de bits implícito en una señal de vídeo 4:2:2 es, como hemos dicho, de aproximadamente 260 Mbps (estándar ITU 601, formato 4:2:2). La solución al problema se obtuvo reduciendo la calidad de la imagen en un doble proceso de reducción espacial y temporal. Este proceso significa una reducción inicial de los datos basada en el remuestreo temporal y espacial, por lo que no puede considerarse como una verdadera compresión de vídeo. Por una parte, la resolución de las imágenes se redujo a la mitad, tanto en la dirección horizontal como en la vertical. Aunque esta reducción suponga una pérdida de calidad considerable comparándola con el formato estándar de radiodifusión, la resolución que se obtiene es equivalente a la del formato de registro en cinta magnética VHS. Otra simplificación importante en el MPEG-1 es que no admite vídeo entrelazado, por lo que sólo se requiere codificar uno de los dos campos de la señal original. A finales de 1990 ya existía un borrador del proyecto que demostraba que se podía generar un flujo de datos con audio de calidad CD (16 bits por muestra y un muestreo a 44,1 kHz) y video de calidad (LDTV, Low Definition Television) equivalente a la calidad de una cinta VHS. Ya para finales de 1992 se concluía el primer estándar definitivo, conocido como MPEG-1 (numerado como ISO/IEC 11172) con una tasa de datos de 1,5 Mbps, 1,15 Mbps para el video y 350 Kbps para el audio en estéreo. En relación al audio podemos comentar que la capa 3 (layer 3) de audio de la norma MPEG-1 es la que ha dado lugar al polémico MP3. Durante el desarrollo del MPEG-1 los participantes del grupo MPEG se dieron cuenta que la base de las técnicas que estaban desarrollando también era óptima para aplicaciones que requerían mayor resolución y un bitrate (tasa de bits) de hasta diez veces superior. Esto les hizo pensar en avanzar la implementación de la televisión digital que estaba prevista para el siguiente milenio, cuando las redes de banda ancha ya se hubieran extendido. Entonces con el objetivo de unificar criterios para la implementación de la televisión digital el grupo desarrollo el siguiente estándar, el MPEG-2 (numerado como ISO/IEC 13818) que fue aprobado el 11 de Noviembre de 1994. El estándar MPEG-2 mantiene cierto grado de compatibilidad con las secuencias de bits producidas por el MPEG-1 y pretende cubrir aplicaciones de mayor ancho de banda, 31 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 además de la principal diferencia de que el estándar MPEG-2 es capaz de tratar señales de vídeo entrelazadas. Involucra compresión de datos (flujos de bits) originalmente a 260 Mbps (sin compresión) hasta lograr una tasa de bits entre 2 y 15 Mbps (después de la compresión). Su diseño es sumamente flexible y cubre una amplio espectro de sistemas de vídeos que van desde los formatos digitales ITU 601 4:2:2, ITU 601 4:2:0, HDTV (televisión de alta definición) 4:2:0, EDTV (televisión con definición mejorada) 4:2:0, formatos CIF y SIF, formatos HHR 4:2:0, algunos de ellos en versiones de exploración progresiva, otros con exploración entrelazada y algunos con ambos tipos de exploración. Para que el MPEG-2 pueda cubrir todo este amplio espectro de aplicaciones ha sido necesario definir subconjuntos de la sintaxis y semántica de la secuencia de bits en la forma de distintos perfiles y niveles, que luego explicaremos. En cuanto al audio el nuevo estándar introdujo un nuevo esquema multicanal de señal de audio surround. El estándar MPEG-3, cuya intención era estandarizar la televisión de alta definición, fue posteriormente incluido en MPEG-2, ya que se demostró que si se aumentaba el bitrate de la señal de video del MPEG-2 se llegaba a los mismos resultados. Los objetivos actuales del grupo son los nuevos estándares MPEG-4 y MPEG-7. El MPEG-4 (Coding of Audio-Visual Objects) (numerado como ISO/IEC 14496) fue aprobada de manera formal en octubre de 1998, esta fue una primera versión, más tarde se aprobó una segunda versión pensada para un número mayor de aplicaciones que fue aprobada en diciembre de 1999 (no reemplaza la primera versión, sólo la amplía). Es importante indicar que las ampliaciones y mejoras del MPEG-4 se realizarán hasta finales del año 2002 y serán incluidas en las especificaciones como nuevos perfiles, pero compatibles con la primera y la segunda versión. Este estándar se orienta a la transmisión de señales de vídeo y audio con velocidades muy bajas (64 kbps), fundamentalmente para aplicaciones de vídeo telefonía, aplicaciones multimedia, intranets e Internet. Las secuencias de bits están especialmente diseñadas para hacer frente a las altas variabilidades del canal en este tipo de comunicaciones, en donde es fácil que se produzcan reducciones de la velocidad, pérdidas parciales de datos, etc. Por ello, la trama o stream de vídeo y audio suele estar escalada de modo que, en función de la tasa de bits recibida, el receptor puede visualizar las imágenes con mayor o menor calidad. 32 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 Además, proporciona mayor flexibilidad que el MPEG-2 para el uso de técnicas de compresión basadas en la forma de onda permitiendo el uso de la transformada Wavelet, la codificación vectorial y la realización de transformaciones afines para la compensación de movimiento. Por último, permite realizar una codificación orientada a objetos, pudiendo utilizar codificadores fractales o morfológicos, modelado de objetos y descriptores de escenas. El estándar MPEG-7 (Multimedia Content Description Interface) (numerado como ISO/IEC 15938) intenta abarcar todos los aspectos (diferentes a la compresión de la información) que involucra la multimedia. Es decir, MPEG-7 describe la manera de ofrecer, filtrar, buscar y manejar información multimedia digitalizada. La primera versión del MPEG-7 se aprobó en julio del año 2001. Se han ido incluyendo varias mejoras posteriormente las cuales tal vez sean reunidas en una segunda versión del estándar. Este estándar está orientado a aplicaciones de búsqueda en bases de datos de contenidos audiovisuales y especifica los procedimientos para insertar los descriptores de imagen, vídeo, gráficos 2D, etc. A finales de 1999, MPEG empezó a trabajar en el nuevo estándar MPEG-21 (Multimedia Framework) cuyo objetivo primordial es proporcionar estándares que estarán fundamentados principalmente en el punto de vista de los usuarios, y no tanto de la industria. 3.3 El estándar MPEG-2 El estándar MPEG-2 es genérico, esto significa que sus especificaciones no están orientadas a una aplicación en concreto sino que contiene un conjunto de herramientas que permiten su uso en una gran variedad de aplicaciones de uso muy diferente, además permite diferentes condiciones de operaciones tales como diferentes bitrates, diferentes canales de transmisión, etc. Esta característica hace que el MPEG-2 sea un estándar flexible y que puede ser usado en un gran número de aplicaciones digitales a la vez que también aumenta su complejidad. Para poder facilitar su rango de aplicación, el estándar no ordena que métodos de codificación deban usarse, como tampoco especifica detalles del codificador o decodificador. Sólo especifica los formatos con los que se deben representar los datos en la entrada del decodificador y un conjunto de reglas y procesos de decodificación. Esto se debe a las diferentes complejidades que pueden tener los codificadores según sean las 33 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 necesidades de las diferentes aplicaciones a usar, a parte de para poder permitir la continua optimización y mejora de los codificadores. A pesar de ser un estándar ya completo y cerrado, su aplicación aún no ha encontrado límites. Para poder hacerse una idea del rango de aplicaciones en las que se puede aplicar el estándar, podemos ver la siguiente lista, en la que encontramos aplicaciones que se tuvieron en cuenta para que el estándar facilitara su implementación. • Televisión – Por radiodifusión terrestre, satélite y cable. • Televisión de alta definición – Por radiodifusión terrestre, satélite y cable. Así como el Cine electrónico. • Video en sistemas de almacenamiento digital (DSM): CD-ROM, DVD… • Video en computadoras – Video e-mail, sistemas de información multimedia. • Video bajo demanda (VoD) – Películas, eventos en directo… • Videocomunicación – Video multipunto. • Network Video – Video sobre diferentes redes: ATM, LAN… • Video Profesional – Edición no lineal, post-producción. La amplia gama de aplicaciones del MPEG-2 sea seguramente la clave de su éxito. Ya que su desarrollo ha provocado que en el campo de la multimedia digital pase de ser una industria donde todos avanzaban por libre, a un industria dinámica y unificada, con estándares que fomentan la interoperabilidad de los productos, y sobretodo una industria competitiva. 3.3.1 Organización de la norma ISO/IEC 13818 El documento que describe el estándar MPEG-2 es la norma/recomendación ISO/IEC 13818 y está dividido en 9 capas o partes. Las tres primeras partes de MPEG-2 son las más importantes. • ISO/IEC 13818-1:2000. Systems. • ISO/IEC 13818-2:2000. Video. • ISO/IEC 13818-3:1998. Audio. • ISO/IEC 13818-4: 1998. Conformance testing. 34 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 • ISO/IEC TR 13818-5: 1997. Software simulation. • ISO/IEC 13818-6: 1998. Extensions for DSM-CC. • ISO/IEC 13818-7: 1997. Advanced Audio Coding (AAC). • ISO/IEC 13818-9: 1996. Extension for real time interface for systems decoders. • ISO/IEC 13818-10: 1999. Conformance extensions for Digital Storage Media Command and Control (DSM-CC). Además de estos documentos, se han publicado otras correcciones y ampliaciones. Como hemos dicho, las más importantes son las siguientes: • 13818-1 Sistema: Especifica como combinar o multiplexar diferentes tipos de información multimedia en un único stream para que pueda ser o bien transmitido o bien almacenado. Existen dos formatos, cada uno óptimo en diferentes aplicaciones, Flujo de Programa (Program Stream) y Flujo de Transporte (Transport Stream). El esquema general de esta capa se muestra en la figura 3.1. Figura 3.1 Modelo de la capa de Sistema de MPEG-2 • 13818-2 Video: Especifica la codificación de la señal de video. Hay definidos distintos perfiles y niveles para ofrecer la diversidad de funcionalidades. Éstos están descritos en el siguiente apartado. 35 Conceptos básicos de MPEG • Decodificador vídeo MPEG-2 13818-3 Audio: Especifica la codificación de la señal de audio. 3.3.2 Perfiles y Nivles La Especificación anterior está destinada a ser genérica en el sentido de que sirva para una gran gama de aplicaciones, velocidades binarias, resoluciones, calidades y servicios. Las aplicaciones deben abarcar, entre otras cosas, medios de almacenamiento digital, radiodifusión de televisión y comunicaciones. En la elaboración de la especificación de vídeo se han considerado diversas exigencias de aplicaciones típicas, se han formulado los elementos algorítmicos necesarios y se han integrado en una sola sintaxis. Sin embargo, considerando la aplicación práctica de toda la sintaxis, se ha estipulado también un número limitado de subconjuntos de la sintaxis por medio de "perfil" y "nivel". Perfil Un "perfil" es un subconjunto definido de toda la sintaxis de tren de bits definida. Dentro de los límites impuestos por la sintaxis de un perfil dado, es posible aún requerir una variación muy grande en el funcionamiento de los codificadores y decodificadores según los valores tomados por los parámetros en el bitstream. Por ejemplo, es posible especificar tamaños de trama de hasta (aproximadamente) 214 de anchura de muestra por 214 de altura de línea. Actualmente no es práctico ni económico utilizar un decodificador capaz de implementar todos los tamaños de tramas posibles. Nivel Para tratar este problema se definen "niveles" dentro de cada perfil. Un nivel es un conjunto definido de constricciones impuestas a los parámetros en el tren de bits. Estas constricciones pueden ser simples límites de números. Como otra posibilidad, pueden adoptar la forma de constricciones en combinaciones aritméticas de los parámetros (por ejemplo, la anchura de trama multiplicada por la altura de trama multiplicada por la velocidad de trama). Las principales características de estos perfiles y niveles se detallan en las tablas siguientes. 36 Conceptos básicos de MPEG Perfil Simple Main SNR Spatial High Decodificador vídeo MPEG-2 Características Muestreo 4:2:0, solo cuadros I y P, no codificación escalable Como arriba, incluyendo cuadros B Como arriba, incluyendo escalabilidad SNR Como arriba, incluyendo escalabilidad espacial Como arriba, incluyendo muestreo 4:2:2 Tabla 3.1 Características de los perfiles de MPEG-2 Nivel Low Main High-1440 Low Resolución máxima 352x288 (luminancia), 30 Hz 720x576 (luminancia), 30 Hz 1440x1152 (luminancia), 60 Hz 1920x1152 (luminancia), 60 Hz Tabla 3.2 Resoluciones máximas de los niveles de MPEG-2 Niveles Simple High High 1440 Main Low 15 Perfiles SNR Esc. Main 80 60 15 4 15 4 Spat. Esc. High 60 100 80 20 Tabla 3.3 Combinaciones recomendadas Perfil/Nivel y Máximo bitrate (Mbps) 3.4 Aspectos generales El algoritmo empleado para la codificación de vídeo en MPEG-2 logra una elevada relación de compresión a la vez que mantiene la buena calidad de la imagen. Es una compresión con pérdidas pues no se preservan los valores de muestra exactos durante la codificación. La obtención de una buena calidad de imagen a las velocidades binarias de interés exige una compresión muy alta, que no se puede lograr con la sola intracodificación (eliminación de redundancia espacial) de las imágenes. La elección de las técnicas se basa en la necesidad de equilibrar una alta calidad de imagen y relación de compresión con el requisito de hacer el acceso aleatorio al tren de bits codificado. Se utilizan varias técnicas para lograr una elevada compresión. El algoritmo utiliza primero compensación de movimiento basada en bloque para reducir la redundancia temporal que se encarga de proporcionar los vectores de desplazamiento que deben aplicarse en la predicción de imágenes. La compensación de movimiento se utiliza tanto para la predicción causal de la imagen vigente a partir de una imagen anterior y para la 37 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 predicción interpolativa no causal, a partir de imágenes pasadas y futuras. Se definen vectores de movimiento para cada región de 16 muestras por 16 líneas de la imagen. El error de predicción, se comprime aún más utilizando la transformada de coseno discreta (DCT) para suprimir la correlación espacial antes de que sea cuantificada en un proceso irreversible que descarta la información menos importante. Por último, los vectores de movimiento se combinan con la información DCT cuantificada y se codifican utilizando códigos de longitud variable. En el caso en que se realice una codificación intra-trama del bloque, la señal de la salida del predictor por compensación es cero, de modo que se calcula directamente la DCT del bloque a codificar. Los coeficientes transformados se cuantifican, generalmente utilizando las tablas de cuantificación por defecto, aunque también es posible emplear tablas propias. Un esquema simplificado de los algoritmos de codificación y de decodificación los tenemos en la figura 3.2. Figura 3.2 Esquema codificador y decodificador MPEG-2 38 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 3.4.1 Jerarquía de un vídeo en MPEG-2 Hasta ahora hemos dicho que un vídeo digital es una secuencia de imágenes con una determinada resolución espacial, es decir, un número de píxeles en el sentido vertical y en el horizontal, que no tienen que ser iguales. La secuencia de vídeo puede ser entrelazada, en cuyo caso tendremos dos campos por imagen, o no entrelazada, con una sola trama por imagen. En el caso de vídeo comprimido, llamaremos a cada imagen trama (frame, aunque también se emplea el término de imagen indistintamente), la cual está formada por tres matrices, una matriz de luminancia y dos de crominancia. Además, hemos visto que las técnicas generales de compresión de vídeo, normalmente trabajan con bloques. MPEG tiene toda una jerarquía a la hora de definir la información de vídeo codificada que podemos ver en la figura 3.3. Figura 3.3 Estructura jerárquica del vídeo MPEG Como muchos de los conceptos que aparecen en la figura se van a usar a partir de ahora, daremos una breve definición • Secuencia de vídeo. Es la sucesión de todas las tramas en el orden de transmisión que tiene un vídeo codificado. Esta secuencia está formada por uno o más Grupos de Imágenes. 39 Conceptos básicos de MPEG • Decodificador vídeo MPEG-2 GOP (Group of Pictures). Es una secuencia de imágenes que se transmiten en un orden distinto al que serán presentados en el display y que facilita el acceso aleatorio a la secuencia. Está formado por un número de imágenes, que puede variar de un vídeo a otro, pero será el mismo en todos los GOP de una secuencia. • Imagen. Es la unidad de codificación que contiene las tres matrices que forman la imagen, una para luminancia y dos para crominancia. Se divide en slices. • Slice. Es la unidad básica de resincronización del sistema y desempeña un papel fundamental en el soporte de errores. Su número y colocación dentro de una imagen es variable. Está formada por uno o más macrobloques. • Macrobloque. Es la unidad básica sobre la que se realiza la compensación de movimiento. Está formado por una región de 16x16 en la matriz de luminancia y regiones de 8x8 en la componente de corma. Pueden aparecer macrobloques no codificados (skkiped). • Bloque. Es la unidad de codificación a la que se aplica la transformada coseno. Está formada por 8x8 píxeles. 3.4.2 Procesamiento temporal Debido a los requisitos contradictorios de acceso aleatorio y compresión muy eficaz se definen tres tipos principales de imágenes en los que se emplean técnicas de codificación distintas. • Imágenes I (Intra-trame). El procedimiento de compresión utilizado es muy parecido al del estándar JPEG. Se codifican de forma independiente sin referencia a otras imágenes (no aprovechan la redundancia temporal). Proporcionan puntos de acceso a la secuencia codificada donde la decodificación puede comenzar, pero se codifican con compresión moderada solamente. • Imágenes P (Predicted). La codificación de estas imágenes se realiza utilizando compensación de movimiento forward (hacia delante) a partir de una imagen I u otra imagen P previamente codificadas. Estas imágenes pueden propagar errores y sirven como imágenes de referencia de otras imágenes P y de las imágenes siguientes. • Imágenes B (Bidreccional). Se obtienen usando compensación de movimiento bidireccional a partir de imágenes I o P. Proporcionan el más alto grado de 40 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 compresión. Las imágenes con codificación predictiva bidireccional nunca se utilizan como referencias para la predicción por lo que no propagan errores. La organización de los tres tipos de imágenes en una secuencia es muy flexible. La elección se deja al codificador y dependerá de los requisitos de la aplicación. En la figura 3.4 se ilustra una posible relación y proporción entre los tres diferentes tipos de imágenes. Figura 3.4 Ejemplo de estructura de imagen temporal GOP (Group of Pictures) Las posibles secuencias de imágenes se denominan grupo de imágenes (GOP) y suelen identificarse mediante dos parámetros N y M que identifican el número total de imágenes de la secuencia y el número de imágenes que hay entre dos imágenes que pueden utilizarse como imágenes de referencia (I o P). Un ejemplo típico es en el que N y M toman los valores 12 y 3 respectivamente. Es importante conocer las imágenes de referencia que toman cada una de las imágenes dependiendo si son P o B. Orden de transmisión de las imágenes El uso de predicción bidireccional, junto con el objetivo de reducir al máximo posible la memoria del decodificador, imponen que el orden en el que se transmiten las imágenes sea distinto del orden en el que deben visualizarse. El MPEG establece que no se 41 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 necesite almacenar más de dos imágenes de referencia en el decodificador. Por esto, las imágenes del tipo B se reciben siempre después de haber recibido las referencias que se han utilizado en su codificación. Mostramos en la figura 3.5 el orden natural (a la entrada del codificador), el orden de transmisión (salida del codificador y entrada del decodificador), el estado de las dos memorias del decodificador y el orden de representación (display). Orden Natural P-3 I0 B1 B2 P3 B4 B5 P6 B7 B8 I9 I0 B-2 B-1 P3 B1 B2 P6 B4 B5 I9 Memoria 1 DEC P-3 P-3 P-3 P3 P3 P3 P3 P3 P3 I9 Memoria 2 DEC I0 I0 I0 I0 I0 I0 P6 P6 P6 P6 Imagen display P-3 B-2 B-1 I0 B1 B2 P3 B4 B5 P6 Orden Transmisión B-2 B-1 Figura 3.5 Reordenación de imágenes (GOP N=9, M=3) 3.4.3 División de una imagen en slices Como hemos comentado, un slice es una serie de un número arbitrario de macrobloques sucesivos (ordenados de izquierda a derecha). Hay algunas restricciones a la hora de dividir una imagen en slices: • Las slices no se pueden superponer • El primer y último macrobloque de un slice estarán en la misma fila de la imagen ni pueden ser macrobloques skipped (no codificados). • Deben contener al menos un macrobloque. Los slices aparecen en la secuencia de bits en el orden en que se encuentran, comenzando en la parte superior izquierda de la imagen y continuando por orden de barrido de izquierda a derecha y de arriba abajo. Estructura de slice general En el caso más general no es necesario que los slices cubran toda la imagen. Un ejemplo de esto se muestra en la figura 3.6. Las zonas que no están incluidas en un slice no están codificadas y ninguna información se codifica para estas zonas. 42 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 Si los slices no cubren toda la imagen, es necesario que si la imagen se emplea después para formar predicciones, sólo se hagan predicciones de las regiones incluidas en los slices. Es responsabilidad del codificador asegurar esto. Figura 3.6 Estructura slice general Estructura de slice restringida En determinados casos se empleará una estructura de slices restringida, que se representa en la figura 3.7. Figura 3.7 Estructura slice restringida 43 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 3.4.4 Formatos de crominancia Como en la mayoría de formatos digitales se emplea el modelo de luminancia y dos señales diferencia de color (YCbCr). Además del formato 4:2:0 sustentado en MPEG-1, esta especificiación sustenta los formatos de crominancia 4:2:2 y 4:4:4. Los formatos de crominancia afectan principalmente al número y el orden de los bloques que forman los macrobloques. Formato 4:2:0 Un macrobloque consiste en seis bloques, 4 Y 1 Cb y 1 Cr. El orden se muestra en la figura 3.8. Figura 3.8 Bloques en el formato 4:2:0 Formato 4:2:2 Un macrobloque consiste en ocho bloques, 4 Y 2 Cb y 2 Cr. El orden se muestra en la figura 3.9. Figura 3.9 Bloques en el formato 4:2:2 44 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 Formato 4:4:4 Un macrobloque consiste en doce bloques, 4 Y 4 Cb y 4 Cr. El orden se muestra en la figura 3.10. Figura 3.10 Bloques en el formato 4:4:4 3.4.5 Reducción de redundancia espacial Las imágenes originales y las señales de errores de predicción tienen una elevada redundancia espacial. Este estándar utiliza un método de DCT basado en bloque, con cuantificación ponderada visualmente y codificación de longitud de pasada. Después de la predicción con compensación de movimiento o la interpolación, la imagen residual se divide en bloques de 8 por 8, que se transforman en el dominio de DCT donde son ponderados antes de ser cuantificados. Después de la cuantificación, muchos de los coeficientes son de valor cero y de este modo se utiliza la codificación bidimensional de longitud de pasada y de longitud variable para codificar eficazmente los coeficientes restantes. 3.4.6 Representación del movimiento – macrobloques La elección de macrobloques de 16 por 16 para la unidad de compensación del movimiento es un resultado del compromiso entre la ganancia de codificación proporcionada por la utilización de la información de movimiento y la tara necesaria para representarlo. Se puede predecir cada macrobloque temporalmente de varias maneras diferentes. Por ejemplo, en la codificación de trama, la predicción a partir de la trama de referencia anterior puede basarse en trama o basarse en campo. Según el tipo del macrobloque, la información de los vectores de movimiento y otra información conexa se codifica con la señal de error de predicción comprimida en cada macrobloque. Los 45 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 vectores de movimiento se codifican diferencialmente con respecto a los últimos vectores de movimiento codificados utilizando códigos de longitud variable. La longitud máxima de los vectores de movimiento que se puede representar se puede programar imagen por imagen, de modo que se puedan satisfacer las aplicaciones más exigentes sin comprometer el funcionamiento del sistema en situaciones más normales. Es responsabilidad del codificador calcular los vectores de movimiento apropiados. La especificación no estipula cómo se debe hacer esto. 3.4.7 Codificación de vídeo entrelazado Cada trama de vídeo entrelazado consiste en dos campos separados por un periodo de campo. El codificador de MPEG-2 permite codificar la trama como imagen (secuencia progresiva) o codificar los dos campos como dos imágenes (secuencia entrelazada). La codificación de trama o la codificación de campo se puede seleccionar de manera adaptable trama por trama. La codificación de trama se prefiere típicamente cuando la escena vídeo contiene un detalle importante con movimiento limitado. En cambio, la codificación de campo, en la cual el segundo campo puede ser predecido a partir del primero, funciona mejor cuando hay movimiento rápido. El tratamiento de imágenes entrelazadas en MPEG-2 afecta a la definición de los macrobloques y de los bloques que intervienen en la transformada del coseno. También afecta a la forma de exploración de los coeficientes transformados y a los procedimientos de estimación de movimiento. Una vez que se expliquen estos conceptos, se añadirá información de cómo se realiza en este caso en el apartado 3.6. 3.5 Proceso de codificación El primer paso para codificar un vídeo es codificar una imagen I (intra-frame). Para estudiar este proceso vamos a suponer que el vídeo de entrada ha sido muestreado con formato 4:2:0. Recordamos que el número de bits con el que se codifica cada muestra es el mismo para luminancia y crominancia, siendo en ambos casos de 9 bits. El tamaño de cada imagen no nos importa, ya que partiremos de la unidad básica de bloque. En la figura 3.11 se representa el diagrama de bloques de este proceso. 46 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 Figura 3.11 Diagrama del proceso de codificación en MPEG-2 3.5.1 Descomponer imagen en bloques Figura 3.12 Entrada y salida descomposición en bloques NxN Como ya dijimos, en este formato habrá un total de seis bloques, cuatro bloques de luminancia, uno de croma azul y otro de croma roja. Los bloques tienen un tamaño de 8x8 píxeles ordenados de forma secuencial, primero por filas y posteriormente por columnas como se vuelve a representar en la figura 3.13. Figura 3.13 Bloques en el formato 4:2:0 Cada bloque lo representamos como f(y,x) y sus valores oscilan en un rango entre -256 y 255 para todo x e y. 47 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 3.5.2 DCT Figura 3.14 Entrada y salida DCT bidimensional A cada bloque se le calcula la DCT bidimensional con una precisión de 3 bits adicionales respecto a la precisión de entrada (un total de 12 bits). Forman la matriz nombrada como F(v,u). El coeficiente de continua (DC), que corresponde al coeficiente (0,0) de la matriz transformada F(v,u), se debe codificar con mayor precisión que el resto de coeficientes de alterna. Esto es debido a que los errores en este coeficiente supondrán una variación del nivel de gris medio de todo el bloque, con lo que la estructura de codificación podría resultar visible en la imagen decodificada. Por este motivo, los coeficientes DC se codifican en modo diferencial, respecto al coeficiente de continua del bloque anterior. Así, el rango dinámico de este coeficiente es mayor. El coeficiente de continua (DC), varía en un rango de 0 a 4095 (siempre positivo, ya que no hemos eliminado la componente de continua) y el resto de coeficientes (AC) varían entre -2046 y 2045. 3.5.3 Cuantificador variable Figura 3.15 Entrada y salida cuantificador variable 48 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 A los coeficientes resultantes de la DCT se les aplican tablas de cuantificación que pueden ser definidas por el propio codificador (deberán incluirse las tablas en las cabeceras del fichero) o utilizar las tablas que por defecto recomienda al estándar. Los rangos de la matriz QF(v,u) dependerán del paso de cuantificación empleado para cada coeficiente. Las tablas de cuantificación indican la importancia relativa de cada coeficiente transformado y suelen representarse como el paso de cuantificación con el que se codificará cada elemento. En la figura 3.16 se representan la tabla de cuantificación que se emplean por defecto en MPEG-2 para el caso de imágenes I para la cuantificación de las componentes de luminancia y de crominancia. Estas tablas se obtienen de forma experimental, a partir de pruebas de calidad subjetivas que tienen en cuenta la respuesta del sistema visual humano. Podemos observar como el paso de cuantificación aumenta (se utilizan menos niveles) a medida que aumentan las frecuencias. 8 16 19 22 26 27 29 34 16 16 22 24 27 29 34 37 19 22 26 27 29 34 34 38 22 22 26 27 29 34 37 40 22 26 27 29 32 35 40 48 26 27 29 32 35 40 48 58 26 27 29 34 38 46 56 69 27 29 35 38 46 56 69 83 Figura 3.16 Matriz de cuantificación para luminancia y crominancia W(v,u) Además de las matrices de ponderación existe otro método que consiste en emplear un factor de escala para que el tamaño del paso pueda ser modificado en el caso de que la tasa de bits sea excesivamente alta. El coeficiente DC tiene nuevamente un tratamiento especial, ya que siempre se obtendrá dividiendo F(0,0) por un divisor constante que se obtiene de la información del tren de bits. Es constante en el sentido de que no se realiza con ninguno de los dos métodos posibles anteriores. 49 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 Desde un punto de vista operativo, las matrices de cuantificación se utilizan para determinar el nivel real con el que se codificará cada coeficiente transformado. El cálculo del nivel real se realiza dividiendo los coeficientes de la DC por el número de pasos de cuantificación especificados por la matriz y aproximando el resultado obtenido por el entero más próximo. ⎛ F (v,u ) ⎞ ⎟⎟ QF (v,u ) = round ⎜⎜ ⎝ W (v,u ) ⎠ Ecuación 3.1 Obtención de los coeficientes cuantificados Vamos a mostrar un ejemplo del proceso de cuantificación completo que se aplica a un bloque de luminancia de 8x8 píxeles de la imagen original. Figura 3.17 Ejemplo de cuantificación de un bloque 3.5.4 Escaneo en Zig-Zag Figura 3.18 Entrada y salida escaneo Zig-Zag 50 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 Tal y como esperábamos, la mayoría de los coeficientes cuantificados toman el valor cero. Utilizando una matriz de escaneo zig-zag, que se muestra en la figura 3.16, se puede obtener un flujo de bits con muchos ceros seguidos. Normalmente, para vídeos progresivos no entrelazados, se emplea la siguiente matriz de escaneo, aunque el codificador puede definir la suya propia. Al aplicar este escaneo se obtiene un vector con 64 elementos que denominamos QFS(n). 1 2 6 7 15 16 28 29 3 5 8 14 17 27 30 43 4 9 13 18 26 31 42 44 10 12 19 25 32 41 45 54 11 20 24 33 40 46 53 55 21 23 34 39 47 52 56 61 22 35 38 48 51 57 60 62 36 37 49 50 58 59 63 64 Figura 3.19 Matriz de escaneo zig-zag De esta forma, en el ejemplo anterior obtendríamos una secuencia: 130, -2, -2, 1, 0, 1, 0, -1, 0, 0, 0, 0, -1, 0, 0, … resto de coeficientes nulos 3.5.5 Codificación entrópica Figura 3.20 Entrada y codificación entrópica 51 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 La secuencia obtenida en el apartado anterior tenía la mayoría de los coeficientes cuantificados con valor cero, de modo que la codificación combinada entre códigos de longitud variable (VLC) y métodos de longitud de series (RLC) puede resultar muy eficiente. La codificación de los coeficientes AC y DC difiere, por lo que se explican por separado. Coeficientes AC Cada coeficiente se codifica empleando dos tipos de palabras (A,B), donde A es el número de ceros seguidos codificados y B es el siguiente valor no nulo. Cuando la cadena de ceros seguidos llega a la longitud máxima del vector, se introduce una palabra especial llamada EOB (End Of Block). En el ejemplo anterior tendríamos un código RLC como el siguiente: 130, -2, -2, 1, 0, 1, 0, -1, 0, 0, 0, 0, -1, 0, 0, … resto de coeficientes nulos (0,130), (0,-2), (0,-2), (0,1), (1,1), (1,-1), (4,-1), EOB La codificación de estas parejas se hace mediante códigos de longitud variable. El estándar MPEG-2 define unas tablas para que todos los compresores descompresores sean compatibles. Cada una de las parejas posibles tendrá una cantidad variable de bits para representarlas. Coeficiente DC Para la codificación de los componentes DC también se utilizan dos tipos de palabras A y B. La palabra A indica mediante códigos de longitud variable el número de bits que siguen para indicar el valor del coeficiente. La palabra B, que va a continuación, es un código de longitud fija (indicada por la palabra A) y es el valor diferencial del coeficiente de continua en binario natural en complemento a 1. Como se codifican los valores diferenciales, en el decodificador habrá que mantener unos predictores en memoria (se deben mantener 3 predictores, uno por cada componente de color). 3.5.6 Compensación de movimiento Una vez codificadas las imágenes I, podemos pasar a explicar cómo se codifican el resto de imágenes. Esta parte es algo más compleja, pues debe realizarse la estimación de 52 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 movimiento y decidir cuál es la forma más eficiente de codificar un macrobloque en función de los resultados obtenidos. La misión del codificador es elegir entre las distintas posibilidades de codificar un macrobloque aquella que proporcione la mejor opción. Las matrices de cuantificación empleadas para la codificación por predicción tienen un paso de cuantificación uniforme para todos los coeficientes. Esto es debido a que el contenido frecuencial de las señales de error no muestra ninguna preferencia para concentrar su energía en unas frecuencias particulares. Los modos de predicción son las diferentes maneras en que un bloque es movido desde la imagen de referencia hasta la imagen actual. Los modos de predicción pueden cambiar en cada macrobloque. Debido a que el estándar debe dar soporte a las secuencias de vídeo entrelazado, necesitamos más de un solo modo de predicción. En general, podemos distinguir cuatro modos de predicción, aunque los más importantes son los dos primeros. • Predicción de trama. Forma una predicción para la trama a partir de una o más tramas decodificadas previamente. • Predicción de campo. Las predicciones se hacen independientemente para cada campo utilizando datos de uno o más campos decodificados previamente. Solo se realiza para codificar imágenes entrelazadas. • Compensación de movimiento 16x8. Se emplean dos vectores de movimientos para cada macrobloque. El primer vector de movimiento se utiliza para la región 16x8 superior y el segundo para la inferior. En el caso de un macrobloque con predicción bidireccional, se utilizarán un total de cuatro vectores de movimiento, dos para la predicción hacia delante y dos para la predicción hacia atrás. En MPEG-2 sólo se utilizará este tipo de compensación con imágenes de campo. • Aritmética Dual-prime. Se codifica un vector de movimiento junto con un vector de movimiento diferencial. Además de esta clasificación, debemos distinguir si la imagen actual que estamos codificando será entrelazada o no. En este apartado explicaremos los casos en los que formemos una imagen de trama (frame picture, los dos campos a la vez) y en el apartado 3.9 el caso de imagen de campo (field picture). 53 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 En los siguientes ejemplos sólo consideramos una imagen de referencia. Como las imágenes B usan dos imágenes de referencia (hacia delante y hacia atrás) lo que se hace es una interpolación entre las dos. Predicción de trama Es el modo más simple de predicción. Se define un único vector de movimiento para cada predicción (forward o backward). La predicción será un área entera de 16x16 píxeles (macrobloque). 16x16 16x16 Reference Picture (forward or backward) Predicted picture Figura 3.21 Predicción de trama en imágenes de trama Predicción de campo (16x8) Se definen dos vectores de movimiento, uno por cada campo de la imagen de referencia. El área de predicción en este caso es de 16x8 en cada campo, por un lado las líneas impares y por otro las pares. Cada vector de movimiento tendrá una bandera que indica desde qué campo se debe formar la predicción, ya que ambos vectores de movimiento pueden usar el mismo campo como referencia. Figura 3.22 Predicción de campo en imágenes de trama 54 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 Predicción Dual-prime Este modo de predicción sólo se usa en imágenes P. La idea es hacer una interpolación entre los dos campos de la imagen de referencia. Hay un único vector de movimiento y además se incluye un vector diferencial para indicar la distancia temporal entre los dos campos. Con esta información se calcula un nuevo vector de movimiento y se forma una segunda predicción que se interpola con la primera. Si la imagen es entrelazada, se debe forma una predicción como la anterior para cada campo, así que se incluyen dos vectores de movimiento y otros dos son calculados, por lo que habrá un total de cuatro vectores. Figura 3.23 Predicción Dual-prime en imágenes de trama 3.6 Resumen codificación imágenes I Una imagen I está codificada sin referencia a ninguna imagen pasada o futura, solamente se aplican técnicas de compresión de redundancia espacial y estadística, no de redundancia temporal. El esquema empleado aparece en la figura 3.24. Figura 3.24 Esquema de codificación de las imágenes I 55 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 3.7 Resumen codificación imágenes P Las imágenes P se codifican empleando redundancia espacial, además de las espaciales y estadísticas. La imagen de referencia anterior debe ser de tipo I o de tipo P. En este tipo de imágenes puede haber macrobloques que se codifiquen sin referencia (intra macroblock) o macrobloques que no se codifiquen (skipped macroblock), lo que quiere decir que dicho macrobloque será igual al de la imagen de referencia. Podemos ver un esquema simplificado en la figura 3.25. Figura 3.25 Esquema de codificación de las imágenes P 3.8 Resumen codificación imágenes B Se codifica con referencias a dos imágenes, una anterior y otra posterior (predicción bidireccional). Las imágenes de referencia serán de tipo I o de tipo P. La codificación para este tipo es similar a las imágenes de tipo P, pero ahora habrá dos imágenes de referencia y dos vectores de movimiento y habrá que promediar. 56 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 Figura 3.26 Esquema de codificación de las imágenes B 3.9 Peculiaridades de vídeo entrelazado Como dijimos hay ciertos aspectos que difieren en este caso, como son la definición de macrobloques y bloques, la forma de escaneo de los coeficientes transformados y la estimación de movimiento. En la codificación de una imagen, la selección de los modos entrelazados o de los modos progresivos convencionales puede realizarse en cada macrobloque de manera individual. Con ello podemos obtener los beneficios de un mayor factor de compresión mediante el uso de técnicas progresivas en aquellas zonas de la imagen que permanecen estacionarias, mientras que en regiones con elevado movimiento horizontal podemos utilizar los modos entrelazados. 3.9.1 División en macrobloques Un macrobloque convencional de 16x16 píxeles se descompone en cuatro bloques de luminancia de 8x8 píxeles tomando los píxeles adyacentes tal y como se muestra en la 57 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 figura 3.27. Un macrobloque entrelazado también se descompone en 4 bloques de 8x8 píxeles, pero ahora los bloques se toman utilizando líneas alternadas. De esta forma, en un macrobloque entrelazado, los bloques están formados por líneas que corresponden siempre al mismo campo. Figura 3.27 División en bloques de un macrobloque para imágenes progresivas y entrelazadas 3.9.2 Escaneo coeficientes transformados Cuando a un bloque del tipo entrelazado le aplicamos la transformada coseno debemos tener en cuenta que los bloques provienen del submuestreo en el eje vertical por lo que deberemos esperar un mayor contenido frecuencial en esta dirección. Al aumentar el espacio entre las muestras, los niveles de los píxeles aumentarán de forma más rápida. Esto se debe tener en cuenta al ordenar los coeficientes transformados y por ello hay otra opción para escanear los coeficientes. Para este tipo de secuencias, se emplea otra matriz de escaneo denominada alternada. La matriz que se emplea está representada en la figura 3.28. 58 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 1 5 7 21 23 37 39 53 2 6 8 22 24 38 40 54 3 9 20 25 35 41 51 55 4 10 19 26 36 42 52 56 11 18 27 31 43 47 57 61 12 17 28 32 44 48 58 62 13 16 29 33 45 49 59 63 14 15 30 34 46 50 60 64 Figura 3.28 Matriz de escaneo alternada 3.9.3 Compensación de movimiento Por lo que respecta a la compensación de movimiento, también puede realizarse mediante campos separados o basándonos en la imagen global. Podemos encontrar varias alternativas. Como dijimos, la predicción de campo consiste en realizar predicciones para cada campo utilizando datos de uno o más campos decodificados previamente. Pasamos a ver ejemplos de los distintos modos de predicción en este caso. Predicción de campo Es el modo de predicción más usado para este tipo de imágenes. Se usa un solo vector de movimiento y se forma un área de predicción de 16x16 píxeles. El vector de movimiento tiene una bandera que indica si la predicción se debe tomar del campo superior o del inferior En este caso, las predicciones son independientes para cada uno de los campos que se tratan siempre por separado. 59 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 Figura 3.29 Predicción de campo en imágenes de campo Predicción 16x8 Se definen dos vectores de moviendo y se forman dos predicciones de 16x8 píxeles. Los vectores de movimiento tienen banderas que indican los campos que usar como referencia. Figura 3.30 Predicción 16x8 en imágenes de campo Predicción Dual-prime En este caso es más sencillo que en el de imágenes trama. Sólo habrá un vector de movimiento y el calculado a partir del vector diferencial. 60 Conceptos básicos de MPEG Decodificador vídeo MPEG-2 Figura 3.31 Predicción Dual-prime en imágenes de campo 61