Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Zweiter Teil: Funktionsprinzipien des Video-Codecs

Jedes Raster- Bild kann in Form einer zweidimensionalen Matrixdargestellt werden. Wenn es um Farben geht, kann die Idee weiterentwickelt werden, indem man das Bild in Form einer dreidimensionalen Matrixbetrachtet, in der zusĂ€tzliche Dimensionen zur Speicherung von Daten fĂŒr jede der Farben verwendet werden.

Wenn wir die resultierende Farbe als Kombination der sogenannten PrimĂ€rfarben (Rot, GrĂŒn und Blau) betrachten, definieren wir in unserer dreidimensionalen Matrix drei Ebenen: die erste fĂŒr die rote Farbe, die zweite fĂŒr die grĂŒne und die letzte fĂŒr die blaue.
Wie ein Video-Codec funktioniert. Teil 1. Grundlagen
Wir nennen jeden Punkt in dieser Matrix Pixel (Bildelement). Jeder Pixel enthĂ€lt Informationen ĂŒber die IntensitĂ€t (in der Regel in Form eines numerischen Wertes) jeder Farbe. Zum Beispiel, ein roter Pixel bedeutet, dass er 0 grĂŒnes, 0 blaues und maximal rotes Licht enthĂ€lt. Ein Pixel in Rosa kann durch eine Kombination aus drei Farben hergestellt werden. Unter Verwendung eines Zahlenbereichs von 0 bis 255 wird ein rosa Pixel definiert als Rot = 255, GrĂŒn = 192 und Blau = 203.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Der Artikel wurde mit UnterstĂŒtzung von EDISON veröffentlicht.

Wir entwickeln Anwendungen fĂŒr VideoĂŒberwachung, Streaming-Video, sowie beschĂ€ftigen wir uns mit Videoaufzeichnung im Operationssaal.

Alternativen zur Kodierung von Farbbildern

Es gibt viele andere Modelle zur Darstellung der Farben, aus denen das Bild besteht. Zum Beispiel kann eine indizierte Palette verwendet werden, bei der nur ein Byte zur Darstellung jedes Pixels benötigt wird, anstelle von drei, die bei der Verwendung des RGB-Modells erforderlich sind. In einem solchen Modell kann eine 2D-Matrix anstelle einer 3D-Matrix zur Darstellung jeder Farbe verwendet werden. Dies spart Speicher, bietet jedoch eine geringere Farbpalette.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

RGB

Zum Beispiel, sehen Sie sich das Bild unten an. Das erste Gesicht ist vollstĂ€ndig gefĂ€rbt. Die anderen sind die roten, grĂŒnen und blauen Ebenen (die IntensitĂ€t der entsprechenden Farben wird in Graustufen angezeigt).

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Wir sehen, dass die Rottöne im Original an den gleichen Stellen vorkommen, an denen die hellsten Teile des zweiten Gesichts sichtbar sind. WĂ€hrend der Beitrag der blauen Farbe hauptsĂ€chlich nur in den Augen von Mario (letztes Gesicht) und in den Elementen seiner Kleidung sichtbar ist. Achten Sie darauf, wo alle drei FarbflĂ€chen den geringsten Einfluss haben (die dunkelsten Teile der Bilder) – das sind die Schnurrhaare von Mario.

FĂŒr die Speicherung der IntensitĂ€t jeder Farbe ist eine bestimmte Anzahl von Bits erforderlich – dieser Betrag wird genannt Farbtiefe. Angenommen, es werden 8 Bits (basierend auf dem Wert von 0 bis 255) fĂŒr eine FarbflĂ€che verwendet. Dann haben wir eine Farbtiefe von 24 Bit (8 Bit * 3 FlĂ€chen R/G/B).

Ein weiteres Merkmal eines Bildes ist die Auflösung, die die Menge an Pixeln in einer Dimension darstellt. Oft wird es als Breite × Höheangegeben, wie unten im Beispielbild 4 mal 4.
Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Ein weiteres Merkmal, mit dem wir bei der Arbeit mit Bildern/Videos zu tun haben, ist das SeitenverhĂ€ltnis, das die ĂŒbliche proportionale Beziehung zwischen der Breite und der Höhe eines Bildes oder Pixels beschreibt.

