stringtranslate.com

Compensación de movimiento

Visualización de la compensación de movimiento de bloques MPEG. Los bloques que se mueven de un cuadro al siguiente se muestran como flechas blancas, lo que permite ver claramente los movimientos de las diferentes plataformas y del personaje.

La compensación de movimiento en informática es una técnica algorítmica que se utiliza para predecir un fotograma de un vídeo teniendo en cuenta los fotogramas anteriores o futuros, teniendo en cuenta el movimiento de la cámara o de los objetos del vídeo. Se emplea en la codificación de datos de vídeo para la compresión de vídeo , 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 futura. Cuando las imágenes se pueden sintetizar con precisión a partir de imágenes transmitidas o almacenadas previamente, se puede mejorar la eficiencia de la compresión.

La compensación de movimiento es una de las dos técnicas de compresión de vídeo clave que se utilizan en los estándares de codificación de vídeo , junto con la transformada de coseno discreta (DCT). La mayoría de los estándares de codificación de vídeo, como los formatos H.26x y MPEG , suelen utilizar la codificación híbrida DCT con compensación de movimiento, [1] [2] 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, en muchos fotogramas de una película, la única diferencia entre un fotograma y otro es el resultado del movimiento de la cámara o de un objeto en el fotograma. En lo que respecta a un archivo de vídeo, esto significa que gran parte de la información que representa un fotograma será la misma que la información que se utiliza en el siguiente.

Al utilizar la compensación de movimiento, una secuencia de video contendrá algunos cuadros completos (de referencia); luego, la única información almacenada para los cuadros intermedios será la información necesaria para transformar el cuadro anterior en el siguiente.

Ejemplo ilustrado

A continuación se muestra una explicación ilustrada y simplista 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 (compensada por movimiento) 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 fotograma compensado será mucho menor que con el fotograma de diferencia. Esto también significa que también es posible codificar la información utilizando la imagen de diferencia a un costo de menor eficiencia de compresión pero ahorrando complejidad de codificación sin codificación compensada por movimiento; de hecho, la codificación compensada por movimiento (junto con la estimación de movimiento , la compensación de movimiento) ocupa más del 90% de la complejidad de codificación.

MPEG

En MPEG , las imágenes se predicen a partir de fotogramas anteriores ( fotogramas P ) o de forma bidireccional a partir de fotogramas anteriores y futuros ( fotogramas B ). Los fotogramas B son más complejos porque la secuencia de imágenes debe transmitirse y almacenarse fuera de orden para que el fotograma futuro esté disponible para generar los fotogramas B. [3]

Después de predecir los fotogramas mediante la compensación de movimiento, el codificador encuentra el residuo, que luego se comprime y se transmite.

Compensación de movimiento global

En la compensación de movimiento global , el modelo de movimiento básicamente refleja movimientos de la cámara como:

Funciona mejor para escenas fijas sin objetos en movimiento.

La compensación de movimiento global tiene varias ventajas:

MPEG-4 ASP admite la compensación de movimiento global con tres puntos de referencia, aunque algunas implementaciones solo pueden utilizar uno. Un único punto de referencia solo permite el movimiento traslacional, lo que, debido a su costo de rendimiento relativamente alto, ofrece pocas ventajas 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 una estimación del movimiento local.

DCT con compensación de movimiento

Compensación de movimiento de bloque

La compensació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. [2] En BMC, los fotogramas 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 fotograma de referencia. Los bloques no se transforman de ninguna manera, excepto que se desplazan a la posición del bloque predicho. Este desplazamiento se representa mediante un vector de movimiento .

