En la codificación de video, el proceso de predicción juega un papel crucial para la compresión eficiente de la imagen. Aunque el estándar de codificación no establece de manera exacta cómo un codificador debe elegir una predicción, sí define el rango de opciones disponibles. Por ejemplo, un codificador MPEG-2 tiene un número relativamente limitado de opciones para predecir cada bloque de píxeles, mientras que un codificador HEVC/H.265 ofrece un rango mucho mayor de posibilidades para realizar dicha predicción. Así, el codificador decide cómo generar la predicción, eligiendo dentro de las opciones que el estándar pone a su disposición.

La predicción de video busca crear bloques de píxeles que sean lo más similares posibles a los bloques originales de la imagen o el video que se está comprimiendo. Sin embargo, esta predicción no es una tarea sencilla, ya que existen múltiples factores que se deben considerar. El primer criterio es que una "buena" predicción debe generar un bloque de predicción que sea lo más similar posible al bloque original. En cambio, una "mala" predicción dará lugar a un bloque de predicción muy distinto, lo que aumentará el tamaño de los datos residuales que deben ser comprimidos.

El propósito de hacer una predicción precisa es minimizar la diferencia entre el bloque original y el bloque predicho, lo que resulta en valores residuales más pequeños, que se pueden comprimir más fácilmente. No obstante, la tarea de encontrar la predicción más exacta no es tan simple. Además de la precisión, existen otros dos factores importantes a considerar: el coste computacional y el coste de señalización.

Primero, el codificador debe comunicar la predicción al decodificador de manera que este último pueda recrear exactamente la misma predicción. Esto requiere un cierto número de bits para transmitir las instrucciones de predicción. Es preferible que este proceso de señalización no consuma demasiados bits, pues de lo contrario, la compresión se vería comprometida. Segundo, el cálculo de la predicción en sí mismo puede ser computacionalmente costoso. Si el codificador está procesando 30 o más fotogramas por segundo, el tiempo disponible para elegir una predicción precisa es limitado, lo que hace que los recursos computacionales sean un factor determinante. De este modo, la elección de la predicción se convierte en un acto de equilibrio entre precisión, coste de señalización y coste computacional.

Una vez que el codificador ha elegido una predicción y codificado el bloque residual, envía las instrucciones de predicción junto con el bloque residual codificado en el flujo de bits comprimido o archivo. En los códecs de video basados en estándares, la elección de predicción para cada bloque de píxeles se comunica al decodificador como parte del flujo de bits comprimido. Así, el decodificador no necesita elegir su propia predicción, sino que simplemente sigue las instrucciones enviadas por el codificador para crear la misma predicción.

El proceso de predicción puede clasificarse en dos tipos principales: predicción intra e inter. La predicción intra se basa en píxeles de la misma imagen o fotograma, mientras que la predicción inter utiliza píxeles de otros fotogramas. Ambos enfoques se utilizan para hacer predicciones más precisas y eficientes, pero cada uno tiene sus propias características y desafíos.

Por ejemplo, cuando se utiliza la predicción intra, se busca encontrar píxeles cercanos al bloque actual dentro del mismo fotograma que sean lo más similares posible. Esto es comúnmente útil en escenas donde los objetos o áreas no cambian significativamente entre fotogramas. Por otro lado, en la predicción inter, el codificador puede buscar píxeles de fotogramas anteriores o posteriores, lo que es útil en escenas dinámicas con mucho movimiento. La elección de una u otra depende de varios factores, como la calidad de la predicción y la cantidad de recursos computacionales necesarios para calcularla.

El proceso de codificación de video, que incluye tanto la predicción intra como inter, está diseñado para optimizar la compresión sin comprometer en exceso la calidad de la imagen. Este equilibrio es clave para la eficacia de los códecs modernos, como el HEVC/H.265, que ofrecen una mayor eficiencia que los códecs más antiguos como el MPEG-2.

Además de los aspectos mencionados, es importante comprender cómo la calidad de la predicción impacta en la percepción visual. En muchos casos, una predicción ligeramente menos precisa puede ser preferible si reduce significativamente el coste computacional o de señalización. Este es un área en la que los avances tecnológicos continúan mejorando, pues los algoritmos de predicción más eficientes son fundamentales para mantener la calidad de la imagen sin aumentar excesivamente el tamaño del archivo comprimido.

¿Cómo se estructuran los bloques y unidades de predicción en HEVC?

En HEVC (High Efficiency Video Coding), los bloques de codificación, conocidos como Unidades de Codificación (CU, por sus siglas en inglés), son elementos fundamentales para la compresión de video. Estos bloques pueden ser divididos en unidades más pequeñas, como las Unidades de Predicción (PU) y las Unidades de Transformación (TU), cada una con una función específica en el proceso de codificación. Este proceso de partición de las CUs permite una mayor flexibilidad y eficiencia en la codificación de diferentes áreas de la imagen.

