YCoCg

El modelo de color YCoCg es el espacio de color formado por una transformación simple de un espacio de color RGB asociado en un valor de luminancia (denotado como Y) y dos valores cromáticos llamados crominancia verde (Cg) y crominancia naranja (Co). Es compatible con los diseños de compresión de video e imagen tales como H.264 / MPEG-4 AVC, HEVC, JPEG XR y Dirac, ya que es simple de computar, tiene una buena ganancia de codificación de transformación y puede convertirse sin pérdidas ay desde RGB con menos bits de los que se necesitan con otros modelos de color.

Propiedades
Las ventajas que tiene el modelo de color YCoCg sobre el modelo de color YCbCr son un cómputo más simple y rápido, una mejor descorrelación de los planos de color para mejorar el rendimiento de compresión y una invertibilidad sin pérdidas.

Conversión con el modelo de color RGB
Los tres valores del modelo de color YCoCg se calculan de la siguiente manera a partir de los tres valores de color del modelo de color RGB:


Los valores de Y están en el rango de 0 a 1, mientras que Cg y Co están en el rango de -0.5 a 0.5, como es típico con los modelos de color «YCC» como YCbCr.Por ejemplo, el rojo puro se expresa en el sistema RGB como (1, 0, 0) y en el sistema YCgCo como (1/4, – 1/4, 1/2) .. Sin embargo, dado que los coeficientes de la matriz de transformación son fracciones binarias simples, es más fácil de calcular que otras transformaciones de YCC. Para señales RGB con profundidad de bits n, las señales resultantes se redondearían a n bits o normalmente serían n + 2 bits cuando se procesen datos en esta forma (aunque n + 1 bits serían suficientes para Co).

La matriz inversa se convierte del modelo de color YCoCg al modelo de color RGB:


Para realizar la conversión inversa, solo se necesitan dos adiciones y dos restas, sin coeficientes de valor real, al implementarlo como:

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

La variación de YCoCg-R basada en levantamiento
Una versión escalada de la transformación, a veces llamada YCoCg-R (donde «-R» se refiere a la reversibilidad), se puede implementar de manera eficiente con una profundidad de bits reducida. La versión a escala usa un esquema de elevación para hacer que sea exactamente invertible mientras se minimiza la profundidad de bits de los tres componentes de color. Para señales RGB con profundidad de bits n, la profundidad de bit de la señal Y cuando se usa YCoCg-R será ny la profundidad de bits de Co y Cg será n + 1, en contraste con el YCoCg ordinario que necesitaría n + 2 bits para Y y Cg y n + 1 bits para Co.

Aquí, los valores posibles para Y están todavía en [0, 1], mientras que los valores posibles para Co y Cg están ahora en [-1, 1].

La conversión de RGB a YCoCg-R es:

Co = R – B;
tmp = B + Co / 2;
Cg = G – tmp;
Y = tmp + Cg / 2;
La conversión de YCoCg-R a RGB es entonces:

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