YCoCg

Le modèle de couleurs YCoCg est l’espace colorimétrique formé d’une simple transformation d’un espace colorimétrique RVB associé en une valeur de luminance (notée Y) et de deux valeurs de chrominance appelées chrominance verte (Cg) et chrominance orange (Co). Il est pris en charge dans les conceptions de compression vidéo et image telles que H.264 / MPEG-4 AVC, HEVC, JPEG XR et Dirac, car il est simple à calculer, a un bon gain de codage de transformation et peut être converti sans perte de et vers RGB avec moins de bits que nécessaire avec d’autres modèles de couleurs.

Propriétés
Les avantages du modèle couleur YCoCg par rapport au modèle couleur YCbCr sont un calcul plus simple et plus rapide, une meilleure décorrélation des plans de couleurs pour améliorer les performances de compression et une inversion sans perte.

Conversion avec le modèle de couleur RVB
Les trois valeurs du modèle de couleurs YCoCg sont calculées comme suit à partir des trois valeurs de couleur du modèle de couleur RVB:


Les valeurs de Y sont comprises entre 0 et 1, tandis que Cg et Co sont comprises entre -0,5 et 0,5, comme c’est généralement le cas avec les modèles de couleurs «YCC» tels que YCbCr. Par exemple, le rouge pur est exprimé dans le système RVB comme (1, 0, 0) et dans le système YCgCo comme (1/4, – 1/4, 1/2 ). Cependant, puisque les coefficients de la matrice de transformation sont des fractions binaires simples, il est plus facile à calculer que d’autres transformations YCC. Pour les signaux RVB avec une profondeur de bits n, soit les signaux résultants seraient arrondis à n bits, soit normalement n + 2 bits lors du traitement des données sous cette forme (bien que n + 1 bits soit suffisant pour Co).

La matrice inverse convertit le modèle de couleurs YCoCg en modèle de couleur RVB:


Pour effectuer la conversion inverse, seulement deux additions et deux soustractions sont nécessaires, sans coefficients réels, en l’implémentant comme:

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

La variation YCoCg-R à base de levage
Une version mise à l’échelle de la transformation, parfois appelée YCoCg-R (où «-R» fait référence à la réversibilité), peut être mise en œuvre efficacement avec une profondeur de bits réduite. La version mise à l’échelle utilise un schéma de levage pour le rendre exactement inversible tout en minimisant la profondeur de bits des trois composants de couleur. Pour les signaux RVB avec une profondeur de bits n, la profondeur du signal Y lors de l’utilisation de YCoCg-R sera n et la profondeur de Co et Cg sera n + 1, contrairement à YCoCg ordinaire qui nécessiterait n + 2 bits pour Y et Cg et n + 1 bits pour Co.

Ici, les valeurs possibles pour Y sont toujours dans [0, 1], alors que les valeurs possibles pour Co et Cg sont maintenant dans [-1, 1].

La conversion de RGB à YCoCg-R est:

Co = R – B;
tmp = B + Co / 2;
Cg = G – tmp;
Y = tmp + Cg / 2;
La conversion de YCoCg-R à RGB est alors:

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