颜色空间 sRGB 和 CIE-XYZ

    颜色空间 sRGB 和 CIE-XYZ

    技术说明

    sRGB 和 CIE-XYZ 之间的转换公式

    将 sRGB 转换为 CIE XYZ 的公式 | 描述颜色一直是一个复杂的挑战。相机以常见的 sRGB 颜色空间提供图像数据,因此您收到的任何没有附加信息的图像很可能都以 sRGB 中的颜色表示。其他颜色空间,例如与人类视觉相关的颜色空间,则用于颜色分析。由于这种分析是一项常见的任务,我们创建了一份颜色速查表,它提供了 sRGB 和 CIE-XYZ 的快速概述以及它们之间的转换公式。sRGB 中“s”代表“标准”,它是颜色空间中的最低公分母。它是在 1990 年代开发的,旨在为当时的显示器和打印机提供通用的可用颜色空间。尽管有许多不同且更大的颜色空间可用,但 sRGB 仍然是 RGB 图像数据的事实标准。CIE-XYZ CIE(国际照明委员会)是基于人眼可感知的颜色建立颜色空间的国际机构。XYZ 不包含负数,而是使用三刺激值来定义人眼可以看到的颜色空间。X 代表锥体响应非负曲线的线性组合。Y 代表 Luminance,Z 被定义为几乎等于蓝色。如何转换 由于我们处理的是明确定义的颜色空间,我们可以明确地从一个颜色空间转换到另一个颜色空间。请参阅下面的公式以帮助您入门:sRGB 到 XYZ sRGB 到 sRGB' - 将 sRGB 数据线性化 相机中的 sRGB 数据,尤其是在 8 位中提供时,通常是非线性的,显示所谓的 Gamma 函数。我们将 sRGB 定义为应用了 Gamma 函数的原始相机数据,将 sRGB' 定义为线性化表示。请注意,我们首先将 sRGB 数据缩放到 [0...1] 范围,因此对于 8 位数据,我们将所有值除以 255。以下计算对于 R、G 和 B 三个通道是相同的,我们用通用 V 和 V' 表示。sRGB' 到 XYZ - 应用变换矩阵 标准化的 3x3 矩阵描述了如何将 sRGB' 数据转换为 CIE-XYZ 数据。对于那些使用不支持矩阵计算的工具(例如 MS-Excel)进行实现的人,Y 的单方程计算在此处。旁注:当我们说 Y 代表亮度时,我们看到绿色贡献最大,而蓝色影响很小。再补充一点:如果您将结果与使用 ICC 配置文件的工具(例如 Mathworks Matlab 中的 apply form)得到的结果进行比较,请注意:此处显示的转换会生成以 D65 为参考白点的 CIE-XYZ 数据,如 sRGB 定义中所示。ICC-Profiles 始终使用 D50 作为参考白点,您在从 XYZ 计算到 LAB 或比较这些结果时应注意这一点。XYZ 到 sRGB 以相反的方式计算,公式也很简单:XYZ 到 sRGB' - 应用变换矩阵 sRGB' 到 sRGB - 应用 Gamma 如前所述,V 和 V' 代表 sRGB 和 sRGB' 的三个通道,并且该方程应用于每个通道。

    描述颜色一直是一个复杂的挑战。相机以常见的 sRGB 颜色空间提供图像数据,因此您收到的任何没有附加信息的图像很可能都以 sRGB 中的颜色表示。其他颜色空间,例如与人类视觉相关的颜色空间,则用于颜色分析。

    由于这种分析是一项常见的任务,我们创建了一份颜色速查表,它提供了 sRGB 和 CIE-XYZ 的快速概述以及它们之间的转换公式。

    sRGB

    sRGB 中“s”代表“标准”,它是颜色空间中的最低公分母。它是在 1990 年代开发的,旨在为当时的显示器和打印机提供通用的可用颜色空间。尽管有许多不同且更大的颜色空间可用,但 sRGB 仍然是 RGB 图像数据的事实标准。

    CIE-XYZ

    CIE(Commission Internationale de l'Éclairage)是基于人眼可感知的颜色建立颜色空间的国际照明委员会。XYZ 不包含负数,而是使用三刺激值来定义人眼可以看到的颜色空间。X 代表锥体响应非负曲线的线性组合。Y 代表 Luminance,Z 被定义为几乎等于蓝色。

    如何转换

    由于我们处理的是明确定义的颜色空间,我们可以明确地从一个颜色空间转换到另一个颜色空间。请参阅下面的公式以帮助您入门:

    sRGB 到 XYZ

    sRGB 到 sRGB' - 将 sRGB 数据线性化

    相机中的 sRGB 数据,尤其是在 8 位中提供时,通常是非线性的,显示所谓的 Gamma 函数。我们将 sRGB 定义为应用了 Gamma 函数的原始相机数据,将 sRGB' 定义为线性化表示。

    请注意,我们首先将 sRGB 数据缩放到 [0...1] 范围,因此对于 8 位数据,我们将所有值除以 255。

    以下计算对于 R、G 和 B 三个通道是相同的,我们用通用 V 和 V' 表示。

    sRGB' 到 XYZ - 应用变换矩阵
    标准化的 3x3 矩阵描述了如何将 sRGB' 数据转换为 CIE-XYZ 数据。

    对于那些使用不支持矩阵计算的工具(例如 MS-Excel)进行实现的人,Y 的单方程计算在此处作为一个快速提醒。

    旁注:当我们说 Y 代表亮度时,我们看到绿色贡献最大,而蓝色影响很小。


    再补充一点:如果您将结果与使用 ICC profile 的工具(例如 Mathworks Matlab 中的 apply form)得到的结果进行比较,请注意:此处显示的转换会生成以 D65 为参考白点的 CIE-XYZ 数据,如 sRGB 定义中所示。ICC-Profiles 始终使用 D50 作为参考白点,您在从 XYZ 计算到 LAB 或比较这些结果时应注意这一点。

    XYZ 到 sRGB

    以相反的方式计算,公式也很简单:


    XYZ 到 sRGB' - 应用变换矩阵

    sRGB' 到 sRGB - 应用 Gamma

    如前所述,V 和 V' 代表 sRGB 和 sRGB' 的三个通道,并且该方程应用于每个通道。