YCoCg

YCoCg色彩模型是通过将关联的RGB色彩空间简单转换为亮度值(表示为Y)和称为色度绿色(Cg)和色度橙色(Co)的两个色度值形成的色彩空间。 它支持视频和图像压缩设计,例如H.264 / MPEG-4 AVC,HEVC,JPEG XR和Dirac,因为它计算简单,具有良好的变换编码增益,并且可以无损地转换RGB和RGB比其他颜色模型需要的位数少。

属性
YCoCg色彩模型优于YCbCr色彩模型的优点是更简单快速的计算,更好的颜色平面解相关以提高压缩性能,以及完全无损的可逆性。

使用RGB颜色模型进行转换
YCoCg色彩模型的三个值从RGB色彩模型的三个色彩值计算如下:


Y的值在0到1的范围内,而Cg和Co在-0.5到0.5的范围内,这与“YCC”颜色模型(如YCbCr)的典型值相同。 例如,在RGB系统中将纯红色表示为(1,0,0),在YCgCo系统中将纯红色表示为( 1 / 4,1 / 4,1 / 2 )。但是,由于变换矩阵的系数是简单的二进制分数,它比其他YCC转换更容易计算。 对于比特深度为n的RGB信号,当处理这种形式的数据(尽管n + 1比特足以用于Co)时,所得信号将被舍入到n比特或通常为n + 2比特。

逆矩阵从YCoCg颜色模型转换回RGB颜色模型:


为了执行逆转换,通过将其实施为:只需要两个加法和两个减法,而没有实数值系数:

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

基于提升的YCoCg-R变体
缩放版本的转换有时称为YCoCg-R(其中“-R”表示可逆性),可以通过降低比特深度来有效实施。 缩放版本使用提升方案使其完全可逆,同时最小化三种颜色分量的位深度。 对于比特深度为n的RGB信号,当使用YCoCg-R时Y信号的比特深度将是n,并且Co和Cg的比特深度将是n + 1,与普通的YCoCg相比需要n + 2比特Y和Cg以及n + 1位为Co.

这里,Y的可能值仍然在[0,1]中,而Co和Cg的可能值现在在[-1,1]中。

从RGB到YCoCg-R的转换是:

Co = R-B;
tmp = B + Co / 2;
Cg = G-tmp;
Y = tmp + Cg / 2;
从YCoCg-R到RGB的转换是:

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