Kurze Antwort :
Blöcke sind Einheiten für den Vergleich zwischen Frames.
Die Vorhersage basiert auf der Anzahl der Blöcke, die sowohl auf vorherigen als auch auf folgenden Bildern angezeigt werden.
Längere Antwort :
Als Eingabe empfängt ein Video-Encoder nur eine Folge von Frames .
In den meisten Fällen sind die benachbarten Rahmen einander sehr ähnlich , und der Codierer versucht herauszufinden, ob diese Rahmen tatsächlich ähnlich sind.
Wie sagt man, wenn zwei Bilder ähnlich sind?
- Beide Bilder sind in Makroblöcke aufgeteilt (Sie können nicht ganze Bilder vergleichen, sie unterscheiden sich sicherlich!)
- Der Algorithmus versucht herauszufinden, ob auf dem folgenden Bild ein Block aus dem vorherigen Bild vorhanden ist (in einer bestimmten Nähe zu seiner ursprünglichen Position).
- Wenn bis zu einem bestimmten Schwellenwert die meisten Blöcke auf dem folgenden Bild vorhanden sind, wird das folgende Bild als Differenz zum vorherigen berechnet (
P-frame
);
- Natürlich werden unterschiedliche Blöcke unverändert codiert.
- Wenn nicht, wird das folgende Bild als zu einer anderen Szene gehörend betrachtet, und es gibt keinen anderen Weg, als es vollständig beizubehalten (
I-frame
).
Schauen Sie sich dieses Bild an, um zu verstehen, wie die Vorhersage funktioniert. Es wird von einem deshaker
Plug-In für erstellt VirtualDub
und für einen anderen Zweck verwendet (Erkennen von Verwacklungen), scheint jedoch sehr repräsentativ zu sein:
Die Pfeile zeigen an, wie sich das aktuelle Bild vom vorherigen unterscheidet.
Der gesamte Frame ist in Makroblöcke unterteilt (jedoch größer als 16 x 16).
Die Differenz für jeden Block im Vergleich zum vorherigen Bild ist ein Bewegungsvektor ;
Wie Sie sehen, folgen die meisten Makroblöcke (weiße Pfeile) dem allgemeinen Muster und können daher codiert werden, indem nur eine Transpositionsmatrix auf einen vorherigen Frame angewendet wird .
Es gibt jedoch einige Blöcke (rote Pfeile), die nicht dem allgemeinen Muster entsprechen, und daher müssen sie unverändert codiert werden .
Wenn alles rot ist, gibt es natürlich keine andere Wahl, als den gesamten Frame unverändert zu codieren.