Почему цвета в RAW-файлах отличаются от JPEG-файлов

Почему цвета в RAW-файлах отличаются от JPEG-файлов

На своих мастер-классах по обработке фото я часто слышу вопрос: почему цвета в рав-конверторе отличаются от цветов в jpeg-файле из камеры. Пожалуй, расскажу об этом всем :)

Причин тому несколько.

Первая и самая главная причина – закрытость технологий и коммерческая тайна. Ни Canon ни Nikon не дают сторонним производителям RAW-конверторов спецификаций на свои форматы файлов и эталонных алгоритмов по их обработке. Поэтому сторонним разработчикам приходится заниматься обратным инжинирингом – «взламывать» эти форматы. Т.е. медотом научного тыка угадывать что где хранится и как работать с этими данными. Отсюда и получается что разные RAW-конверторы роботают по-разному. И каждая команда программистов смогла сделать на этом поприще что-то лучше, а что-то хуже. И получить идентичную картинку с родным конвертором очень и очень сложно. Фактически, нужно дизассемблировать оригинальный конвертор и передрать алгоритм один-в-один. А это дело попахивает судом :)

Следующая причина кроется в коэфициентах. Алгоритмы получения цвета из субпикселов сложные. В них участвуют много разлиных коефициентов. И многие из коэфициентов отличаются для различных матриц, применяемых в камерах. На практике это означает что цвета на Canon 30D и Canon 40D отличаются. И всем производителям конверторов приходится стоить профили для каждой камеры. Да, такие же профили какие есть для мониторов и принтеров есть и для фотокамер. И от этих профилей зависит многое. А именно: цветопередача и контраст картинки. Само собой разумеется что производители камер могут лучше и точнее построить такой профиль. И к тому же могут построить его по методике, отличной от той, которую использует, к примеру, Adobe.

Поэтому цвета так разительно отличаются в стороннем RAW-корверторе и в JPEG-е из камеры (и даже в превью фотографии, которая встроена в RAW-файл). Для Canon в паре с конвертором от Adobe это обычно означает что цвета завалены в сторону красного цвета.

Яркость и контраст в JPEG-файлах отличается от RAW-файлах немного по другой причине. JPEG-файлы – восьмибитны. Каждый пиксел имеет 256 градаций яркости. RAW-файлы – 12-14 битны и имеют от 4096 до 16384 градаций яркости. Т.е. динамический диапазон у RAW-файлом намного шире и при конвертации его в 8-битное представление возможны различные варианты. Т.е. от того как ужать диапазон будет зависеть контраст изображения. И производители могут применять различные алгоритмы для этой задачи. Можно просто отсечь «лишнюю» информацию, можно попытаться сделать нечто на подобии Tone Mapping в HDR, можно играться с локальным контрастом.

Вот так-то. Но к счастью, мы все-равно делаем цветокоррекцию чаще всего «на глаз» и можем подогнать картинку под наш вкус независимо от огрех или особенностей работы конкретного RAW-конвертора.