Wie moderne Videokomprimierungsalgorithmen tatsächlich funktionieren

Wie moderne Videokomprimierungsalgorithmen tatsächlich funktionieren
⌛ Reading Time: 4 minutes

Moderne Videokomprimierungsalgorithmen sind nicht mit den Bildkomprimierungsalgorithmen identisch, mit denen Sie möglicherweise vertraut sind. Die zusätzliche Dimension und Zeit bedeutet, dass unterschiedliche mathematische und logische Techniken auf die Videodatei angewendet werden, um die Größe zu verringern und gleichzeitig die Videoqualität beizubehalten.

In diesem Beitrag verwenden wir H.264 als archetypischen Komprimierungsstandard. Es ist zwar nicht mehr das neueste Videokomprimierungsformat, bietet jedoch ein ausreichend detailliertes Beispiel für die Erläuterung von Gesamtkonzepten zur Videokomprimierung.

Was ist Videokomprimierung?

Videokomprimierungsalgorithmen suchen nach räumlichen und zeitlichen Redundanzen. Durch mindestensmaliges Codieren redundanter Daten kann die Dateigröße reduziert werden. Stellen Sie sich zum Beispiel eine einminütige Aufnahme des Gesichts eines Charakters vor, dessen Ausdruck sich langsam ändert. Es ist nicht sinnvoll, das Hintergrundbild für jedes Bild zu codieren. Stattdessen können Sie es einmal codieren und dann darauf zurückgreifen, bis Sie wissen, dass sich das Video ändert. Diese Interframe-Vorhersagecodierung ist für die nervigen Artefakte der digitalen Videokomprimierung verantwortlich: Teile eines alten Bildes bewegen sich mit falscher Aktion, weil etwas in der Codierung durcheinander geraten ist.

I-Frames, P-Frames und B-Frames

I-Frames sind vollständig codierte Bilder. Jeder I-Frame enthält alle Daten, die zur Darstellung eines Bildes benötigt werden. P-Frames sind pbasierend darauf, wie sich das Bild vom letzten I-Frame ändert. B-Frames sind bi-gerichtet vorhergesagt, wobei Daten sowohl vom letzten P-Frame als auch vom nächsten I-Frame verwendet werden. P-Frames müssen nur die visuellen Informationen speichern, die für den P-Frame eindeutig sind. Im obigen Beispiel muss verfolgt werden, wie sich die Punkte über den Rahmen bewegen, aber Pac-Man kann bleiben, wo er ist.

Der B-Frame betrachtet den P-Frame und den nächsten I-Frame und „mittelt“ die Bewegung über diese Frames. Der Algorithmus hat eine Vorstellung davon, wo das Bild „beginnt“ (der erste I-Frame) und wo das Bild „endet“ (der zweite I-Frame), und verwendet Teildaten, um eine gute Vermutung zu codieren, wobei alle redundanten Daten weggelassen werden statische Pixel, die zum Erstellen des Bildes nicht erforderlich sind.

Intraframe-Codierung (I-Frames)

Funktionsweise der Videokomprimierung IP- und B-Frames

I-Frames werden unabhängig voneinander komprimiert, ebenso wie Standbilder gespeichert werden. Da I-Frames keine Vorhersagedaten verwenden, enthält das komprimierte Bild alle Daten, die zur Anzeige des I-Frames verwendet werden. Sie werden weiterhin von einem Bildkomprimierungsalgorithmus wie JPEG komprimiert. Diese Codierung findet häufig im YCbCr-Farbraum statt, der die Helligkeitsdaten von den Farbdaten trennt, sodass Bewegungs- und Farbänderungen separat codiert werden können.

Bei nicht vorhersagbaren Codecs wie DV und Motion JPEG hören wir hier auf. Da es keine prädiktiven Frames gibt, kann nur eine Komprimierung des Bildes innerhalb eines einzelnen Frames erzielt werden. Es ist weniger effizient, erzeugt jedoch eine Rohbilddatei mit höherer Qualität.

In Codecs, die prädiktive Frames wie H.264 verwenden, werden regelmäßig I-Frames angezeigt, um den Datenstrom durch Festlegen eines neuen Referenzframes zu „aktualisieren“. Je weiter die I-Frames voneinander entfernt sind, desto kleiner kann die Videodatei sein. Wenn I-Frames jedoch zu weit voneinander entfernt sind, verschlechtert sich die Genauigkeit der Vorhersagebilder des Videos langsam in Unverständlichkeit. Eine bandbreitenoptimierte Anwendung würde I-Frames so selten wie möglich einfügen, ohne den Videostream zu unterbrechen. Für Verbraucher wird die Häufigkeit von I-Frames häufig indirekt durch die Einstellung „Qualität“ in der Codierungssoftware bestimmt. Professionelle Videokomprimierungssoftware wie ffmpeg ermöglicht eine explizite Steuerung.

Interframe-Vorhersage (P-Frames und B-Frames)

Video-Encoder versuchen, Änderungen von einem Bild zum nächsten vorherzusagen. Je näher ihre Vorhersagen sind, desto effektiver ist der Komprimierungsalgorithmus. Dies ist es, was die P-Frames und B-Frames erzeugt. Die genaue Menge, Häufigkeit und Reihenfolge der prädiktiven Frames sowie der spezifische Algorithmus, der zum Codieren und Reproduzieren dieser Frames verwendet wird, werden durch den spezifischen Algorithmus bestimmt, den Sie verwenden.

Funktionsweise der Videokomprimierung Blockpartition

Betrachten wir als verallgemeinertes Beispiel, wie H.264 funktioniert. Der Rahmen ist in Abschnitte unterteilt, die als Makroblöcke bezeichnet werden und typischerweise aus 16 x 16 Abtastwerten bestehen. Der Algorithmus codiert nicht die Rohpixelwerte für jeden Block. Stattdessen sucht der Encoder in einem älteren Rahmen, dem Referenzrahmen, nach einem ähnlichen Block. Wenn ein gültiger Referenzrahmen gefunden wird, wird der Block durch einen mathematischen Ausdruck codiert, der als Bewegungsvektor bezeichnet wird und die genaue Art der Änderung vom Referenzblock zum aktuellen Block beschreibt. Wenn das Video wiedergegeben wird, interpretiert der Videoplayer diese Bewegungsvektoren korrekt, um das Video erneut zu übersetzen. Wenn sich der Block überhaupt nicht ändert, wird kein Vektor benötigt.

Schlussfolgerung: Datenkomprimierung

Sobald die Daten in ihre Frames sortiert sind, werden sie mit dem Transformationscodierer in einen mathematischen Ausdruck codiert. H.264 verwendet eine DCT (Discrete-Cosine-Transformation), um visuelle Daten in mathematische Ausdrücke umzuwandeln (insbesondere die Summe der Cosinusfunktionen, die bei verschiedenen Frequenzen schwingen). Der ausgewählte Komprimierungsalgorithmus bestimmt den Transformationscodierer. Dann werden die Daten vom Quantisierer “gerundet”. Schließlich werden die Bits einem verlustfreien Komprimierungsalgorithmus unterzogen, um die Dateigröße noch einmal zu verkleinern. Dies ändert nichts an den Daten: Es organisiert sie nur in der kompaktesten Form, die möglich ist. Anschließend wird das Video komprimiert, kleiner als zuvor und zum Ansehen bereit.

Bildnachweis: VC Demo, itu delft

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.