6/15/2009

Luminance HDR: создание HDR в Linux из нескольких кадров

В этой заметке приводится краткое описание и впечатления по созданию изображений с высоким динамическим диапазоном HDR (High Dynamic Range). Изображения HDR в Linux можно с помощью программы Qtpfsgui, которая теперь называется Luminance HDR.

Небольшой исторический экскурс
Как справедливо отмечают авторы ресурса HDRmania, первое сообщение о процессе компрессии динамического диапазона обычных цифровых изображений, снятых с экспокоррекцией, появилось в 1993 г. А в 1995 году последовало появление соответствующей математической теории.
В 1997 году на конференции SIGGRAPH (Special Interest Group on GRAPHics and Interactive Techniques) Пол Дебевек (Paul Debevec), исследователь из Института Южной Калифорнии, представил метод соединения нескольких изображений, сделанных с разной экспозицией, для формирования единого HDR изображения. С ростом популярности цифровых фотоаппаратов и удобного для использования программного обеспечения термин HDR начал широко применяться для обозначения этого процесса. Более подробный обзор, с указанием на научные статьи, есть у меня на английском.


Cъёмка HDR-изображений
Для того, чтобы получить HDR-изображение, потребуется снять несколько кадров с разным значением экспозиции (или экспокоррекции). Напомню, что экпокорреция это поправка в экспозицию снимка относительно той, которая определена при помощи экспонометра. Для регистрации HDR-изображения:
  1. Устанавливаем камеру на штативе.
  2. Переводим камеру в ручной режим установки экспозиции. Выберите нужное значение диафрагмы для вашего кадра (например, f/8 или меньше, если вам нужна большая глубина резкости) и установите минимальное значение ISO.
  3. Изменяем освещённость в самой яркой части кадра (точечным замером или в режиме Av, чтобы учесть только её) и отмечаем время экспозиции. Сделайте то же самое с самой глубокой тенью в кадре.
  4. Определяем число и величину нужных экспозиций. Для этого возьмите за основу выдержку, измеренную для светлой части. Умножьте это число на 4, чтобы получить следующее значение экспозиции, отличающееся на 2 EV. Умножайте на 4 для получения следующих значений, пока не превысите экспозицию, измеренную для тени. Для большинства кадров вне помещения, не включающих солнце, 3 экспозиций с шагом 2 EV часто достаточно, чтобы покрыть весь динамический диапазон.
Напомню, что сдвиг экспозиции на 1 EV означает изменение количества света, попавшего на фотоматериал, в 2 раза. Для создания HDR-снимка часто достаточно сфотографировать три кадра: с экспокоррекцией -1 EV, 0 EV и +1 EV.


Работа с Luminance HDR в Linux

Трудновыговариваемое название программы Qtpfsgui объясняется самими авторами так: Qt это библиотека Qt4 для отображения графических элементов, pfs - главная внутренняя библиотека, а gui - Graphical User Interface, графический интерфейс пользователя. На такие названия, конечно, хочется попенять авторам - и они таки услышали! Теперь программа называется Luminance HDR. Сайт программы
Luminance HDR всё там же. Новые версии становятся всё удобнее и гламурнее:
From forBlogs


Итак, фотографии сняты и теперь можно приступить к созданию HDR-снимка. Запускаем Luminance HDR в Linux и выбираем все файлы изображений для HDR-фотографии сразу. После этого нас спросят об алгоритме построения HDR снимка. Это показано на рисунке ниже:


После этого будет рассчитано HDR-изображение из указанных снимков. Созданное изображение появится в главном окне программы:


Созданное изображение можно сохранить в один из форматов, поддерживающих HDR:
  1. OpenEXR (расширение: exr )
  2. Radiance RGBE (расширение: hdr)
  3. Tiff: 16bit, 32bit (float) и LogLuv (расширение: tiff)
  4. Raw (различные расширения)
  5. PFS native format (расширение: pfs)
Если же требуется просматривать созданное изображение обычными графическими просмотрщиками, имеет смысл прибегнуть к тональной компрессии снимка и сохранить его в JPEG/TIFF. Тональная компрессия это преобразования тональных значений изображения из более широкого диапазона в более узкий. Например, HDR изображение с динамическим диапазоном 100 000:1 будет преобразовано в изображение с тональными значениями в диапазоне от 0 до 255. Для этого нажимаем на кнопку Tonemap the HDR и выбираем один из методов тональной компрессии. Qtpfsgui содержит 8 алгоритмов тонального отображения, среди которых можно отметить следующие алгоритм Drago и Fattal.

