Как различные части файла ICC работают вместе?
Я взял ICC-файл из http://www.brucelindbloom.com/index.html?MunsellCalcHelp.html с таблицей поиска, используя ICC Profile Inspector. Файл 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 ответ
Мне кажется, я понимаю, как это работает после пролистывания http://www.color.org/specification/ICC1v43_2010-12.pdf
Это объяснение может иметь некоторые ошибки на 1, но в целом оно должно быть правильным.
Входными значениями являются LAB, а значения L отображаются с использованием таблиц 39 и 40 в разделе 10.8 lut16Type. Затем 258 значений на входных кривых равномерно распределены между этими диапазонами L, a, & b. Выходные значения 16 бит, поэтому 0-65535.
То же самое относится к CLUT. Есть 51^3 записи (51 был выбран автором файла ICC). Каждое измерение (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.