ICC文件的不同部分如何协同工作?

时间:2016-01-31 01:11:18

标签: colors color-management

我使用ICC Profile Inspector从http://www.brucelindbloom.com/index.html?MunsellCalcHelp.html拆分了一个带有查找表的ICC文件。 ICC文件应该将Lab转换为Uniform LAB。

它输出的文件包括标题,矩阵(3x3单位矩阵),输入和输出曲线以及查找表。这些文件是什么意思?它们如何与颜色转换相关?

标题内容为:

InputChan: 3
OutputChan: 3
Input_Entries: 258
Output_Entries: 256
Clut_Size: 51

InputCurves文件包含以下条目:

0 0 0 0 
1 256 255 255 
2 512 510 510 
...
256 65535 65280 65280 
257 65535 65535 65535 

OutputCurves文件包含以下条目:

0 0 0 0 
1 256 257 257 
2 512 514 514 
...
254 65024 65278 65278 
255 65280 65535 65535 

查找表条目如下所示:

0 0 0 25968 
1 0 0 26351 
2 0 0 26789 
...
132649 65535 65535 49667 
132650 65535 65535 50603 

我想了解输入LAB颜色如何映射到输出值。我特别困惑,因为a& b值可能为负数。

1 个答案:

答案 0 :(得分:1)

我相信在浏览http://www.color.org/specification/ICC1v43_2010-12.pdf

后我了解其工作原理

这种探索可能会有一些错误,但通常应该是正确的。

输入值为LAB,L值使用表39和表格映射。 40节中的10.8 lut16Type。然后输入曲线中的258个值在这些L,a和&之间均匀分布。 b范围。输出值为16位,因此为0-65535。

CLUT也是如此。有51 ^ 3个条目(51个由ICC文件authoer选择)。每个维度(L,a,b)也在该空间上均匀分割。所以0 = 0& 50(注意0 - 50是51个条目)= 65535来自上一节。前51行用于L = 0和a = 0,但是实施b。每51行,a值增加1,每51 * 51行,L值增加1。

因此,给出由输入曲线调整的L,a和b值,找出它们的索引(0-50)并在CLUT中查找它们(l_ind * 51 * 51 + a_ind * 51 + b_ind),这将是再给你3个值。

现在输出曲线进入。它是另一组曲线,就像输入曲线一样。然后可以使用表39和表中的相同值将输出映射回来。 40。