Blindes Umrechnen von RGB nach YCbCr und andersrum mit JavaScript.

Werte als R'G'B' interpretieren und nach Rec. 601 YCbCr umrechnen.
Werte als Rec. 601 YCbCr interpretieren und nach R'G'B' umrechnen.
Meldung:

Was soll das Ganze?

Mit diesem Werkzeug kann man (1.) einen Eindruck davon bekommen, wie Werte des RGB-Farbraumes im YCbCr-Farbraum repräsentiert werden und andersherum. Dazu trägt man sinnige Werte in die drei Wertfelder ein und benutzt dann die go!-Knöpfe. Zulässige RGB-Werte liegen zwischen 0 und 255, Y-Werte liegen zwischen 16 (schwarz) und 235 (weiß), C-Werte liegen zwischen 16 und 240 (Theoretisch zwischen -112 und +112, es wird aber eine Verschiebung um 128 durchgeführt, um kein Vorzeichen kodieren zu müssen). Eine gute (englische) Einführung in diese Farbräume liefert Charles Poynton's ColorFAQ (138KB). Die RGB-Darstellung wird in Monitoren zur Farbdarstellung benutzt, während die YCbCr-Darstellung zur Übertragung von Bilddaten benutzt wird (z.B. H.261, H.263+).

Die Umrechnung von YCbCr in RGB läuft vereinfacht wie folgt:
- gleichmässige Verteilung der luma (Y) auf alle drei Farben,
- Rekonstruktion von Rot mithilfe des luma-Anteils und croma-red (Cr),
- Rekonstruktion von Blau mithilfe des luma-Anteils und croma-blau (Cb),
- Rekonstruktion von Grün mithilfe des luma-Anteils, croma-red und croma-blau.

Mit dem Werkzeug können (2.) Rundungsungenauigkeiten der lokalen JavaScript-Implementation geprüft werden :-)

Außerdem kann (3.) die Wirkung von Datenverlusten und -verfälschungen bei der Umrechnung geprüft werden. Dabei kann Stefan Münz' Farbauswähler hilfreich sein. Eine gewählte Farbe wird nach YCbCr kodiert, ein oder mehrere Werte manuell verfälscht und eine Dekodierung ausgeführt.

Zusätzlich kann (4.) "rekursives" Kodieren durchgeführt werden. Kodierung nach YCbCr scheint einem stablilen Zustand zuzustreben, Kodierung nach RGB scheint zu explodieren.


06.01.2000
Tim Suchanek