Wenn gesagt wird, dass ein Film oder Bild die GrĂ¶ĂŸe 16 zu 9 hat, bezieht man sich normalerweise auf das SeitenverhĂ€ltnis des Displays (DAR – von Display-SeitenverhĂ€ltnis). Manchmal können jedoch unterschiedliche Formen einzelner Pixel auftreten – in diesem Fall sprechen wir von dem PixelverhĂ€ltnis (PAR – von Pixel-SeitenverhĂ€ltnis).

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

FĂŒr die Hausfrau zur Kenntnisnahme: DVD entspricht DAR 4 zu 3

Obwohl die tatsĂ€chliche Auflösung der DVD 704×480 betrĂ€gt, bleibt sie dennoch im SeitenverhĂ€ltnis 4:3, da PAR den Wert 10:11 hat (704×10 / 480×11).

Und schließlich können wir das Video als eine Sequenz von n Bildern ĂŒber einen Zeitraum Zeitdefinieren, das als zusĂ€tzliche Dimension betrachtet werden kann. Und n das ist dann die Bildfrequenz oder die Anzahl der Bilder pro Sekunde (FPS – von Frames pro Sekunde).

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Die Anzahl der Bits pro Sekunde, die zur Anzeige von Video erforderlich sind, ist die Bitrate — Bitrate = Breite * Höhe * Farbtiefe * Bilder pro Sekunde.

Zum Beispiel benötigt ein Video mit 30 Bildern pro Sekunde, 24 Bits pro Pixel und einer Auflösung von 480×240 82.944.000 Bits pro Sekunde oder 82,944 Mbit/s (30x480x240x24) – aber nur, wenn keine Komprimierungsmethoden verwendet werden.

Wenn die Bitrate

fast konstant ist , wird sie alskonstante Bitrate CBR (konstante Bitrate – von ). Aber sie kann auch variieren, in diesem Fall nennt man sievariable Bitrate variabler Übertragungsrate (VBR – von variable Bitrate).

Dieses Diagramm zeigt ein begrenztes VBR, wenn nicht zu viele Bits bei einem vollstÀndig dunklen Bild verbraucht werden.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

UrsprĂŒnglich entwickelten Ingenieure eine Methode, um die wahrgenommene Bildfrequenz eines Videodisplays zu verdoppeln, ohne zusĂ€tzliche Bandbreite zu verwenden. Diese Methode ist bekannt als interlaced video; im Wesentlichen sendet sie die HĂ€lfte des Bildschirms im ersten "Frame" und die andere HĂ€lfte im nĂ€chsten "Frame".

Derzeit erfolgt die Visualisierung von Szenen hauptsĂ€chlich unter Verwendung von Progressive Scan-Technologie. Dies ist eine Methode zur Anzeige, Speicherung oder Übertragung bewegter Bilder, bei der alle Linien jedes Frames nacheinander gezeichnet werden.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Nun, wir wissen jetzt, wie ein Bild in digitaler Form dargestellt wird, wie seine Farben strukturiert sind, wie viele Bits pro Sekunde benötigt werden, um Video anzuzeigen, je nach konstanter (CBR) oder variabler (VBR) Übertragungsrate. Wir haben das vorgegebene Auflösungsformat unter Verwendung einer bestimmten Bildwiederholfrequenz gelernt und uns mit vielen anderen Begriffen wie interlaced video, PAR und einigen anderen vertraut gemacht.

Entfernung von Redundanz

Es ist bekannt, dass unverĂ€ndertes Video nicht praktikabel ist. Ein einstĂŒndiges Video mit 720p Auflösung und 30 Frames pro Sekunde wĂŒrde 278 GB benötigen. Dies ergibt sich aus der Multiplikation von 1280 x 720 x 24 x 30 x 3600 (Breite, Höhe, Bits pro Pixel, FPS und Zeit in Sekunden).

Verwendung verlustfreien Kompressionsalgorithmen, wie DEFLATE (verwendet in PKZIP, Gzip und PNG), wird nicht zu einer signifikanten Reduzierung der benötigten Bandbreite fĂŒhren. Es mĂŒssen andere Methoden zur Videokompression gefunden werden.

Dazu können die Eigenschaften unseres Sehens genutzt werden. Wir unterscheiden Helligkeit besser als Farben. Sie können sich selbst davon ĂŒberzeugen, indem Sie dieses Bild betrachten.

Farbe, Helligkeit und unsere Augen

