Обработка фотографий с большим динамическим диапазоном сюжета в UFRaw и GIMP

У многих фотографов, как начинающих, так и опытных, переходящих с пленки на «цифру», часто возникает вопрос, зачем фотографировать в RAW. И если для вторых часто достаточно ответа, что RAW — это цифровой негатив, то для новичков не всё так очевидно.

Минусы съёмки в RAW видны сразу:

  • низкая скорость записи фотографии на карточку;
  • сокращение числа фотографий в серии при серийной съёмке;
  • обязательность предварительной обработки фотографий на компьютере.

Но для того чтобы понять плюсы, нужно разбираться в цифровой фотографии.

Попробуем кратко описать плюсы, а затем продемонстрируем одну из техник, которые позволяют существенно улучшить результат съёмки в самой проблемной для цифровой фотографии области — съёмке сюжетов с большим динамическим диапазоном сцены (далее ДД).

Что же такое RAW? RAW — это цифровой негатив, то есть та информация, которую цифровой фотоаппарат получил с датчика изображения — светочувствительной матрицы. Кроме информации с матрицы — изображения, RAW включает данные EXIF — данные об экспозиции и настройках фотоаппарата (объектив, если сменный, фокусное расстояние, вид экспозамера…) и настройки баланса белого.

Любая камера — от игрушки за 50 долларов до профессиональной за несколько тысяч их же — снимает в RAW. RAW — это исходные данные снимка. Другое дело, что производитель часто не даёт владельцу камеры доступа к этим исходным данным из маркетинговых соображений. Для обработки RAW, то есть преобразования его в файл общепринятого формата вроде JPEG или TIFF, предназначены специальные программы — конвертеры.

При съёмке в формат JPEG камера после получения RAW производит следующие действия:

  1. Восстанавливает изображение в привычном нам виде из негатива RAW (выполняет обратное преобразование Байера — demosaicing).
  2. Применяет кривую преобразования яркости.
  3. Применяет установки баланса белого.
  4. Осуществляет шумоподавление.
  5. Повышает резкость снимка.

