将假定为 cs_ciexyz 变换颜色空间中的颜色值转换为此 colorspace 中的值。
此方法使用相对色度来转换颜色值,由 icc 规范所定义。这意味着此方法所返回的 xyz 参数值是相对于 cs_ciexyz 颜色空间的 d50 白色点来表示的。这种表示方法在两步骤的颜色变换过程中是很有用的,即将输入颜色空间中的颜色转换为 cs_ciexyz,然后再转换为输出颜色空间中的颜色。此方法返回的颜色值与色度计测量时生成并传递给方法的 xyz 值不同。如果 xyz 值对应于使用当前 cie 推荐的做法所测量的值,则在将其传递给此方法前必须转换成 d50 相对值。下面各段对此进行了详细解释。
icc 标准使用设备无关的颜色空间 (dics) 作为将颜色从一台设备变换到另一台设备的机制。在此架构中,将颜色从源设备的颜色空间变换到 icc dics,然后从 icc dics 变换到目标设备的颜色空间。icc 标准定义了在设备的颜色空间和 icc dics 之间进行转换的设备配置文件。从源设备的颜色到目标设备的颜色的总体转换是通过这种方式完成的:把源设备的设备到 dics 的配置文件转换连接到目标设备的 dics 到设备的配置文件转换。因此,icc dics 通常也称为配置文件连接空间 (pcs)。在 tociexyz 和 fromciexyz 方法中使用的颜色空间是由 icc 规范所定义的 ciexyz pcs。这也是 colorspace.cs_ciexyz 所表示的颜色空间。
颜色的 xyz 值通常相对于某些白色点来表示,所以在 xyz 值白色点未知的情况下,是无法知道这些值的实际含义的。这称为相对色度。pcs 使用 d50 的白色点,所以 pcs 的 xyz 值是相对于 d50 的。例如,pcs 中白色具有 d50 的 xyz 值,定义为 x=.9642、y=1.000 和 z=0.8249。此白色点通常用于制版印刷应用中,但其他应用中也经常使用其他白色点。
要量化打印机或监视器等设备的颜色特征,通常是测量特定设备颜色的 xyz 值。为便于论述,设备 xyz 值这一术语用来表示使用当前的 cie 推荐做法测量设备颜色所得的 xyz 值。
在设备 xyz 值和此方法作为参数采用的 pcs xyz 值之间的变换对应于设备颜色空间(由 cie 色度值表示)和 pcs 之间的变换。此过程涉及了很多因素,其中有些因素相当微妙。但最重要的要算为解决设备白色点和 pcs 白色点之间的不同而进行的调整。有许多针对这种调整的技术,它是当前许多研究和争论的主题。一些常用的方法是 xyz 缩放、von kries 转换和 bradford 转换。应根据每个特定的应用来使用正确的方法。
最简单的方法是 xyz 缩放。在此方法中,可将每台设备的 xyz 值变换成 pcs xyz 值,方法是将每台设备的 xyz 值乘以 pcs 白色点 (d50) 和设备白色点的比值。
xd、yd、zd 是设备的 xyz 值
xdw、ydw、zdw 是设备的 xyz 白色点值
xp、yp、zp 是 pcs xyz 值
xd50、yd50、zd50 是 pcs xyz 白色点值
xp = xd * (xd50 / xdw)
yp = yd * (yd50 / ydw)
zp = zd * (zd50 / zdw)
对这些等式取倒数可得到 pcs 到设备的变换:
xd = xp * (xdw / xd50)
yd = yp * (ydw / yd50)
zd = zp * (zdw / zd50)
注意,icc 配置文件中的介质白色点标记与设备的白色点标记不同。介质白色点标记以 pcs 值的形式表示,并且用于表示设备光源的 xyz 和在该光源下所测量的设备介质 xyz 之间的差异。设备白色点以对应于设备上所显示的白色的设备 xyz 值来表示。例如,在 srgb 设备上显示 rgb 颜色(1.0、1.0、1.0)将得到被测设备的 d65 xyz 值。这与 srgb 设备的 icc 配置文件中的介质白色点标记 xyz 值不同。
- 指定者:
- 类
colorspace
中的 fromciexyz
- 参数:
colorvalue
- 长度至少为 3 的 float 数组。
- 返回:
- 一个长度等于 colorspace 中分量数的 float 数组。
- 抛出:
arrayindexoutofboundsexception
- 如果数组长度小于 3。