色彩空间DCI XYZ转RGB

色彩空间DCI XYZ转RGB

  • 1. DCI-P3简介
  • 2. DCI-P3与P3-D65区别
  • 3. 颜色空间转换矩阵推导
    • 3.1 算法原理
    • 3.2 Matlab计算
    • 3.3 转换矩阵

1. DCI-P3简介

DCI-P3是美国电影行业推出的一种广色域标准,是目前数字电影回放设备的色彩标准之一。它的色域较大,与sRGB相比,绿色和红色的范围更广。DCI-P3能更好的满足人类视觉体验,适用于数字电影,电视剧后期制作、调色等。
色彩空间DCI XYZ转RGB_第1张图片
Definition: SMPTE-EG-0432-1:2010 Digital Source Processing-Color Processing for D-Cinema
RGB primaries:

x y z
R 0.68 0.32 0
G 0.265 0.69 0.045
B 0.15 0.06 0.79

Color component transfer function: 2.6 gamma
White point luminance: 48 cd/m2
White point chromaticity:

  • D65: x = 0.3127, y = 0.3290
  • DCI: x = 0.3140, y = 0.3510

2. DCI-P3与P3-D65区别

DCI-P3的白点坐标是0.3140,0.3510(下图左上角的橙色点)。而P3-D65,采用了DCI-P3定义的色域,但是白点标准为6500K,坐标:0.3127,0.3290(下图左上角黑点),是Apple的Display P3在DCI-P3基础上修改而成的。
色彩空间DCI XYZ转RGB_第2张图片
他们所定义的颜色范围是一样的,但是白点有区别,DCI-P3偏绿,而P3-D65和sRGB以及AdobeRGB,都是标准的6500K。
另一个区别是DCI-P3的伽马是2.6,而Display P3和sRGB、AdobeRGB一样,都是2.2的伽马。
造成区别的原因主要是DCI-P3是为了没有其他光源的电影院设计,而Display P3是为了现代显示器设计的。

3. 颜色空间转换矩阵推导

3.1 算法原理

3.2 Matlab计算

由Matlab计算得到:
色彩空间DCI XYZ转RGB_第3张图片
P3-D65、P3-DCI与RGB的转换矩阵分别如下:
色彩空间DCI XYZ转RGB_第4张图片
仔细观察式(3),其中X = 0.44517R + 0.20949G,各系数之和为0.65466.我们知道RGB的取值范围为[0,255],如果系数和等于1,则X的取值范围也必然在[0,255]之间,因此我们可以考虑等比修改各系数,使其之和等于1,这样就做到了XYZ和RGB在同等范围的映射。因此,
第一行的系数应分别修改为[0.44517 0.20949 0] / [0.65466 ] = [0.68 0.32 0]
第二行的系数应分别修改为[0.27713 0.7216 0.047061] / [1.0458] = [0.265 0.69 0.045]
第三行的系数应分别修改为[0.17228 0.068913 0.90736] / [1.1486] = [0.15 0.06 0.79]
由于式(3)变化,所以式(4)也要做相应的调整,式(3)中X的各分量都除以0.65466,所以式(4)中对应分量都乘以0.65466;同理对应Y的各分量都乘以1.0458,对应Z的各分量都乘以1.1486。
最终得到变换式(5)(6).
色彩空间DCI XYZ转RGB_第5张图片
我们使用的转换矩阵为式(6)

3.3 转换矩阵

由于算式中包含浮点数,这里使用整数运算代替浮点数运算,将各系数同乘以2的N次幂,最后的得到的结果再进行移位操作。这里N取9(参考X20 YCbCr2RGB)。各系数乘以512,四舍五入取整后得到式(7)。

R≪9=914*X-426*Y+24*Z
G≪9=-341*X+905*Y-52*Z---------------------------(7)
B≪9=-148*X+12*Y+647*Z

你可能感兴趣的:(接口协议)