How Video Compression Works Hero

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

Los algoritmos de compresión de video modernos no son lo mismo que los algoritmos de compresión de imágenes con los que puede estar 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 y mantener la calidad del video.

En esta publicación, usamos H.264 como el estándar de compresión arquetípico. Si bien ya no es el formato de compresión de video más nuevo, aún 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 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 cuadro: 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 fotogramas es la responsable de los desconcertantes artefactos de la compresión de vídeo digital: partes de una imagen antigua que se mueven con una acción incorrecta porque algo en la codificación se ha estropeado.

Fotogramas I, fotogramas P y fotogramas B

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

Los I-frames son imágenes totalmente codificadas. Cada I-frame contiene todos los datos que necesita para representar una imagen. Los marcos P son pagsse redice en función de cómo cambia la imagen desde el último I-frame. Los fotogramas B son bpredicho idireccionalmente, utilizando datos del último fotograma P y del siguiente fotograma I. Los marcos P solo necesitan almacenar la información visual que es exclusiva del marco P. En el ejemplo anterior, necesita realizar un seguimiento de cómo se mueven los puntos a lo largo 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 en 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 suposición, omitiendo todos los datos redundantes. 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 Fotogramas IP y B

Los I-frames se comprimen de forma independiente, de la misma manera que se guardan las imágenes fijas. Dado que los fotogramas I no utilizan datos predictivos, la imagen comprimida contiene todos los datos utilizados 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 los cambios de movimiento y 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 usan cuadros predictivos como H.264, los cuadros I se muestran periódicamente para «actualizar» el flujo de datos al establecer un nuevo cuadro de referencia. Cuanto más separados estén los I-frames, más pequeño puede ser el archivo de video. Sin embargo, si los fotogramas I están demasiado separados, la precisión de los fotogramas predictivos del video se degradará lentamente hasta volverse ininteligible. Una aplicación optimizada para el ancho de banda insertaría fotogramas I con la menor frecuencia posible sin interrumpir la transmisión de video. Para los consumidores, la frecuencia de los I-frames suele estar 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 fotogramas (fotogramas P y fotogramas 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 fotogramas P y los fotogramas B. La cantidad, la frecuencia y el orden exactos de los fotogramas predictivos, así como el algoritmo específico utilizado para codificarlos y reproducirlos, están determinados 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 un ejemplo generalizado. El cuadro se divide en secciones denominadas macrobloques, que normalmente constan de 16 x 16 muestras. 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 discreta) para cambiar los datos visuales a una 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 transformación. Luego, los datos son «redondeados» por el cuantificador. 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 verlo.

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

Experto Geek - Tu Guía en Tendencias Tecnológicas