YCoCg

Das YCoCg-Farbmodell ist der Farbraum, der aus einer einfachen Transformation eines zugehörigen RGB-Farbraums in einen Luma-Wert (als Y bezeichnet) und zwei Chroma-Werte, genannt Chrominanz-Grün (Cg) und Chrominanz-Orange (Co), gebildet wird. Es wird in Video- und Bildkomprimierungsdesigns wie H.264 / MPEG-4 AVC, HEVC, JPEG XR und Dirac unterstützt, da es einfach zu berechnen ist, eine gute Transformationscodierverstärkung aufweist und verlustfrei in und aus RGB konvertiert werden kann mit weniger Bits als bei anderen Farbmodellen.

Eigenschaften
Vorteile des YCoCg-Farbmodells gegenüber dem YCbCr-Farbmodell sind eine einfachere und schnellere Berechnung, eine bessere Dekorrelation der Farbebenen zur Verbesserung der Kompressionsleistung und eine genau verlustfreie Invertierbarkeit.

Konvertierung mit dem RGB-Farbmodell
Die drei Werte des YCoCg-Farbmodells werden wie folgt aus den drei Farbwerten des RGB-Farbmodells berechnet:


Die Werte von Y liegen im Bereich von 0 bis 1, während Cg und Co im Bereich von -0,5 bis 0,5 liegen, wie dies bei „YCC“ -Farbmodellen wie YCbCr typisch ist.Zum Beispiel wird reines Rot im RGB-System als (1, 0, 0) und im YCgCo-System als (1/4, – 1/4, 1/2) ausgedrückt. Da jedoch die Koeffizienten der Transformationsmatrix Sind einfache binäre Brüche, ist es einfacher zu berechnen als andere YCC-Transformationen. Für RGB-Signale mit der Bittiefe n würden dann entweder die resultierenden Signale auf n Bits gerundet werden oder würden normalerweise n + 2 Bits sein, wenn Daten in dieser Form verarbeitet werden (obwohl n + 1 Bits für Co ausreichend wären).

Die inverse Matrix konvertiert vom YCoCg-Farbmodell zurück in das RGB-Farbmodell:


Um die umgekehrte Umwandlung durchzuführen, sind nur zwei Additionen und zwei Subtraktionen ohne reellwertige Koeffizienten erforderlich, indem sie wie folgt implementiert wird:

tmp = Y – Cg;
R = tmp + Co;
G = Y + Cg;
B = tmp – Co;

Die hubbasierte YCoCg-R-Variante
Eine skalierte Version der Transformation, die manchmal als YCoCg-R (wobei „-R“ auf Reversibilität verweist) genannt wird, kann effizient mit einer reduzierten Bittiefe implementiert werden. Die skalierte Version verwendet ein Anhebungsschema, um es genau invertierbar zu machen, während die Bittiefe der drei Farbkomponenten minimiert wird. Für RGB-Signale mit der Bittiefe n wird die Bittiefe des Y-Signals bei Verwendung von YCoCg-R n sein und die Bittiefe von Co und Cg wird n + 1 sein, im Gegensatz zu gewöhnlichem YCoCg, für das n + 2 Bits benötigt würden Y und Cg und n + 1 Bits für Co.

Hier sind mögliche Werte für Y noch in [0, 1], während mögliche Werte für Co und Cg jetzt in [-1, 1] sind.

Die Konvertierung von RGB zu YCoCg-R ist:

Co = R – B;
tmp = B + Co / 2;
Cg = G – tmp;
Y = tmp + Cg / 2;
Die Umwandlung von YCoCg-R in RGB ist dann:

tmp = Y – Cg / 2;
G = Cg + tmp;
B = tmp – Co / 2;
R = B + Co;