Cosa sono i frame MPEG I, P e B?

8

Recentemente ho esaminato articoli e video MPEG per capire come funziona. Capisco cosa fanno i frame I, P e B ma non capisco come viene calcolata la previsione.
Supponiamo che io voglia registrare un video di una palla che cade dal cielo a terra e poi rimbalza un paio di volte prima di fermarsi definitivamente.
Inoltre, non sono chiaro con il concetto del macroblocco 16x16. Per favore dimmi:

  • come viene calolata la previsione
  • cos'è il macroblocco e come aiuta nella codifica MPEG

  • I miei riferimenti:
  • Predizione di MPEG
  • Conversione video su MPEG
  •     
    posta Fasih Khatib 23.09.2012 - 14:34
    fonte

    1 risposta

    14

    Risposta breve :
    I blocchi sono unità per il confronto tra fotogrammi;
    La previsione si basa sulla quantità di blocchi che si presentano su entrambe le immagini precedenti e successive;

    Risposta più lunga :
    Come input, un codificatore video non riceve nient'altro che una sequenza di frame .
    Nella maggior parte dei casi, i frame adiacenti sono molto simili tra loro e l'encoder cerca di capire se questi frame sono effettivamente simili.

    Come si dice se due immagini sono simili?

    • Entrambe le immagini sono suddivise in macroblocchi (non è possibile confrontare intere immagini, saranno sicuramente diverse!)
    • L'algoritmo tenta di scoprire se un blocco dell'immagine precedente esiste sull'immagine seguente (all'interno di una certa prossimità nella sua posizione originale)
    • Se, a una certa soglia, la maggior parte dei blocchi presenti nell'immagine seguente, l'immagine seguente viene calcolata come differenza rispetto alla precedente ( P-frame );
      • Naturalmente, i diversi blocchi sono codificati così com'è;
    • In caso contrario, la seguente immagine viene considerata come appartenente a un'altra scena, e non c'è altro modo invece di mantenerla interamente ( I-frame ).

    Per capire come funziona la previsione, dai un'occhiata a questa immagine. Viene creato da un deshaker plug-in per VirtualDub e utilizzato per uno scopo diverso (rilevamento dei movimenti della fotocamera), ma sembra molto rappresentativo:

    Le frecce indicano come l'immagine corrente differisce da quella precedente;
    L'intero fotogramma è suddiviso in macroblocchi (tuttavia maggiori di 16x16); La differenza per ogni blocco, rispetto all'immagine precedente, è un vettore di movimento ;
    Come vedi, la maggior parte dei macroblocchi (frecce bianche) seguono lo schema comune e pertanto possono essere codificati applicando solo una matrice di trasposizione a un fotogramma precedente .
    Tuttavia, alcuni blocchi (frecce rosse) non sono conformi al modello comune e pertanto devono essere codificati così com'è .
    Naturalmente, se tutto è rosso, non c'è altra scelta che codificare l'intero frame così com'è.

        
    risposta data 23.09.2012 - 15:21
    fonte

    Leggi altre domande sui tag