Соответствие цветов в цифровом оригинале, и в напечатанном изображении - головная боль всех связанных с цветной печатью - и у профессионалов полиграфии и у обычных пользователей принтеров разных типов. Та же проблема возникает и в альтернативной фотографии в процессах которые дают цветное изображения (гум-арабик, цветной карбон и другие).
С калибровкой принтера или печатной машины все более-менее понятно - есть много литературы, специальное оборудование (спектрофотометры, калибраторы). О том, как калибровать цвет в альтернативных процессах информации гораздо меньше (если не сказать что ее нет вообще). Так что пришлось разработать процесс калибровки без использования специального оборудования (нам понадобится только более-менее приличный планшетный сканер).
В своих первых попытках цветной печати точность воспроизведения цветов мне казалась второстепенной задачей после получения хоть какого-то цветного изображения вообще:
Хотя такие отпечатки с явно выраженным "художественным" видом могут иметь определенную ценность (сразу видно, что процесс печати ручной), мне хотелось печатать так, чтобы на выходе было то, что задумано, а не то, что получится. В обычной монохромной печати для точного воспроизведения изображения можно добиться с помощью построения калибровочной кривой. Построить кривую можно многими способами (хоть на глаз, печатая много разных вариантов негатива, до достижения нужного результата), лично мне наиболее удобным кажется калибровка с помощью скрипта
Chartthrob (описание процесса его использования по ссылке). Кроме калибровочной кривой, надо еще знать время экспозиции, оптимальное для данной комбинации эмульсии, сенсибилизатора и пигмента: слишком малая экспозиция не даст желаемой плотности, слишком длительная - даст слишком контрастную калибровочную кривую (при этом могут вылезти цифровые артефакты вроде "ступенек" в градиентах). Чтобы сократить время на калибровку, я использую вот такую таблицу из 13ти градиентных полос (стандартные полосы от плотности в 0% до 100% с шагом в 5%):
Напечатав такую таблицу так, чтобы каждая из полос была проэкспонирована в течении разного времени (скажем с шагом в одну-две минуты), мы сможем сразу и определить оптимальное время экспозиции (после которого максимальная плотность перестанет заметно расти - т.е. будет достигнуто "плечо" кривой плотностей материала) и сразу получить градиенты, по которым можно построить калибровочные кривые (отсканировав отпечаток таблицы и применив модифицированный скрипт Chartthrob, который строит кривую по 21 полю, а не по полной таблице). Вот такие таблицы для каждого из трех основных цветов + черного:
Впрочем эти таблицы не дают главного: какое сочетание плотностей каждого цвета, даст тот цвет, который будет соответствовать CMYK цвету (100%, 100%, 100%, 100%) на мониторе? Или, чтобы облегчить себе немного задачу, хотя бы просто цвету (100%, 100%, 100%, 0) - без черного. Первая моя мысль была такая: сделать таблицу, в которой были бы все сочетания CMYK цветов, напечатать ее, отсканировать, в фотошопе поканально кривыми привести к "исходному цвету" и вуаля - эти кривые можно использовать на изображении, чтобы оно получилось с правильным цветом:
Впрочем такой подход себя не оправдал сразу по двум причинам: во первых таблица и изображение для печати должны быть в цветовом пространстве CMYK, а сканер дает на выходе RGB. Причем это RGB с поправкой на то, что сканер не идеально передает цвета, даже с калибровкой. Конвертация скана в фотошопе в CMYK еще добавляет неопределенности и получается, что мы пытаемся сделать цветовую калибровку по изображению, которое имеет мало общего с реальностью. Вторая причина еще в том, что таблица не учитывает нелинейность изменения плотностей у эмульсии каждого из цветных слоев, т.е. хоть в ней и присутствуют все CMYK цвета, но например градиент чистой мадженты по постоянному желтому, дает оранжевый не в середине, а ближе к красному краю. Т.е. даже если удалось получить более-менее соответствующее действительности CMYK представление таблицы, то дальнейшая цветокоррекция будет весьма не проста, потому как кривые должны будут учитывать нелинейность передачи плотности в каждом канале.
Неудача с этой таблицей показала, что нужно какое-то более простое и надежное решение, которое позволит обойти то, что сканер дает RGB изображение и то, что нельзя полагаться на коррекцию кривыми на финальном этапе. Если подумать, то оказывается, что вообще говоря нам не обязательно работать с цветными сканами. У любого сканера есть режим сканирования в градациях серого, причем часто можно еще и отключить при этом управление цветом (ICM или гамма-коррекцию), т.е. такие сканы можно использовать для измерения относительной плотности. На практике это означает, что надо отсканировать все градиентные таблицы в режиме градаций серого и выписать для них значения серого, которые получились для максимальных плотностей. Затем нам надо придумать новую таблицу, в которой будут как-то перебираться все возможные сочетания плотностей каждого из трех основных цветов (причем так, чтобы на скане можно было определить какие именно были плотности каждого из компонентов). Напечатав такую таблицу, мы на ней глазами найдем место, наиболее похожее на тот цвет, который на мониторе дает CMYK (100%, 100%, 100%, 0), а потом на ее скане в градациях серого найдем относительные плотности цветов, которые дали такой результат. Зная эти плотности можно будет по градиентным таблицами найти времена экспозиции для каждого цвета.
Так же можно заметить, что в общем-то нам не надо перебирать все возможные сочетания трех цветов. Нам можно обойтись тем, чтобы зафиксировать плотность одного цвета, а менять только плотности двух других. И плотности эти так же не обязательно варьировать с малым шагом - шаг в 10% вполне достаточен. Хотя при желании можно сделать таблицу и с более высоким разрешением. На роль цвета с фиксированной плотностью хорошо подходит желтый - т.к. это самый прозрачный из пигментов, он обычно дает самое короткое время экспозиции и поэтому есть меньший запас на его варьирование. Фиксированную плотность лучше выбрать где-то на треть стопа меньше той, что получается при оптимальном времени экспозиции, которое мы обсуждали ранее. Сама таблица может быть реализована разном виде:
Как видите получается что из точки с искомым цветом (100%, 100%, 100%, 0) исходят по горизонталям чистые красные и зеленые цвета, а по диагоналям идет желтый без оттенков. Эту зависимость мы будем использовать при анализе напечатанной таблицы.
По каналам это выглядит так:
Далее мы должны напечатать таблицу, уделяя внимание тому, чтобы процесс был максимально стандартизирован - чтобы отпечатки были сделаны в точно такой же последовательности наложения слоев и с теми же временами обработки в теплой воде (т.к. от этого зависят финальные плотности на отпечатке):
Как видно таблица выглядит гораздо темнее чем в оригинале. Это не удивительно - просто получилось, что часть плотностей на таблице превышают искомую плотность соответствующую цвету (100%, 100%, 100%, 0). Впрочем в остальном вы видим знакомую картину - по горизонталям вполне чистые переходы от светло к темно красному, по вертикали - от светло к темного зеленому. То, что желтый идет не точно по диагоналям, объясняется нелинейным изменением плотностей в разных каналах (т.к. тут не были применены калибровочные кривые).
Посмотрим на то что получилось более подробно. Сначала на цветной скан:
Белыми линиями я отметил строку и столбец по которым идут, как мне было видно глазами, наиболее чистые красные и зеленые цвета (на картинке может показаться что это не совсем так, но тут нужна поправка на то, что мой сканер дает немного более зеленое изображение, чем оно есть на самом деле). На пересечении этих линий лежит то, что наиболее близко походит на цвет CMYK (100%, 100%, 100%, 0) на моем мониторе. Теперь сделаем скан в градациях серого:
Замерив в указанных стрелками местах пипеткой в фотошопе значения серого: (C: 60%, M: 68%, Y: 24%) и теперь можно обратиться к сканам градиентных таблиц для каждого из цветов и найти по ним, что искомые времена экспозиции для каждого из цветов составляют: циан - 8 минут, маджента - 5,5 минут, желтый - 12 минут.
Последнее что нам осталось - определить плотность до которой надо экспонировать черный слой. Тут я немного схитрил: распечатал первую CMYK таблицу (которая на все оттенки) на струйном принтере, я отсканировал ее в градациях черного и сравнил максимальную плотность черного канала (88%) с максимальной общей плотностью (92%). Т.е. черная плотность должна быть в районе 90%-95% от плотности (100%, 100%, 100%, 0). Для нашего случая это примерно 80%-82%, что соответствует 16 минутам экспозиции.
Заключении я должен сказать, что эта методика не должна рассматриваться как абсолютно точная: все таки тут есть много этапов, где есть место для ошибки. И сканер может давать немного разные результаты при каждом сканировании (это будет влиять на замеры относительной плотности) и на печати могут быть отклонения, которые приведут к тому, что плотность при экспозиции окажется меньше или больше расчетной. Но как минимум эта система дает хорошую отправную точку и экономит время на долгие попытки получить какой-то результат методом проб и ошибок.