Cómo funcionan realmente los algoritmos de compresión de video modernos

Los algoritmos modernos de compresión de video no son los mismos que los algoritmos de compresión de imágenes con los que quizás esté familiarizado. La dimensión y el tiempo adicionales significan que se aplican diferentes técnicas matemáticas y lógicas al archivo de video para reducir el tamaño mientras se mantiene la calidad del video.

En esta publicación usamos H.264 como estándar de compresión arquetípico. Si bien ya no es el formato de compresión de video más nuevo, todavía proporciona un ejemplo suficientemente detallado para explicar conceptos generales sobre la compresión de video.

¿Qué es la compresión de video?

Los algoritmos de compresión de video buscan redundancias espaciales y temporales. Al codificar los datos redundantes un número mínimo de veces, se puede reducir el tamaño del archivo. Imagine, por ejemplo, una toma de un minuto de la cara de un personaje que cambia lentamente de expresión. No tiene sentido codificar la imagen de fondo para cada fotograma: en su lugar, puede codificarla una vez y luego volver a consultarla hasta que sepa que el video cambia. Esta codificación de predicción entre cuadros es la responsable de los artefactos desconcertantes de la compresión de video digital: partes de una imagen antigua que se mueven con una acción incorrecta porque algo en la codificación se ha vuelto loco.

I-frames, P-frames y B-frames

Cómo funciona la compresión de video IP y B Frames.svg

Los fotogramas I son imágenes totalmente codificadas. Cada I-frame contiene todos los datos que necesita para representar una imagen. Los marcos P son pagrechazado en función de cómo cambia la imagen desde el último fotograma I. Los marcos B son segundoPredijo i-direccionalmente, utilizando datos tanto del último cuadro P como del siguiente cuadro I. Los marcos P solo necesitan almacenar la información visual que es exclusiva del marco P. En el ejemplo anterior, necesita rastrear cómo se mueven los puntos a través del marco, pero Pac-Man puede quedarse donde está.

El cuadro B mira el cuadro P y el siguiente cuadro I y “promedia” el movimiento a través de esos cuadros. El algoritmo tiene una idea de dónde “comienza” la imagen (el primer cuadro I) y dónde “termina” la imagen (el segundo cuadro I), y utiliza datos parciales para codificar una buena conjetura, dejando de lado todos los píxeles estáticos que no son necesarios para crear la imagen.

Codificación Intraframe (I-frames)

Cómo funciona la compresión de video Marcos IP y B

Los fotogramas I se comprimen de forma independiente, de la misma forma que se guardan las imágenes fijas. Dado que los fotogramas I no utilizan datos predictivos, la imagen comprimida contiene todos los datos que se utilizan para mostrar el fotograma I. Todavía están comprimidos por un algoritmo de compresión de imágenes como JPEG. Esta codificación a menudo tiene lugar en el espacio de color YCbCr, que separa los datos de luminosidad de los datos de color, lo que permite codificar por separado el movimiento y los cambios de color.

Para códecs no predictivos como DV y Motion JPEG, ahí es donde nos detenemos. Debido a que no hay cuadros predictivos, la única compresión que se puede lograr es comprimiendo la imagen dentro de un solo cuadro. Es menos eficiente pero produce un archivo de imagen sin procesar de mayor calidad.

En los códecs que utilizan marcos predictivos como H.264, los marcos I se muestran periódicamente para “actualizar” el flujo de datos estableciendo un nuevo marco de referencia. Cuanto más separados estén los fotogramas I, más pequeño puede ser el archivo de vídeo. Sin embargo, si los fotogramas I están demasiado separados, la precisión de los fotogramas predictivos del video se degradará lentamente hasta convertirse en ininteligible. Una aplicación con ancho de banda optimizado insertaría I-frames con la menor frecuencia posible sin interrumpir la transmisión de video. Para los consumidores, la frecuencia de los fotogramas I a menudo está determinada indirectamente por la configuración de “calidad” en el software de codificación. El software de compresión de video de nivel profesional como ffmpeg permite un control explícito.

Predicción entre cuadros (cuadros P y cuadros B)

Los codificadores de video intentan “predecir” el cambio de un cuadro al siguiente. Cuanto más cercanas sean sus predicciones, más eficaz será el algoritmo de compresión. Esto es lo que crea los marcos P y los marcos B. La cantidad exacta, la frecuencia y el orden de los fotogramas predictivos, así como el algoritmo específico que se utiliza para codificarlos y reproducirlos, está determinada por el algoritmo específico que utilice.

Cómo funciona la compresión de video Partición de bloques

Consideremos cómo funciona H.264, como ejemplo generalizado. La trama se divide en secciones denominadas macrobloques, que normalmente constan de muestras de 16 x 16. El algoritmo no codifica los valores de píxeles sin procesar para cada bloque. En cambio, el codificador busca un bloque similar en un marco más antiguo, llamado marco de referencia. Si se encuentra un marco de referencia válido, el bloque se codificará mediante una expresión matemática llamada vector de movimiento, que describe la naturaleza exacta del cambio del bloque de referencia al bloque actual. Cuando se reproduce el video, el reproductor de video interpretará esos vectores de movimiento correctamente para “retraducir” el video. Si el bloque no cambia en absoluto, no se necesita ningún vector.

Conclusión: compresión de datos

Una vez que los datos se clasifican en sus marcos, se codifican en una expresión matemática con el codificador de transformación. H.264 emplea una DCT (transformada de coseno discreto) para cambiar los datos visuales en expresión matemática (específicamente, la suma de las funciones de coseno que oscilan en varias frecuencias). El algoritmo de compresión elegido determina el codificador de transformada. Luego, el cuantificador “redondea” los datos. Finalmente, los bits se ejecutan a través de un algoritmo de compresión sin pérdidas para reducir el tamaño del archivo una vez más. Esto no cambia los datos: simplemente los organiza de la forma más compacta posible. Luego, el video se comprime, es más pequeño que antes y está listo para mirar.

Credito de imagen: Demostración de VC, itu delft

¿Es útil este artículo?

¡Compártelo en tus redes!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *