前言
首先需要指明本文中描述的R,G,B并非通常的sRGB中的三个分量R',G',B',而是波长分别为700nm,546.1nm,435.8nm的单色红光,单色绿光,单色蓝光。sRGB中的R'G'B'中的红色、绿色、蓝色已经不是单色光了。虽然习惯上大家都叫RGB,但是需要有所区别。本文将分别从为什么需要这种转换,怎么进行这种转换进行阐述。
怎么进行XYZ色彩空间转换
在上一篇之中,我们知道了三色刺激值出现了负值,所以需要进行色彩空间转换。那么在转换过程中有哪些指标定义呢。首先就是X,Y,Z需要全部为正,其次Y表达色彩中的亮度信息,三是参考白位于X=Y=Z=1/3处。
1,公式推导
根据Y表达亮度信息可以知道:
根据X+Y+Z=1可以知道:
最后可以知道:
根据混色原理可以知道参考白色的坐标为:
写成方程式的形式,如下:
既然参考白点是这样混色,那么所有颜色都应该同样混色,因此:
其中:
最后写出转换公式如下:
2,参数带入
查表知道三色刺激值在三个波长处的值如下表:
435.000000 | 0.032220 | -0.016097 | 0.894590 |
545.000000 | 0.592590 | 1.049800 | -0.014039 |
700.000000 | 0.028114 | -0.000262 | 0.000017 |
计算公式代码如下:
Sr=0.032220;
Sg=-0.016097;
Sb=0.894590;%435.000000
Mr=0.592590;
Mg=1.049800;
Mb=-0.014039;% 545.000000
Lr=0.028114;
Lg=-0.000262;
lb=0.000017;% 700.000000
Lx=Lr/Lg;
Mx=Mr/Mg;
Sx=Sr/Sg;
Ly=Lg/Lg;
My=Mg/Mg;
Sy=Sg/Sg;
Lz=(1-Lr-Lg)/Lg;
Mz=(1-Mr-Mg)/Mg;
Sz=(1-Sr-Sg)/Sg;
T=inv([Lx Mx Sx;
Ly My,Sy;
Lz,Mz,Sz])*[1/3 1/3 1/3]'
M=[T(1)*Lx T(1)*Mx T(1)*Sx;
T(2)*Ly T(2)*My T(2)*Sy;
T(3)*Lz T(3)*Mz T(3)*Sz]
Lx = -107.3053
Mx = 0.5645
Sx = -2.0016
Ly = 1
My = 1
Sy = 1
Lz = -3.7105e+03
Mz = -0.6119
Sz = -61.1218