Чтобы обойти это ограничение в последнее время часто применяется техника известная как High dynamic range imaging (HDR). Идея её состоит в том, что берутся несколько кадров одной и той же сцены с разным уровнем экспозиции. Затем по совокупности кадров вычисляется сколько света должно было падать на каждый пиксель изображения. Эта информация позволяет построить новое изображение, как если бы динамический диапазон камеры был сколь угодно широк. При этом информация о тёмных градациях изображения берётся в основном со светлых кадров, а информация о светлых градациях — с тёмных. Полученные изображения часто очень красивы и приближены к нашему естественному восприятию сцен с высоким контрастом.
В GNU/Linux есть много программ, которые позволяют обрабатывать изображения, используя технику HDR. В частности, надо упомянуть Cinepaint (HDR in Cinepaint tutorial) и Qtpfsgui (Руководство по Qtpfsgui (на английском)). Qtpfsgui, пожалуй, обладает на сегодняшний день наиболее удобным интерфейсом. А для съёмки HDR необходимо иметь камеру с поддержкой автовилки экспозиции ну и штатив.
Однако надо учитывать, что большинство любительских камер могут делать в режиме автовилки максимум 3 кадра, и шаг экспозиции между ними обычно ограничен ±2 EV, а то и всего ±1 EV (как в моей камере). Это позволяет расширить динамический диапазон соответственно на 4 или лишь 2 ступени. Хорошо, но не очень много.
В этом случае часто может быть проще и быстрее использовать плагин Exposure Blend plugin для GIMP (сайт, похоже, часто не работает, но в Debian этот плагин можно найти в пакете
gimp-plugin-registry
). Результат работы этого плагина не является настоящим HDR. Вместо этого с помощью масок берутся тёмные детали с яркого снимка, а светлые детали с тёмного, и объединияются в одном изображении за счёт наложения слоёв. Однако результат бывает довольно хорош. И даже честный HDR по трём кадрам с любительской камеры и шагом экспозиции ±1 EV не даст результата лучше.В GIMPе плагин запускается из меню
Расш. / Photo / Exposure Blend
. Нужно указать ему три файла (нормальный, тёмный, светлый). Большинство настроек хороши по-умолчанию. В результате будет создано изображение с тремя слоями (нормальный внизу, над ним слой с тёмными деталями и слой со светлыми деталями). При желании можно поиграться с прозрачностью слоёв.Конечно, если камера поддерживает большой шаг автовилки — это хорошо. При съёмке лучше задавать максимально возможный. Результаты будут лучше. К сожалению мой фотоаппарат умеет делать максимум ±1EV, а этого не достаточно.
Поэтому для этого примера я избрал немного иной подход. Я снял одно изображение в формате RAW (12 бит на цветовой канал), а затем обработал его в UFRaw, сделав три изображения: одно нормальное и два с коррекцией экспозиции ±2EV.
Вот что получилось (ссылки ведут на более крупные изображения, лежащие на imageshack.us, желающим могу выложить RAW или полноразмерные версии):
+ + =
Сравните обычный кадр с композитным изображением, полученным с помощью Exposure Blend (внизу):
В изображении, созданном Exposure Blend, детали более отчётливы, чем в исходном изображении. И в тенях (фон, шары, поверхность), и в светлых областях (воск свечи). И это сделано компактной камерой и всего несколькими кликами мыши!
Я специально не исправлял гамму и не трогал цветовых кривых. Одно из ключевых преимущества использования Exposure Blend перед использованием HDR — это сохранение естественной цветопередачи. В случае HDR задача преобразования композитного изображения с расширенным динамическим диапазоном к обычному цветовом пространству совсем не тривиальная (попробуйте повторить результат в Qtpfsgui!). При использовании Exposure Blend никакой необходимости подгонять и настраивать особенности цветопередачи нет. Изображения всегда выглядят натурально.
Можете взглянуть также на некоторые другие изображения, полученные с помощью Exposure Blend (ссылки на Flickr):
и другие фото с тэгом exposureblend
P.S. Эту заметку я написал также по-английски: Try Exposure Blend plugin for GIMP to fake HDR.
P.P.S. Как отметил в комментариях nagos, в будущих версиях пакета enblend появится также утилита enfuse, позволяющая совмещать кадры с разной экспозицией (в том числе более 3); в данный момент она доступна в версии enblend для разработчиков. Можете посмотреть также заметку про создание HDR в qtpfsgui, написанную nagos.