|
MPEG-4 Parte 10 (H.264/AVC)
- El H.264 (también llamando MPEG-4 parte 10), es un codec
de vídeo digital utilizado para alcanzar una alta compresión de
datos. Fue realizado por la ITU-T Video Coding Experts
Group (VCEG) junto con la ISO/IEC Moving Picture
Experts Group (MPEG) como el producto de un esfuerzo de
sociedad colectiva conocida como el Joint Video Team (JVT).
También es conocido como MPEG-4 AVC (Advanced Video
Coding, Codificación Video Avanzada) , ofrece una compresión
perceptiblemente mayor que sus precursores.
Puede proporcionar vídeo de calidad
DVD con una tasa binaria 40% inferior a la de MPEG-2. Se
considera prometedor para vídeo a imagen completa terrestre,
satélite y conexiones de banda ancha en Internet. Es también uno de los codecs de video que se han elegido para el
Blu-ray y el
HD-DVD.
H.264 hace uso las redundancias
espaciales, temporales, y psico-visuales para mejorar la
eficiencia de la codificación de video.
Codificación inter-frame
Como novedad frente a las normas
anteriores, H.264 propone nuevas formas de partición de bloques.
De este modo, se proporciona una mayor exactitud en la
estimación de movimiento, a lo que se suma una precisión que
puede llegar hasta un cuarto de píxel
Antes, se realizaban particiones
de 8x8. En el H.264, de cada a disminuir información residual y
el número de vectores de movimiento, se asignan bloques de
diferentes tamaños según sea la cantidad de movimiento que
exista entre los distintos frames. A las zonas que cambian menos
se le asignan los macrobloques de mayor tamaño (16x16 píxeles),
mientras que las zonas con más movimiento estos bloques puede
ser descompuestos en sub-bloques de 16x8, 8x16 ó 8x8 píxeles. En
este último caso, es posible descomponer a su vez cada sub-bloque
de 8x8 píxeles en particiones de 8x4, 4x8 ó 4x4 píxeles.

Aquí podemos ver el proceso de
compensación de movimiento en la codificación inter-frame.
Cuanto mejor sea la predicción, menos información contendrá el
residuo.
Codificación intra-frame
Como novedades frente al
MPEG-2, tenemos los slices SP y SI
además de los I, P y B
|
Tipo
de Slice |
Descripción
|
Perfil
|
|
I (Intra) |
Contiene sólo macrobloques I
(predichos de datos codificados previamente dentro
del mismo slice, lista 0 ó pasados cercanos) |
Todos |
|
P (Predictivo) |
Contiene macrobloques P
(predichos desde una imagen de
referencia) y/o macrobloques I |
Todos |
|
B (Bi-Predictivo) |
Contiene macrobloques B y/o macrobloques I
(predichos desde listas 0 – pasados
cercanos y 1 – futuros cercanos) |
Extendido y Principal
|
|
SP (Switching P)
Novedad frente a MPEG-2 |
Facilita transición entreflujos o
streams codificados, contiene macrobloques
P y/o I |
Extendido |
|
SI (Switching I)
Novedad frente a MPEG-2 |
Facilita transición entre flujos o
streams codificados, contiene macrobloques SI (un tipo especial intra
frame) |
Extendido |
En el modo intraframe, un bloque P
está formado de bloques reconstruidos a partir de otros
anteriormente codificados. Un bloque puede tener numerosos modos
de ser predicho. El codificador generalmente selecciona el que
menor diferencia tenga entre el P y el bloque que será
codificado

Un frame B se predice ponderando
desde múltiples referencias, desde dos listas (0 y 1) que pueden
contener frames pasados y futuros. Por ello, el orden en que se
transmiten los frames no es el mismo que con el que se
reproducen.

Orden de
reproducción: I0 B1
B2 B3 P4 B5 B6
...
Orden del flujo de bits: I0 P4 B1
B3 B2 P8
B5 ...
La novedad frente a
MPEG-2 son los frames SP e SI. Han sido
ideados para conmutar de manera eficaz entre diferentes
flujos de vídeo para un acceso aleatorio en los decodificadores
de vídeo más eficiente. En otras palabras, por ejemplo, en un
material codificado en distintos bitrates y transmitido a través
de Internet, cambiará de manera más suave a un bitrate inferior
o superior según sea la capacidad del medio de transmisión en
ese momento. Otro ejemplo, es su uso en el avance rápido del
video.
|

Cambio de flujo
sin slices SP
|

Cambio de flujo
con slices SP
|
|

Avance rápido con
slices SP |
Codificación por transformada
en H.264
Recordemos que la DCT
(Transformada Discreta del Coseno) es un algoritmo muy empleado,
que convierte los dastos de una imagen o un residuo de
compensación de movimiento de un dominio al de la transformada.
Los datos ese nuevo dominio, deberían estar:
- Decorrelados (poca
relación entre sí)
- Compactos (la mayor
parte de la energía concentrada en pequeños valores)
- Reversible (para poder
volver al dominio antiguo)
- Algoritmo
computacionalmente eficaz (poco requerimiento en número
de operaciones y ocupación en memoria).
Cada macrobloque ha de estar
transformado, cuantizado y codificado. En los estándares
anteriores (MPEG-1, MPEG-2, 9 primeras partes de MPEG-4 y H.263)
se hace uso de la DCT 8x8 como transformada básica. El perfil
básico de H.264 usa tres transformadas dependiendo del
tipo de datos que serán codificados:
- Transformada “Hadamard” para
matrices 4x4 de luminancia
- Transformada “Hadamard” para
matrices 2x2 de crominancia
- Transformada DCT para todos
los demás bloques 4x4 de datos residuales.
Si se utilizan bloques de
diferentes tamaños (4x8, 8x4, 8x8, 16x8) deberán realizarse
pequeñas variaciones de la transformada respecto a cada uno de
ellos.
 |
