La evolución de la codificación de video ha sido una de las áreas más dinámicas dentro de las telecomunicaciones y el procesamiento digital. A lo largo de las últimas décadas, los avances en la compresión y transmisión de video han permitido no solo la mejora de la calidad de imagen, sino también la optimización en el uso de los recursos, como el ancho de banda. En este contexto, los estándares de codificación han desempeñado un papel esencial, pues han sido el eje para desarrollar soluciones que han permitido el crecimiento exponencial de servicios como el streaming de video, la televisión digital, y la videoconferencia.

En sus primeras etapas, la codificación de video se basaba principalmente en métodos sencillos de codificación de la diferencia entre cuadros, como la codificación de entropía, que permite reducir la redundancia en los datos del video. Sin embargo, a medida que las tecnologías avanzaban, también lo hacían las exigencias de calidad y eficiencia. El desarrollo de la compresión de video se basa en varios componentes esenciales: predicción, transformada, cuantización, y codificación de la secuencia de bits.

La predicción en la codificación de video juega un rol crucial. Existen dos tipos principales de predicción: intra-predicción e inter-predicción. La predicción intra-predice los valores de los píxeles dentro de un mismo cuadro basándose en los valores cercanos, mientras que la inter-predicción usa información de cuadros anteriores o futuros, aprovechando la redundancia temporal en los videos. Esto es esencial para la eficiencia, ya que reduce la cantidad de datos que deben ser procesados y transmitidos.

A nivel de la codificación de video en sí, uno de los componentes clave es la transformada discreta del coseno (DCT), que se emplea para transformar los bloques de imagen en una representación de frecuencia. Luego, estos coeficientes transformados son cuantificados, un proceso que reduce la precisión de los datos para hacerlos más manejables, pero también pierde algo de detalle en la imagen, lo que se traduce en una disminución de la calidad.

Con respecto a los estándares de codificación, desde los años 90 han surgido varias generaciones. En sus inicios, se usaron estándares como H.261 y MPEG-1, que estaban diseñados para transmitir video a través de líneas telefónicas. Estos estándares fueron la base para el desarrollo posterior de MPEG-2, que revolucionó la transmisión de video digital en DVD y la televisión digital terrestre.

El siguiente gran avance fue H.264, que se convirtió en el estándar de facto para la mayoría de las aplicaciones de video en la web y los servicios de transmisión debido a su capacidad para ofrecer una calidad de imagen superior con una tasa de compresión eficiente. H.265/HEVC, su sucesor, mejoró aún más la compresión, lo que permitió la transmisión de contenido en 4K y más allá, sin requerir un aumento significativo en el ancho de banda.

A medida que las necesidades de los consumidores y las tecnologías avanzan, también lo hacen los estándares. El H.266/VVC (Versatile Video Coding) es un ejemplo reciente, optimizado para las resoluciones más altas y la transmisión de video en condiciones de red limitadas, proporcionando aún mayor eficiencia que H.265.

Es importante destacar que cada uno de estos estándares tiene su propio enfoque para equilibrar la calidad de imagen con la eficiencia en la codificación. Por ejemplo, mientras que algunos buscan mejorar la calidad de la imagen a expensas de un mayor uso de recursos computacionales, otros buscan la eficiencia para facilitar la transmisión en redes con limitaciones de ancho de banda. En este sentido, la evolución de los códecs de video no solo responde a los avances tecnológicos en términos de poder de procesamiento y capacidad de almacenamiento, sino también a las demandas cambiantes de los usuarios y las aplicaciones.

En términos de calidad, la medición se realiza de dos formas principales: objetiva y subjetiva. La medición objetiva, como el PSNR (Peak Signal-to-Noise Ratio), es útil para determinar la diferencia entre la imagen original y la codificada, pero a menudo no refleja lo que el espectador percibe. Es aquí donde entra la evaluación subjetiva, que involucra a seres humanos para calificar la calidad del video según su experiencia visual.

