Ein InterFrame (Zwischenbuild) ist ein Frame (Einzelbild) in einem Video Compression Stream, das in Form eines oder mehrerer benachbarter Einzelbilder ausgedrückt wird. Der „Inter“-Teil des Begriffs bezieht sich auf die Verwendung der InterFrame-Prognose. Diese Art der Prognose versucht, die Vorteile der zeitlichen Redundanz zwischen benachbarten Frames zu nutzen, um höhere Kompressionsraten zu ermöglichen.

Was ist ein InterFrame?

InterFrame-Prognose.

Ein zwischencodierter Frame wird in Blöcke unterteilt, die als Makroblöcke bezeichnet werden. Danach versucht der Encoder, anstatt die Rohpixelwerte für jeden Block direkt zu kodieren, einen Block zu finden, der demjenigen ähnelt, den er auf einem zuvor kodierten Frame kodiert, der als Referenzframe bezeichnet wird. Dieser Prozess wird durch einen Blockabgleichsalgorithmus durchgeführt. Wenn der Encoder bei der Suche erfolgreich ist, könnte der Block durch einen Vektor, den sogenannten Bewegungsvektor, kodiert werden, der auf die Position des passenden Blocks am Bezugsframe zeigt. Der Prozess der Bewegungsvektorbestimmung wird als Bewegungsschätzung bezeichnet.

In den meisten Fällen wird der Encoder erfolgreich sein, aber der gefundene Block stimmt wahrscheinlich nicht genau mit dem Block überein, den er kodiert. Aus diesem Grund berechnet der Encoder die Unterschiede zwischen ihnen. Diese Restwerte werden als Prognose-Fehler bezeichnet, transportiert und an den Decoder gesendet werden.

Zusammenfassend lässt sich sagen, dass der Encoder, wenn es ihm gelingt, einen passenden Block auf einem Bezugsframe zu finden, einen Bewegungsvektor erhält, der auf den passenden Block zeigt, und einen Prognose-Fehler. Mit beiden Elementen kann der Decoder die Rohpixel des Blocks wiederherstellen.

Diese Art der Prognose hat einige Vor- und Nachteile:

  • Wenn alles gut geht, kann der Algorithmus einen passenden Block mit geringerem Prognosefehler finden, so dass die Gesamtgröße des Bewegungsvektors plus Prognosefehler nach der Transformation kleiner ist als die Größe eines Raw Encoding.
  • Wenn der Block Matching Algorithmus keine geeignete Übereinstimmung findet, ist der Prognosefehler erheblich. Somit ist die Gesamtgröße des Bewegungsvektors plus Prognosefehler größer als das Raw Encoding. In diesem Fall würde der Encoder eine Ausnahme machen und ein Raw Encoding für diesen spezifischen Block senden.
  • Wenn der angepasste Block am Bezugsframe auch mit der InterFrame-Prognose kodiert wurde, werden die Fehler bei der Kodierung an den nächsten Block weitergegeben. Wenn jedes Frame mit dieser Technik kodiert würde, gäbe es keine Möglichkeit für einen Decoder, sich mit einem Videostream zu synchronisieren, da es unmöglich wäre, die Referenzbilder zu erhalten.

Aufgrund dieser Nachteile muss ein zuverlässiger und zeitlich periodischer Bezugsframe verwendet werden, damit diese Technik effizient und nützlich ist. Dieser Bezugsframe wird als IntraFrame bezeichnet, der streng intra-kodiert ist, so dass dieser immer ohne zusätzliche Informationen dekodiert werden kann.

In den meisten Designs gibt es zwei Arten von InterFrames: p-Frames und b-Frames. Diese beiden Arten von Frames und die i-Frames (Intra-codierte Bilder) schließen sich in der Regel zu einer GOP (Group of Pictures) zusammen. Der iFrame benötigt keine zusätzlichen Informationen, die dekodiert werden müssen, und er kann als zuverlässige Referenz verwendet werden. Diese Struktur ermöglicht es auch, eine iFrame-Periodizität zu erreichen, die für die Decodersynchronisation benötigt wird.

