La codificación de video de alta eficiencia (HEVC, por sus siglas en inglés) ha revolucionado el mundo de la transmisión de video al ofrecer una compresión significativa sin comprometer la calidad visual. A través de técnicas avanzadas, como la predicción de movimiento y la interpolación de cuadros, HEVC logra una tasa de compresión mucho mayor que sus predecesores, como H.264/AVC. Esta mejora en la compresión se debe, en gran parte, a la optimización en el uso de recursos y a la capacidad para predecir el movimiento dentro de los cuadros de manera más precisa, lo cual es clave para reducir el tamaño de los archivos y mejorar la eficiencia en la transmisión.
Uno de los aspectos fundamentales de HEVC es la predicción de movimiento, que permite reducir la cantidad de información necesaria para codificar un video. A través de la estimación de los vectores de movimiento, HEVC calcula cómo se desplazan los bloques de píxeles de un cuadro a otro. Existen varios métodos para predecir el movimiento, entre los que se incluyen la predicción hacia adelante y hacia atrás, lo que mejora la precisión de la codificación. Estos métodos permiten que el algoritmo utilice menos bits para representar el movimiento y así optimizar el tamaño de los archivos.
En la codificación HEVC, se utilizan distintos tipos de cuadros, como los I-cuadros (cuadros intra), P-cuadros (cuadros predictivos) y B-cuadros (cuadros bidireccionales), cada uno con su propio conjunto de técnicas para optimizar la predicción. Los cuadros P utilizan información de los cuadros anteriores para predecir el contenido, mientras que los cuadros B pueden predecir tanto hacia adelante como hacia atrás, utilizando tanto los cuadros anteriores como los posteriores en la secuencia de video. Estos tipos de predicción son esenciales para lograr una alta eficiencia en la codificación.
Además, la interpolación juega un papel crucial en HEVC, especialmente cuando se trabaja con predicción entre cuadros. El filtro de interpolación se utiliza para obtener predicciones de mayor resolución entre los cuadros, lo que mejora la precisión de los vectores de movimiento y, por ende, la calidad general del video. HEVC permite interpolación con diferentes niveles de precisión, como la interpolación de subpíxeles y la interpolación a nivel de píxel, lo que ayuda a afinar aún más las predicciones de movimiento.
Otro componente clave es el uso de filtros en bucle. Estos filtros, que se aplican después de que el video ha sido codificado, ayudan a reducir los artefactos visuales, como los bordes dentados o el ruido que puede aparecer debido a la compresión. El filtro de bucle elimina las irregularidades en las predicciones y mejora la calidad del video, haciendo que el proceso de decodificación sea más eficiente.
Es importante destacar que el uso de HEVC no solo afecta la calidad del video, sino también la manera en que este se transmite. Con la capacidad de transmitir videos de alta definición utilizando menos ancho de banda, HEVC es ideal para servicios de streaming en tiempo real. La combinación de la compresión eficiente y la optimización de la predicción de movimiento permite a los usuarios experimentar transmisiones de video de alta calidad con menor latencia y tiempos de buffering reducidos, lo cual es crucial en plataformas como servicios de video bajo demanda o transmisiones en vivo.
HEVC no es la única opción disponible, pero se ha establecido como uno de los estándares más avanzados para la compresión de video. Su sucesor, H.266/VVC, continúa en esta dirección, buscando aún más eficiencias en la codificación. Sin embargo, la adopción de HEVC sigue siendo amplia debido a su balance entre eficiencia y compatibilidad con hardware existente.
Al comprender los principios detrás de la predicción de movimiento y la interpolación de cuadros, los técnicos y desarrolladores pueden aprovechar al máximo las capacidades de HEVC. Es esencial reconocer que cada decisión en la codificación tiene implicaciones en el rendimiento del video y la eficiencia en la transmisión. La implementación de HEVC requiere una cuidadosa selección de parámetros, como el tamaño del bloque, los vectores de movimiento y la aplicación de filtros, para lograr la mejor calidad posible sin sacrificar el rendimiento en tiempo real.
¿Cómo se realiza la predicción intra en bloques de video?
La predicción intra en bloques de video es un proceso fundamental en la codificación de imágenes que permite reducir la redundancia espacial al predecir los valores de un bloque en función de los bloques vecinos ya codificados. Este proceso se aplica principalmente en la compresión de video, en donde se utilizan muestras previamente codificadas para predecir las muestras del bloque actual.
Para un bloque de muestra de tamaño N×N en un cuadro de video, la tarea consiste en generar una predicción a partir de los valores de los bloques adyacentes ya codificados. Los bloques adyacentes pueden ser aquellos situados en las posiciones superior izquierda, superior, superior derecha, izquierda e inferior izquierda del bloque actual. Si estas muestras ya han sido codificadas antes de que el codificador procese el bloque actual, entonces pueden ser utilizadas para realizar la predicción.
Existen diferentes modos de predicción intra que se utilizan dependiendo de la configuración de los bloques adyacentes y de las necesidades específicas de la codificación. En la figura 5.7, se muestra un bloque N×N cuyo bloque actual tiene acceso a todas las muestras de las posiciones mencionadas anteriormente. En el caso de que el bloque esté cerca de un límite de corte, como en la figura 5.9, las muestras situadas por encima del bloque no estarán disponibles para la predicción, limitándose solo a las muestras adyacentes a la izquierda. Esto tiene implicaciones importantes, ya que la calidad de la predicción puede verse afectada si no se disponen de suficientes muestras vecinas.
Una vez que se seleccionan las muestras disponibles, el codificador elige un modo de predicción adecuado para realizar la estimación del bloque. Los modos de predicción más comunes son los siguientes: predicción DC, predicción planar y predicción direccional.
En la predicción DC, se calcula un valor promedio de las muestras disponibles inmediatamente arriba y a la izquierda del bloque. Este valor promedio se copia en todas las muestras del bloque actual. Este modo es eficaz cuando el área actual del cuadro es relativamente plana, es decir, cuando no hay mucha variación en la textura del bloque. Si algunas de las muestras vecinas no están disponibles, como ocurre en la parte superior o en el lado izquierdo de la imagen, el predicador puede optar por usar solo las muestras que están disponibles. En los casos en los que ninguna muestra está disponible, como en el primer bloque en la esquina superior izquierda de una imagen intra-codificada, la predicción puede establecerse en un valor constante.
La predicción planar es otra técnica que se utiliza para bloques más complejos. Este modo calcula una función de gradiente en función de las muestras adyacentes, creando una predicción basada en una función plana. La predicción planar es eficaz cuando el bloque original es relativamente suave, ya que se adapta bien a gradientes uniformes. Sin embargo, si el bloque es más detallado o tiene texturas complejas, la predicción planar no será tan precisa, como se puede observar en los ejemplos de las figuras 5.15 y 5.16.
En la predicción direccional o angular, el codificador extrapola las muestras vecinas en una dirección específica. Esto se puede hacer de forma horizontal, vertical o diagonal. En la predicción horizontal, las muestras de la izquierda del bloque se copian hacia la derecha, mientras que en la predicción vertical, las muestras de la parte superior se copian hacia abajo. También existen modos de predicción diagonal, que extrapolan las muestras en ángulos de 45° con respecto a las direcciones horizontal y vertical.
Es importante entender que la elección del modo de predicción adecuado depende de la estructura del bloque y de la cantidad de información disponible en las muestras adyacentes. La predicción intra es especialmente útil para reducir el tamaño de los datos de video, ya que al predecir los bloques de manera eficiente, se pueden codificar solo los residuos (la diferencia entre el bloque original y la predicción), lo que reduce la cantidad de datos que necesitan ser almacenados o transmitidos.
La predicción intra también tiene implicaciones en la calidad de la imagen reconstruida, especialmente cuando los bloques tienen texturas complejas o patrones muy detallados. En estos casos, los modos de predicción más simples como el DC o el planar no serán suficientes para lograr una predicción precisa, y será necesario recurrir a los modos direccionales o angulares. Sin embargo, la efectividad de cada modo de predicción varía dependiendo de la escena y de las características del video.
Además de la eficiencia de la codificación, es crucial considerar cómo la selección de la predicción intra afecta el tiempo de procesamiento y el rendimiento del sistema de codificación. La complejidad computacional de cada modo de predicción varía, lo que puede influir en la velocidad de codificación y decodificación, así como en los recursos necesarios para procesar grandes volúmenes de datos.
¿Cómo influye el tamaño de los bloques de predicción en la compresión y la predicción de movimiento?
En los sistemas de compresión de video, la predicción inter-cuadro es una técnica clave para reducir la cantidad de datos necesarios para representar un video. A través de esta técnica, se busca predecir una región de la imagen a partir de otra, reduciendo así la redundancia temporal entre los cuadros. Uno de los factores que influye de manera significativa en la eficiencia de esta predicción es el tamaño de los bloques de predicción utilizados en el proceso.
Generalmente, bloques de predicción más pequeños resultan en una mayor cantidad de bloques por cuadro, lo que a su vez implica un mayor volumen de información a transmitir para describir el modo y el vector de movimiento de cada bloque. En este contexto, los bloques de predicción cuadrados son especialmente sencillos de procesar, ya que requieren menos recursos para ser señalizados, especialmente si sus dimensiones son potencias de 2. Un ejemplo de esto es el uso de unidades básicas cuadradas como una Unidad de Codificación de Cuadro (CTU), que puede dividirse mediante un árbol cuaternario. En este caso, basta un solo bit para indicar la división en cuatro bloques de predicción de 32×32 o unidades de predicción (PUs).
Por otro lado, los bloques de predicción rectangulares pueden ser más complejos computacionalmente, ya que requieren mayor esfuerzo para señalar el tamaño del bloque. A medida que los estándares de compresión han evolucionado, se ha introducido una flexibilidad creciente en cuanto al tamaño y la forma de los bloques de predicción inter-cuadro. Esto se ilustra claramente en la figura 6.31, donde se muestran diferentes tamaños de bloques de predicción utilizados en varios estándares de codificación como MPEG-1, MPEG-2, H.263, H.264/AVC y H.265/HEVC.
El vector de movimiento es otra pieza fundamental en la predicción inter-cuadro. Este vector indica el desplazamiento desde la posición de un bloque en un cuadro hasta la posición correspondiente en el cuadro de referencia. Cada vector de movimiento tiene una componente horizontal (x) y una componente vertical (y), que representan el desplazamiento en ambas direcciones. La magnitud y dirección del vector dependen del movimiento real de los píxeles entre los cuadros. En el ejemplo de la secuencia Foreman, se observa que el vector de movimiento de un bloque en el segundo cuadro puede ser negativo en la dirección x, lo que indica que los píxeles en esa región del cuadro se han movido a la izquierda en comparación con el primer cuadro.
A lo largo del proceso, es importante señalar que el vector de movimiento no siempre corresponde al movimiento real de los píxeles. En ocasiones, el encoder elige un vector de movimiento que proporciona la mejor coincidencia entre el bloque actual y el bloque de referencia, aunque esta coincidencia no refleje un desplazamiento físico real de los píxeles. En situaciones donde no existe una textura similar en el cuadro de referencia, los vectores de movimiento pueden ser más grandes o parecer aleatorios, como ocurre con el área del sombrero blanco en la secuencia de Foreman.
En cuanto a la distribución de los vectores de movimiento, se observa que la mayoría de los vectores son pequeños o incluso nulos, lo que indica que los bloques en una región determinada de la imagen tienden a moverse de manera coherente. Este fenómeno refleja una propiedad importante en la predicción inter-cuadro: la alta correlación entre los vectores de movimiento de bloques vecinos. Como muestra la distribución de los vectores de movimiento, las variaciones en los vectores son generalmente pequeñas y locales, lo que sugiere que el movimiento en una región específica es relativamente homogéneo.
En otro ejemplo de la secuencia Foreman, cuando la cámara realiza un paneo hacia la derecha, los vectores de movimiento de los bloques en el segundo cuadro tienden a señalar hacia la derecha, lo que refleja el movimiento de la cámara. Este fenómeno se repite en el análisis de los vectores de movimiento, donde se observa que la mayoría de los vectores en el eje x tienen valores positivos, lo que indica que los píxeles del primer cuadro se mueven hacia la izquierda en el segundo cuadro debido al movimiento de la cámara.
El encoder selecciona el mejor vector de movimiento mediante la minimización de una medida de diferencia, como el error cuadrático medio (MSE, por sus siglas en inglés), entre el bloque actual y el bloque predicho. Cuanto menor sea la diferencia entre los píxeles del bloque predicho y los píxeles del bloque actual, menor será el valor de MSE. Esto implica que el encoder seleccionará el vector de movimiento que produzca la predicción con el menor error posible.
Además de las cuestiones técnicas relacionadas con el tamaño de los bloques de predicción y la elección de los vectores de movimiento, es fundamental comprender que la eficiencia en la compresión de video no solo depende de la precisión de la predicción, sino también de la capacidad de la codificación para adaptarse a las características particulares de cada secuencia de video. El análisis de la distribución de los vectores de movimiento, así como la elección de los tamaños de los bloques de predicción, refleja la necesidad de equilibrar la precisión de la predicción con la complejidad computacional, algo que los estándares de compresión más recientes han logrado mejorar notablemente.
¿Cómo funciona la codificación y decodificación de video?
El proceso de codificación y decodificación de video es fundamental para la compresión y transmisión de datos visuales. Un codificador de video toma un video sin comprimir y lo convierte en un flujo de bits comprimido, mientras que un decodificador realiza el proceso inverso, transformando el flujo comprimido en un video visualizable. Este flujo de datos comprimido es esencial para reducir el tamaño de los archivos y optimizar la transmisión en redes, sin sacrificar de manera significativa la calidad visual.
El primer paso en la codificación de video es la predicción de las diferencias entre cuadros consecutivos. Esto se logra mediante un proceso conocido como predicción, en el cual el codificador usa información de cuadros anteriores para estimar el contenido del siguiente cuadro. Esta predicción reduce la cantidad de datos que deben ser almacenados o transmitidos, ya que solo se codifican las diferencias entre los cuadros, no los cuadros completos.
Una vez predicho el contenido, el siguiente paso es la transformación. El bloque residual, que representa las diferencias entre los cuadros, se transforma al dominio de la frecuencia. Este paso, conocido como la transformación, permite representar la información de manera más eficiente, enfocándose en las características más importantes para la percepción visual. La cuantificación sigue a la transformación, donde los valores transformados se ajustan, reduciendo la precisión de los datos en áreas menos importantes visualmente. Esto tiene el efecto de descartar los componentes de datos que son menos relevantes para la percepción humana, mientras que retiene los detalles visuales clave.
Después de la cuantificación, los datos resultantes se comprimen mediante la codificación de entropía. Este proceso toma los datos cuantificados junto con cualquier otra información necesaria para la decodificación y los convierte en un formato comprimido. Al contrario, el decodificador invierte este proceso: realiza una decodificación de entropía, reescala los datos (realizando la “cuantificación inversa”) y luego aplica la transformación inversa, sumando la predicción para reconstruir el cuadro de video original.
La entrada de un codificador de video generalmente es un video sin comprimir, mientras que su salida es un flujo de bits comprimido. Además, pueden entrar otros tipos de información en el codificador, como parámetros de control o datos que deben ser incorporados en el flujo de bits. El decodificador, por su parte, toma este flujo de bits comprimido y lo convierte nuevamente en video sin comprimir, apto para ser mostrado en una pantalla o procesado adicionalmente.
Existen diversas fuentes de video sin comprimir. Las cámaras digitales capturan imágenes directamente desde una escena, almacenándolas en forma sin comprimir o comprimida. Los archivos RAW contienen muestras de video sin compresión, y los procesos de edición o renderización también generan videos sin comprimir como salida. A menudo, los decodificadores de video producen cuadros decodificados que pueden ser utilizados para generar una vista previa del video comprimido y decodificado.
Por otro lado, los destinos para el video sin comprimir incluyen la visualización en una pantalla, el almacenamiento en archivos RAW o el uso en procesos de edición. En algunos casos, el video sin comprimir es vuelto a codificar, por ejemplo, para cambiar el bitrate o las características de transmisión. Este proceso se conoce como transcoding, y es fundamental para ajustar la calidad o el formato de un video para su distribución.
El video digital sin comprimir se captura a través de cámaras que toman una muestra del mundo real en intervalos de tiempo específicos, produciendo cuadros o campos de video. Un cuadro representa una instantánea completa de la escena en un momento dado, mientras que un campo captura solo la mitad de la información visual de un cuadro. Con el paso del tiempo, el video entrelazado, que se basa en la serie de campos, ha sido reemplazado en su mayoría por cuadros progresivos, que son más comunes en los dispositivos de captura y visualización modernos.
Cada cuadro de video se representa generalmente como una malla rectangular de píxeles. Un píxel puede ser monocromático o en color. En el caso de un píxel monocromático, se utiliza un solo número para representar el brillo, donde los valores más grandes indican un píxel más brillante y los más pequeños representan un píxel más oscuro.
En cuanto a los píxeles de color, el video capturado o mostrado en una pantalla se basa a menudo en el sistema RGB (rojo, verde y azul), donde cada componente de color se representa mediante un número entero. Estos tres componentes se combinan para formar una amplia gama de colores, y cada píxel de color se puede expresar como una combinación ponderada de estos tres componentes. Existen otros sistemas de representación de color, como YUV o YCrCb, que dividen la información de color en componentes de luminancia y crominancia, lo que facilita una representación más eficiente en términos de almacenamiento y transmisión de video.
El uso de estos sistemas de color es crucial para el tratamiento y la codificación de video, ya que el diseño adecuado de los colores puede afectar la eficiencia de compresión y la calidad final del video. La compresión de video no solo depende de la técnica de codificación, sino también de cómo se representa la información visual y cómo se aprovechan las características perceptuales del ojo humano para reducir la cantidad de datos necesarios.
Para comprender completamente cómo funciona la codificación y decodificación de video, es importante no solo conocer los pasos técnicos que involucran la predicción, la transformación, la cuantificación y la codificación de entropía, sino también entender cómo se procesan los diferentes formatos de video, los tipos de datos que entran y salen de los codificadores y decodificadores, y la manera en que se gestionan los sistemas de color. Además, la eficiencia de la compresión está estrechamente relacionada con el balance entre la calidad visual y el tamaño del archivo comprimido, un factor que se vuelve aún más relevante en un mundo donde la transmisión de video es cada vez más omnipresente.

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский