DNG Camera Profile (dcp) является профилем входного устройства и предоставляет информацию, необходимую для преобразования изображения с камеры (полученное после дебайеризации и последующих обязательных преобразований) в XYZ пространство. Профили dcp используются в конвертере Adobe Camera RAW (ACR) на вкладке Camera Calibration. ACR в свою очередь используется в Adobe Photoshop и Adobe Lightroom. DCP также поддерживается в RawTherapee.

Сразу хочу отметить, что наличие в названии слова DNG вовсе не означает, что dcp используется только с файлами DNG. С одинаковым успехом профилирование осуществляется на любых форматах RAW-файлов, которые поддерживаются RAW-конвертером. DCP содержит довольно много тегов, вот их список согласно спецификации DNG:

• BaselineExposureOffset
• CalibrationIlluminant1
• CalibrationIlluminant2
• ColorMatrix1
• ColorMatrix2
• DefaultBlackRender
• ForwardMatrix1
• ForwardMatrix1
• ProfileCalibrationSignature
• ProfileCopyright
• ProfileEmbedPolicy
• ProfileHueSatMapData1
• ProfileHueSatMapData2
• ProfileHueSatMapDims
• ProfileHueSatMapEncoding
• ProfileLookTableData
• ProfileLookTableDims
• ProfileLookTableEncoding
• ProfileName
• ProfileToneCurve
• ReductionMatrix1
• ReductionMatrix2

Здесь будут рассмотрены лишь самые важные (с точки зрения автора). И прежде всего хотелось бы отметить про тег, которого нет в списке, но он присутствует в каждом DCP-файле:

1. Уникальное наименование модели камеры (UniqueCameraModelRestriction) - определяет для какой модели камеры можно применять данный профиль. Именно этот тег использует ACR, чтобы выбрать на вкладке Camera Calibration только те профили из каталога c:\Users\UserName\AppData\Roaming\Adobe\CameraRaw\CameraProfiles\, которые подходят для RAW-файла, т.е. имя модели камеры из RAW совпадает со значением этого тега. Именно по этой причине ACR не отображает в списке профили, считая их для "чужих" камер.

Далее DCP содержит два тега для разных источников освещения (обычно для 2850К и 6500К): различают single-illuminant и dual-illuminant профили. В первом используется описание единственного источника освещения, во втором два (как правило 2850К и 6500К). Второй тип в теории должен давать более точное преобразование цветов.

2. Значение цветовой температуры (CalibrationIlluminant1 и CalibrationIlluminant2). В DCP используется концепция интерполяции данных для профилирования на основе описаний двух источников освещения. В отличии от ICC-профилей, где используется описание только для одного источника освещения, а значит и применять профили ICC "по-честному" можно только для снимков, сделанных в тех же условиях, что и снимок, по которому создан профиль, в DCP используются два источника, как уже было сказано, обычно это 2850K и 6500K. Зная эти значения, можно для конкретной температуры найти требуемые данные путем интерполяции.

Значения CalibrationIlluminant соответствуют принятым для тега LightSource в exif, т.е.:

0 = Unknown (0)
1 = Daylight (5500К)
2 = Fluorescent (4150К)
3 = Tungsten (incandescent light) (2850К)
4 = Flash (5500К)
9 = Fine weather (5500К)
10 = Cloudy weather (6500К)
11 = Shade (7500К)
12 = Daylight fluorescent (D 5700 - 7100K) (6400К)
13 = Day white fluorescent (N 4600 - 5400K) (5050К)
14 = Cool white fluorescent (W 3900 - 4500K) (4150К)
15 = White fluorescent (WW 3200 - 3700K) (3525К)
16 = Warm white fluorescent (2925К)
17 = Standard light A (2850К)
18 = Standard light B (5500К)
19 = Standard light C (6500К)
20 = D55 (5500К)
21 = D65 (6500К)
22 = D75 (7500К)
23 = D50 (5000К)
24 = ISO studio tungsten (3200К)
255 = Other light source (0)

Далее данные представлены парами.

