Compensación de movimiento
Compensación de movimiento en informática, es una técnica algorítmica utilizada para predecir un cuadro en un video, dados los cuadros anteriores y/o futuros al tener en cuenta el movimiento de la cámara y/o los objetos en el video.. Se emplea en la codificación de datos de video para la compresión de video, por ejemplo, en la generación de archivos MPEG-2. La compensación de movimiento describe una imagen en términos de la transformación de una imagen de referencia en la imagen actual. La imagen de referencia puede ser anterior en el tiempo o incluso del futuro. Cuando las imágenes se pueden sintetizar con precisión a partir de imágenes previamente transmitidas/almacenadas, se puede mejorar la eficacia de la compresión.
La compensación de movimiento es una de las dos técnicas clave de compresión de video que se utilizan en los estándares de codificación de video, junto con la transformada de coseno discreta (DCT). La mayoría de los estándares de codificación de video, como los formatos H.26x y MPEG, generalmente usan codificación híbrida DCT con compensación de movimiento, conocida como compensación de movimiento en bloque (BMC) o DCT con compensación de movimiento (MC DCT).
Funcionalidad
La compensación de movimiento aprovecha el hecho de que, a menudo, para muchos fotogramas de una película, la única diferencia entre un fotograma y otro es el resultado del movimiento de la cámara o del movimiento de un objeto en el fotograma. En referencia a un archivo de video, esto significa que gran parte de la información que representa un cuadro será la misma que la información utilizada en el cuadro siguiente.
Usando la compensación de movimiento, una transmisión de video contendrá algunos cuadros completos (de referencia); entonces la única información almacenada para los fotogramas intermedios sería la información necesaria para transformar el fotograma anterior en el siguiente.
Ejemplo ilustrado
La siguiente es una explicación ilustrada simple de cómo funciona la compensación de movimiento. Se capturaron dos fotogramas sucesivos de la película Elephants Dream. Como se puede ver en las imágenes, la diferencia inferior (movimiento compensado) entre dos fotogramas contiene significativamente menos detalles que las imágenes anteriores y, por lo tanto, se comprime mucho mejor que el resto. Por lo tanto, la información que se requiere para codificar el cuadro compensado será mucho menor que con el cuadro de diferencia. Esto también significa que también es posible codificar la información usando imágenes de diferencia a un costo de menor eficiencia de compresión pero ahorrando complejidad de codificación sin codificación con compensación de movimiento; de hecho, la codificación con compensación de movimiento (junto con la estimación de movimiento, la compensación de movimiento) ocupa más del 90% de la complejidad de la codificación.
MPEG
En MPEG, las imágenes se predicen a partir de fotogramas anteriores (fotogramas P) o bidireccionalmente a partir de fotogramas anteriores y futuros (fotogramas B). span> Los marcos B son más complejos porque la secuencia de imágenes debe transmitirse y almacenarse desordenadamente para que el futuro marco esté disponible para generar el B marcos.
Después de predecir fotogramas mediante la compensación de movimiento, el codificador encuentra el residuo, que luego se comprime y transmite.
Compensación de movimiento global
En la compensación de movimiento global, el modelo de movimiento básicamente refleja movimientos de cámara como:
- Dolly - moviendo la cámara hacia adelante o hacia atrás
- Track - moviendo la cámara izquierda o derecha
- Boom - moviendo la cámara hacia arriba o hacia abajo
- Pan - girando la cámara alrededor de su eje Y, moviendo la vista izquierda o derecha
- Tilt - girando la cámara alrededor de su eje X, moviendo la vista hacia arriba o hacia abajo
- Rollo - girando la cámara alrededor del eje de la vista
Funciona mejor para escenas fijas sin objetos en movimiento.
Hay varias ventajas de la compensación de movimiento global:
- Modela el movimiento dominante generalmente encontrado en secuencias de vídeo con sólo unos pocos parámetros. La proporción de bits de estos parámetros es insignificante.
- No divide los marcos. Esto evita artefactos en las fronteras de la partición.
- Una línea recta (en la dirección del tiempo) de píxeles con posiciones espaciales iguales en el marco corresponde a un punto de movimiento continuo en la escena real. Otros esquemas MC introducen discontinuidades en la dirección del tiempo.
MPEG-4 ASP admite la compensación de movimiento global con tres puntos de referencia, aunque algunas implementaciones solo pueden utilizar uno. Un solo punto de referencia solo permite el movimiento de traslación que, por su costo de rendimiento relativamente alto, ofrece poca ventaja sobre la compensación de movimiento basada en bloques.
Los objetos en movimiento dentro de un marco no están suficientemente representados por la compensación de movimiento global. Por lo tanto, también se necesita la estimación del movimiento local.
DCT con compensación de movimiento
Compensación de movimiento en bloque
Lacompensación de movimiento en bloque (BMC), también conocida como transformada de coseno discreta compensada por movimiento (MC DCT), es la técnica de compensación de movimiento más utilizada. En BMC, los cuadros se dividen en bloques de píxeles (por ejemplo, macrobloques de 16 × 16 píxeles en MPEG). Cada bloque se predice a partir de un bloque de igual tamaño en el marco de referencia. Los bloques no se transforman de ninguna manera aparte de cambiarse a la posición del bloque predicho. Este cambio está representado por un vector de movimiento.
Para aprovechar la redundancia entre vectores de bloques vecinos (p. ej., para un solo objeto en movimiento cubierto por varios bloques), es común codificar solo la diferencia entre el vector de movimiento actual y el anterior en el flujo de bits. El resultado de este proceso de diferenciación es matemáticamente equivalente a una compensación de movimiento global capaz de panoramizar. Más adelante en la tubería de codificación, un codificador de entropía aprovechará la distribución estadística resultante de los vectores de movimiento alrededor del vector cero para reducir el tamaño de salida.
Es posible desplazar un bloque en un número no entero de píxeles, lo que se denomina precisión de subpíxeles. Los píxeles intermedios se generan interpolando píxeles vecinos. Comúnmente, se utiliza la precisión de medio píxel o cuarto de píxel (Qpel, utilizado por H.264 y MPEG-4/ASP). El gasto computacional de la precisión de subpíxeles es mucho mayor debido al procesamiento adicional requerido para la interpolación y, en el lado del codificador, una cantidad mucho mayor de bloques fuente potenciales para evaluar.
La principal desventaja de la compensación de movimiento de bloques es que introduce discontinuidades en los bordes de los bloques (artefactos de bloqueo). Estos artefactos aparecen en forma de bordes horizontales y verticales afilados que el ojo humano detecta fácilmente y producen bordes falsos y efectos de llamada (coeficientes grandes en subbandas de alta frecuencia) debido a la cuantificación de los coeficientes de la transformada relacionada con Fourier utilizada para transforma la codificación de los marcos residuales
La compensación de movimiento de bloque divide el cuadro actual en bloques que no se superponen, y el vector de compensación de movimiento indica de dónde vienen esos bloques de (Un concepto erróneo común es que el cuadro anterior se divide en bloques que no se superponen, y los vectores de compensación de movimiento indican hacia dónde se mueven esos bloques hacia). Los bloques de origen normalmente se superponen en el cuadro de origen. Algunos algoritmos de compresión de video ensamblan el cuadro actual a partir de piezas de varios cuadros diferentes previamente transmitidos.
Los fotogramas también se pueden predecir a partir de fotogramas futuros. Los fotogramas futuros deben codificarse antes que los fotogramas predichos y, por lo tanto, el orden de codificación no coincide necesariamente con el orden de los fotogramas reales. Dichos cuadros generalmente se predicen desde dos direcciones, es decir, desde los cuadros I o P que preceden o siguen inmediatamente al cuadro predicho. Estos fotogramas predichos bidireccionalmente se denominan fotogramas B. Un esquema de codificación podría ser, por ejemplo, IBBPBBPBBPBB.
Además, también se ha propuesto el uso de mosaicos triangulares para la compensación de movimiento. Bajo este esquema, el marco se tesela con triángulos y el siguiente marco se genera realizando una transformación afín en estos triángulos. Solo se registran/transmiten las transformaciones afines. Esto es capaz de manejar el zoom, la rotación, la traducción, etc.
Compensación de movimiento de tamaño de bloque variable
Compensación de movimiento de tamaño de bloque variable (VBSMC) es el uso de BMC con la capacidad para que el codificador seleccione dinámicamente el tamaño de los bloques. Al codificar video, el uso de bloques más grandes puede reducir la cantidad de bits necesarios para representar los vectores de movimiento, mientras que el uso de bloques más pequeños puede resultar en una menor cantidad de información residual de predicción para codificar. Otras áreas de trabajo han examinado el uso de métricas de características de forma variable, más allá de los límites de los bloques, a partir de las cuales se pueden calcular los vectores entre fotogramas. Los diseños más antiguos, como H.261 y video MPEG-1, generalmente usan un tamaño de bloque fijo, mientras que los más nuevos, como H.263, MPEG-4 Parte 2, H.264/MPEG-4 AVC y VC-1, le dan al codificador la capacidad de elegir dinámicamente qué tamaño de bloque se utilizará para representar el movimiento.
Compensación de movimiento de bloques superpuestos
Lacompensación de movimiento de bloques superpuestos (OBMC) es una buena solución para estos problemas porque no solo aumenta la precisión de la predicción, sino que también evita los artefactos de bloqueo. Al usar OBMC, los bloques suelen ser el doble de grandes en cada dimensión y se superponen en cuadrante con los 8 bloques vecinos. Así, cada píxel pertenece a 4 bloques. En tal esquema, hay 4 predicciones para cada píxel que se suman a una media ponderada. Para ello, los bloques están asociados a una función de ventana que tiene la propiedad de que la suma de 4 ventanas superpuestas es igual a 1 en todas partes.
Los estudios de métodos para reducir la complejidad de OBMC han demostrado que la contribución a la función de ventana es menor para el bloque adyacente en diagonal. Reducir el peso de esta contribución a cero y aumentar los otros pesos en la misma cantidad conduce a una reducción sustancial de la complejidad sin una gran penalización en la calidad. En tal esquema, cada píxel pertenece a 3 bloques en lugar de 4, y en lugar de usar 8 bloques vecinos, solo se usan 4 para cada bloque a compensar. Dicho esquema se encuentra en el modo de predicción avanzada H.263 Anexo F
Compensación de movimiento de cuarto de píxel (QPel) y medio píxel
En la compensación de movimiento, los cuartos o la mitad de las muestras son en realidad submuestras interpoladas causadas por vectores de movimiento fraccionarios. En función de los vectores y las muestras completas, las submuestras se pueden calcular mediante filtrado bicúbico o bilineal en 2D. Consulte la subcláusula 8.4.2.2 "Proceso de interpolación de muestras fraccionarias" del estándar H.264.
Técnicas de codificación de imágenes 3D
La compensación de movimiento se utiliza en la codificación de video estereoscópico
En video, el tiempo a menudo se considera como la tercera dimensión. Las técnicas de codificación de imágenes fijas se pueden expandir a una dimensión adicional.
JPEG 2000 utiliza ondículas, que también se pueden utilizar para codificar movimiento sin espacios entre bloques de forma adaptativa. Las transformaciones afines de píxeles fraccionarios conducen a sangrado entre píxeles adyacentes. Si no se utiliza una resolución interna más alta, las imágenes delta luchan principalmente contra la imagen borrosa. La imagen delta también se puede codificar como wavelets, de modo que los bordes de los bloques adaptativos coincidan.
Las técnicas de codificación 2D+Delta utilizan codificación compatible con H.264 y MPEG-2 y pueden usar compensación de movimiento para comprimir entre imágenes estereoscópicas.
Historia
Un precursor del concepto de compensación de movimiento se remonta a 1929, cuando R.D. Kell en Gran Bretaña propuso el concepto de transmitir solo las partes de una escena de video analógico que cambiaba de cuadro a cuadro. En 1959, los investigadores de NHK Y. Taki, M. Hatori y S. Tanaka propusieron el concepto de compensación de movimiento entre fotogramas, quienes propusieron la codificación predictiva de video entre fotogramas en la dimensión temporal.
DCT con compensación de movimiento
La práctica compresión de video con compensación de movimiento surgió con el desarrollo de la codificación DCT con compensación de movimiento (MC DCT), también llamada compensación de movimiento en bloque (BMC) o compensación de movimiento DCT. Este es un algoritmo de codificación híbrido, que combina dos técnicas clave de compresión de datos: codificación de transformada de coseno discreta (DCT) en la dimensión espacial y compensación de movimiento predictivo en la dimensión temporal. La codificación DCT es una técnica de codificación de transformación de compresión de bloques con pérdida que fue propuesta por primera vez por Nasir Ahmed, quien inicialmente la diseñó para la compresión de imágenes, en 1972.
En 1974, Ali Habibi de la Universidad del Sur de California introdujo la codificación híbrida, que combina la codificación predictiva con la codificación transformada. Sin embargo, su algoritmo se limitó inicialmente a la codificación intra-trama en la dimensión espacial. En 1975, John A. Roese y Guner S. Robinson extendieron el algoritmo de codificación híbrida de Habibi a la dimensión temporal, utilizando la codificación de transformación en la dimensión espacial y la codificación predictiva en la dimensión temporal, desarrollando una codificación híbrida con compensación de movimiento entre fotogramas.. Para la codificación de transformación espacial, experimentaron con la DCT y la transformada rápida de Fourier (FFT), desarrollaron codificadores híbridos entre cuadros para ambos y descubrieron que la DCT es la más eficiente debido a su complejidad reducida, capaz de comprimir los datos de la imagen. a 0,25 bits por píxel para una escena de videoteléfono con una calidad de imagen comparable a la de un codificador intracuadro que requiere 2 bits por píxel.
En 1977, Wen-Hsiung Chen desarrolló un algoritmo DCT rápido con C.H. Smith y SC Fralick. En 1979, Anil K. Jain y Jaswant R. Jain desarrollaron aún más la compresión de video DCT con compensación de movimiento, también llamada compensación de movimiento en bloque. Esto llevó a Chen a desarrollar un algoritmo práctico de compresión de video, llamado DCT con compensación de movimiento o codificación de escena adaptativa, en 1981. La DCT con compensación de movimiento se convirtió más tarde en la técnica de codificación estándar para la compresión de video desde finales de la década de 1980 en adelante.
El primer estándar de codificación de video digital fue H.120, desarrollado por el CCITT (ahora ITU-T) en 1984. H.120 usaba codificación DPCM con compensación de movimiento, que era ineficiente para la codificación de video, y H.120 fue así poco práctico debido al bajo rendimiento. El estándar H.261 se desarrolló en 1988 en base a la compresión DCT con compensación de movimiento y fue el primer estándar práctico de codificación de video. Desde entonces, la compresión DCT con compensación de movimiento ha sido adoptada por todos los principales estándares de codificación de video (incluidos los formatos H.26x y MPEG) posteriores.
Aplicaciones
- compresión de vídeo
- cambio de marco para la reproducción de 24 marcos por segundo películas en 60 Hz LCDs o 100 Hz tubos de rayos de catodio interlazados
Contenido relacionado
Algoritmo de firma digital
William Seward BurroughsI
Trazado de rayos (gráficos)