Frame-Typen.

Der Unterschied zwischen p-Frames und b-Frames ist der Bezugsframe, den sie verwenden dürfen.

P-frame.

P-Frame ist der Begriff, der verwendet wird, um die vorwärts gerichteten vorhergesagten Bilder zu definieren. Die Prognose erfolgt aus einem früheren Bild, hauptsächlich einem i-Frame, so dass weniger Kodierungsdaten benötigt werden ( ca. 50 % im Vergleich zur i-Frame-Größe).

Die für diese Prognose benötigte Datenmenge besteht aus Bewegungsvektoren und Transformationskoeffizienten, die die Prognosekorrektur beschreiben. Es handelt sich um den Einsatz von Bewegungskompensation.

B-Frame.

B-Frame ist der Begriff für bidirektional prognostizierte Bilder. Diese Art von Prognoseverfahren belegt weniger Codierdaten als P-Frames (ca. 25% im Vergleich zur I-Frame-Größe), da sie aus einem früheren und/oder späteren Frame prognostiziert oder interpoliert werden können. Ähnlich wie bei P-Frames werden B-Frames als Bewegungsvektoren und Transformationskoeffizienten ausgedrückt. Um einen wachsenden Fortpflanzungsfehler zu vermeiden, werden B-Frames nicht als Referenz für weitere Prognosen in den meisten Kodierungstandards verwendet. Bei neueren Kodierungsmethoden (z.B. AVC) können jedoch B-Frames als Referenz verwendet werden.

Typische Gruppe von Bildern (GOP) Struktur.

Die typische Group of Pictures (GOP) Struktur ist IBBPBBBP…. Das I-Frame wird verwendet, um das erste P-Frame vorherzusagen, und diese beiden Frames werden auch verwendet, um das erste und das zweite B-Frame vorherzusagen. Der zweite P-Frame wird ebenfalls mit dem ersten I-Frame vorhergesagt. Beide P-Frames schließen sich zusammen, um das dritte und vierte B-Frame vorherzusagen.

Diese Struktur deutet auf ein Problem hin, da der vierte Frame (ein P-Frame) benötigt wird, um den zweiten und den dritten (B-Frames) vorherzusagen. Also müssen wir den P-Frame vor den B-Frames senden und es wird die Übertragung verzögern (es wird notwendig sein, den P-Frame zu behalten). Diese Struktur hat ihre Stärken:

  • Es minimiert das Problem möglicher unbedeckter Bereiche.
  • P- und B-Frames benötigen weniger Daten als I-Frames, so dass weniger Daten übertragen werden.

Aber es hat Schwachstellen:

  • Es erhöht die Komplexität des Decoders, was bedeuten kann, dass mehr Speicherplatz für die Neuordnung der Frames benötigt wird.
  • Die interpolierten Frames (nämlich B-Frames) benötigen mehr Bewegungsvektoren, was eine erhöhte Bitrate bedeutet.

H.264 – Verbesserungen bei der Prognose von Zwischenbildern.

Die wichtigsten Verbesserungen dieser Technik gegenüber dem bisherigen H.264-Standard sind:

  • Flexiblere Blockpartitionierung
  • Auflösung von bis zu ¼ Pixelbewegungskompensation
  • Mehrere Referenzen
  • Verbesserter Direct/Skip Makroblock

Flexiblere Blockpartition.

Leuchtdichteblockpartition von 16×16 (MPEG-2), 16×8, 8×16 und 8×8. Der letzte Fall erlaubt die Aufteilung des Blocks in neue Blöcke von 4×8, 8×4 oder 4×4.

Der zu kodierende Frame wird in gleich große Blöcke unterteilt, wie im obigen Bild dargestellt. Jede Blockprognose ist ein Block von der gleichen Größe wie die Referenzbilder, versetzt durch eine kleine Verschiebung.

Auflösung von bis zu ¼ Pixelbewegungskompensation.

Pixel an der Halbpixelposition werden durch Anwendung eines Filters der Länge 6 erhalten.