Вот в этих действиях камеры после получения самого изображения (RAW) и заключаются недостатки съемки в JPEG и, соответственно, достоинства съёмки в RAW режиме:

  1. Камера использует не самый лучший алгоритм восстановления информации из цифрового негатива. Ваш компьютер со специальной программой (таких существует довольно много) может сделать это лучше. Разные программы используют свои алгоритмы, и эти программы совершенствуются. Вы всегда можете открыть на компьютере старый снимок в новой версии конвертера и получить улучшенную детализацию и меньшее количество артефактов. Если снимок в JPEG — это уже невозможно.На примере UFRaw: программа основана на известной утилите dcraw Дэйва Коффина (Dave Coffin) http://www.cybercom.net/~dcoffin/dcraw/ и использует один из лучших в настоящее время алгоритмов восстановления изображения — адаптивный гомогенно-направленный (Adaptive Homogeneity-Directed, AHD). По сравнению с ранее использовавшимся алгоритмом — с переменным числом градиентов (Variable Number of Gradients, VNG) — программа позволяет получить лучшую детализацию изображения, практически сводя на нет цветовые артефакты, присущие VNG.
  2. Правильность выставленного на момент съёмки баланса белого (ББ) при съёмке в RAW не имеет никакого значения. Если ваша камера ошиблась с ББ, в этом нет абсолютно ничего страшного. Она ведь только записала свои «соображения» в файл RAW, но саму операцию наложения ББ не произвела! Вы сами выбираете настройки ББ при обработке снимка на компьютере из большого набора: из того, что посчитала правильным камера, из предустановок ББ (солнечно, облачно…), по образцу серого («пипеткой») или вообще на глаз, как вам нравится. Достоинство этого процесса заключается в том, что наложение ББ не произошло без вашего участия, а ведь оно не является полностью обратимой операцией. Если камера уже сделала это однажды, а потом ещё преобразовала результат в JPEG, то в точности восстановить правильное изображение, особенно в области пересветов, затруднительно.

    На примере UFRaw: программа позволяет воспользоваться всеми перечисленными способами в интерактивном режиме и выбрать лучший на ваш взгляд результат. Версия 0.10 корректнее работает с цветопередачей, так как выполняет преобразования с кривой освещенности и коррекцию насыщенности в цветовом пространстве CIE LCH(ab). Хотите улучшить уже сделанные снимки? Сконвертируйте их в новой версии программы! В этом одна из прелестей формата RAW.

  3. Камера не делала шумоподавление. Вы можете заметить — а разве это плохо, если камера понижает уровень шумов? Да, часто это плохо, если решение было принято за вас. Понижение шумов всегда сопровождается «размазыванием» снимка, понижением его резкости, и нужный вам баланс резкости и шумов камера может не обеспечить. Ярчайший пример плохого баланса — фотоаппарат Panasonic FZ50, для которого пользователи даже взломали прошивку, чтобы он не делал такое сильное шумоподавление. Кроме того, существуют программы для ПК, которые делают понижение шумов лучше вашей камеры, например, расширение GREYCstoration для GIMP.На примере UFRaw: к сожалению, на данный момент программа не содержит встроенных средств шумоподавления, что могло бы быть особенно ценным в пространстве с большей, чем 8 бит на канал, разрядностью. Однако, вы можете воспользоваться замечательными расширениями для GIMP или любыми другими средствами, в том числе, коммерческими.
  4. Камера не делала повышение контурной резкости. Зачем вам вообще высокая резкость, если вы сняли, например, портрет? Чтобы были видны все дефекты кожи? Эта проблема стоит ещё острее, если фотография сделана с высокой чувствительностью высоким значением ISO). Результат внутрикамерной обработки, представляющей собой комбинацию шумоподавления с последующим повышением контурной резкости, может вас не устроить. Впрочем, это зависит от модели камеры и от сюжета.На примере UFRaw: в настоящее время программа не имеет встроенных средств повышения контурной резкости. Соответствующие встроенные средства и расширения есть в GIMP, например, refocus.
  5. Камера не сделала преобразование 12-14 бит RAW8 бит JPEG. Это действие необратимо, как и предыдущие. Мало того что JPEG — сам по себе формат с потерей качества, так на этом этапе происходит ещё и дополнительная потеря полезной информации.На примере UFRaw: вы можете сохранить файл в формате JPEG с любым нужным вам качеством вплоть до 100%.
  6. Вы можете менять экспозицию после того, как сделали снимок! Зачастую владельцы зеркальных цифровых фотоаппаратов (Digital Single-Lens Reflex camera, DSLR), имеющих достаточный запас по шумам, снимают в RAW с недодержкой в 1/3-0.5 шага. Это делается для того, чтобы избежать пересветов при экспозиции на этапе съёмки. Такие пересветы неисправимы, так как полезная информация «обрезается» в области насыщения и просто исчезает. Однако, если не допустить пересветов при экспозиции снимка, то потом при конвертации из RAW фотограф может решить сам, какой уровень яркости снимка он хочет получить.На примере UFRaw: возможна коррекция ±3 EV. Конечно, не нужно забывать про шумы с одной стороны и засветку с другой, так что правильную экспозицию и фотовспышку ещё никто не отменял.
  7. И самое для нас главное в рамках этой статьи: камера не использовала свою кривую преобразования яркости.На примере UFRaw: программа позволяет редактировать, запоминать и открывать из файла кривые преобразования яркости, легко переключаться между последними открывавшимися кривыми.

Немного теории о динамическом диапазоне

Глаз живого существа является самым совершенным известным науке датчиком изображения с точки зрения динамический диапазон (далее ДД) — отношения максимального и минимального значений яркости, который он может различить (под минимальным значением тут понимается цветовая информация, различимая на фоне шума). Оценка этого числа для человеческого зрения — 220. Ни одно из существующих технических средств не позволяет реализовать такой динамический диапазон.

