А ты, Вовочка, молчи, а то мы всю физику к ..уям сведем... анекдот
О консенсусе
Несмотря на мой скепсис в отношении цветовой науки и любви потоптаться по святому,
прикладную задачу копирования изображений я считал решенной (как минимум, в простых случаях).
Ну вот есть файл (RGB), к нему прилагается профиль (ICC), следует ожидать что на одном и том же устройстве (LCD мониторе, чтобы быть конкретным) он
при включенном Color Engine отобразится более-менее разумно и одинаково.
Естественно, предполагается что все необходимые условия соблюдены: монитор отпрофилирован, показываемые цветовые данные привязаны к цвету (снабжены профилем), условия наблюдения постоянные, программа показа розумиет ICC, наливай да пей бери и выводи.
Конечно, жизнь несколько богаче и 2.5 года назад я уже исследовал проблему точности CMM (Color Management Module) и написал про это серию статей.
Но я наблюдал в эксперименте разумные ошибки - 5-6, а для хороших CMM и 8 бит данных сохранялись, отклонения от смены CMM в худшем случае были
заметны глазом, но не были фатальными.
Да, на картинке слева вы видите кусочек из этого файла, показанный на одном и том же мониторе, с одним и тем же профилем монитора, одним
и тем же профилем при цветовых данных файла, одной и той же программой (Adobe Photoshop) с одними и теми же настройками за исключением одной....
В предыдущих сериях мы рассматривали ошибки обработки цвета, возникающие при использовании матричных профилей, т.е. таких, где преобразование в PCS (profile connection space) и обратно задается простой матрицей 3x3. В реальной жизни матричные профили используются как рабочие пространства, а на стадиях импорта изображений и печати используются табличные профили, описывающие нелинейности реальных устройств.
Методология тестирования подробно описана в первой и второй статьях серии.
Upd: включены данные по Argyll для линейной гаммы.
В первой части CMM-эпопеи с дистанции была снята CMS Argyll: в области с высокими насыщенностями наблюдались видимые взглядом артефакты. В то же время, на 16-битных файлах Argyll показала великолепные результаты, сравнимые, а на части данных и сильно лучшие, чем у лучших коммерческих CMM.
Как и я и обещал, я заслал автору баг-репорт. К моему приятному изумлению, ответ был получен через час и содержал патч к cctiff (тестовому приложению, которое я использовал в тестах). В самой CMM-engine ничего править не пришлось, там все было правильно.
Из опыта известно, что цифровой шум в тенях чаще всего возникает при обработке данных с линейной «гаммой», а это те изображения, которые мы получаем с линейных сенсоров: цифровых камер и сканеров. Давайте посмотрим, что будет с ошибками на тестовых примерах.
sRGB был выбран по той причине, что все цвета sRGB входят в Lab, следовательно, при абсолютной точности преобразований, вышеописанное преобразование не должно приводить к потере данных. В то же время, в реальной жизни для редактирования и хранения используются RGB-пространства с более широким gamut: Adobe RGB, ProPhoto, BetaRGB, EktaSpace и так далее.
Пространство BetaRGB обладает массой достоинств в качестве пространства хранения и редактирования: большим охватом реальных цветов, большой эффективностью кодирования данных. Интересно посмотреть, как ведут себя CMM-модули с этим пространством.
В предыдущей публикации были рассмотрены ошибки, которые происходят в Color Management Modules (CMM) разных систем при обработке 8-битных данных. Было показано, что такое "неразрушающее" действие как конверсия из RGB в Lab и обратно оставляет от 3-5 значащих бит от восьми.
На сегодняшний день, 8 бит неактуальны, большинство изображений производятся с большей разрядностью. Следовательно, нужно изучить и их.
Начнем с гаммы 2.2, как наиболее часто используемой при редактировании изображений.
Все, кто работает с цветом, догадываются, что любая операция редактирования немножко разрушает изображение за счет округления дробных результатов вычислений до целых значений. Вот например, наложили вы кривую, таким образом, что значение 1 должно стать 1.8, а 2 — 2.2. После округления, оба результата будут округлены до 2, отчего вместо двух разных цветов получатся два одинаковых.
Неявно предполагается, что отклонения от идеала при цифровом редактировании невелики и влияют только на младшие биты значений, что практически незаметно на глаз. В то же время, мне никогда не попадались количественные исследования. Да, на практике я знаю, что инструмент Levels в фотошопе полностью разрушает тени, а остальные инструменты ведут себя приличнее, но это единственное знание, накопленное за 8 лет работы с цветом.
Неточность работы всех средств редактирования затрудняет корректную постановку задачи: нет идеала с которым можно было бы сравнивать. По счастью, задачу можно корректно поставить для преобразования, которое должно быть минимально разрушающим: преобразование цветовых пространств в ситуации, когда мы не выходим за gamut.
Простые упражнения с фотошопом (прогнать картинку по циклу RGB->LAB->RGB, а потом посмотреть разницу через Image—>Calculations) показали, что разница по красному каналу достигает 24 единиц т.е. речь идет о 5 битах ошибки в 8-битном изображении.
Дальнейшие упражнения потребовали создания инструментальных средств и аккуратной постановки эксперимента.