H=[1 -5 20 20 -5 1]

Zum Beispiel:

b=A – 5B + 20C + 20D – 5E + F

Die Pixel an der Position des Viertelpixels werden durch bilineare Interpolation erhalten.

Während MPEG-2 eine ½ Pixelauflösung erlaubte, ermöglicht InterFrame bis zu ¼ Pixelauflösung. Das bedeutet, dass es möglich ist, einen Satz im Frame zu suchen, der in anderen Bezugsframes kodiert werden soll, oder wir können nicht vorhandene Pixel interpolieren, um Blöcke zu finden, die noch besser zum aktuellen Block passen. Wenn der Bewegunsgvektor eine ganzzahlige Anzahl von Abtasteinheiten ist, ist es also möglich, in Referenzbildern den kompensierten Block in Bewegung zu finden. Wenn der Bewegungsvektor keine ganze Zahl ist, wird die Prognose aus interpolierten Pixeln durch einen Interpolarfilter in horizontale und vertikale Richtungen erhalten.

Multiple Referenzen.

Mehrere Referenzen auf die Bewegungsschätzung ermöglichen es, die beste Referenz in 2 möglichen Puffern (Liste 0 auf frühere Bilder, Liste 1 auf zukünftige Bilder) zu finden, die jeweils bis zu 16 Bilder enthalten. Die Blockprognose erfolgt durch eine gewichtete Summe von Blöcken aus dem Referenzbild. Es ermöglicht eine verbesserte Bildqualität in Szenen, in denen Ebenenwechsel, Zoom oder das Aufdecken neuer Objekte auftreten.

Verbesserter Direct/Skip Makroblock.

Der Skip und Direct Modus werden sehr häufig verwendet, insbesondere bei B-Frames. Sie reduzieren die Anzahl der zu kodierenden Bits deutlich. Diese Modi werden verwendet, wenn ein Block kodiert wird, ohne Restfehler oder Bewegungsvektoren zu senden. Der Encoder zeichnet nur auf, dass es sich um einen Skip-Makroblock handelt. Der Decoder leitet den Bewegunsgvektor des Direct/Skip Mode codierten Blocks aus anderen bereits decodierten Blöcken ab.

Es gibt zwei mögliche Wege, die Bewegung abzuleiten.

Temporär.

Es verwendet den Blockbewegungsvektor ais dem Frame der ersten Liste, der sich an der gleichen Position befindet, um den Bewegungsvektor abzuleiten. Der Block Liste 1 verwendet einen Block Liste 0 als Referenz.

Räumlich.

Es prognostiziert die Bewegung von benachbarten Makroblöcken mit gleichen Frame. Ein mögliches Kriterium könnte sein, den Bewegungsvektor aus einem benachbarten Block zu kopieren. Diese Modi werden in gleichmäßigen Zonen des Bildes verwendet, in denen es nicht viel Bewegung gibt.

Zusätzliche Informationen.

Obwohl die Verwendung des Begriffs „Frame“ im informellen Gebrauch üblich ist, wird in vielen Fällen (z.B. in internationalen Normen für die Videocodierung durch MPEG und VCEG) ein allgemeinerer Begriff verwendet, indem das Wort „Picture“ anstelle von „Frame“ verwendet wird, wobei ein Bild entweder ein kompletter Frame oder ein einzelnes Zeilensprung-Feld sein kann.

Videocodecs wie MPEG-2, H.264 oder Ogg Theora reduzieren die Datenmenge in einem Stream, indem sie Schlüsselbilder mit einem oder mehreren Zwischenbildern folgen. Diese Bilder können typischerweise mit einer niedrigeren Bitrate kodiert werden als bei Schlüsselbildern, da ein Großteil des Bildes normalerweise ähnlich ist, so dass nur die wechselnden Teile kodiert werden müssen.

Wenn Sie noch Fragen oder Anregungen haben sollten, hinterlassen Sie uns unten einen Kommentar.

Vielen Dank für ihren Besuch.