Ошибки при обработке цвета: II. 16 бит, гамма 2.2, матричные профили

Nov 22, 2007 15:00


В предыдущей публикации были рассмотрены ошибки, которые происходят в Color Management Modules (CMM) разных систем при обработке 8-битных данных. Было показано, что такое "неразрушающее" действие как конверсия из RGB в Lab и обратно оставляет от 3-5 значащих бит от восьми.
На сегодняшний день, 8 бит неактуальны, большинство изображений производятся с большей разрядностью. Следовательно, нужно изучить и их.
Начнем с гаммы 2.2, как наиболее часто используемой при редактировании изображений.

Смена координат
Первые же эксперименты показали, что ошибки при обработке бывают очень большие, тысячи единиц (при диапазоне 65 тысяч), показывать их на линейном графике неудобно. Поэтому пришлось перейти к логарифмической координате по горизонтальной оси, а именно битовой ошибке. На удивление, в этих координатах оказался непоказательным логарифмический масштаб по вертикали.
В целях удобства, повторим график из предыдущей статьи в новых координатах:

Как мы видим, плохость Logo CMM не столь очевидна, как раньше, зато графиком пользоваться удобнее. Например, если нам интересно сколько пикселей имеет битовую ошибку 4 бита и более (т.е. отклонение больше 7 единиц), можно сравнить площади под двумя графиками от отметки 4 и до правого края. Вообще, график стал более интегральным и более интегрируемым. 16 бит
Постановка задачи
Начнем с изображения, занимающего полный диапазон 16-бит-на-канал файла. Для удобства сравнения, возьмем такой же файл, как и в прошлый раз: 16 млн. пикселей, 16 млн. цветов, по каждой из RGB-координат цвет пробегает значения 0..256..512....65280. Как и в прошлый раз, эксперимент состоит из следующих шагов:
  1. присвоить файлу профиль sRGB
  2. преобразовать в Lab (Absolute Rendering Intent)
  3. преобразовать обратно в sRGB
  4. сравнить исходный файл с результатом попиксельно, построив гистограмму отклонений (евклидово расстояние в RGB-пространстве).
Участники забега
  1. Adobe Photoshop CS3 10.0.1 на PC и на Mac со всеми тремя CMM (Adobe на PC и Mac, ColorSync на Mac, Microsoft на PC). Сразу хочется сказать, что Adobe CMM на PC и Mac работает практически одинаково.
  2. ColorSync Utility снята с дистанции за неумение сохранять 16-битные файлы.
  3. iQueue снята с дистанции за падения при обработке 16-битных файлов (буду пробовать еще)
  4. LCMS
  5. Argyll CMS вернулась в число участников забега т.к. на 16-битных данных артефактов преобразования цвета нет.
Результаты
Собственно, график (гистограмма отклонений):

В зависимости от наших предпочтений (минимизация пиковой ошибки или средней), лидерами можно назвать, на выбор:
  • Adobe CMM: максимальная ошибка составляет 7 бит (всего 4 пикселя из 16 млн), для 99.85% пикселей ошибка в пределах 5 бит). ColorSync сработала чуть хуже, выбросы для отдельных пикселей до 13 бит, но 99.7% пикселей имеют ошибку в 5 бит и менее.
  • Argyll может быть назван лидером по количеству пикселей с минимальной ошибкой. В пределах 2 бит у Argyll находятся 86% всех пикселей, а у Adobe и ColorSync - только 67%.
Для LCMS и Microsoft переход на 16 бит не увеличивает качественно точность, ошибки тоже растут примерно на 7-8 бит. 16 бит, половина диапазона
Очень часто коррекцию экспозиции (недодержки) фотографы переносят на этап редактирования изображения. Давайте посмотрим, что будет, если взять в качестве исходного файла такой, где использована только половина диапазона: опять 16 мегапикселей, опять 16 млн. цветов, но компоненты цвета лежат в диапазоне 0..32640 (256 шагов по каждой компоненте с шагом 128). Для гаммы 2.2 это соответствует фотографической недодержке примерно в 2.3 стопа.
Смотрим график:

В исходном файле у нас всего 15 бит данных, поэтому 13 бит ошибки нас совсем не устраивают. Microsoft и LCMS вычеркиваем, хотя MS CMM уменьшила максимальную ошибку на тот же один бит (подозреваю, что за счет того, что в исходных данных старшего бита нет, потому и дельта меньше). Из оставшихся лучше всего себя повел ColorSync: выросло количество пикселов с маленькой ошибкой (0-2). Поведение Adobe и Argyll не изменилось (хуже от этого они не стали, абсолютная ошибка такая же, а вот относительная выросла за счет особенностей исходника). 16 бит, 1/16 диапазона
Возьмем почти экстремальный случай: занято 1/16 диапазона файла (от 0 до 4080, шаг 16). На удивление, инструмент Curves позволяет растянуть диапазон на полный без видимой постеризации, а вот что будет с CMM:
Всего у нас 12 значащих бит, Microsoft CMM и LCMS смогли для части пикселов дать 12 бит ошибки. Смешно. Все остальные лидеры сохраняются, при этом:
  • количество больших ошибок у Argyll подросло;
  • преимущество ColorSync над Adobe тоже стало больше.
Выводы
  • Фотошоп рулит. И Adobe CMM и Colorsync дают более чем приемлемое качество для 16-битных изображений. Ошибка уменьшается вместе с диапазоном и остается в пределах полностью невидимого.
  • ColorSync под фотошопом работает несколько лучше в сложных случаях , хотя в использованной схеме эксперимента обнаружить визуальную разницу не получится. При накоплении ошибки она может проявиться.
  • Argyll вполне достойное средство для использования в собственных программах. Надо им баг репорт про 8 бит заслать.

И на закуску. Усиленная карта разницы между исходником и результатом работы Microsoft CMM для последнего случая. На всякий случай: каждая точка исходного файла имела свой цвет, градиенты по R и G везде были одинаковыми. На мой взгляд, мы видим результаты работы кусочно-линейного интерполятора.

Автоматический кросс-пост из блога автора.

photoshop, cmm, фото, обработка изображений

Previous post Next post
Up