我已经阅读了各种资源,这些资源定义了用于从RGB转换为YUV的常量,并且这些常量在具有不同值的不同标准中被重新定义。
来自YCbCr的wiki
ITU-R BT.601转换为以下目的定义的Y'CbCr形式 ITU-R BT.601(以前称为CCIR)中使用的标清电视 601)用于数字分量视频的标准是从 对应的RGB空间如下:
Kr = 0.299
千克= 0.587
Kb = 0.114
选择这些常量值的原因是什么?为什么它们在其他标准上有所不同?如here
所示答案 0 :(得分:1)
它们是根据CIE xy色度图中的RGB和标准光源xy坐标计算得出的。
根据Rec.601 625-CIE xy色度值为:
Wx = 0.3127; Wy = 0.3290; // White Point D65
Rx = 0.640; Ry = 0.330; // Red primary
Gx = 0.290; Gy = 0.600; // Green primary
Bx = 0.150; By = 0.060; // Blue primary
有Yxy and XYZ个色彩空间的定义:
Y = 1.0; // maximum luminance
x + y + z = 1;
Xw = Wx / Wy; // from X = Y * x / y
Zw = Wz / Wy; // from Z = Y * z / y
在xy图上混合RGB原色会产生一些中心点。 RGB空间要求中心点是白点。因此,我们必须使用下面的方法(也是RGB-> XYZ转换矩阵)来计算RGB缩放系数(Ra,Rg,Rb):
Ra * Rx + Ga * Gx + Ba * Bx = Xw = Wx / Wy
Ra * Ry + Ga * Gy + Ba * By = Yw = 1
Ra * Rz + Ga * Gz + Ba * Bz = Zw = Wz / Wy
当我们求解以上方程时,我们得到:
Ra = 0.9059594488629998
Ga = 0.8259453663844839
Ba = 1.4326521467778324
我们可以用来生成RGB(Rec.601 625)-> XYZ转换矩阵:
[ Ra * Rx, Ga * Gx, Ba * Bx ]
[ Ra * Ry, Ga * Gy, Ba * By ]
[ Ra * Rz, Ga * Gz, Ba * Bz ]
并且中心行将包含[Kr,Kg,Kb] Y系数:
[ 0.2123763607050675, 0.7010598569257229, 0.08656378236920959 ]
YCbCr的Kr,Kg,Kb与wiki完全不同。 因为该Wiki上的系数是针对SMPTE C色彩空间的,因此具有:
Wx = 0.3127; Wy = 0.3290; // White Point D65
Rx = 0.630; Ry = 0.340; // Red primary
Gx = 0.310; Gy = 0.595; // Green primary
Bx = 0.155; By = 0.070; // Blue primary
如果重复以上操作,我们将获得SMPTE-C的[Kr,Kg,Kb] Y系数:
[ 0.29896661812479, 0.5864212101329835, 0.1146121717422266 ]
来自Wiki的人。