Unsere Augen sind empfindlicher gegenĂŒber Helligkeit als gegenĂŒber Farbe. Sie können dies selbst feststellen, indem Sie auf die linke BildhĂ€lfte schauen.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Wenn Sie nicht sehen, dass in der linken HÀlfte des Bildes die Farben der Quadrate sind A und B In der Tat sind sie gleich, und das ist normal. Unser Gehirn lenkt unsere Aufmerksamkeit mehr auf Licht-Schatten als auf Farbe. Auf der rechten Seite zwischen den markierten Quadraten gibt es eine Verbindung derselben Farbe - deshalb erkennen wir (d.h. unser Gehirn) leicht, dass es sich dort tatsÀchlich um dieselbe Farbe handelt.

Lassen Sie uns (vereinfacht) untersuchen, wie unsere Augen funktionieren. Das Auge ist ein komplexes Organ, bestehend aus vielen Teilen. Doch am meisten interessieren uns die Zapfen und StÀbchen. Das Auge enthÀlt etwa 120 Millionen StÀbchen und 6 Millionen Zapfen.

Betrachten wir die Wahrnehmung von Farbe und Helligkeit als separate Funktionen bestimmter Teile des Auges (in Wirklichkeit ist es etwas komplizierter, aber wir werden es vereinfachen). Die StĂ€bchen sind hauptsĂ€chlich fĂŒr die Helligkeit verantwortlich, wĂ€hrend die Zapfen fĂŒr die Farbe verantwortlich sind. Die Zapfen unterteilen sich in drei Typen, je nach dem enthaltenen Pigment: S-Zapfen (blau), M-Zapfen (grĂŒn) und L-Zapfen (rot).

Da wir deutlich mehr StĂ€bchen (Helligkeit) als Zapfen (Farbe) haben, lĂ€sst sich schlussfolgern, dass wir besser in der Lage sind, ÜbergĂ€nge zwischen Dunkelheit und Licht zu unterscheiden als Farben.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Funktionen der Kontrastempfindlichkeit

Forscher der experimentellen Psychologie und vieler anderer Bereiche haben viele Theorien zur menschlichen Wahrnehmung entwickelt. Eine davon nennt sich Funktionen der Kontrastempfindlichkeit. Sie sind mit rĂ€umlichem und zeitlichem Licht verbunden. Kurz gesagt, es geht darum, wie viele Änderungen erforderlich sind, bevor der Beobachter sie bemerkt. Beachten Sie, dass das Wort „Funktion“ im Plural steht. Dies liegt daran, dass wir die Funktionen der Kontrastempfindlichkeit nicht nur fĂŒr Schwarzweißbilder, sondern auch fĂŒr Farbbilder messen können. Die Ergebnisse dieser Experimente zeigen, dass unsere Augen in den meisten FĂ€llen empfindlicher fĂŒr Helligkeit als fĂŒr Farbe sind.

Da bekannt ist, dass wir empfindlicher fĂŒr die Helligkeit eines Bildes sind, kann man versuchen, diesen Fakt zu nutzen.

Farbraummodell

Wir haben ein bisschen verstanden, wie man mit farbigen Bildern unter Verwendung des RGB-Schemas arbeitet. Es gibt auch andere Modelle. Es gibt ein Modell, das Helligkeit von Farbigkeit trennt und bekannt ist als YCbCr. Übrigens gibt es auch andere Modelle, die eine Ă€hnliche Trennung vornehmen, aber wir werden nur dieses betrachten.

In diesem Farbmodell Y — handelt es sich um eine Darstellung der Helligkeit, und es werden zwei FarbkanĂ€le verwendet: Cb (gesĂ€ttigtes Blau) und Cr (gesĂ€ttigtes Rot). YCbCr kann aus RGB gewonnen werden, ebenso ist eine Umwandlung möglich. Mit diesem Modell können wir Farbbilder erstellen, wie unten zu sehen ist:

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Umwandlung zwischen YCbCr und RGB

Manche mögen einwenden: Wie ist es möglich, alle Farben zu erhalten, wenn GrĂŒn nicht verwendet wird?

Um diese Frage zu beantworten, wandeln wir RGB in YCbCr um. Wir nutzen die Koeffizienten, die im Standard BT.601, empfohlen vom Gremium ITU-R, festgelegt wurden. Dieses Gremium definiert Standards fĂŒr digitales Video. Zum Beispiel: Was ist 4K? Wie sollten Bildfrequenz, Auflösung und Farbmodell sein?