Para quienes están interesados en la evolución de la codificación de video, es esencial comprender cómo los estándares no solo afectan la calidad visual y la compresión, sino también el tipo de dispositivos y plataformas en los que se puede reproducir el contenido. Desde los primeros días de la transmisión de video en baja calidad hasta las tecnologías actuales de 4K y 8K, la codificación de video ha sido una parte integral de nuestra experiencia digital. A medida que se desarrollan nuevos estándares, como el AV1, que promete ser aún más eficiente que el HEVC, el futuro de la transmisión de video seguirá orientado hacia mejorar la accesibilidad y la calidad sin sacrificar la eficiencia de los recursos.

¿Cómo evaluar la calidad del video sin referencia?

En muchos escenarios, como la transmisión de televisión digital o la visualización en plataformas de streaming, no siempre es posible acceder al video original para evaluar su calidad. Este desafío se presenta especialmente cuando el video es procesado o modificado en el receptor, por ejemplo, en un decodificador de televisión digital de un cliente. En estos casos, la evaluación de calidad sin referencia (NR) o con referencia reducida (RR) se vuelve esencial.

Las métricas NR intentan estimar la calidad subjetiva basándose únicamente en las características del clip de video decodificado. Este es un proceso complejo, ya que la calidad percibida depende de diversos factores, como los artefactos de compresión típicos que pueden afectar la imagen. Algunas investigaciones han logrado avances al modelar estos artefactos, proporcionando un marco para la medición de la calidad sin necesidad del video original como referencia. Por otro lado, las métricas RR se enfocan en generar una "firma de calidad", que típicamente incluye una señal secundaria de baja tasa de bits, la cual se comunica al decodificador. Este tipo de información permite crear una estimación de la calidad procesando el video decodificado junto con la información adicional recibida.

El reto de la compresión de video radica en reducir la cantidad de datos necesarios para almacenar y transmitir imágenes en movimiento sin sacrificar excesivamente la calidad percibida. Los códecs de video modernos logran esto al aprovechar las redundancias espaciales y temporales en el video, lo que significa que los bloques de información de cada fotograma se predicen utilizando datos ya codificados y disponibles para el decodificador. Este proceso no solo reduce la cantidad de información necesaria para representar una escena, sino que también hace que la compresión de video sea más eficiente.

El uso de predicciones en los códecs reduce considerablemente la cantidad de información que debe almacenarse, y el residuo de esa predicción se transforma en el dominio de la frecuencia espacial y se cuantiza. Esta transformación ayuda a reducir la precisión de la información, lo que, a su vez, disminuye el tamaño de los archivos sin perder demasiada calidad en el proceso. La información resultante, junto con los encabezados y los datos de predicción, se codifica en un flujo binario comprimido que representa una versión más ligera del video original. Luego, el decodificador realiza el proceso inverso para recrear una versión del video lo más fiel posible al original.

El avance en las técnicas de compresión ha permitido reducir el tamaño de los archivos de video en un factor de 100 o más, lo que explica por qué los códecs de video son omnipresentes en dispositivos que incluyen cámaras o pantallas. Las normas de compresión actuales han evolucionado a lo largo de más de 50 años, comenzando con los primeros experimentos de la década de 1960 y 1970, hasta los estándares más recientes desarrollados en los 90 y más allá.

Es importante destacar que, aunque los avances en la compresión de video han permitido reducir significativamente los tamaños de los archivos, esto también ha generado nuevos desafíos, especialmente en cuanto a la preservación de la calidad. Los sistemas de evaluación sin referencia juegan un papel crucial en este contexto, ya que permiten medir la calidad del video sin necesidad de acceso al material original. Esto es particularmente relevante en situaciones como la transmisión en vivo o el análisis de videos comprimidos que no están disponibles para su verificación directa.

Además, la percepción subjetiva de la calidad no solo depende de la presencia de artefactos visibles, sino también de la capacidad del espectador para percibir detalles sutiles que pueden ser afectados por la compresión. Estos factores incluyen el enfoque de la imagen, la claridad de los contornos y la resolución en general, que son influenciados por cómo se realiza la compresión. La investigación en este campo sigue siendo activa, con el objetivo de mejorar las métricas de calidad para reflejar de manera más precisa la experiencia visual de los usuarios.