3. Две цветовые матрицы (ColorMatrix1 и ColorMatrix2). Эти матрицы предназначены для преобразования из пространства XYZ в собственное цветовое пространство опорной или эталонной камеры (в спецификации это звучит как reference camera native color space). Например, в dcraw используется только одна матрица ColorMatrix2 для D65. Чтобы получить значение sRGB достаточно умножить сбалансированное значение RGB в пространстве камеры на инвертированную матрицу ColorMatrix2 и полученное значение в пространстве XYZ умножить на матрицу преобразования из XYZ в sRGB (можно найти на сайте Брюса Линдблума).

В файле DNG могут присутствовать две калибровочных матрицы (CameraCalibration1 и CameraCalibration2). Эти матрицы предназначены для преобразования из собственного цветового пространства опорной камеры в собственное цветовое пространство конкретной камеры (в спецификации звучит как individual camera native space). Представляют собой либо единичные матрицы, либо диагональные (когда все элементы, кроме диагонали, нулевые). Диагональные матрицы, как правило, вносят небольшие коррекции в ColorMatrix. Таким образом, если ColorMatrix привязана к конкретной модели, то CameraCalibration привязана к конкретному экземпляру камеры. Проблема заключается в том, что этот тег появляется в DNG только после конвертации через Adobe DNG Converter и как он рассчитывается нигде толком информации нет. Надо сказать, что спецификация DNG содержит минимум информации и зачастую, пытаясь выяснить какие-либо вопросы, возникает еще больше вопросов.

Помимо этого, в DNG может присутствовать матрица (одна) аналогового баланса (AnalogBalance). Если аналоговое усиление не применяется матрица является единичной (единицы по диагонали, остальные элементы нулевые).

4. Две таблицы форвард матриц (Forward Matrix). Как правильно перевести forward на русский в данном случае, я не придумал. Смысл в следующем: если ColorMatrix является преобразование "назад", т.е. из XYZ в RGB пространства камеры, то ForwardMatrix преобразует из RGB пространства камеры в XYZ (D50), т.е. "вперед".

Таким образом, в DNG предусмотрено два способа преобразования из пространства камеры в XYZ: через ColorMatrix или через ForwardMatrix и формулы выглядят так:

CameraToXYZ_D50 = ChromaticAdaptation * Inverse (AnalogBalance * CameraCalibration * ColorMatrix)

CameraToXYZ_D50 = ForwardMatrix * D * Inverse (AnalogBalance * CameraCalibration), где D = Invert (AsDiagonalMatrix (Inverse (AB * CC) * CameraNeutral))

X-rite не создает эти таблицы.

5. Две таблицы понижающих матриц (Reduction Matrix) необходимы для случаев преобразования не RGB данных, т.е. когда количество цветовых фильтров на сенсоре больше 3. Соответственно, преобразование в таких случая выглядит так:

CameraToXYZ_D50 = ChromaticAdaptation * Inverse (ReductionMatrix * AnalogBalance * CameraCalibration * ColorMatrix) * ReductionMatrix

Когда теги ReductionMatrix отсутствуют, необходимо использовать функцию PseudoInverse: CameraToXYZ_D50 = ChromaticAdaptation * PseudoInverse (AnalogBalance * CameraCalibration * ColorMatrix)

6. Таблица тоновой кривой (ProfileToneCurve). Содержит применяемую тоновую кривую.

Таблицы ProfileHueSatMapData и ProfileLookTableData позволяют бороться с Hue Twist. Что это такое? Это некоторое смещение пары тон-насыщенность в зависимости от яркости (смещение возникает в результате применения гамма-коррекции). Для каждой пары задаются смещения (в x-Rite для теней, для полутонов и для светов), и такие профили называют twisted. ProfileLookTableData представлена только одной таблицей.

7. Две таблицы смещений цветового тона и насыщенности (ProfileHueSatMapData). После того как через ColorMatrix получены RGB значения изображения, данные преобразуются в формат HSV. В случае DNG profile editor таблица содержит 90 записей цветового тона, где каждая имеет 25 уровней насыщения. И для каждой пары тон-насыщение определяется смещение цветового тона, насыщенности и яркости. В случае x-Rite ColorChecker Passport таблица содержит 6 тонов по 6 насыщенностей и по 3 яркости (обратите внимание на 3 яркости в профилях, создаваемых в программе x-Rite, это и есть так называемый "Hue Twist"). В случае Adobe Profile Editor яркость дана только одним значением - это untwisted профили.

