如何在sRGB和CIEXYZ之间进行转换
我们使用分辨率测试卡检测相机分辨率是会发现很多对应的颜色数据值,如sRGB和CIEXYZ这是依不同计量标准和国际定义的色彩数值显示方式。那么他们之间可以实现转换吗?
描述颜色一直是一个复杂的挑战。相机在普通的sRGB色彩空间中提供图像数据,所以没有任何附加信息的任何图像都可以用sRGB中的颜色表示。其他色彩空间,例如与人类视觉有关的色彩空间,被用于色彩分析。
由于这个分析是一项频繁的任务,我们创建了一个彩色备忘单,它提供了sRGB和CIE-XYZ的快速概览以及它们转换的等式。
sRGB
sRGB中的“s”代表“标准”,它是色彩空间中最小的公分母。它是在20世纪90年代开发的,为当时的显示器和打印机提供通用的可用色彩空间。虽然有许多不同的和更大的色彩空间可用,但sRGB仍然是RGB图像数据的事实标准。
CIE-XYZ
国际照明委员会(CIE-XYZ CIE)代表国际照明委员会,该委员会根据人眼可以感知的颜色建立色彩空间。XYZ不包含负数,而是使用三色值来定义人眼可以看到的色彩空间。X表示所创建的锥形响应非负曲线的线性组合。Y表示亮度,Z被定义为几乎等于蓝色。
如何转换
当我们处理明确定义的色彩空间时,我们可以明确地从一个色彩空间转换到另一个色彩空间。请参阅下面的公式以帮助您开始:
sRGB到XYZ
sRGB到sRGB' - 线性化sRGB数据
来自摄像机的sRGB数据,特别是当在8bit中提供时通常是非线性的,显示所谓的伽玛函数。我们将sRGB定义为应用伽马函数的原始相机数据,sRGB'作为线性化表示。
请注意,我们首先将sRGB数据缩放到[0 ... 1]范围内,因此对于8位数据,我们将所有值除以255。
下面的计算对于三个通道R,G和B是相同的,我们用一般的V和V'表示。
sRGB'到XYZ - 应用变换矩阵
标准化的3x3矩阵描述了如何将sRGB数据转换为CIE-XYZ数据。
对于那些用不支持矩阵计算的工具(例如MS-Excel)来实现的人来说,作为一个简单的提示,Y的计算就是一个方程式。
注意:当我们说Y代表亮度时,我们看到绿色贡献最大,而蓝色只有一个小影响。
还有一点注意:如果您将结果与使用ICC配置文件的工具(例如Mathworks Matlab中的表格)进行比较,请注意:此处显示的转换结果为CIE-XYZ数据,参考白点为D65,如sRGB定义中所定义。ICC-Profiles总是使用D50作为参考白色,在从XYZ到LAB的计算中或者与这些结果进行比较时应该注意这一点。
XYZ到sRGB
要以相反的方式计算,方程式也很简单:
XYZ到sRGB' - 应用变换矩阵
sRGB'到sRGB - 应用Gamma
如
前所述,V和V'表示sRGB和sRGB'的三个通道,并针对每个通道应用等式。