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.
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
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.
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).
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.
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.
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.
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
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.
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.
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.
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,
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.
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.
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.
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).
Descargar

Compresión de vídeo