Данные преобразования выполняются до экспокоррекций, контрастов и прочих манипуляций, т.е. это профайлы типа Invariate (см. ниже). Таблицы необходимо интерполировать для баланса белого.

8. Таблица просмотра (ProfileLookTableData). Это тот же Hue Twist, который выполняется после коррекций экспозиции, контраста и т.п. Эти таблицы содержатся в стандартных профайлах от Adobe. Их наличие говорит о том, что это профайл типа Variate (см. ниже).

Итак, теперь мы знаем, что Adobe Profile Editor создает untwisted профили, а x-Rite - twisted.

Есть интересный нюанс. Существует два варианта когда применяются Hue Twist (ProfileLookTableData или ProfileHueSatMapData). Первый: когда профиль применяется после всех основных коррекций экспозиции (variate), и второй: перед коррекциями (invariate). В чем разница? Представим, что у нас имеются два снимка с одинаковым содержимым, но снятые с разной экспозицией, допустим один кадр недодержали. Когда применяется variate-профиль, на снимке с недостаточной экспозицией мы сперва поднимаем экспозицию до нормального уровня (чтобы оба снимка оказались с одинаковой яркостью) и только после этого применяется Hue Twist. При этом пара тон-насыщенность изменилась!!! И применение Hue Twist будет уже некорректным! Именно так работают стандартные профили Adobe (Standard, Neutral и т.д). То есть эти профили корректно применять без изменения экспозиции (в т.ч. сдвига контраста, точки черного, белого, светов и теней). Зачем так сделано, я не могу сказать. Invariate профили же применяют Hue Twist до коррекций экспозиции. А значит вне зависимости от того, какая будет коррекция экспозиции, тон или оттенок цвета не изменится (насыщенность может изменится).

Хорошая новость, профили, создаваемые DNG profile editor и x-Rite, являются Invariate-профилями.

Какие выводы из всего этого можно сделать?

Первое, стандартные профили Adobe (Standard, Neutral и т.д) стоит избегать в случае существенной коррекции экспозиции. Но эти профили позволяют достичь "хорошего" цвета за счет применения Hue Twist, в частности скин-тон выглядит очень неплохо и в тенях и в светах.

Второе, dual-illuminant профили более универсальны и применимы для повседневной съемки. Но для конкретных условий съемки с неизменяющейся цветовой температурой следует создавать однотабличный профиль, но применять его нужно только для снимков, сделанных в данных условиях.

И третье, если используя профили, созданные в x-Rite или Adobe Profile Edition, Вам по каким-то причинам не нравится эффект применения Hue Twist (искажается получаемый цветовой тон), следует попробовать применить untwisted profile. Для этого следует воспользоваться утилитой dcpTool:

dcptool.exe -u twistedprofile.dcp untwistedprofile.dcp

И в заключение кратко, чем и как я пользуюсь?

1. Если для камеры нет заготовленных профилей, я обрабатываю через Camera Standard. Если необходимо выполнить экспокоррекцию более 2 стопов, создаю invariate untwisted профиль с помощью dcpTool из стандартного Camera Standard.
2. Для каждой связки камер-объектив-фильтр использую свои dual-illuminant профили, сделанные в программе X-Rite ColorChecker Passport (twisted и invariate). ColorChecker соответственно снимаю при дневном свете в облачную погоду и второй снимок при лампе накаливания (лампочка Ильича).
3. Если есть возможность создаю простой профиль для определенных условий съемки и все фотографии с этого места обрабатываю этим профилем. Профиль создаю в X-Rite ColorChecker Passport (twisted и invariate).

Я никогда не корректирую цвет в конвертере, правлю только баланс белого. Исключение только когда нужно придавить цветовой рефлекс по быстрому. Если время позволяет, коррекцию цвета и в т.ч. согласование цветовой температуры делаю в Adobe Photoshop.

Я соглашусь, что не всякому нужны все эти шаманские танцы с профилями. Но профессиональная работа все же обязывает работать быстро и качественно. И профили в этом очень сильно помогают.

Удачи!

 

 

 

Добавить комментарий


Защитный код
Обновить