1. Fundamentos de la compresión de vídeo
En términos de la teoría de Shannon existen dos grupos principales de algoritmos de
compresión, tales como:
1. Compresión sin pérdida (lossless). Estos algoritmos tienen por objetivo
reconstruir la información original fielmente al descomprimir el archivo, sin una sola
pérdida de datos. La reducción del tamaño del archivo es menor si se compara con otros
esquemas de compresión, siendo el nivel de compresión muy cercano al valor H definido
por Shannon, quien también estableció cinco órdenes de H, caracterizadas por la naturaleza
de la información y la probabilidad de ocurrencia de un carácter en función de los demás.
De esta forma, en el Modelo de Orden Cero en la teoría de Shannon, los caracteres son
estadísticamente independientes unos de otros, y cada símbolo o letra es igualmente
probable de aparecer en un archivo. Para idiomas como el castellano, los archivos de texto
que se compriman en un Orden Cero de la variable H tendrán el siguiente valor:
H = log2 m bits/character
Siendo m el total de caracteres y o símbolos posibles. Por ejemplo: para m=27, H
tiene un valor de 4.75 bits por cada carácter. Las compresiones de Orden Cinco llegan a
niveles H de 2.33 bits por carácter, como es el caso de los archivos de texto.
2. Compresión con poca pérdida (lossy). Con estos programas se elimina lo que se
consideran bits innecesarios, creando una aproximación matemáticamente suficiente. Se
usan en la compresión de imágenes, donde una excesiva cantidad de datos que representen
colores y tonalidades no siempre es necesaria para una buena visualización. Estos esquemas
de compresión se apoyan en el análisis de la distorsión, una entidad matemática que define
puntualmente qué tan cercana es la aproximación al original. La videoconferencia y la
audioconferencia, así como los archivos MP3 de audio o los MPEG-4 de video son buenos
ejemplos de compresiones con pérdida, ya que al momento de descomprimir la información
no se tienen todos los datos originales, lo que explica imágenes “cuadriculadas” y pistas de
audio con menos fidelidad.
HISTORIA DEL MPEG (Moving Pictures Experts Group)
En el año 1987, Leonardo Chiariglione, quien había pertenecido al grupo CCIR
(International Radio Consultative Committee) encargado de la estandarización de la
Televisión de Alta Definición, High Definition Television (HDTV); y desilusionado del
fracaso en adoptar un único estándar internacional (Japón, Europa y Estados Unidos
pugnaban por su propio formato), asistía al encuentro del JPEG (Joint Pictures Experts
Group, Grupo Unido de Expertos en Imágenes). Este grupo había sido formado por la
2. Organización de Estándares Internacionales ISO y por la Comisión Electrotécnica
Internacional IEC para formular un estándar que permitiera disminuir la cantidad de
espacio de almacenamiento requerido para las imágenes fijas.
En este encuentro, Chiariglione quedó profundamente impresionado
por lo que se podía lograr entre un grupo de expertos cuando no se
manejaban los intereses de ninguna industria. Así que se aproximó al
Director del JPEG, Hiroshi Yoshuda, y sugirió la creación de un grupo
sucesor, 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.
Los estándares MPEG se desarrollan en fases numeradas, por lo que la
especificación MPEG-2 no es una sustitución de MPEG-1 sino una ampliación o
complemento del mismo. Lo que se conoce por "layers", son especificaciones de una
familia de algoritmos de codificación para un mismo estándar. Para las señales de audio
MPEG ha definido los estándares MPEG-1, MPEG-2, MPEG-4 y MPEG-7
Redundancia
Principios de codificación
Una secuencia de vídeo tiene tres tipos de redundancia que un esquema de
codificación necesita explotar en orden de conseguir una muy buena compresión:
• Espacial
• Temporal
• Psicovisual
Las redundancias espaciales y temporales ocurren porque los valores de los pixels no
son completamente independientes si no que están correlacionados con los valores de los
pixels vecinos, tanto en espacio como en tiempo (es decir, dentro de una misma trama o con
las tramas anterior y/o posterior). Por ello diremos que sus valores pueden ser predichos en
cierta medida. Por otra parte, la redundancia psicovisual tiene que ver con las limitaciones
3. físicas del ojo humano, que tiene una limitada respuesta para fijarse en los detalles
espaciales y es menos sensitivo al distinguir detalles en las esquinas o los cambios rápidos.
Por tanto, el proceso de codificación puede ser capaz de minimizar el bit-rate
mientras se mantiene constante la calidad a la que el ojo humano ve la imagen
decodificada.
• Las imágenes I: Se codifican como si fuesen imágenes fijas utilizando la norma
JPEG, por tanto, para decodificar una imagen de este tipo no hacen falta otras
imágenes de la secuencia, sino sólo ella misma. No se considera la redundancia
temporal (compresión intraframe). Se consigue una moderada compresión
explotando únicamente la redundancia espacial. Una imagen I siempre es un punto
de acceso en el flujo de bits de vídeo. Son las imágenes más grandes.
• Las imágenes P: Están codificadas como predicción de de la imagen I ó P anterior
usando un mecanismo de compensación de movimiento. Para decodificar una
imagen de este tipo se necesita, además de ella misma, la I ó P anterior. El proceso
de codificación aquí explota tanto la redundancia espacial como la temporal.
• Las imágenes B: Se codifican utilizando la I ó P anterior y la I ó P siguiente como
referencia para la compensación y estimación de movimiento. Para decodificarlas
hacen falta, además de ellas mismas, la I ó P anterior y la I ó P siguiente. éstas
imágenes consiguen los niveles de compresión más elevados y por tanto son las más
pequeñas.
• Existen otro tipo de imágenes llamadas imágenes intraframe de baja resolución (o
imágenes D) que son de las mismas características que las I pero con menos
resolución. Se usan en aplicaciones que no necesitan gran calidad, como el avance
rápido.
Las imágenes desde una imagen I hasta la siguiente forman un grupo
de imagenes (GOP).
4. Tipos de imágenes (I, P, B)
Transmitir o almacenar directamente una secuencia de video requiere mucho ancho de
banda o espacio. Para resolver este problema se utilizan algoritmos de compresión.
Podemos comprimir todas las imágenes uno a uno (por ejemplo con JPEG) para luego
poder escoger cualquiera de ellas y descodificarlas para su visualización. Este sistema se
denomina intra-frame. La desventaja de este sistema es que no contempla la compresión
con respecto al tiempo, como puede ser la redundancia entre fotogramas consecutivos. Para
solucionar este problema se escoge una imagen de referencia y se almacenan solo las
variaciones con respecto a este fotograma anterior, posterior o ambos, lo que se llama
compresión referencial.
Ya que en una secuencia referencial demasiado larga la imagen quedaría demasiado
degenerada, se van intercalando imágenes independientes cada cierto número de
fotogramas referenciales.
En la compresión de vídeo MPEG, las imágenes resultantes se pueden clasificar en tres
tipos:
• Tipo I , se comprimen independientemente, el algoritmo de compresión suele ser
JPEG o parecido
• Tipo P, son predichas por extrapolación de una imagen anterior
• Tipo B , son predichas por interpolación de dos fotogramas distintos.
En estos métodos se empieza codificando un fotograma de forma independiente
denominado keyframe que sera del tipo I. A continuación las siguientes imágenes de tipo P
y B se codifican de forma referencial, reduciendo así la información a almacenar. Para esto
las imágenes se dividen en macrobloques, generalmente de 8x8 o 16x16 bits, para cada
bloque se busca su posición en el frame de referencia y se define un vector de movimiento
que nos sirve para obtener la posición del macrobloque a partir del fotograma de referencia.
Como los macrobloques no suelen ser exactamente idénticos se utiliza un algoritmo de
comparación para determinar la similitud de los macrobloques.
En caso de que el macrobloque es practicamente idéntico al anterior y no se ha movido se
salta la codificación del macrobloque. Como el codificador no sabe exactamente el
resultado de las diferentes codificaciones, las va probando y elige la mejor opción en
función de los errores producidos. Si las diferencias son demasiado grandes los
macrobloques se codifican de forma independiente, sin referencia a otra imagen.
La diferencia de las imágenes referenciales B con respecto a las P es que se predicen a
partir de dos fotogramas distintos previamente descodificados, uno anterior y otro posterior.
5. Para mantener un orden y poder descodificar las tramas adecuadamente, las imágenes se
agrupan en secuencias (GOP) determinadas:
Una vez recibida una secuencia, lo primero que se hace es decodificar las imágenes de
referencia, las de tipo I. Una vez obtenidas estas podremos predecir los fotogramas tipo
P
Después de decodificar las imágenes tipo P pasamos a las B que se obtienen interpolando
dos imágenes de referencia, de tipo I o P:
En estas secuencias, las imágenes de tipo I representan los puntos de acceso aleatorio desde
los que se puede comenzar a descodificar el video. Su grado de codificación suele ser bajo
y normalmente ocupan mas espacio que los fotogramas predichos P y B. Los fotogramas
obtenidos por referencia obtienen un mayor nivel de codificación a expensas de su acceso
inmediato, ya que necesitan de otras imágenes previamente descodificadas.
Los frames B nos permiten mejorar la relación de compresión, por ejemplo en un cambio
de escena los fotogramas B obtienen una imagen intermedia entre el fotograma anterior y
posterior del cambio, reduciendo así el error con respecto a las predicciones tipo P.
6. GRUPOS DE IMÁGENES
Los fotogramas se agrupan en un Grupo de Imágenes o GOP (Group Of Pictures).
Se trata de la unidad de acceso aleatorio más pequeña. Un GOP está formado por:
Un fotograma I (el primero).
Uno o varios fotogramas P.
Varios fotogramas B intercalados.
Usualmente en un GOP encontramos 12 fotogramas, pero el codificador puede
cambiarlo dinámicamente. En el caso de detectar un cambio de escena, forzará un
fotograma I que dará inicio a un nuevo GOP.
Dada esta agrupación un error producido en la predicción de un fotograma se
transfiere al resto de fotogramas pertenecientes a ese mismo GOP.
Teniendo en cuenta que para formar un fotograma P necesitamos un I y que para
formar los B necesitamos tener los I y los P, podemos ordenar la secuencia de fotogramas
desde dos puntos de vista diferentes:
Orden de visualización: como lo ve el usuario.
Orden de bitstream: como se generan los fotogramas.
En la siguiente tabla se ve el orden en que el usuario verá los fotogramas, junto con
el orden en el que son creados y enviados:
Orden de visualización
I B B P B B P B B P B B I
1 2 3 4 5 6 7 8 9 10 11 12 13
Ordren de bitstream (transmisión)
I P B B P B B P B B I B B
1 4 2 3 7 5 6 10 8 9 13 11 12
PREDICCIÓN POR COMPENSACIÓN DE MOVIMIENTO
Una secuencia de varios frames consecutivos tiene mucha información en común
que puede ser reducida. La compensación del movimiento es la técnica utilizada en la
codificación de vídeo, más concretamente en el formato MPEG, cuyo objetivo consiste en
eliminar la redundancia temporal que existe entre las imágenes que componen una
secuencia, con el fin de aumentar la compresión, es decir se basa en estimar el movimiento
entre cuadros sucesivos. Debemos tener en cuenta que esta técnica obtiene mejores
resultados en imágenes altamente correladas1.
1
Imágenes correladas: imágenes donde no encontramos cambios muy bruscos
7. El algoritmo de esta técnica primero busca el macrobloque2 del cuadro a codificar
en el cuadro de referencia, aprovechando la correlación espacial (obtendríamos mejores
resultados si esta técnica se aplicara píxel a píxel pero es muy costoso). A continuación si
aparece el mismo macrobloque, se codifica el vector de movimiento correspondiente, pero
si no aparece el mismo se elige el más parecido y se codifica el vector de movimiento. Sin
embargo si no hay ningún bloque similar se codifica dicho macrobloque aprovechando
únicamente la redundancia espacial. Finalmente calculamos la imagen de error frame(t)-
frame(t)’.
Vector de
movimiento
Frame t Frame t ± n
El criterio de semejanza que se utiliza para decidir que macrobloque es el más
similar es el siguiente:
C(x+k, y+e)=conjunto de pixeles del macrobloque que intentamos generar.
R(x+k+u, y+e+v)=conjunto de pixeles de uno de los macrobloques del frame de
referencia.
u,v=parámetro del vector de movimiento. Debe estar en el rango [-p,p], p:limite
de la región donde se busca
M=tamaño del macrobloque (normalmente 16)
Se calcula la diferencia absoluta entre los macrobloques:
D(u,v)=(1/M)*∑∑abs(c(x+k)*R(x+k+u,y+e+v))
K=0 e=0
El algoritmo de búsqueda logarítmica divide el frame en dos áreas distintas: una
interior y otra exterior:
(0,p) (0,p/2)
(-p,0)
(-p,0) (p,0)
(p/2,0)
(0,-p)
(0,-p/2)
2
Macrobloque: trozo de imagen
8. A continuación realizamos nueve movimientos, nueve comparaciones y aplicando el
criterio de selección anterior escogemos el mas apropiado:
Por ùltimo se toma el más apropiado y se vuelve a realizar el proceso.
Esto normalmente se repite nueve veces.
Debemos tener en cuenta que no buscamos en toda la imagen solo en una zona
aproximada puesto que normalmente los movimientos suelen ser pequeños y una búsqueda
completa sería muy costosa. Sin embargo si es cierto que la región será más o menos
grande si los cambios entre los frames son mayores o menores, lo cual depende del tipo de
grabación. Por ejemplo en una grabación de una carrera la región debería ser más grande
puesto que los cambios son más rápidos.
Para escoger el frame donde buscaremos el macrobloque más parecido seguimos
distintos criterios dependiendo de que fotogramos queramos obtener, en caso de los
fotogramas P se aplica al fotograma más reciente I o P, sin embargo para predecir los
fotogramas B se aplica a los dos fotogramas más recientes en el pasado y en el futuro I o P.
Más concretamente dentro de la familia MPEG los formatos que utilizan la
compensación de movimiento para la predicción de fotogramas son: MPEG1, MPEG2,
MPEG4, MPEG7.