Macrobloques
# Macrobloques

Las secuencias de vídeo contienen una gran cantidad de redundancia. El objetivo de las técnicas de codificación es la reducción de la tasa de bits, analizando la redundancia y codificando la mínima información necesaria. Para alcanzar una máxima compresión y buena calidad del vídeo, se dividen las imágenes de la secuencia de vídeo, en cortes (slices), y a su vez, éstos se dividen en macrobloques.

Los macrobloques son la unidad básica sobre la cual se realiza la compensación de movimiento. Estos bloques contienen datos de luminancia y crominancia, posteriormente, en el momento de codificar, a cada uno de estos bloques se le aplicará la DCT y se obtendrán unos coeficientes cuantificados uniformemente listos para transmitir. La cabecera de los macrobloques proporciona información sobre el tipo de codificación usado en el macrobloque, la escala del cuantificador y los vectores de movimiento, y más valores que podemos ver en el siguiente apartado.

## Formato de los Macrobloques

* DIR.... Dirección del bloque en la imagen.
* TIPO.... Identificador del tipo de macrobloque (Imágenes I, P y B).
* CUANT.... Valor de cuantificación.
* VEC. MOV.... Vector de movimiento.
* PCB.... Pattern Code Bloc, algunos bloques dentro del mismo macrobloque se encuentran fácilmente y otros no, esto es una marca indicando cuales están presentes dentro del bloque.
* Bloques.... (4 Y(Luma), 1 Cr(Croma), 1 Cb(Croma)).

## Tipos de macrobloques

Los macrobloques son la base a la hora de decidir que tipo de codificación se realizará a cada imagen antes de ser transmitida, existen cinco tipos de codificación de imágenes:

* Inter-frame: Los macrobloques se codifican sin referencias a imágenes anteriores. Se encuentra en las imágenes I, P y B.
* Predictive-frame: Los macrobloques se predicen a partir de imágenes anteriores y la compensación de movimiento. Se encuentran en las imágenes P y B.
* Bi-Predicitive-frame: Los macrobloques se predicen a partir de imágenes anteriores, posteriores y la compensación de movimiento. Tan solo se encuentran en las imágenes B.
* Switching P-frame: Facilita la transición entre flujo de datos o stream codificados. Contienen macrobloques I y/o P.
* Switching I-frame: Facilita la transición entre flujo de datos o stream codificados. Contienen macrobloques SI, es un tipo especial Intra-frame.

## Método

Lo que se pretende es detectar el movimiento entre imágenes, respecto a los macrobloques que constituyen los cortes de las imágenes de la secuencia. Entonces, lo que se hace es comparar los bloques del fotograma a codificar, con los bloques del fotograma de destino o de referencia. Podemos tener dos tipos de comparaciones, Estimación Backward o Estimación Forward (Estimación de Movimiento).

En el caso ideal, los píxels correspondientes a los bloques coincidentes serían exactamente iguales. No obstante esto, este caso sucede en muy raras ocasiones, ya que la forma de los objetos en movimiento varía respeto al punto de vista del observador o la luz reflejada sobre la superficie, y siempre se verá afectada por el ruido, conocido con el nombre de Macroblocking.

Si nos fijamos en la foto, se diferencian en la imagen unos bloques formados en ella, que son debidos a que hay una gran cantidad de movimiento en esa zona, y la estimación de movimiento no es correcta al cien por cien. Otro error que provoca el efecto de bloque es cuando el BER (Bit Error Rate) es muy alto, por ejemplo, y los errores de predicción de movimiento son muy grandes, entonces, al recibir la señal de televisión nos da errores de Macroblocking como estos:

## Ejemplos

### MPEG-4 Parte 10

En el códec de vídeo, también conocido como H.264/AVC se realizan particiones de macrobloques dependiendo la cantidad de movimiento que tenga la zona de la imagen. Es decir, en las zonas donde no hay mucho movimiento, se le asignan macrobloques de 16x16 píxels, en cambio en las que hay mayor cantidad de movimiento en la escena, se le asignarán macrobloques de 16x8, 8x16 u 8x8 píxels.

### High Efficiency Video Coding (HEVC)

Actualmente se está estudiando un nuevo códec conocido como H.265. Las principales componentes y ventajas son las siguientes:

* Unidad de codificación: Los tamaños de los bloques van de 8x8 hasta 64x64 (supermacrobloques) en estructura de árbol.
* Transformar: El tamaño de quadtree estructurado en bloques de 4x4 a 32x32 muestras.
* Intra predicción: Hasta 34 direcciones de Predicción Intra.
* Interpolación: Interpolación de filtro, hasta 1/4 muestras.
* Predicción de movimiento: Predicción avanzada de vectores de movimiento.
* Codificación de entropia: CABAC o CAVLC.