Zuerst berechnen wir die Helligkeit. Wir verwenden die von der ITU vorgeschlagenen Konstanten und ersetzen die RGB-Werte.

Y = 0.299R + 0.587G + 0.114B

Nachdem wir die Helligkeit erhalten haben, trennen wir blau und rot:

Cb = 0.564(B — Y)

Cr = 0.713(R — Y)

Und wir können auch zurĂŒckwandeln und sogar GrĂŒn mit YCbCr erzeugen:

R = Y + 1.402Cr

B = Y + 1.772Cb

G = Y — 0.344Cb — 0.714Cr

In der Regel verwenden Displays (Monitore, Fernseher, Bildschirme usw.) nur das RGB-Modell. Aber dieses Modell kann unterschiedlich organisiert werden:

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Farbsubsampling

Mit einem Bild, das als Kombination aus Helligkeit und Farbigkeit dargestellt wird, können wir die höhere Empfindlichkeit des menschlichen Sehvermögens fĂŒr Helligkeit im Vergleich zur Farbigkeit nutzen, wenn wir selektiv Informationen entfernen. Farbunterabtastung ist eine Methode zur Bildkodierung, die eine geringere Auflösung fĂŒr die Farbigkeit als fĂŒr die Helligkeit verwendet.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Wie sehr ist es zulÀssig, die Auflösung der Farbigkeit zu reduzieren?! Es gibt bereits einige Schemen, die beschreiben, wie man Auflösung und Verschmelzung verarbeitet (Endfarbe = Y + Cb + Cr).

Diese Schemen sind bekannt als Unterabtastungssysteme und werden in Form eines 3-fachen VerhĂ€ltnisses ausgedrĂŒckt — a:x:y, das die Anzahl der Abtastungen von Helligkeits- und Farbunterschiedssignalen definiert.

a — der Referenzwert fĂŒr die horizontale Abtastung (normalerweise 4)
x — die Anzahl der Abtastungen der Farbigkeit in der ersten Zeile der Pixel (horizontale Auflösung im VerhĂ€ltnis zu a)
y — die Anzahl der Änderungen der Abtastungen der Farbigkeit zwischen der ersten und der zweiten Zeile der Pixel.

Eine Ausnahme bildet 4:1:0, die eine Abtastung der Farbigkeit in jedem Block von Helligkeitsauflösung 4 auf 4 gewÀhrleistet.

Allgemeine Schemen, die in modernen Codecs verwendet werden:

  • 4:4:4 (ohne Subsampling)
  • 4:2:2
  • 4:1:1
  • 4:2:0
  • 4:1:0
  • 3:1:1

YCbCr 4: 2: 0 — Beispiel fĂŒr eine ZusammenfĂŒhrung

Hier ist ein zusammengefĂŒhrter Bildausschnitt mit YCbCr 4:2:0. Beachten Sie, dass wir nur 12 Bit pro Pixel verwenden.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

So sieht dasselbe Bild aus, das mit den Haupttypen der Farbsampling kodiert wurde. Die obere Reihe zeigt das endgĂŒltige YCbCr, die untere Reihe zeigt die Farbauflösung. Sehr ansehnliche Ergebnisse, wenn man die geringen QualitĂ€tsverluste berĂŒcksichtigt.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Erinnern Sie sich, dass wir 278 GB Speicherplatz fĂŒr eine einstĂŒndige Videodatei mit 720p Auflösung und 30 Bildern pro Sekunde berechnet haben? Wenn wir YCbCr 4:2:0 verwenden, wird die GrĂ¶ĂŸe halbiert — auf 139 GB. Bis jetzt ist das immer noch weit von einem akzeptablen Ergebnis entfernt.

Sie können ein YCbCr-Histogramm mit FFmpeg selbst erstellen. In diesem Bild ĂŒberwiegt Blau gegenĂŒber Rot, was auf dem Histogramm gut zu erkennen ist.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Farbe, Helligkeit, Farbpalette — VideoĂŒbersicht

Ich empfehle dieses großartige Video anzusehen. Es erklĂ€rt, was Helligkeit ist und bringt alles auf den Punkt. Ă© ĂŒber Helligkeit und Farbe.

Video abspielen

Typen von Frames

