Inter-frame

Inter frame prediction es una técnica que explota la correlación temporal entre frames consecutivos para poder codificar con el mínimo número de bits posibles.
Para codificar,  lo que se hace es predecir un frame a partir de frames anteriores y/o futuros, aplicando sobre éstos un movimiento dictado por unos vectores de movimiento. Esta técnica ya se utilizaba en anteriores estándares como el MPEG-2.

Contexto 
H.264/MPEG-4 AVC es un estándar de codificación de vídeo que sustituirá el MPEG-2. De hecho, el H.264 es una parte de MPEG4 (parte 10) que solamente se ocupa de la codificación de vídeo. Es un estándar creado colaborativamente por ITU-T VCEG y ISO/IEC organizaciones.

Mejoras de la predicción inter-frame en H.264 
Las mejoras más importantes de esta técnica en H.264 respecto a anteriores estándares son:
 Particiones de bloques más flexibles.
 Resolución de hasta ¼ de píxel en la compensación de movimiento.
 Múltiples referencias.
 Direct/Skip Macroblock mejorado.

Particiones de bloque más flexibles 
Particiones de bloques de luminancia de 16×16 (MPEG2), 16×8, 8×16, 8×8. En este último caso nos permitirá dividirlo en nuevos bloques de 4×8, 8×4, 4×4.

El frame a codificar se divide en bloques de igual medida a la de algunos de los mostrados en la figura. La predicción de cada bloque serán bloques de la misma medida que las imágenes de referencia, aplicando un pequeño desplazamiento.

Resolución de hasta un ¼ de píxel en la compensación de movimiento 
Los píxeles a las half-pixel posiciones se obtienen aplicando un filtro de longitud 6.

H=[1 -5 20 20 -5 1]

Por ejemplo:

b=A - 5B + 20C+20D+E

Los píxeles a las quarter-pixel posiciones se obtienen mediante interpolación bilineal.

Mientras el MPEG-2 permitía una resolución de ½ píxel, el inter-frame nos permite una resolución de hasta ¼. Ello quiere decir que podremos buscar un bloque del frame a codificar en otros frames de referencia, o podremos interpolar píxeles que no existen para encontrar bloques que se adapten aún mejor al bloque actual. 
Si el vector de movimiento es un número entero de unidades de muestras, significa que podemos encontrar en las imágenes de referencia el bloque compensado en movimiento. 
Si el vector de movimiento no es un número entero, la predicción la obtendremos a partir de píxeles interpolados aplicando un filtro interpolador en la dirección horizontal y vertical.

Múltiples referencias 
Múltiples referencias para poder hacer una estimación del movimiento. Permite buscar la mejor referencia en 2 los posibles buffers (List 0 para imágenes pretéritas, List 1 para imágenes futuras) que contienen hasta 16 frames cada uno.
La predicción del bloque se haría mediante una suma ponderada de los bloques de las imágenes de referencia. Permite mejorar la calidad de la imagen en escenas donde hay cambios de plano, zooms o cuando se descubren nuevos objetos de secuencia.

Direct/Skip Macroblock mejorado  
Los modelos Skip Mode y Direct Mode se usan con mucha frecuencia, sobre todo con las B-pictures, y permiten reducir significativamente los bits a codificar. Nos referiremos a estos modos cuando codificamos un bloque sin enviar error residual ni vectores de movimiento. El codificador solo señalará que se trata de un Skip macroblock. El descodificador deducirá el vector de movimiento del bloque codificado con Direct/Skip Mode a partir de otros macroblocks ya descodificados. 

Hay dos maneras de deducir el movimiento:

 Temporal Utiliza el vector de movimiento del bloque del frame List 1 situado en la misma posición para deducir el vector de movimiento. El bloque List 1 tendrá como referencia un bloque de List 0.
 Espacial Predice el movimiento a partir de los macroblocks vecinos del mismo frame. Un posible criterio sería copiar el vector de movimiento de un bloque vecino. Estos modes se utilizan en zonas de la imagen uniformes donde no hay mucho movimiento.

En la figura, los bloques de color rosa corresponden a bloques codificados con Direct/Skip Mode. Como podemos observar se utilizan con mucha frecuencia, sobre todo con las B-pictures.

Véase también 
 Códec de vídeo
 FMO (ordenación flexible de los macrobloques)
 SNR (en inglés)
 Vector de movimiento
 Video compression (en inglés)

Referencias 
 Software H.264: http://iphome.hhi.de/suehring/tml/download/ 
 T.Wiegand, G.J. Sullivan, G. Bjøntegaard, A.Luthra: Overview of the H.264/AVC Video Coding Standard. IEEE Transactions on Circuits and Systems for Video Technology, Vol. 13, No. 7, July 2003 (referència en anglès)

Enlaces externos 
 Tutorial de compresión de video MPEG-4 AVC en inglés
 Tutorial de MPEG-4 de OKI en inglés
 Noticia sobre MPEG-4 AVC en francés

Multimedia