Por lo tanto, al evaluar la calidad de un video sin referencia, es esencial comprender que el objetivo no es solo replicar la imagen original, sino también garantizar que la experiencia del espectador sea lo más cercana posible a la esperada, incluso si el video ha sido comprimido o modificado durante su transmisión.

¿Cómo se realiza la codificación y decodificación de la aritmética binaria adaptativa (BAC) en HEVC?

En el proceso de codificación aritmética de HEVC, se utiliza un modelo basado en probabilidades para determinar cómo representar los valores binarios. Si la probabilidad de que un valor se produzca es aproximadamente 0.5, el proceso puede simplificarse mediante la codificación por bypass. Sin embargo, cuando la probabilidad es diferente de 0.5, se siguen varios pasos para obtener una representación más eficiente de los datos.

En primer lugar, se usa el índice de contexto, que hace referencia a un modelo de probabilidad, junto con el valor actual del rango para determinar el valor más probable (valMPS) y el rango correspondiente al símbolo menos probable (LpsRange). A partir de esta subdivisión del rango, el proceso de codificación varía según si el valor actual es el más probable (MPS) o el menos probable (LPS).

  1. Si el valor del "bin" corresponde al valor más probable (MPS), el valor de "Low" permanece igual, pero el rango se ajusta a "MpsRange", que es la diferencia entre el rango actual y el "LpsRange".

  2. Si el valor del bin es el menos probable (LPS), se actualiza "Low" sumando el rango al valor de "Low", y el nuevo rango se establece como el valor de "LpsRange".

Si el nuevo rango es menor que un umbral establecido, se realiza una normalización. Esta normalización involucra duplicar "Low", duplicar el rango y, opcionalmente, desplazar "Low". Después de estas modificaciones, se emite un bit, ya sea 0 o 1, dependiendo del valor de la codificación.

El modelo de contexto se actualiza en función del valor binario real codificado. Si el valor más probable (MPS) fue codificado, se reduce la probabilidad del LPS, mientras que si el valor menos probable (LPS) fue codificado, la probabilidad de LPS aumenta. Cuando la probabilidad de LPS alcanza el 50% (0.5), se realiza un intercambio entre el MPS y LPS.

La codificación por bypass es un proceso simplificado donde el valor binario se asigna a una de las dos mitades del rango actual, dependiendo de si el binario es 0 o 1. Después, se duplican los valores de "Low" y el rango, y se emite un solo bit, lo que no altera significativamente el rango.

En el decodificador, el flujo de bits se interpreta como una fracción binaria que señala una posición dentro del rango actual. El proceso de decodificación es el inverso al de la codificación, y en cada paso se subdivide el rango entre el MPS y el LPS. Luego, se determina si el valor de "Offset" cae dentro del rango de MPS o LPS. Si el valor está dentro del MPS, el binario decodificado es 0, y el rango se ajusta a "MpsRange". Si cae dentro del LPS, el valor decodificado es 1, y el rango se ajusta a "LpsRange".

Si el rango cae por debajo de un umbral, se realiza una normalización adicional. Esto implica leer más bits del flujo de bits, actualizar el valor del "Offset" y continuar refinando la decodificación hasta que el rango sea suficiente para generar una salida válida.

Es importante entender que en el proceso de decodificación, la precisión y eficiencia en la manipulación del "Offset" y el rango son esenciales. Este proceso permite reconstruir la secuencia original de datos con alta fidelidad y eficiencia, aprovechando la entropía de los datos para representar los valores binarios de forma más compacta.

A lo largo de este proceso, el modelo de contexto se ajusta continuamente según los valores decodificados, lo que asegura que el algoritmo se adapte de manera eficiente a las características del flujo de datos, optimizando la codificación y decodificación en función de las probabilidades de aparición de cada símbolo binario. La implementación práctica de este algoritmo permite una compresión eficaz y precisa, que es fundamental para el funcionamiento de los sistemas de compresión de video modernos como HEVC.