Las Unidades de Codificación (CU) son bloques de dimensiones cuadradas o rectangulares que corresponden a áreas de píxeles que son codificadas conjuntamente. El tamaño de estas unidades se ajusta de acuerdo con la complejidad de la escena, y cada CU puede dividirse en múltiples PUs o TUs, según lo que se requiere para una codificación eficiente. En la imagen 4.15 del estándar HEVC, se observa cómo un CU se divide en diferentes tipos de unidades para la predicción y la transformación. Es importante destacar que la partición de los CUs puede ser diferente dependiendo de si se está realizando una predicción o una transformación, lo que permite adaptar la codificación a las características específicas de cada área de la imagen.

Las Unidades de Predicción (PU) juegan un papel esencial al permitir que los píxeles de una imagen sean predichos en función de los valores cercanos o de cuadros anteriores. Las dimensiones de estas unidades pueden variar, y en el caso de HEVC, pueden ser tanto cuadradas como rectangulares, lo que da flexibilidad en la elección del tamaño de la PU según la complejidad de la escena a codificar. Los parámetros de predicción, como los vectores de movimiento, el marco de referencia y el modo de predicción, a menudo se comparten entre las PUs vecinas, lo que permite reducir la cantidad de información que debe ser transmitida al decodificador.

Una vez realizada la predicción, el siguiente paso en el proceso de codificación es la transformación de los residuos, es decir, la diferencia entre los valores predichos y los valores reales de los píxeles. Este proceso de transformación se realiza mediante las Unidades de Transformación (TU). Estas unidades son áreas cuadradas de muestras que se transforman y cuantizan para obtener una representación más compacta de los datos. Al igual que las PUs, las TUs pueden tener diferentes tamaños según la naturaleza de la imagen. Por ejemplo, en áreas con pocos detalles o texturas homogéneas, puede ser más eficiente usar TUs grandes, mientras que en áreas más complejas, con movimiento o detalles finos, el uso de TUs más pequeñas es más adecuado.

El tamaño y la forma de las TUs tienen un impacto directo en la eficiencia de la compresión. Un TU más grande es generalmente más eficiente para áreas homogéneas donde los residuos tienen características similares, mientras que un TU más pequeño es más adecuado para áreas detalladas o con movimiento complejo. En HEVC, la capacidad de dividir cada CU en una quadtree para especificar las TUs permite una codificación más precisa y adaptada a las diferentes partes de una imagen.

En cuanto a la estructura general de los secuencias HEVC, estas se almacenan o transmiten en unidades denominadas NAL (Network Access Layer Units). Estas unidades contienen los parámetros comunes necesarios para la decodificación del video. Por ejemplo, los conjuntos de parámetros, como el Video Parameter Set (VPS) y el Sequence Parameter Set (SPS), son fundamentales para la correcta decodificación de las secuencias codificadas. El VPS se transmite al inicio de una secuencia codificada, mientras que el SPS contiene parámetros como la resolución espacial y temporal, el formato del espacio de color y el tamaño del bloque de codificación, entre otros.

Los parámetros en el SPS son esenciales para el decodificador, ya que indican si el dispositivo es capaz de manejar secuencias con ciertos requisitos de tamaño de cuadro o profundidad de color. Esto es crucial para asegurar que el decodificador pueda procesar correctamente la secuencia sin errores. Además, los conjuntos de parámetros como el PPS (Picture Parameter Set) permiten la configuración de ciertas características de decodificación, como el uso de filtros y la inicialización de parámetros de cuantificación.

En resumen, la estructura de codificación de HEVC proporciona una gran flexibilidad y eficiencia a través de la partición dinámica de los bloques en unidades más pequeñas para la predicción y transformación. Esta capacidad de dividir los CUs en PUs y TUs de manera adaptativa es lo que permite a HEVC alcanzar altos niveles de compresión sin sacrificar la calidad visual. Sin embargo, el proceso también implica una serie de decisiones sobre el tamaño de los bloques y las unidades, que dependen de las características específicas de la escena que se está codificando.

Además de lo descrito, es importante que el lector entienda cómo las decisiones sobre el tamaño de las unidades de predicción y transformación impactan en la eficiencia de la compresión y en la calidad final del video. Aunque el tamaño de las unidades se adapta automáticamente en función de la complejidad de la imagen, la selección de estos parámetros tiene un efecto directo en la cantidad de datos que deben ser transmitidos y procesados. Este equilibrio entre tamaño de bloque y eficiencia de compresión es esencial para optimizar tanto el almacenamiento como la transmisión de video.