Как это удается глазу? Глаз — сложный инструмент, действующий совместно с мозгом. Глаз подстраивается под яркость каждого участка изображения в отдельности. Когда мы смотрим на дерево на фоне неба, наш глаз различает и небо, и дерево, хотя яркость их существенно отличается. При этом глаз различает отдельные детали, для чего он понижает свою светочувствительность для неба и повышает её для дерева, уравнивая яркости.

Если же мы регистрируем картинку техническими средствами, такая избирательность для разных объектов в одном кадре пока что технически неосуществима. И если небо правильно проэкспонировано (т.е. экспозиция осуществлялась по небу), то дерево будет выглядеть тёмным силуэтом. Если же выставить экспозицию по дереву, небо будет переэкспонировано, «пересвечено», «выбито».

Это и есть сцена с высоким ДД. Если позволяет сюжет, проблему можно решить на этапе съёмки: относительно близкий темный объект на светлом фоне можно подсветить «заполняющей» вспышкой и уравнять яркости. Но очевидно, что пейзаж, просто удалённый объект или более светлый объект на тёмном фоне не поддадутся такому простому решению. И мы оказываемся перед необходимостью обработки изображения с высоким ДД.

Обработка RAW изображения с высоким ДД и его последующая коррекция в GIMP

Итак, вы сфотографировали изображение с высоким ДД в режиме RAW (файл примера можно скачать). Правильная экспозиция в этом случае, если необходимо получить максимальное качество — по наиболее яркому объекту, не допуская пересветов или сводя их к минимуму. При такой экспозиции получается следующий результат:

Экспозиция по небу

Это солнечный день, час дня, осень. Красивое небо, не правда ли? А где же то самое дерево? Вот именно так и обстоит дело в различии между яркостями.

Что же нужно сделать с изображением, чтобы оно приобрело нормальный вид? Очевидно, нужно поднять яркость тёмных объектов. Делать это при помощи экспокоррекции не представляется возможным, так как в этом случае повысится яркость и остальных частей сцены, включая неба, которое станет просто белым пятном.

Экспозиция по земле

Результат применения экспокоррекции +2.21 EV к предыдущему изображению в UFRaw. Небо «выбито».

Очевидно, что коррекция должна быть неодинаковой: сильной для тёмных участков и практически отсутствовать для ярких. Это реализуется с помощью кривой коррекции яркости (далее — кривой). Кривая ставит в соответствие исходной яркости каждого пиксела снимка новую яркость. Фактически кривая — это графическое изображение функции. По горизонтали (ось абсцисс) — исходная яркость, по вертикали (ось ординат) — яркость результата.

Используемая кривая:

Кривая в UFRaw

А вот и результат:

Результат применения кривой в UFRaw

Результат, в целом, неплох: деревья видны, небо — тоже. Давайте проанализируем снимок и сравним его с оригинальным. К деревьям вопросов нет. Обратите внимание на небо: оно стало значительно ярче, его контраст уменьшился, исчез колорит. В этом и заключается проблема в использовании кривых — меняется контраст отдельных участков снимка.

Рассмотрим использованную кривую. Кривая проходит выше линейной, что обеспечивает повышение яркости снимка. Её форма подобрана таким образом, чтобы максимально сохранить контраст исходной сцены и не выбелить картинку. Наклон этой кривой — это и есть контраст снимка. На начальном участке кривой максимальный наклон обеспечивает поднятие яркости без образования белесости. На среднем участке кривая имеет примерно постоянный наклон, который совпадает с исходным наклоном. А вот на высоких яркостях нам пришлось понизить наклон, чтобы не было пересветов. И в результате мы понизили контраст сильно освещённых объектов сцены, то есть неба.

К сожалению, использование кривой в любом случае приводит к изменению контраста отдельных участков сцены. Если мы изменяем яркость в каком-либо диапазоне значений, мы вынуждены либо делать часть снимка засвеченной, либо понижать наклон кривой на каком-либо её участке. Чем поступиться? Контрастом в каком диапазоне яркостей пожертвовать? Это решать вам самим, исходя из сюжета каждого отдельно взятого снимка.

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