Orden de
recorrido en la transmisión |
Filtro de "deblocking"
H.264 también integra un “filtro
antibloques” que se aplica tanto en el codificador (antes de
almacenar macrobloques para futuras predicciones) como en el
decodificador (antes de reconstruir y mostrar macrobloques). De
este modo, se mejora la compresión.
Visualmente, este filtro suaviza
los bordes de los bloques, mejorando la apariencia de los frames
y, por tanto, también mejora la calidad de las secuencias
de vídeo.
 |
Componente
de luminancia de un macrobloque 16x16, con 4 bloques
4x4 señalados.
En este caso,
el filtro afectaría a los bloques a y b, dado
que el valor de sus pixeles es muy cercano. Se evita
en ellos la distorsión visual por bloques.
En los c y
d, el filtro se desconectaría, para preservar la
nitidez de los bordes de la imagen, dado que en
ellos el cambio es más brusco |
Ahora veamos una comparación de
una imagen reconstruida con y sin filtro deblocking:

Cuantificación
La operación básica es:
Zi j = round(Yi
j /Qstep)
El estándar soporta 52 niveles de
cuantización, que representa un aumento respecto a estándares
anteriores. Gracias a la fórmula, más eficaz que redondear al
entero más cercano, hay un pequeño aumento de calidad visual,
puesto que dicho redondeo se efectúa cada vez de manera
diferente. Cada paso del parámetro de cuantificación (QP)
incrementa un 12,5% el intervalo de cuantificación, lo que
equivale a duplicarlo por cada 6 pasos.

Codificación
Existen dos modos de
exploración de los coeficientes transformados: "zig-zag" y
"zig-zag inverso". El segundo modo de exploración permite en
particular la lectura del macrobloque en sentido contrario para
poder funcionar con la codificación de entropía adaptativa.
El primer tipo de recorrido hace
referencia a la codificación Huffman. El segundo, a codificación
aritmética. En el MPEG-2 únicamente
tenemos el primero de ellos.

La codificación de entropía se
puede realizar de tres formas diferentes.:
- UVLC (Universal
Variable Length Coding). Este tipo de codificación es
utilizado para codificar la gran mayoría de los elementos de
sincronización y cabeceras.
- VLC (Variable
Length Coding) de forma adaptativa, para codificar el
resto de elementos sintácticos (coeficientes, vectores de
movimiento). Existen dos variantes:
- CAVLC (Context
Adaptative Variable Length Coding)
- CABAC (Context
Adaptative Binary Arithmetic Coding)
Esquema general H.264

Tabla resumen de comparación de
características entre formatos
| |
MPEG-2 |
MPEG-4 ASP
(parte 2) |
MPEG-4 H.254
(parte 4) |
|
Frames I, P, B |
Sí |
Sí |
Sí |
|
Codificación |
Huffmann |
Huffmann |
Huffmann o aritmética |
|
Tamaño del bloque |
16 x
16 |
16 x
16 |
Variable (4x4 - 16x16) |
|
Resolución de cuarto de píxel |
No |
Sí |
Sí |
|
Filtro deblocking |
No |
No |
Sí |
|
Predicción de movimiento basada en slices |
No |
No |
Sí |
|
Frames con referencias múltiples |
No |
No |
Sí |
|
Predicción ponderada |
No |
No |
Sí |
|
Conmutación de imágenes |
No |
No |
Sí |
|
Comparación de bitrate |
100% |
60% |
40% |
Comparación de curvas R-D
(Ratio de compresión vs. Distorsión
| Se ve cómo
la curva R-D (ratio de bits – distorsión, dada ésta
última en dB de relación señal/ruido, de ahí la forma
logarítmica) del H.264 es mucho más óptima que las
demás. Por ejemplo,
para una S/N de 30 dB, H.264 necesita unos 180 kb/s
mientras que MPEG-2 necesita unos 450 kb/s.

Bitrate necesario,
por años |

Comparación entre
MPEG-2, H.263, MPEG-4 y H.264. |
Resumen final
- El H.264 es un estándar
nacido a partir de otros anteriores, pero con importantes
diferencias y mejoras respecto a ellos.
- Las nuevas
características son:
- Codificación de entropía
mejorada
- Compensación/predicción
de movimiento mejorada
- Pequeños bloques para la
codificación por transformada
- Filtro “deblocking”
mejorado
- Ahorros sustanciales de
bitrate (hasta un 50%) respecto a otros estándares,
manteniendo la misma calidad de imagen
- Mejora de calidad de imagen
manteniendo la misma relación S/N
- La complejidad del
codificador triplica la de los anteriores
- La complejidad del
decodificador duplica la de los anteriores
|