Das Auge ist «faul» oder wie Videos komprimiert werden
Blog| 19. November 2021 | Lesezeit: 4 Minuten
Im letzten Artikel dieser kleinen Serie wurde festgestellt, dass Videosignale in höchster Qualität enorme Mengen an Daten produzieren und deshalb für eine Übertragung in Echtzeit auch sehr hohe Bitraten (Übertragungsgeschwindigkeiten) benötigen:
- Full HD (1080p60): ca. 3 Gbit/s
- 4K UHD (2160p60): ca. 12 Gbit/s
- 8K UHD (4320p60): ca. 48 Gbit/s
Um die Signale von Videos einfacher übertragen und speichern zu können, müssen sie in der Grösse reduziert (komprimiert) werden. Dazu werden Videocodecs (Codec = Coder und Decoder) verwendet.

Wie kann die Grösse von Videos reduziert werden?
Zwei Faktoren ermöglichen es, Videos zu komprimieren. Erstens unser Sehvermögen, das gewisse Details gar nicht wahrnehmen kann. Und zweitens die Tatsache, dass Videos viele sich wiederholende und damit eigentlich überflüssige Informationen enthalten. Im ersten Fall spricht man von Irrelevanz, im zweiten von Redundanz. Das Entfernen von Redundanz ist verlustfrei möglich, das Entfernen von Irrelevanz hingegen ist verlustbehaftet.
Doch wie funktionieren Kompressionsverfahren eigentlich? Ein Video ist nichts anderes als eine schnelle Abfolge von Standbildern. Diese Tatsache erlaubt eine Kompression jedes einzelnen Bildes. In einer Bildsequenz wiederum unterscheiden sich die Inhalte der aufeinanderfolgenden Bilder oft nur wenig.
Die Differenz ist entscheidend
Man stelle sich beispielsweise ein Gesicht mit sich langsam änderndem Ausdruck mit einem gleichbleibenden Hintergrund vor. In diesem Fall macht es wenig Sinn, den Hintergrund für jedes Bild von Neuem zu übertragen. Stattdessen wird das Bild einmal codiert. Für die darauffolgenden Bilder wird eine Vorhersage erstellt und nur die Differenz zur Vorhersage übertragen. Je besser die Vorhersage, desto weniger Daten werden übertragen und damit eine hohe Kompression erzielt. Dabei ist die Qualität der angewendeten Algorithmen und die Güte der Schätzung entscheidend.
Gute Vorhersagen sind wichtig für die Kompression von Videos
Damit die Vorhersagen einigermassen gute Resultate liefern können, muss regelmässig ein Bild des Videos vollständig codiert werden. Diese Bilder (Frames) nennt man Intra-Frame-Bilder oder I-Frames. Frames, die vorhergesagt werden (Predicted Frames) sind sogenannte P- und B-Frames. Zusammen bilden die Frames eine Sequenz oder GOP (Group of Pictures) genannt. Diese beginnen und enden jeweils mit einem I-Frame. Je mehr B- und P-Frames, desto höher wird die Kompression. Üblich sind GOP-Längen von 25 bis 120 Frames.

- I-Frame (Intra-Frame): Einzelbild, das unabhängig von anderen Frames codiert wird.
- P-Frame (Predicted Frame): P-Frames werden mit Hilfe der Bewegungskompensation aus dem letzten I-Frame vorausgesagt. Übertragen wird nur die Differenz zur Vorhersage.
- B-Frame (Bidirectionally Predicted Frame): B-Frames werden aufgrund von früheren und späteren Frames vorausgesagt. Auch hier wird nur die Differenz zur Vorhersage übertragen.
I-Frames benötigen am meisten Daten, P-Frame circa ein Drittel eines I-Frames und B-Frames noch etwa ein Zehntel eines I-Frames. Die P-Frames werden vor den B-Frames übertragen. Im obigen Beispiel wird damit IBBPBBP zu IPPBBBB.
Intra-Frames im Detail |
---|
Intra-Frames werden unabhängig komprimiert, wie es auch für Einzelbilder gemacht wird (z.B. JPEG). In einem ersten Schritt unterteilt man ein Bild in Quadrate, sogenannte Makroblocks, zum Beispiel zu 16 x 16 Pixel. Diese Blocks werden einer diskreten Kosinustransformation (DCT) unterzogen. Dabei werden die Pixel in einen Bildraum (gewissermassen den Frequenzraum) transformiert. In der 16 x 16 Matrix befinden sich nun die Koeffizienten der DCT. Dies ist übrigens verlustlos, das heisst mit der inversen Kosinustransformation (IDCT) kann wieder das exakte Original hergestellt werden. Interessant daran ist, dass die einzelnen Koeffizienten nun die Frequenzanteile, also die Details des Signals, darstellen. Der erste Koeffizient 0,0 ist dabei der durchschnittliche Helligkeitswert des ganzen Blocks, der letzte nur noch für die allerfeinsten Strukturen. |

Um eine Datenreduktion zu erhalten, müssen die Koeffizienten nun quantifiziert werden. Dabei werden schon viele Koeffizienten zu null. Hiermit erhalten wir eine schon erwähnte Reduktion der Irrelevanz. Mit der anschliessenden variablen Längencodierung, meist eine Entropiecodierung, werden oft vorkommende Werte mit kurzen Bitsequenzen, selten vorkommende Werte hingegen mit langen Bitsequenzen codiert. |

Je besser die Vorhersage, desto effektiver der Algorithmus
Für die Kompression von Videos, versuchen Coder die Frames zu schätzen, also vorauszusagen. Dieser Vorgang kreiert die P- und B-Frames. Je besser die Vorhersagen, desto effektiver ist der Kompressionsalgorithmus. P-Frames werden alleine aufgrund der Vergangenheit vorhergesagt. B-Frames werden aufgrund von vorherigen und nachfolgenden Frames vorhergesagt und liefern sehr gute Schätzungen. Übertragen wird bei beiden Typen nur die Differenz des tatsächlichen Bildes zur Schätzung. Der Decoder schätzt mit den gleichen Methoden wie der Coder die P- und B-Frames und addiert die vom Coder erhaltenen Differenzen zur Schätzung zu einem vollständigen Bild.
Den erwähnten Prinzipen bilden die Grundlagen fast aller gängigen Videocodecs. In Tat und Wahrheit sind die Kompressionsalgorithmen natürlich viel aufwändiger und komplizierter.
Die Standards der Videokompression
Die heute am weitesten verbreiteten Kompressionsverfahren sind MPEG-2, H-264/MPEG-4 AVC, H-265/HEVC und VP9 für Videos und MP3 und AAC für Audio. Diese Vielfalt an Standards für zum Teil gleiche Verfahren ist entstanden, weil sich unterschiedliche internationale Organisationen wie zum Beispiel die Moving Picture Expert Group (MPEG) und die Internationale Fernmeldeunion (ITU) um Standardisierung und Normen bemühen. Weil sich die Technik schnell weiterentwickelt, ist in den nächsten Jahren weiter mit neuen, ausgefeilteren Verfahren zu rechnen.
Zurück zur Übersicht