Обратите внимание на уже сделанные нами варианты одного и того же снимка RAW. Первый был открыт с линейной кривой и проэкспонирован по облакам. Второй — с кривой с рисунка и проэкспонирован по деревьям и траве, то есть по тем объектам, яркость которых нас не устроила в первом варианте (Под экпозицией в данном случае понимается экспокоррекция — верхний ползунок «Экспозиция» в программе UFRaw). Таким образом, в GIMP должны быть открыты два варианта одного и того же снимка. В более светлом снимке создайте новый слой с прозрачностью («Слой→Новый слой»).

А теперь запаситесь терпением и выделите на более тёмном снимке облака и воду. Для выделения воспользуйтесь инструментом Выделение связанных областей. Добавляя к уже выделенному (с удерживаемой нажатой клавишей Shift) и регулируя избирательность инструмента (ползунок «Порог» на панели свойств инструмента), можно с достаточной аккуратностью выделить облака и воду.

Выделение облаков и воды

Здесь есть одна существенная деталь: необходимо обеспечить плавный переход между изображениями, иначе на границе будут хорошо заметны дефекты нашего выделения — артефакты из-за разницы в яркости снимков. Для этого воспользуйтесь возможностью GIMP рассматривать выделение как имеющее переменную прозрачность. Сначала увеличьте выделение на 5 пикселов («ВыделениеУвеличить»), а затем растушуйте его на 5 или даже 7-10 пикселов («Выделение→Растушевать»).

Скопируйте выделенное изображение и вставьте его в созданный новый слой более светлого изображения. Совместите изображение верхнего слоя с нижним до совпадения, двигая вставленное выделение мышью, затем прикрепите плавающее выделение.

Фото почти готово. Возможно, вам придется немного уменьшить непрозрачность верхнего слоя (ползунок «Непрозрачность» в диалоге слоёв), чтобы совсем исключить заметную полосу на границе выделения, но это зависит от точности сделанного нами выделения. Всё. Изображение можно сохранять.

Результат сведения

Разница налицо, не правда ли?

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

    1. Повторите шаги с экспозицией, поместив снимки в два слоя. В верхнем слое (видимом) должен быть снимок с положительной экспокоррекцией — более светлый. В нашем предыдущем примере это был бы снимок с правильно экспонированным деревом, но пересвеченным небом.
    2. Создайте новый прозрачный слой и перейдите в него. Дальнейшие действия выполняются в этом слое.
    3. Примерно выделите правильно освещённую часть изображения (не пересвеченную) и залейте её белым.
    4. Инвертируйте выделение («ВыделениеИнвертировать») и залейте результат чёрным.

Композиция из слоёв

  1. Снимите выделение («ВыделениеСнять») и размойте границу между чёрным и белым цветом («ФильтрыРазмываниеГауссово размывание…»). Радиус размывания должен быть больше предлагаемых по умолчанию пяти пикселов.
  2. Выделите всё изображение и скопируйте его в буфер обмена (Ctrl+A, Ctrl+C).
  3. Сделайте верхний слой невидимым (нажмите левой клавишей мыши значок с глазом напротив слоя).
  4. Перейдите во второй слой (более светлое изображение) и создайте маску слоя из меню «Слой→Маска→Добавить маску слоя», выбрав в диалоге тип маски «Альфа-канал слоя». Это означает, что маска будет определять прозрачность слоя — более тёмные участки маски делают слой прозрачным, более светлые — непрозрачным. В диалоге слоев напротив значка с изображением слоя появился белый прямоугольник — маска слоя.
  5. Щёлкните маску слоя левой клавишей мыши, выделяя её и вставьте в неё изображение из буфера обмена (Ctrl+V), прикрепив получившийся плавающий слой (значок с якорем в диалоге слоев).
  6. Вот и все! Фактически, здесь повторяется предыдущая методика, но без выделения.