Lassen Sie uns weitermachen. Versuchen wir, die zeitliche Redundanz zu beseitigen. Aber zuerst lassen Sie uns einige grundlegende Begriffe definieren. Angenommen, wir haben einen Film mit 30 Bildern pro Sekunde, hier sind die ersten 4 Bilder:

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen Wie ein Video-Codec funktioniert. Teil 1. Grundlagen Wie ein Video-Codec funktioniert. Teil 1. Grundlagen Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Wir können viele Wiederholungen in den Frames sehen: Zum Beispiel der blaue Hintergrund, der sich von Frame zu Frame nicht Àndert. Um dieses Problem zu lösen, können wir sie abstrakt in drei Frame-Typen klassifizieren.

I-Frame (IInter Frame)

Ein I-Frame (Referenzframe, SchlĂŒsselbild, interner Frame) ist autonom. UnabhĂ€ngig davon, was visualisiert werden muss, ist der I-Frame im Wesentlichen ein statisches Bild. Der erste Frame ist normalerweise ein I-Frame, wir werden jedoch regelmĂ€ĂŸig auch I-Frames unter denen sehen, die nicht die ersten Frames sind.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

P-Frame (PPredicted Frame)

Ein P-Frame (vorhergesagter Frame) nutzt den Vorteil, dass das aktuelle Bild fast immer mit dem vorherigen Frame reproduziert werden kann. Im zweiten Frame besteht die einzige VerÀnderung darin, dass der Ball nach vorne rollt. Wir können Frame 2 einfach erhalten, indem wir Frame 1 leicht Àndern und nur die Unterschiede zwischen diesen Frames verwenden. Um Frame 2 zu erstellen, beziehen wir uns auf den vorhergehenden Frame 1.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen ← Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

B-Bild (Bi-prÀdiktives Bild)

Und wie wĂ€re es mit Links nicht nur zu vergangenen, sondern auch zu zukĂŒnftigen Bildern, um eine noch bessere Kompression zu gewĂ€hrleisten?! Das ist im Wesentlichen das B-Bild (bidirektionales Bild).

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen ← Wie ein Video-Codec funktioniert. Teil 1. Grundlagen → Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Zwischenausgabe

Diese Bildtypen werden verwendet, um die beste Kompression zu gewĂ€hrleisten. Wir werden uns im nĂ€chsten Abschnitt ansehen, wie das funktioniert. WĂ€hrenddessen bemerken wir, dass das I-Bild am meisten Speicherplatz benötigt, das P-Bild jedoch deutlich gĂŒnstiger ist, und dass das B-Bild die kostengĂŒnstigste Option fĂŒr Videos darstellt.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Zeitliche Redundanz (interframe Vorhersage)

Lassen Sie uns untersuchen, welche Möglichkeiten wir haben, zeitliche Wiederholungen zu minimieren. Diese Art von Redundanz lösen wir durch gegenseitige Vorhersagemethoden.

Wir versuchen, so wenige Bits wie möglich zur Kodierung der Bildsequenzen 0 und 1 zu verwenden.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Wir können subtrahieren, indem wir einfach Bild 1 von Bild 0 abziehen. Wir erhalten Bild 1, indem wir die Differenz zwischen ihm und dem vorherigen Bild verwenden und tatsÀchlich nur den resultierenden Rest kodieren.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Aber was ist, wenn ich Ihnen sage, dass es noch eine bessere Methode gibt, die noch weniger Bits verwendet?! Lassen Sie uns zunĂ€chst Bild 0 in ein klares Raster aus Blöcken unterteilen. Dann versuchen wir, die Blöcke aus Bild 0 mit Bild 1 abzugleichen. Anders ausgedrĂŒckt, wir bewerten die Bewegung zwischen den Bildern.

Aus Wikipedia — Blockbasierte Bewegungskompensation