Para aprovechar la redundancia entre vectores de bloques vecinos (por ejemplo, para un único objeto en movimiento cubierto por varios bloques), es habitual 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 realizar un desplazamiento horizontal. Más adelante en el proceso 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 precisión de medio píxel o de un cuarto de píxel ( Qpel , utilizada 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, a 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 agudos que son fácilmente detectados por el ojo humano y producen bordes falsos y efectos de zumbido (coeficientes grandes en subbandas de alta frecuencia) debido a la cuantificación de los coeficientes de la transformada relacionada con Fourier utilizada para la codificación de transformada de los fotogramas residuales [4].

La compensación de movimiento de bloques divide el fotograma actual en bloques que no se superponen, y el vector de compensación de movimiento indica de dónde provienen esos bloques ( un error común es pensar que el fotograma anterior está dividido en bloques que no se superponen, y los vectores de compensación de movimiento indican hacia dónde se mueven esos bloques ) . Los bloques de origen normalmente se superponen en el fotograma de origen. Algunos algoritmos de compresión de vídeo ensamblan el fotograma actual a partir de fragmentos de varios fotogramas diferentes transmitidos previamente.

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 fotogramas real. Estos fotogramas se predicen normalmente desde dos direcciones, es decir, desde los fotogramas I o P que preceden o siguen inmediatamente al fotograma 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. Según este esquema, el cuadro se cubre con triángulos y el siguiente cuadro se genera realizando una transformación afín en estos triángulos. [5] Solo se registran/transmiten las transformaciones afines. Esto permite realizar operaciones de zoom, rotación, traslación, etc.

Compensación de movimiento de tamaño de bloque variable

La compensación de movimiento de tamaño de bloque variable (VBSMC) es el uso de BMC con la capacidad del codificador de seleccionar 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 bloque, a partir de las cuales se pueden calcular vectores entre cuadros. [6] 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 usará para representar el movimiento.

Compensación de movimiento de bloques superpuestos

La compensació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. Cuando se utiliza OBMC, los bloques suelen ser el doble de grandes en cada dimensión y se superponen en cada cuadrante con los 8 bloques vecinos. Por lo tanto, cada píxel pertenece a 4 bloques. En un esquema de este tipo, hay 4 predicciones para cada píxel que se suman para obtener una media ponderada. Para este fin, los bloques se asocian con 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 mínima para el bloque adyacente en diagonal. Reducir el peso de esta contribución a cero y aumentar los otros pesos en una cantidad igual conduce a una reducción sustancial de la complejidad sin una gran penalización de la calidad. En un esquema de este tipo, cada píxel pertenece a 3 bloques en lugar de 4, y en lugar de utilizar 8 bloques vecinos, solo se utilizan 4 para cada bloque que se va a compensar. Este esquema se encuentra en el modo de predicción avanzada del Anexo F de H.263.

Compensación de movimiento de cuarto de píxel (QPel) y medio píxel

En la compensación de movimiento, las muestras de un cuarto o de la mitad son en realidad submuestras interpoladas causadas por vectores de movimiento fraccionales. En función de los vectores y de las muestras completas, las submuestras se pueden calcular mediante el uso de un filtrado 2D bicúbico o bilineal. Consulte la subcláusula 8.4.2.2 "Proceso de interpolación de muestras fraccionales" 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 vídeo estereoscópico .

En el vídeo, el tiempo suele considerarse como la tercera dimensión. Sin embargo, las técnicas de codificación de imágenes pueden ampliarse a una dimensión adicional.

JPEG 2000 utiliza wavelets, que también se pueden utilizar para codificar el movimiento sin espacios entre bloques de forma adaptativa. Las transformaciones afines de píxeles fraccionarios provocan sangrado entre píxeles adyacentes. Si no se utiliza una resolución interna mayor, las imágenes delta suelen luchar contra el desenfoque de la imagen. 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 RD Kell en Gran Bretaña propuso el concepto de transmitir solo las partes de una escena de video analógica que cambiaban de cuadro a cuadro. En 1959, el concepto de compensación de movimiento entre cuadros fue propuesto por los investigadores de NHK Y. Taki, M. Hatori y S. Tanaka, quienes propusieron la codificación de video predictiva entre cuadros en la dimensión temporal . [7]

DCT con compensación de movimiento

La compresión práctica de video con compensación de movimiento surgió con el desarrollo de la codificación DCT con compensación de movimiento (MC DCT), [8] 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, [7] que combina dos técnicas clave de compresión de datos : codificación de transformada de coseno discreta (DCT) [8] en la dimensión espacial y compensación de movimiento predictiva en la dimensión temporal . [7] La ​​codificación DCT es una técnica de codificación de transformada de compresión de bloques con pérdida que fue propuesta por primera vez por Nasir Ahmed , quien inicialmente la pensó para la compresión de imágenes , en 1972. [9]

En 1974, Ali Habibi, de la Universidad del Sur de California, introdujo la codificación híbrida [10] [11] , que combina la codificación predictiva con la codificación por transformada [7] [12] . Sin embargo, su algoritmo se limitaba inicialmente a la codificación intra-cuadro en la dimensión espacial. En 1975, John A. Roese y Guner S. Robinson ampliaron el algoritmo de codificación híbrida de Habibi a la dimensión temporal, utilizando la codificación por transformada 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 cuadros [7] [13] . Para la codificación por transformada espacial, experimentaron con la DCT y la transformada rápida de Fourier (FFT), desarrollando 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 datos de imagen hasta 0,25 bits por píxel para una escena de videoteléfono con una calidad de imagen comparable a la de un codificador intra-cuadro que requiere 2 bits por píxel [14] [13] .

En 1977, Wen-Hsiung Chen desarrolló un algoritmo DCT rápido con CH Smith y SC Fralick. [15] 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, [16] [7] también llamada compensación de movimiento en bloque. [7] Esto llevó a Chen a desarrollar un algoritmo de compresión de video práctico, llamado DCT con compensación de movimiento o codificación de escena adaptativa, en 1981. [7] 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 fines de la década de 1980 en adelante. [17] [2]

El primer estándar de codificación de vídeo digital fue el H.120 , desarrollado por el CCITT (ahora ITU-T) en 1984. [18] El H.120 utilizaba codificación DPCM con compensación de movimiento, [7] que era ineficiente para la codificación de vídeo, [17] y, por lo tanto, el H.120 era poco práctico debido a su bajo rendimiento. [18] El estándar H.261 se desarrolló en 1988 basándose en la compresión DCT con compensación de movimiento, [17] [2] y fue el primer estándar práctico de codificación de vídeo. [18] Desde entonces, la compresión DCT con compensación de movimiento ha sido adoptada por todos los principales estándares de codificación de vídeo (incluidos los formatos H.26x y MPEG ) que le siguieron. [17] [2]

Véase también

Aplicaciones

Referencias

  1. ^ Chen, Jie; Koc, Ut-Va; Liu, KJ Ray (2001). Diseño de sistemas de codificación de vídeo digital: un enfoque de dominio comprimido completo. CRC Press . p. 71. ISBN 9780203904183.
  2. ^ abcde Li, Jian Ping (2006). Actas de la Conferencia Internacional de Informática de 2006 sobre Tecnología de Medios Activos Wavelet y Procesamiento de Información: Chongqing, China, 29-31 de agosto de 2006. World Scientific . p. 847. ISBN 9789812709998.
  3. ^ "Preguntas frecuentes sobre MPEG-2". 20 de febrero de 2009. Archivado desde el original el 20 de febrero de 2009.
  4. ^ Zeng, Kai, et al. "Caracterización de artefactos perceptuales en secuencias de vídeo comprimidas". Imágenes electrónicas IS&T/SPIE. Sociedad Internacional de Óptica y Fotónica, 2014.
  5. ^ Aizawa, Kiyoharu y Thomas S. Huang. "Técnicas avanzadas de codificación de vídeo mediante codificación de imágenes basada en modelos para aplicaciones con tasas de bits muy bajas". Actas del IEEE 83.2 (1995): 259-271.
  6. ^ Garnham, Nigel W. (1995). Codificación de vídeo con compensación de movimiento - Tesis doctoral (PDF) . Universidad de Nottingham. OCLC  59633188.
  7. ^ abcdefghi «Historia de la compresión de vídeo». UIT-T . Equipo de vídeo conjunto (JVT) de ISO/IEC MPEG y ITU-T VCEG (ISO/IEC JTC1/SC29/WG11 y ITU-T SG16 Q.6). Julio de 2002. págs. 11, 24–9, 33, 40–1, 53–6 . Consultado el 3 de noviembre de 2019 .
  8. ^ ab Lea, William (1994). Vídeo a la carta: Documento de investigación 94/68. Biblioteca de la Cámara de los Comunes . Archivado desde el original el 20 de septiembre de 2019. Consultado el 20 de septiembre de 2019 .
  9. ^ Ahmed, Nasir (enero de 1991). "Cómo se me ocurrió la transformada discreta del coseno". Procesamiento de señales digitales . 1 (1): 4–5. Bibcode :1991DSP.....1....4A. doi :10.1016/1051-2004(91)90086-Z.
  10. ^ Habibi, Ali (1974). "Codificación híbrida de datos pictóricos". IEEE Transactions on Communications . 22 (5): 614–624. doi :10.1109/TCOM.1974.1092258.
  11. ^ Chen, Z.; He, T.; Jin, X.; Wu, F. (2020). "Aprendizaje para la compresión de video". IEEE Transactions on Circuits and Systems for Video Technology . 30 (2): 566–576. arXiv : 1804.09869 . doi :10.1109/TCSVT.2019.2892608. S2CID  13743007.
  12. ^ Ohm, Jens-Rainer (2015). Codificación y transmisión de señales multimedia. Springer. pág. 364. ISBN 9783662466919.
  13. ^ ab Roese, John A.; Robinson, Guner S. (30 de octubre de 1975). Tescher, Andrew G. (ed.). "Codificación espacial y temporal combinada de secuencias de imágenes digitales". Transmisión eficiente de información pictórica . 0066 . Sociedad Internacional de Óptica y Fotónica: 172–181. Bibcode :1975SPIE...66..172R. doi :10.1117/12.965361. S2CID  62725808.
  14. ^ Huang, TS (1981). Análisis de secuencias de imágenes. Springer Science & Business Media . pág. 29. ISBN. 9783642870378.
  15. ^ Chen, Wen-Hsiung; Smith, CH; Fralick, SC (septiembre de 1977). "Un algoritmo computacional rápido para la transformada discreta del coseno". IEEE Transactions on Communications . 25 (9): 1004–1009. doi :10.1109/TCOM.1977.1093941.
  16. ^ Cianci, Philip J. (2014). Televisión de alta definición: la creación, el desarrollo y la implementación de la tecnología HDTV. McFarland. pág. 63. ISBN 9780786487974.
  17. ^ abcd Ghanbari, Mohammed (2003). Códecs estándar: de la compresión de imágenes a la codificación avanzada de vídeo. Institution of Engineering and Technology . págs. 1–2. ISBN 9780852967102.
  18. ^ abc "Infografía sobre la historia de los formatos de archivos de vídeo". RealNetworks . 22 de abril de 2012 . Consultado el 5 de agosto de 2019 .

Enlaces externos