¿Qué son los cuadros MPEG I, P y B?

8

Recientemente estuve revisando artículos y videos de MPEG para entender cómo funciona. Entiendo lo que hacen los cuadros I, P y B, pero no entiendo cómo se calcula la predicción.
Suponga que quiero grabar un video de una pelota que cae del cielo al suelo y luego rebota un par de veces antes de finalmente detenerse.
Además, no estoy claro con el concepto del macrobloque de 16x16. Por favor dime:

  • cómo se calcula la predicción
  • ¿Qué es el macrobloque y cómo ayuda en la codificación MPEG?

  • Mis referencias:
  • Predicción MPEG
  • Video sobre conversión MPEG
  • Fasih Khatib
    fuente

    Respuestas:

    14

    Respuesta corta : los
    bloques son unidades para la comparación entre cuadros;
    La predicción se basa en la cantidad de bloques que se presentan en imágenes anteriores y siguientes;

    Respuesta más larga :
    como entrada, un codificador de video no recibe nada más que una secuencia de cuadros .
    En la mayoría de los casos, los cuadros adyacentes son muy similares entre sí, y el codificador intenta determinar si estos cuadros son realmente similares.

    ¿Cómo se dice si dos imágenes son similares?

    • Ambas imágenes están divididas en macrobloques (no puedes comparar imágenes enteras, ¡ciertamente diferirán!)
    • El algoritmo intenta encontrar si existe un bloque de la imagen anterior en la siguiente imagen (dentro de una cierta proximidad a su posición original)
    • Si, hasta cierto umbral, la mayoría de los bloques están presentes en la siguiente imagen, la siguiente imagen se calcula como una diferencia con la anterior ( P-frame);
      • Por supuesto, los diferentes bloques se codifican tal cual;
    • Si no, se considera que la siguiente imagen pertenece a otra escena, y no hay otra forma en lugar de mantenerla por completo ( I-frame).

    Para entender cómo funciona la predicción, eche un vistazo a esta imagen. Es creado por un deshakercomplemento para VirtualDuby utilizado para un propósito diferente (detectar sacudidas de la cámara), pero parece muy representativo:

    Deshaker

    Las flechas indican cómo la imagen actual difiere de la anterior;
    Todo el marco se divide en macrobloques (sin embargo, mayores de 16x16);
    La diferencia para cada bloque, en comparación con la imagen anterior, es un vector de movimiento ;
    Como puede ver, la mayoría de los macrobloques (flechas blancas) siguen el patrón común y, por lo tanto, pueden codificarse aplicando solo una matriz de transposición a un cuadro anterior .
    Sin embargo, hay algunos bloques (flechas rojas) que no cumplen con el patrón común y, por lo tanto , deben codificarse tal cual .
    Por supuesto, si todo es rojo, no hay otra opción que codificar el fotograma completo tal como está.

    bytebuster
    fuente