Die blockbasierte Bewegungskompensation unterteilt das aktuelle Bild in nicht ĂŒberlappende Blöcke, und der Bewegungskompensationsvektor gibt an, woher die Blöcke kommen (ein weit verbreiteter Irrtum ist, dass das vorherige Bild in nicht ĂŒberlappende Blöcke unterteilt wird, und die Bewegungskompensationsvektoren angeben, wohin diese Blöcke gehen. TatsĂ€chlich ist es umgekehrt: nicht das vorherige Bild wird analysiert, sondern das folgende; es wird ermittelt, wo die Blöcke herkommen und nicht, wohin sie sich bewegen). In der Regel ĂŒberlappen sich die Ausgangsblöcke im ursprĂŒnglichen Bild. Einige Video-Komprimierungsalgorithmen stellen das aktuelle Bild aus Teilen nicht nur eines, sondern gleich mehrerer zuvor ĂŒbertragenen Bilder zusammen.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Im Evaluierungsprozess sehen wir, dass sich die Kugel von (x=0, y=25) nach (x=6, y=26) bewegt, die Werte x und y definieren die Bewegungsrichtung. Ein weiterer Schritt, den wir unternehmen können, um die Bits zu erhalten, besteht darin, nur die Differenz der Bewegungsvektoren zwischen der letzten Position des Blocks und der prognostizierten Position zu kodieren, sodass der endgĂŒltige Bewegungsvektor (x=6-0=6, y=26-25=1) sein wird.

In einer realen Situation wĂŒrde dieser Ball in n Blöcke unterteilt werden, aber das Ă€ndert nichts am Wesentlichen.

Objekte im Bild bewegen sich in drei Dimensionen, daher kann der Ball beim Bewegen visuell kleiner (oder grĂ¶ĂŸer, wenn er sich auf den Betrachter zubewegt) erscheinen. Es ist normal, dass es keine perfekte Übereinstimmung zwischen den Blöcken gibt. Hier sehen wir eine kombinierte Ansicht unserer SchĂ€tzung und der realen Szene.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Aber wir sehen, dass bei der Anwendung der Bewegungsbewertung die Daten zum Kodieren deutlich weniger sind als bei der Verwendung einer einfacheren Methode zur Berechnung der Delta-Werte zwischen den Frames.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Wie wird die echte Bewegungskompensation aussehen?

Diese Methode wird sofort auf alle Blöcke angewendet. Oft wird unser hypothetischer bewegender Ball sofort in mehrere Blöcke aufgeteilt.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Sie können diese Konzepte selbst ausprobieren, indem Sie Jupyter.

Um die Bewegungsvektoren zu sehen, können Sie ein Video mit externer Vorhersage erstellen mithilfe von ffmpeg.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Alternativ können Sie auch Intel Video Pro Analyzer (es ist kostenpflichtig, aber es gibt eine kostenlose Testversion, die nur die ersten zehn Frames begrenzt).

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

RĂ€umliche Redundanz (interne Vorhersage)

Wenn wir jedes Frame im Video analysieren, entdecken wir zahlreiche miteinander verbundene Bereiche.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Lassen Sie uns dieses Beispiel durchgehen. Diese Szene besteht hauptsĂ€chlich aus blauen und weißen Farben.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Dies ist der I-Frame. Wir können die vorherigen Frames zur Vorhersage nicht verwenden, aber wir können ihn komprimieren. Lassen Sie uns die Auszeichnung des roten Blocks kodieren. Wenn wir uns seine Nachbarn ansehen, stellen wir fest, dass es um ihn herum einige Farbtrends gibt.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Wir nehmen an, dass die Farben im Frame vertikal verlaufen. Das bedeutet, dass die Farben unbekannter Pixel Werte ihrer Nachbarn enthalten werden.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Diese Vorhersage kann auch falsch sein. Aus diesem Grund mĂŒssen wir diese Methode (interne Vorhersage) anwenden und dann die tatsĂ€chlichen Werte subtrahieren. Dadurch erhalten wir einen Restblock, was zu einer viel kompakteren Matrix im Vergleich zum Original fĂŒhren wird.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Wenn Sie an internen Vorhersagen arbeiten möchten, können Sie mit ffmpeg Videos mit Makroblöcken und deren Vorhersagen erstellen. Um die Bedeutung jeder Blockfarbe zu verstehen, mĂŒssen Sie sich mit der ffmpeg-Dokumentation vertraut machen.

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Alternativ können Sie den Intel Video Pro Analyzer verwenden (wie ich bereits erwĂ€hnt habe, gibt es in der kostenlosen Testversion eine Begrenzung auf die ersten 10 Frames, aber das sollte fĂŒr die ersten Schritte ausreichen).

Wie ein Video-Codec funktioniert. Teil 1. Grundlagen

Zweiter Teil: Funktionsprinzipien des Video-Codecs

Quelle: habr.com

60GB SSD 8Gb DDR4