Technologieaustausch

Systematisches Erlernen des Datenkomprimierungsprozesses für H264-Videocodierung (03) und verwandter Konzepte

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Hinweis: Wir beziehen uns auf die Golden-Circle-Lernmethode (Was ist die Golden-Circle-Regel? -> Modell-Golden-Circle-Regel, dieser Artikel verwendet: Warum-Was), um die Audio-H264-Videokodierung zu lernen. Diese Artikelreihe konzentriert sich auf das Verständnis des Wissenssystems und der praktischen Methoden der Videokodierung. Der theoretische Aspekt erklärt mehr über den Ursprung von Konzepten in Audio und Video und den Zusammenhang zwischen verschiedenen Konzepten. Wissen Sie, wie es ist, wissen Sie, warum es so ist. Gleichzeitig wird mehr Wert auf den Aufbau von Wissenssystemen gelegt.

In diesem Artikel sprechen wir hauptsächlich über den Prozess der H.264-Datenkomprimierung und verwandte Konzepte. Die H.264-Datenkomprimierung hat nur einen Zweck: Komprimieren, Komprimieren und erneutes Komprimieren, um die Größe der Videodaten zu reduzieren und gleichzeitig die Bildqualität so weit wie möglich sicherzustellen. Bevor wir also die H.264-Datenkomprimierung lernen, müssen wir zunächst Folgendes verstehen: Obwohl an diesem Prozess viele Konzepte und Methoden beteiligt sind, dienen alle Methoden und Prozesse diesem Zweck: Komprimierung.

1 Interpretation des H.264-Datenkomprimierungsprozesses

Der Datenkomprimierungsprozess von H.264 lässt sich hauptsächlich in den folgenden Schlüsselschritten zusammenfassen: Makroblockteilung und Unterblockteilung -> Frame-Gruppierung -> Frame-Vorhersage -> ganzzahlige diskrete Kosinustransformation (DCT) -> CABAC-Komprimierung. Die spezifischen Erweiterungsanweisungen lauten wie folgt.

1.1 Makroblöcke aufteilen && in Unterblöcke aufteilen

Makroblock: Es versteht sich, dass der Encoder beim Senden des Videobilds an den Puffer des H264-Encoders Makroblöcke in jedes Bild unterteilt. Standardmäßig verwendet die H264-Codierung einen Bereich von 16 x 16 Pixeln als Makroblock (H265 verwendet einen Bereich von 64 x 64 Pixeln). Der Effekt der Aufteilung eines Videobilds in Makroblöcke ist wie folgt:

Der Gesamteffekt nach der Makroblockteilung

Gleichzeitig können wir im Bild oben den 16 x 16 Pixel großen Makroblock tatsächlich in kleinere Unterblöcke unterteilen. Die Größe des Unterblocks kann 8X16、16X8、8X8、4X8、8X4、4X4 betragen, was sehr flexibel ist. Der Zweck der erneuten Aufteilung in Unterblöcke besteht darin, diese Daten mit sehr kleinen Daten aufzuzeichnen. Nachdem die Makroblöcke aufgeteilt wurden, können alle Bilder im H264-Encoder-Cache gruppiert werden.

Durch die Aufteilung in Makroblöcke und Unterblöcke kann die Videocodierung Videoinhalte genauer analysieren und verarbeiten und eine effizientere Datenkomprimierung erreichen. Videobilder werden in Makroblöcke der Größe 16 x 16 Pixel unterteilt. Diese Makroblöcke können weiter in kleinere Blöcke wie 8 x 8, 8 x 4, 4 x 8 usw. unterteilt werden, um der Komplexität des Bildinhalts Rechnung zu tragen.

1.2 Rahmengruppierung