Долго? Всё равно пришлось руками выделять границу? Не подходит для сложных границ? Тогда попробуйте следующий способ — на мой взгляд, один из самых совершенных из не требующих ручного выделения.

  1. Повторите шаги с экспозицией, поместив снимки в два слоя. В верхнем слое (видимом) должен быть снимок с положительной экспокоррекцией, т.е. более светлый. В нашем предыдущем примере это был бы снимок с правильно экспонированным деревом, но пересвеченным небом.
  2. Сделайте копию верхнего слоя («Слой→Создать копию слоя»).
  3. Обесцветьте созданную копию слоя («Цвет→Обесцветить»), скажем, с параметром «Яркость».
  4. Инвертируйте цвет полученного полутонового изображения («Цвет→Инвертировать»).
  5. Выделите всё изображение, скопируйте его в буфер обмена (Ctrl+A, Ctrl+C).
  6. Сделайте верхний слой невидимым (нажмите в диалоге слоя левой клавишей мыши значок с глазом).
  7. Перейдите во второй слой (более светлое изображение) и создайте маску слоя («Слой →Маска→Добавить маску слоя»). В диалоге выберите «Альфа-канал слоя». Это означает, что маска будет определять прозрачность слоя: более тёмные участки маски делают слой прозрачным, более светлые — непрозрачным. В диалоге слоев напротив эскиза слоя появится белый прямоугольник — маска слоя.
  8. Щёлкните маску слоя левой клавишей мышки, выделяя её. Вставьте в неё изображение из буфера обмена (Ctrl+V). Прикрепите плавающий слой (значок с якорем в диалоге слоев).

    Композиция из слоёв с маской

  9. Убедитесь, что маска по-прежнему является активной (обведена белой рамкой в диалоге слоев).
  10. Теперь осталось произвести размывание маски слоя, иначе результирующее изображение потеряет резкость. Проще всего это сделать без вызова диалога с настройками через меню «Фильтры→Размывание→Размывание».

А что стало с нашим изображением?

Результат сведения с маской

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

  1. Вызовите диалог коррекции цветов кривыми («Цвет→Кривые…») и сместите крайнюю правую точку кривой по горизонтали до уровня максимальной яркости (правая точка на гистограмме).
  2. Перемещая крайнюю левую точку по вертикали, добейтесь приемлемого результата как комбинации яркости из двух изображений.

Кривая в GIMP

Например, такого:

Результат применения кривой в GIMP

Обратите внимание на следующие моменты:

  1. Эта методика обеспечила качественный переход по границам зелень-небо, нет инородных светлых или тёмных полос.
  2. Кривизна кривой коррекции не менялась и была оставлена прямой линией, поэтому деревья получились несколько темнее, чем на снимке с экспокоррекцией. Меняя кривую, можно поднять яркость средне и слабо проэкспонированных частей снимка.

Другой вариант кривой в GIMP

Результат может стать таким:

Результат применения другой кривой в GIMP

Какой результат с какой из кривых лучше — решать вам.

Сравните результат нашей первой методики (ручное выделение областей снимка) с результатами полуавтоматических действий. Очевидно, что первая методика гибче, поскольку она позволяет комбинировать произвольные участки изображений. Смысл второй методики состоит в том, что с одного из изображений берутся пикселы, яркость которых выше или ниже некоторого порога. Использование самого изображения в качестве маски прозрачности позволило добиться плавности перехода между двумя слоями — изображениями.

Если же интересующие нас участки изображения находятся внутри диапазона яркостей, а не на его границе, проблема существенно усложняется. Обратите внимание на воду в первом варианте — она была скопирована из того же снимка, откуда и небо. Это было сделано из соображений логики и композиции. А вот при использовании второй методики это не получилось. Оказалось, что яркость воды находится на уровне общей яркости того, что нужно оставить на картинке — деревьев и травы. И её не уберёшь как небо.

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

Ещё пример

Если снимок обладает не слишком большим ДД, но все же требует коррекции, можно ограничиться пунктами 1-9 предложенной методики, то есть не редактировать кривую яркости созданной маски прозрачности. Включая и выключая предосмотр диалога редактирования кривой, посмотрите, что является более выразительным и естественным — увеличение яркости менее освещённой части изображения или сохранение более высокого контраста сюжета в целом.


Автор: Александр Рабцевич
Лицензия: GNU Free Documentation License 1.0

Оставьте первый комментарий

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*


Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.