Алгоритм Drago предназначен для имитирования восприятия человеческого глаза и полезен, когда нужно добиться естественных тонов. Алгоритм Fattal хорош для создания сюрреалистических, очень эффектных фотографий, однако он усиливает шумы и может создавать при одних и тех же параметрах из HDR фотографий при тоновой компрессии фотографии, выглядящие по-разному.

Для примера приведу HDR-изображение, которое я снял своей древней как мамонт камерой Casio QV-4000: три фотографии со значениями экпокоррекции -2EV, 0EV и +2EV пересчитаны в изображение с высоким динамическим диапазоном:

После применения тональной компрессии полученное HDR-изображение можно сохранить в форматах JPG или TIFF.

Ссылки
Ответы на часто задаваемые вопросы по HDR можно найти тут (на английском) и здесь, а так же можно посмотреть на образцы фотографий. Скачать Qtpfsgui можно на сайте авторов.

12 комментариев:

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

    ОтветитьУдалить
  2. 2 Shortbread комментирует...
    Спасибо за найденные косяки, правки внёс.

    Именно с Вашей помощью я стал дебианщиком, ещё с Саржа.
    Очень рад :-)

    ОтветитьУдалить
  3. "Измяем освещённость в самой яркой.." - ИзмЕНяем
    "После этого нас спросят об алгоритме, построение HDR снимка." - кажется что-то не так, что может быть "..алгоритме построения HDR снимка"?

    Очень вовремя появился пост, только на этих выходных пытались вспомнить, как же называется эта штука.

    ОтветитьУдалить
  4. Ну вот. А то я всё photomatix'ом под win пользовался. Через virtualbox. Спасибо, автор.

    ОтветитьУдалить
  5. 2 triklozoid комментирует...

    Спасибо за правки, внёс в пост. ЧТо-то спелчекер совсем мышей не ловит :-)

    Очень вовремя появился пост, только на этих выходных пытались вспомнить, как же называется эта штука.
    Давно собрался написать, да всё руки не доходили. Рад, что пригодилось.


    2 Qosko комментирует...
    Ну вот. А то я всё photomatix'ом под win пользовался.
    Не знаю, кто такой фотоматикс. КТПФСГУИ в целом справляется с задачей, хотя интерфейс, если честно, немного скудоват.

    ОтветитьУдалить
  6. Вот если бы в фотографии-примере сделать ещё пару снимков с уменьшением экспозиции, то было бы намного интереснее, ибо небо получилось бы полностью незасвеченным.

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

    ОтветитьУдалить
  7. В qtpfsqui хоть и есть функция автоматического выравнивания снимков, но она довольно часто ошибается и создает неприятные артефакты. Также не очень хорошо справляется с задачей сведения кадров, в которых присутствуют движущиеся объекты. Лучше всего, на мой взгляд, с этим справляется фотошоп.

    А наиболее приемлемый алгоритм тональной компрессии - Mantiuk. С помошью него можно добиться как вполне естественных изображений, так и сюрреалистичных эффектов.

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

    ОтветитьУдалить
  8. Владислав, делал до 8-ми снимков с разными экспозициями без штатива, и qtpfsgui их отлично сводил, используя align_image_stack из hugin.

    Алгоритм Mantiuk тоже является моим любимым :)

    ОтветитьУдалить
  9. хм, что то на последней картинке больше на обычную фотографию похоже (:

    у меня, например, вот так (photomatix под вайном)

    http://lh4.ggpht.com/_K6UfCzFYeGM/Sj42LSoYGhI/AAAAAAAAAK8/C-nfWYkCzSQ/s912/hdr.png

    ОтветитьУдалить
  10. Fatroll, а то, что вы снимали, прекрасно влезает в LDR, поэтому делать HDR бессмыслено :)

    ОтветитьУдалить
  11. Evtomax, а что, по-вашему, должно не влезать в LDR и влезать в HDR?)

    ОтветитьУдалить
  12. "Изменяем освещённость в самой яркой части кадра"
    Измеряем всё ж.
    Спасибо за статью!

    ОтветитьУдалить