Die Frame-Gruppierung (GOP-Struktur) wird vor der Intra-Vorhersage und der Inter-Vorhersage definiert. Beim Videokodierungsprozess ist die Einstellung der Bildgruppierung einer der ersten Schritte, der die Organisation und Kodierungsreihenfolge von Videobildern bestimmt. Der Hauptzweck der Frame-Gruppierung besteht darin, die Datenredundanz zu reduzieren. Die Redundanz von Videodaten wird hauptsächlich in zwei Kategorien unterteilt:

  • Einen größeren Anteil hat die zeitliche Datenredundanz, die den Einsatz einer Inter-Frame-Vorhersagekomprimierung erfordert(Denn selbst wenn die Kamera 30 Bilder pro Sekunde aufnimmt, hängen diese 30 Datenbilder in den meisten Fällen zusammen. Es können mehr als 30 Datenbilder vorhanden sein, und möglicherweise sind Dutzende Datenbilder besonders eng miteinander verbunden. Und für die Korrelation gilt Insbesondere für Close Frames müssen wir nur einen Keyframe speichern(Ich rahmen)Daten, andere Frames(B-Rahmen und P-Rahmen)Durch diesen Frame kann alles nach bestimmten Regeln vorhergesagt werden, sodass die Videodaten die größte zeitliche Redundanz aufweisen.
  • Die Redundanz räumlicher Daten, die den Einsatz einer Intra-Frame-Vorhersagekomprimierung erfordert, macht einen relativ geringen Anteil aus.

Schritte zur Ausführung der H264-Frame-Gruppierung:

  1. Jedes Mal werden zwei benachbarte Frames zum Makroblockvergleich herausgenommen und die Ähnlichkeit zwischen den beiden Frames berechnet.
  2. Ähnlichkeit wird nach der Quantifizierung erreicht: Wenn die Pixel mit Unterschieden nur innerhalb von 10 % der Punkte liegen, sich der Helligkeitsunterschied um nicht mehr als 2 % ändert und der Chroma-Unterschied sich nur um innerhalb von 1 % ändert, glauben wir, dass solche Bilder gruppiert werden können in eine Gruppe.

Wenn die Gruppierung abgeschlossen ist, beginnt das Problem der Bildvorhersagekomprimierung gelöst zu werden.

1.3 Komprimierung der Frame-Vorhersage

Dieser Teil umfasst hauptsächlich die Intra-Frame-Vorhersage und die Inter-Frame-Vorhersage. Die Intra-Frame-Vorhersage besteht darin, statische Bildrahmen zu komprimieren, den Pixelwert jedes Makroblocks über 9 verschiedene Modi vorherzusagen und dann den Restwert mit dem Originalbild zu berechnen. Interframe-Vorhersage (Bewegungsschätzung und Bewegungskompensation): Finden Sie für P-Frames und B-Frames den Bewegungsvektor zwischen dem vorherigen Frame oder zwei Frames durch Bewegungsschätzung, führen Sie dann eine Bewegungskompensationsvorhersage durch, generieren Sie ein vorhergesagtes Bild und berechnen Sie den Restwert daraus aktuellen Frame.

Hinweis: Die Reihenfolge der Intra-Vorhersage und der Inter-Vorhersage hängt von der Art des codierten Rahmens und der Codierungsstrategie ab. In einer echten Video-Encoder-Implementierung sind diese Schritte Teil des Codierungsprozesses und werden automatisch vom Encoder ausgeführt. Es muss nicht derjenige sein, der sich zuerst darum kümmert.

1.3.1 Intra-Vorhersage

Komprimierung der Intra-Frame-Vorhersage: Löst das Problem der räumlichen Datenredundanz. Luftraumredundante Daten beziehen sich auf Farbe, Helligkeit usw., bei denen es sich hauptsächlich um Informationen handelt, die für das menschliche Auge unempfindlich sind. Die Codierung wird durch Löschen komprimiert.Das bei der Intra-Frame-Vorhersage verwendete Prinzip besteht darin, dass das menschliche Auge ein gewisses Maß an Bilderkennung besitzt. Es reagiert sehr empfindlich auf niederfrequente Helligkeit und weniger empfindlich auf hochfrequente Helligkeit.(Es kann als Makroblockgröße von 16 x 16 verstanden werden. In H264 werden andere Daten über die oberen 16 Pixel und die 16 Pixel ganz links vorhergesagt, sodass die Pixeldarstellungsinformationen, die ursprünglich 16 * 16 = 256 erforderten, in 16+ konvertiert werden können 16-1 =31 Pixel zur Darstellung von Informationen)

1.3.2 Inter-Frame-Vorhersage (Bewegungsschätzung und Bewegungskompensation)

Komprimierung der Interframe-Vorhersage (Bewegungsschätzung und -kompensation): Löst das Problem der Datenredundanz im Zeitbereich. Das Video enthält mehrere Bilder, die linear in chronologischer Reihenfolge angeordnet sind. Die Korrelation zwischen den Bildern ist sehr stark, sodass viele Daten zwischen den Bildern gelöscht werden können.Nach der Komprimierung wird es in drei Typen unterteilt: I-Frame, P-Frame und B-Frame.(Erklärung: Prinzip der Bewegungsschätzung und -kompensation: Der H264-Encoder entnimmt zunächst nacheinander zwei Bilder von Videodaten aus dem Puffer-Header und führt dann einen Makroblock-Scan durch. Wenn festgestellt wird, dass sich in einem der Bilder ein Objekt befindet, wird es angezeigt Wird zu diesem Zeitpunkt nach der Position in der Nähe gesucht (im Suchfenster), kann der Bewegungsvektor des Objekts berechnet werden. Das Bild unten zeigt die Position der Billardkugel nach der Suche.

Für P-Bilder und B-Bilder wird die Bewegungsschätzung verwendet, um den Bewegungsvektor zwischen dem vorherigen Bild oder zwei Bildern zu finden. Anschließend wird eine Bewegungskompensationsvorhersage durchgeführt, um ein vorhergesagtes Bild zu generieren, und der Rest mit dem aktuellen Bild wird berechnet.

1.4 Ganzzahlige diskrete Kosinustransformation (DCT, Diskrete Cosinus-Transformation

Dieser Schritt führt hauptsächlich eine DCT-Transformation des Vorhersagerests durch, wandelt die räumliche Korrelation in irrelevante Daten im Frequenzbereich um und quantisiert sie anschließend. DCT wird hauptsächlich zur Daten- oder Bildkomprimierung verwendet, wobei räumliche Korrelation in irrelevante Daten im Frequenzbereich umgewandelt und anschließend quantisiert wird.(Erklärung: Durch die DCT-Transformation können wichtigere Informationen des Bildes zusammengeführt werden, und unwichtige Frequenzbereichsbereiche und Koeffizienten können direkt beschnitten werden.)

Zusammenfassung: Die Reihenfolge der Frame-Datenkomprimierung besteht darin, zuerst eine Inter-Frame- und Intra-Frame-Komprimierung durchzuführen und dann eine DCT-Transformation für die Restdaten durchzuführen, um die Korrelation der Daten zu entfernen und die Daten weiter zu komprimieren. Wie folgt:

1,5 CABAC-Komprimierung

CABAC-Komprimierung ist eine verlustfreie Komprimierungstechnologie und eine Methode zur Entropiekodierung. Wenn CABAC komprimiert und kodiert wird, werden Hochfrequenzdaten als kurze Codes und Niederfrequenzdaten als lange Codes definiert. Diese Methode ist effizienter als die VLC-Methode. Die Entropiekodierungsmethode CABAC (Context-Adaptive Binary Arithmetic Coding) wird verwendet, um die quantisierten Koeffizienten weiter zu komprimieren und so die Komprimierungseffizienz zu verbessern. Hier werden die in den vorherigen vier Schritten verarbeiteten Daten mithilfe des Kodierungsalgorithmus in den endgültigen Codestrom kodiert. Die endgültigen komprimierten Frames sind unterteilt in: I-Frames, P-Frames und B-Frames. Nachdem die verlustfreie Komprimierungsmethode CABAC ausgeführt wurde, wird der Videocode-Stream erhalten.

2 Verwandte Konzepte im Datenkomprimierungsprozess

2.1 Datenredundanz in Zeit und Raum

Räumliche Datenredundanz und zeitliche Datenredundanz sind zwei Grundkonzepte der Videokomprimierung. Sie beschreiben wiederholte Informationen innerhalb bzw. zwischen Videobildern.

Interpretation der räumlichen Redundanz

  • Es bezieht sich auf die Ähnlichkeit oder Korrelation zwischen benachbarten Pixeln innerhalb eines einzelnen Videobilds, was zu einer Datenduplizierung führt. Aufgrund der Kontinuität natürlicher Bilder weisen benachbarte Pixel tendenziell ähnliche Helligkeits- oder Farbwerte auf.
  • Typische Beispiele für räumliche Redundanz sind große Bereiche mit Monochrom, Farbverläufen oder sich langsam ändernden Texturen.
  • Videokomprimierungsalgorithmen reduzieren die räumliche Redundanz durch räumliche Vorhersage, Transformationscodierung (z. B. DCT) und andere Technologien, konvertieren das Bild vom räumlichen Bereich in den Frequenzbereich und konzentrieren die Energie auf einige wenige Koeffizienten, um den Zweck der Komprimierung zu erreichen.

Interpretation der zeitlichen Redundanz

  • Bezieht sich auf die Ähnlichkeit, die zwischen aufeinanderfolgenden Bildern einer Videosequenz besteht, d. h. dasselbe Objekt oder dieselbe Szene in aufeinanderfolgenden Bildern ändert sich visuell nicht wesentlich.
  • Zeitliche Redundanz tritt normalerweise auf, wenn die Kamera stationär ist oder sich die Objekte in der Szene langsam bewegen und sich in nachfolgenden Bildern im Vergleich zum vorherigen Bild nur ein kleiner Bereich ändert.
  • Videokomprimierungsalgorithmen reduzieren die zeitliche Redundanz durch Techniken wie Inter-Frame-Vorhersage, Bewegungsschätzung und Bewegungskompensation, indem sie die Korrelation zwischen vorherigen und folgenden Frames nutzen, um Unterschiede zwischen Frames vorherzusagen und zu codieren, anstatt jedes Frame vollständig zu codieren.

2.2 Interpretation von Restdaten und verwandten Konzepten

Bei der H.264-Videokomprimierung beziehen sich Restdaten auf die Differenz zwischen dem ursprünglichen Videobild und dem vorhergesagten Bild. Wenn Sie die Restdaten besser verstehen möchten, müssen Sie gleichzeitig die folgenden Konzepte verstehen, wie unten gezeigt:

  1. vorhergesagter Rahmen : Während des Videokodierungsprozesses werden Intra-Vorhersage (Intra-Vorhersage) oder Inter-Vorhersage (Inter-Vorhersage) verwendet, um vorhergesagte Frames zu generieren. Die Intra-Vorhersage basiert auf Pixelinformationen des aktuellen Frames, während die Inter-Vorhersage auf Bewegungskompensationsinformationen vorheriger oder nachfolgender Frames basiert.

  2. Originalrahmen: Bezieht sich auf die Originalbilder, die tatsächlich in der Videosequenz aufgenommen wurden.

  3. Restberechnung : Restdaten werden berechnet, indem der vorhergesagte Frame vom ursprünglichen Frame subtrahiert wird. Restdaten stellen die Differenz zwischen dem vorhergesagten Frame und dem ursprünglichen Frame dar.

Auf der Grundlage der oben genannten Konzepte können wir die Eigenschaften von Restdaten besser verstehen:

  • Restdaten weisen normalerweise eine hohe räumliche Zufälligkeit auf, da der Vorhersagerahmen die meisten redundanten Informationen entfernt hat. Diese Zufälligkeit macht die Restdaten für eine weitere Komprimierung durch Transformation und Quantisierung geeignet.

  • Nachdem die Restdaten durch Integer Discrete Cosine Transform (IDCT) und Quantisierung verarbeitet wurden, kann die Datenmenge erheblich reduziert werden. Die Transformation wandelt die zweidimensionalen räumlichen Informationen des Residuums in Frequenzinformationen um, während die Quantisierung die Genauigkeit dieser Koeffizienten verringert und Details entfernt, die für das menschliche Auge nicht wahrnehmbar sind.

Der Zweck der Codierung von Restdaten besteht darin, die Bitrate der Videodaten weiter zu reduzieren und gleichzeitig die Bildqualität so weit wie möglich beizubehalten. Gleichzeitig ist eine effektive Komprimierung der Restdaten von entscheidender Bedeutung für die Effizienz der H.264-Kodierung, da sie sich direkt auf die Qualität des kodierten Videos und die erforderliche Speicher- oder Übertragungsbandbreite auswirkt.

2.3 Entropiekodierungsbezogene Konzepte und erweiterte Interpretation

Entropiekodierung ist eine verlustfreie Datenkomprimierungstechnik, die auf dem Konzept der Informationsentropie basiert und darauf abzielt, Daten mit möglichst wenigen Bits darzustellen. Die Kernidee der Entropiekodierung besteht darin, Symbolen, die mit größerer Wahrscheinlichkeit auftreten, weniger Bits zuzuweisen und Symbolen, die weniger häufig vorkommen, mehr Bits zuzuweisen. Auf diese Weise wird der benötigte Speicherplatz bzw. die Übertragungsbandbreite reduziert, da die durchschnittliche Bitrate des gesamten Datensatzes reduziert wird.

Entropiekodierung wird häufig für Text und bestimmte Arten der Datenkomprimierung verwendet und kann die Komprimierungseffizienz erheblich verbessern, insbesondere wenn die Daten eine deutlich ungleichmäßige Wahrscheinlichkeitsverteilung aufweisen. Bei der Videokomprimierungscodierung umfassen die Entropiecodierungsmethoden, die am engsten mit der Videokomprimierung zusammenhängen, hauptsächlich die folgenden:

  • Huffman-Codierung : Die Huffman-Codierung ist eine grundlegende Entropiecodierungstechnologie, die in vielen Videokomprimierungsstandards (z. B. JPEG- und MPEG-Serien) verwendet wird. Es weist jedem Symbol über einen Huffman-Baum, der auf der Häufigkeit des Auftretens des Symbols basiert, einen Code variabler Länge zu.
  • Arithmetische Codierung : Arithmetische Codierung wird in einigen Videokomprimierungsstandards (z. B. JPEG-LS, JPEG 2000) übernommen. Es verwendet ein Bruchintervall zur Darstellung der Wahrscheinlichkeitsverteilung der Eingabedaten und bietet im Allgemeinen eine bessere Komprimierungseffizienz als die Huffman-Codierung.
  • Kontextbasierte adaptive binäre arithmetische Codierung (CABAC) : CABAC ist die Entropiekodierungsmethode, die in den Videokomprimierungsstandards H.264/AVC und H.265/HEVC verwendet wird. Es kombiniert die Konzepte der arithmetischen Codierung und der Kontextanpassung und kann das probabilistische Codierungsmodell basierend auf Kontextinformationen dynamisch anpassen und so eine effizientere Codierung erreichen.
  • Codierung mit variabler Länge (VLC) : VLC ist ein allgemeiner Begriff zur Beschreibung von Codierungsmethoden, einschließlich der Huffman-Codierung, die Symbolen Codes variabler Länge zuweisen. Bei der Videokomprimierung bezieht sich VLC normalerweise auf die Kodierungsmethode, die zur Darstellung von Transformationskoeffizienten usw. verwendet wird.

Bei der Videokomprimierung ist die Entropiekodierung der letzte Kodierungsschritt, der zur Kodierung der Restdaten nach der Intra- und Inter-Vorhersage verwendet wird. Restdaten sind die Differenz zwischen den Originaldaten und den vorhergesagten Daten und weisen normalerweise weniger Energie und eine ungleichmäßigere Wahrscheinlichkeitsverteilung auf. Durch Entropiecodierung kann die Bitrate dieser Restdaten weiter reduziert werden, wodurch der Zweck der Komprimierung von Videodaten erreicht wird.