Chroma-Subsampling-Labor

Vergleiche, wie Videocodecs die Luma-Detailschärfe erhalten, während sie die Chroma-Auflösung reduzieren.

Interaktive Simulation wird geladen...

warum Codecs zuerst die Farbe opfern 🖖

Das menschliche Sehen löst Helligkeitsdetails schärfer auf als Farbdetails, daher behalten Codecs die volle Luma-(Y)-Auflösung bei und teilen sich Chroma-(Cb/Cr)-Abtastwerte über benachbarte Pixel. 4:4:4 speichert die volle Farbdetailtiefe, 4:2:2 halbiert die horizontale Chroma-Auflösung, und 4:2:0 halbiert die Chroma-Auflösung sowohl horizontal als auch vertikal. Die Bandbreitenersparnis ist real: 4:2:0 benötigt nur etwa die Hälfte der Rohdatenmenge von 4:4:4, doch scharfer farbiger Text und alternierende Farbmuster zeigen den Verlust als Erstes.

was die drei Zahlen bedeuten 🖖

Das Verhältnis ist eine Vorschrift für einen Block, der 4 Pixel breit und 2 Zeilen hoch ist. Die erste Zahl (4) ist die Blockbreite, die zweite zählt die Farbabtastwerte in der oberen Zeile, die dritte, wie viele sich in der unteren Zeile ändern. So nimmt 4:2:2 2 Farbproben je Zeile, während 4:2:0 2 in der oberen Zeile nimmt und sie darunter wiederverwendet (0 neue) — eine Farbe für ein 2×2-Feld. Luma wird immer an jedem Pixel abgetastet.

das tat schon der Fernseher der Großeltern 🖖

Chroma-Subsampling ist keine digitale Erfindung. Als 1953 das NTSC-Farbfernsehen startete, gaben Ingenieure dem Helligkeitssignal rund 4.2 MHz Bandbreite, quetschten die beiden Farbkanäle aber in etwa 1.3 MHz und 0.5 MHz — der schmale „Q"-Kanal nutzte die besonders schlechte Auflösung des Auges für Blau-Violett-Details aus. Analoges Farbfernsehen verwarf Farbauflösung also leise, Jahrzehnte bevor JPEG oder H.264 die Idee formalisierten.

EINE STUFE EINER KETTE — WAS ANKOMMT, WAS HERAUSGEHT, WAS DANACH BRICHT

Wo diese Stufe in der Encoding-Pipeline sitzt

Ein Video-Encoder ist kein einzelner Algorithmus, sondern acht Stufen in fester Reihenfolge — und die Reihenfolge ist nicht beliebig: Jede Stufe existiert, weil die vorherige ihre Arbeit erst möglich gemacht hat. Dieses Werkzeug modelliert eine davon. Die Kette unten verlinkt die anderen sieben.

Chroma-Subsampling-Labor — verwirft den größten Teil der Farbauflösung und lässt die Helligkeit unangetastet

Was ankommt
Luma und Chroma in voller Auflösung — ein Farbwert pro Pixel, geschrieben 4:4:4.
Was herausgeht
Luma in voller Auflösung, Chroma mit einem Viertel der Abtastwerte bei 4:2:0.
Was die nächste Stufe voraussetzt
Alles danach verarbeitet viermal weniger Chroma-Daten, und der Decoder interpoliert die verworfenen Werte wieder hinein.
Was hier schiefgeht
Eine gesättigte Kante — roter Text auf Schwarz ist der Standardfall — bekommt ihre Farbe über den Block verschmiert, denn diese Kante liegt im Chroma-Kanal, wo die Abtastwerte entfernt wurden. Luma bleibt intakt, also sieht das Bild scharf aus und die Farbe falsch.

