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'è.