色域转换是不同RGB空间的转换。定义一个RGB空间,主要包括以下2个参数:①RGB三点的坐标;②白色点的位置。其中,白色点的意义在于校准三原色在向量空间中的长度,使得在(R,G,B)=(1,1,1)的时候,对应的正好是白色。
首先需要将对应RGB转换到XYZ空间,再由XYZ空间转到另一个RGB空间。以sRGB转换到P3为例,sRGB在XYZ空间的表示为:
R=(0.64,0.33)
G=(0.30,0.60)
B=(0.15,0.06)
WD65=(0.3127,0.329)
列出这个方程:
可以得到
而任意一颜色可以表示为:
写成矩阵形式为:
所以到sRGB到XYZ的矩阵为
从XYZ到sRGB的逆矩阵为
。
同理,P3色域到XYZ空间计算为
所以,针对D65白点,sRGB到P3色域转换为
P3到sRGB色域转换为
其他白点参考该方式即可。
注:
- 不同程序的色域转换矩阵计算结果可能有偏差
参考文章:
- https://zhuanlan.zhihu.com/p/24281841