将ICC配置文件应用于颜色



我有这个ICC文件,它将颜色从RGB转换为XYZ。我正在制作我自己的ICC处理器。

我想将值[0.5,0.5,0.5]转换为XYZ,然后转换为sRGB。下面是我得到的:

RGB = [0.5, 0.5, 0.5]
apply "A2B0": 
XYZ = [0.1263921901414079, 0.13108369512741044, 0.1081292238059337]
to sRGB using "wtpt":
RGB = [0.39734262390746755, 0.39732431073870283, 0.3972382158377442]

然而,结果的sRGB应该是不同的(更亮)。还有一个"chad"标签(3x3矩阵),但我不知道何时应用它。这个ICC配置文件应该如何处理颜色[0.5,0.5,0.5]?

指向您的ICC配置文件的链接已失效(表示文件已删除)。

但也:你需要线性化任何伽玛或TRC在矩阵到XYZ之前的RGB,并且必须重新应用TRC时去sRGB。

你必须使用3x3矩阵的内和反向的3x3矩阵的外

AND:如果您使用的是v2或v4 ICC配置文件,您还必须对D50进行色彩调整,因为D50被指定为ICC XYZ pc的已调整WP。sRGB是D65,但是ICC配置文件中的primary将是D50改编的primary。

sRGB#808080, D50 XYZ值应该是这样的:

0.20815334    0.21586051    0.17810748

虽然我看不到ICC的配置文件,但我不知道你是从哪个空间来的。

矩阵数学

简短的解释是每个输出通道是相关矩阵行乘积的和。

这是一个例子,这是D65矩阵而不是D50适应矩阵:

|R|0.4123907993  0.3575843394  0.1804807884|   |X|
|G|0.2126390059  0.7151686788  0.0721923154| = |Y|
|B|0.0193308187  0.1191947798  0.9505321522|   |Z|

这里我们从线性sRGB到XYZ。在应用此矩阵之前,必须移除sRGB TRC (gamma)(未显示)。矩阵的第一列是R,第二列是G,第三列是b。最上面的行是X,中间是Y,然后是z。

因此,将每个列行乘以它的输入通道,然后将每一行求和为输出通道。

R * 0.4123907993 + G * 0.3575843394 + B * 0.1804807884 = X
R * 0.2126390059 + G * 0.7151686788 + B * 0.0721923154 = Y
R * 0.0193308187 + G * 0.1191947798 + B * 0.9505321522 = Z

XYZ空间是线性的(没有伽马),所以你需要在从XYZ出来后把TRC放回sRGB。

相关内容

  • 没有找到相关文章

最新更新