Aufgabe vollständig gelöst

  1. Bytes pro Pixel für 4:4:4, 4:2:2 und 4:2:0 anhand der Abtastwerte 6 Schritte

    Leiten Sie die Bytes pro Pixel für 4:4:4, 4:2:2 und 4:2:0 aus den Abtastzahlen ab und ermitteln Sie anschließend, wie viel Bandbreite 4:2:0 tatsächlich einspart.

    1. Zählen Sie die Abtastwerte in einem 2×2-Block. Die Schreibweise gibt an, wie viele Chroma-Abtastwerte vier Luma-Abtastwerten in der oberen und unteren Zeile zugeordnet sind, sodass das Verhältnis eine Anzahl und kein Bruch ist.

    2. Die anderen beiden Modi verwerfen Chroma horizontal und anschließend auch vertikal. Jede Halbierung entfernt zwei der zwölf Abtastwerte im Block.

    3. Multiplizieren Sie mit der Pixelanzahl für die Bildgröße und bilden Sie das Verhältnis für die Einsparung. 4:2:0 ist durch Konstruktion genau die Hälfte von 4:4:4, nicht durch Messung.

    4. Betrachten Sie, wohin die Abtastwerte gegangen sind. Luma bleibt in jedem Modus unberührt — die Farbdifferenzkanäle sind die einzigen, die ausgedünnt werden, und das menschliche Auge löst sie mit etwa der halben Sehschärfe auf.

    5. Skalieren Sie dieselben 1,5 Bytes pro Pixel auf ein reales Einzelbild bei einer realen Bildrate.

    6. Deshalb ist das Fehlerbild spezifisch und nicht allgemein: Der Verlust liegt vollständig in den beiden Kanälen, die keine Leuchtdichte-Details übertragen.

    Antwort

    Die Hälfte, und es sind immer noch 746 Mbit/s für unkomprimiertes 1080p30. Diese Zahl ist der Kern der Aufgabe. Chroma-Subsampling ist die günstigste Kompression, die es gibt — keine Transformation, kein Entropiekodierer, keine Entscheidung zu treffen — und nach der Halbierung der Daten ist der Datenstrom immer noch viel zu groß für jedes Netzwerk, das irgendjemand zu Hause hat. Deshalb setzt jeder ausgelieferte Codec nach diesem Schritt an, anstatt ihn zu ersetzen. Der Grund, warum es visuell so wenig kostet, liegt in der Y-Gleichung: Luma wird an jedem Pixel abgetastet und nur Cb und Cr werden ausgedünnt, sodass Kanten, Textur und Details unberührt bleiben. Was fehlschlägt, ist alles, dessen Information allein in der Farbe liegt — roter Text auf grauem Hintergrund, ein gesättigtes Logo, eine Chroma-Key-Kante —, weshalb 4:2:0 bei Laub unsichtbar ist und bei einer Präsentation verheerend wirkt.

Quellen (1)

Beispielaufgaben

  • Farbbalken - Acht Balken verteilen sich auf 64 Pixel, jeder ist also acht Pixel breit. 4:2:0 mittelt die Chrominanz in 2×2-Blöcken. Kein Block ragt je über eine Balkenkante hinaus. Somit hat jeder gemittelte Bereich bereits eine einheitliche Farbe. Die drei Panels sehen am Ende pixelgenau identisch aus, während der Frame von 9.216 auf 4.608 Bytes schrumpft. Die Einsparung von 50,0 % kostet dich bei diesem Bild absolut nichts.
  • Farbtonverlauf - Sanfter Farbtonverlauf: 4:2:0 und 4:2:2 wirken nahezu identisch — natürliche Szenen verbergen Chroma-Artefakte gut
  • Farbiger Text - Rote Buchstaben auf Weiß, und an diesem Bild scheitert das Verfahren tatsächlich. Jede Strichkante ist ein Chrominanz-Sprung von Rot zu Weiß. 4:2:0 mittelt ihn über einen 2×2-Block, und die Kanten bluten aus, während die Luminanz perfekt scharf bleibt. 4:2:2 ordnet sich qualitativ dazwischen ein, da es ausschließlich horizontal mittelt. Du sparst hier dieselben 4.608 Bytes wie bei den Farbbalken, die keinerlei Qualität eingebüßt haben. Das Bild bestimmt den Preis, nicht die Abtastrate.
  • Schachbrett-Stresstest - Der Name verspricht einen Stresstest, doch die Panels sind auch hier identisch. Die Quadrate sind 2×2 Pixel groß in Rot und Cyan, und 4:2:0 mittelt die Chrominanz über dasselbe 2×2-Raster. Jede erfasste Gruppe hat also bereits eine durchgehende Farbe. Feine Details an sich werden durch die Farbunterabtastung gar nicht bestraft. Bestraft werden Details, die sich nicht mit dem Chrominanz-Raster decken. Der farbige Text macht dir genau diesen Effekt sichtbar, dieses Bild hingegen nicht.