Title: Compresi
1Compresión de vídeo
- http//www.info-ab.uclm.es/asignaturas/42609/Tema4
/sld035.htm
2Está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.
3MPEG 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).
4MPEG 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
5MPEG 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 420 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
261 aproximadamente.
6(No Transcript)
7MPEG 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
8MPEG-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).
9(No Transcript)
10(No Transcript)
11MPEG 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.
12(No Transcript)
13MPEG 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.
14MPEG 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 intra-cuadro). - 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.
15(No Transcript)
16(No Transcript)
17(No Transcript)
18MPEG 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.
19MPEG 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 re-sincronización ante errores
Macrobloque Unidad de compensación de movimiento
Bloque Unidad de transformada DCT
20MPEG 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
21(No Transcript)
22MPEG 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.
23MPEG 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.
24MPEG 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.
25MPEG 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.
26MPEG 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.
27MPEG 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,
28(No Transcript)
29MPEG 1 Estructura de capasCapa 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.
30MPEG 1 Estructura de capasCapa 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.
31MPEG 1 Estructura de capasCapa 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.
32MPEG-1 Estructura de capasCapa 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.
33(No Transcript)
34MPEG-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.
35MPEG-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).