数字电影拷贝使用MJPEG2000编码,色彩空间是XYZ色域,且带有gamma校正,gamma系数为2.6
我们在解码该视频后,需要进行空间转换转换到普通放映设备所需要的RGB色彩空间。
转换分4步完成:
1)将XYZ 转换到 XYZ Linear线性空间 即做一次幂运算 XYZLinear = pow(XYZ, 2.6)
2)将XYZLinear空间转换到RGBLinear空间,转换矩阵为
const float XYZ_to_RGB_Coeff_sRGB_D65[16] =
{
3.2404542f, -1.5371385f, -0.4985314f, 0.0000000f,
-0.9692660f, 1.8760108f, 0.0415560f, 0.0000000f,
0.0556434f, -0.2040259f, 1.0572252f, 0.0000000f,
0.0000000f, 0.0000000f, 0.0000000f, 1.0000000f
};
3)转换后的结果要做截取,取值范围不能超过如8bit为[0,255],浮点则为[0.0F, 1.0F]
4)将RGBLinear空间转换到BT709空间,即增加2.22gamma,RGB709 = pow(rgblinear, 1/2.22)
我们知道我们的电影显示遵循BT.601,BT.709,BT.2020等标准,当前通常情况下为709标准
由于色域标准太多,我们对其转换处理要特别小心,否则转换系数或转换流程错误,会导致错误的颜色显示。