Автор: Игорь Сиваков
13.02.2004 00:05:00
Взято отсюда http://fcenter.ru/online/hardarticles/videos/8515
Начать наш разговор о HDRI хочу с того, что приведу один из самых эффектных и красивых примеров практического применения этой технологии – для реалистичного («как в жизни») освещения синтетических изображений, созданных в компьютерных программах трехмерного моделирования и анимации:
Впечатляет, не правда ли? Однако, освещение – это далеко не все, что может HDRI.
Технология High Dynamic Range Image (HDRI) претендует на смену стандартов описания изображений для отображения и вывода на компьютерных устройствах. Пожалуй, время существования привычных RGB-изображений уже сосчитано.
Основополагающая идея, лежащая в основе HDRI очень проста – описывать световые характеристики (цвет и интенсивность) пиксела, формирующего изображение, реальными физическими величинами. Чтобы понять смысл и последствия этого принципа, необходимо вспомнить модель описания изображений, принятую в настоящее время.
Сейчас универсальной моделью описания изображений является аддитивная аппаратно-зависимая модель RGB (Red, Green, Blue), которая разрабатывалась для устройств отображения таких, как CRT (Cathode Ray Tube) – то есть, обычный компьютерный монитор. В соответствии с этой моделью, произвольный цвет можно представить как сумму трех основных цветов – красного (Red), зеленого (Green) и синего (Blue) с правильно подобранными интенсивностями. Интенсивность каждого основного цвета представляется в виде 256 оттенков (градаций интенсивности). Число 256, в принципе, довольно произвольно и появилось в результате компромисса между производительностью графической подсистемы компьютера, требованием фотореалистичности изображений и двоичной природой компьютерных вычислений. В частности, в результате исследований было выяснено, что 16,7 миллионов оттенков (256х256х256) вполне достаточно для передачи изображений фотографического качества, к тому же, 256 довольно просто кодируется в двоичной системе как 2^8, т.е. один байт.
Итак, согласно модели RGB, черный цвет представляется как (0,0,0), то есть полное отсутствие интенсивности, а белый – как (255, 255, 255), т.е. цвет с максимальной интенсивностью трех основных цветов. Очевидно, что произвольный цвет в RGB описывается триадой целых чисел, использование вещественных чисел (чисел с плавающей запятой – например, 1.6 или 25.4) в рамках этой модели недопустимо, а сами числа являются «фиктивными», то есть, не имеют ничего общего с реальными физическими величинами освещенности. Еще одно интересное свойство 8-битного представления интенсивности – дискретность. Известно, что максимальная светимость экранов современных мониторов составляет около 100-120 cd/m^2. Если разделить эту величину на 256 оттенков, получим приблизительно 0,47 cd/m^2 – такой интервал яркости разделяет два соседних оттенка. Таким образом, изменение яркости на мониторе дискретно и величина дискретизации (можно ее еще назвать порогом чувствительности к градациям яркости) составляет 0,47 cd/m^2, если выкрутить регулировку яркости монитора на максимум и около 0,4 cd/m^2, если регулировка яркости установлена на 70-80% яркости.
Используя термин «произвольный цвет», я на самом деле вовсе не имел ввиду любой различаемый человеческим глазом оттенок света. Человек видит гораздо больше, чем могут воспроизводить многие технические устройства. Если говорить о CRT, то основным ограничивающим воспроизводимую световую гамму фактором являются физико-химические свойства люминофоров, используемых для покрытия экрана. В частности, свойства излучения света люминофорами при бомбардировании их пучком электронов. И основными ограничивающими свойствами здесь являются максимально доступная люминофору яркость и монохромность цвета основных каналов. Увеличение яркости свечения люминофора достигается увеличением напряжения (энергии бомбардирующих электронов), но яркость возрастает не беспредельно. При достижении некоторой пороговой величины увеличение напряжения больше не увеличивает яркость (а только риск сжечь монитор :). Эта пороговая величина носит название величины насыщения и является верхней границей динамического диапазона яркостей устройства отображения. Порог насыщения монитора гораздо меньше, чем предельная для человеческого глаза яркость. Таким образом, существует целая область яркостей с высокой интенсивностью, и соответственно – цветов, доступных восприятию человека и недоступных для отображения на мониторе, каким бы хорошим он ни был.
С другой стороны, разрешающей способности монитора по яркости недостаточно вблизи темной области цветов (цветов с малой интенсивностью от 0 до 10 cd/m^2). Другими словами, глаз человека способен замечать гораздо более тонкие изменения яркости малой интенсивности, чем это доступно монитору. Монитор слишком «груб» при малых интенсивностях света и слишком «ограничен» в светлой области света по отношению к человеческому зрению.
Отношение самой большой интенсивности к самой малой, доступных для отображения данным устройством, называется его динамическим диапазоном. Таким образом, динамический диапазон обычного монитора составляет 256:1 в «фиктивных» единицах градации яркости или 100:1 cd/m^2 в абсолютных радиометрических единицах. На самом деле, динамический диапазон монитора в реальных условиях несколько меньше. Во-первых, редко кто выставляет яркость монитора на максимум – себе дороже. Во-вторых, в реальных рабочих условиях всегда присутствует окружающий свет (дневное освещение или искусственное освещение в офисе), который добавляется к свечению монитора. Это, в частности, приводит к тому, что черный цвет на экране монитора – это всегда интенсивность и цвет окружающего света.
Еще одним важным свойством отображения на мониторе является его нелинейность – яркость свечения монитора не пропорциональна приложенному напряжению. Закон, связывающий подаваемое на монитор напряжение u и вызываемую им интенсивность свечения люминофора I выглядит следующим образом:
где g – гамма — коэффициент, типичная величина которого для монитора составляет 2.5, k – некоторое постоянное число. Очевидно, что нелинейность устройства отображения также необходимо учитывать при описании изображений, например линейными величинами реальной светимости. Гамма-коррекция изображения может приводить к тому, что RGB описание изображения, по причине своей аппаратной зависимости, может содержать значение гамма – коэффициента конкретного монитора, на котором выполнялась коррекция цвета.
Разрешение по яркости, нелинейность, насыщение, динамический диапазон – все эти свойства присущи не только монитору, но и другим техническим устройствам записи и отображения – фотокамерам, сканерам, принтерам. Правда, их численные значения, естественно, будут другими. Например, динамический диапазон фотослайда составляет 1000:1, а газетной черно-белой печати – 10:1.
Подведем итог. Принятая сегодня модель использует для представления изображений три основных канала (R, G, B) с дискретными интенсивностями низкого динамического диапазона (256:1 или 100:1 для CRT), описываемого целыми числами (8 бит на канал), не являющимися реальными (радиометрическими) линейными величинами светимости. Такое описание получило название LDRI – Low Dynamic Range Image.
Зрение человека является предметом пристального изучения уже довольно длительное время и сейчас накоплена обширная база экспериментальных данных о его свойствах. Хотя этих данных все еще недостаточно для построения исчерпывающей математической модели зрения, имеющиеся данные позволяют делать ряд важных и интересных заключений в тех или иных конкретных ситуациях.
Динамический диапазон зрения человека лежит в пределах от 10^-6 до 10^8 cd/m^2, то есть, составляет 100 000 000 000 000:1, или 14 порядков величины. Правда, глаз не может видеть свет из всего этого диапазона одновременно – максимальный диапазон интенсивностей, доступных глазу человека «зараз» составляет что-то около 10 000:1, а поскольку зрение человека фиксирует по отдельности интенсивность света и его цвет, вся доступная глазу одновременно гамма светов составляет: 10 000 оттенков яркости х 10 000 оттенков цвета, то есть, 10^8 цветов. Приспосабливание зрения к более широкому диапазону освещенности осуществляется посредством механизма, известного как адаптация. Когда вы входите с улицы в темное помещение (например, в кинозал, где уже началась демонстрация фильма), потребуется некоторое время, чтобы глаза вновь обрели способность видеть. Аналогично, при смене темного окружения на светлое, зрению также потребуется время для адаптации.
Далее, известно, что человек может раздельно фиксировать интенсивность и цвет света. Это обусловлено двумя типами рецепторов сетчатки глаза – палочками и колбочками. Палочки регистрируют изменение интенсивности освещения и практически нечувствительны к цвету – это так называемое ахроматическое или «ночное» зрение. Палочки активны при малых интенсивностях цвета в диапазоне от 10^-6 до 10 cd/m^2, получившим название в литературе scotopic. Колбочки отвечают за чувствительность к цвету и очень слабо реагируют на изменение его интенсивности – это хроматическое, или цветное зрение, которое активно в диапазоне интенсивности освещения в пределах от 10^-2 до 10^8 cd/m^2. Этот интервал интенсивностей получил название photopic. И наконец, область, в которой активны оба типа рецепторов, а зрение одинаково хорошо фиксирует и цвет и его интенсивность, лежит в пределах от 0.01 до 10 cd/m^2 и называется mesopic. Таким образом, для человека цвет практически неразличим при темном освещении (помните – «ночью все кошки серы»?), а при ярком свете мы очень плохо различаем его интенсивность – это основная причина того, что мы не можем видеть звезды днем. Следует добавить, что зрение в области mesopic еще очень мало исследовано.
Еще одно важное свойство зрения – порог чувствительности, или минимальное изменение интенсивности освещения различаемое глазом (разрешающая способность по яркости). Величина порога чувствительности зависит от интенсивности света и возрастает с ее увеличением. В пределах от до 0.01 до 100 cd/m^2 отношение интенсивности к величине порога есть величина постоянная (закон Вебера), равная 0.02. То есть, для интенсивности света в 1 cd/m^2 порог чувствительности составляет 0.02 cd/m^2, для 10 – 0.2 cd/m^2, для 50 – 1 cd/m^2 и для 100 – 2 cd/m^2. Для остальной части диапазона интенсивностей это, вообще говоря, не так и зависимость описывается более сложным законом.
Очевидно, что динамического диапазона монитора (и модели описания RGB) совершенно недостаточно для представления изображений реального мира или, по крайней мере, той его части, которая доступна зрению человека. Типичное следствие этого – обрезание интенсивностей в верхней или нижней части диапазона. В качестве примера можно привести отображение интерьера комнаты с открытым на улицу окном в яркий солнечный день. Монитор корректно отображает либо только комнату, либо только часть улицы, видимую через окно.
Низкое значение порога насыщения монитора приводит к тому, что все яркости, большие 100 cd/m^2, просто обрезаются. Это основная причина того, что программы компьютерной графики сталкиваются с большими трудностями при расчете свечения таких источников, как солнце, или свет прожектора, направленный прямо в объектив камеры. Кроме того, это приводит к серьезному уменьшению доступной цветовой гаммы (цветового охвата монитора), и как следствие – к цветовому искажению, что особенно губительно, учитывая высокую чувствительность зрения именно к цвету в верхнем диапазоне интенсивностей освещения. Обрезание диапазона может происходить и по нижней границе – когда все оттенки темнее некоторой заданной величины отбрасываются. Очевидно, это ведет к деградации изображения в темных тонах. Наконец, если не выполнять обрезание по верхней или нижней границе, а попытаться просто «втиснуть» все 10 000 градаций интенсивности изображения в 256 оттенков модели RGB (при помощи некоей процедуры сжатия тонов) – результат, скорее всего, также будет плачевным.
Порог яркости монитора с учетом гамма-коррекции постоянен в пределах его динамического диапазона и составляет 100/256=0.4 cd/m^2 (приблизительно). Порог чувствительности зрения человека в диапазоне 1-100 cd/m^2 колеблется в пределах от 0.02 до 2 cd/m^2. Таким образом, для интенсивности свечения вплоть до 20 cd/m^2 (0 — 50 в модели RGB) порог яркости монитора недостаточен (меньше) порога чувствительности зрения. Это приводит к потере деталей при отображении темных областей изображения и губительно в отношении тонких тоновых переходов малой интенсивности. Начиная с уровня светимости в 40 cd/m^2 и выше (100 в RGB), разрешение монитора по яркости становится излишним по отношению к зрению человека, т.е. вдвое превышает его порог для этой интенсивности (все те же 0,4 против теперь уже 0,8 cd/m^2). А это может приводить к тому, что в модели RGB будут присутствовать оттенки, неразличимые зрением при представлении изображения на мониторе. Таким образом, 256 уровней интенсивности модели RGB также далеко недостаточно.
Практически, монитор и модель RGB могут корректно представлять только изображения с динамическим диапазоном от 20 до 40 cd/m^2, что это по сравнению с 100 000 000!? Потерян целый мир…
И наконец, использование фиктивных целочисленных значений интенсивности цветовых каналов в модели RGB не позволяет использовать их в расчетах динамики освещенности на основе корректной физической модели, например, методами GI – ray tracing, radiosity или photon mapping.
Где же выход?
Что касается компьютерного монитора, то здесь, пожалуй, сделать ничего нельзя. Увеличивать диапазон за счет увеличения яркости? Представляете себе монитор с яркостью солнца? Бр-р-р! Понизить нижний порог яркости? Тогда придется работать в абсолютно темной комнате и «белое не одевать», дабы не отсвечивать. Так что, монитор лучше пока оставить в покое, по крайней мере, до появления принципиально новых технологий отображения (хотя некоторым так не кажется – например, существуют разработки, существенно увеличивающие яркость монитора).
Но если с монитором мы еще ничего сделать не можем, то отказаться от модели RGB мы уже можем, притом – вполне безболезненно. Давайте описывать изображение реальными физическими величинами интенсивности и цвета освещенности, а монитор пусть показывает что сможет, все равно – хуже чем есть, не будет :). Это и есть суть представления HDRI – для точек, образующих изображение, указывается интенсивность и цвет в реальных физических величинах или велчинах, линейно им пропорциональных. Другими словами, если реальные интенсивности в двух точках изображения отличаются по величине в два раза, то и фиктивные величины, им соответствующие, также должны отличаться в два раза. Естественно, реальные (и фиктивные) значения освещенности указываются уже не целыми, а вещественными числами и обойтись 8 битами на канал не удастся. Такой подход разом снимает все ограничения модели RGB – т.е. динамический диапазон изображения теоретически вообще никак неограничен, полностью снимается вопрос о дискретности и количестве градаций яркости, решается проблема недостаточного цветового охвата.
Можно утверждать, что появление HDRI впервые позволило разделить и сделать независимым друг от друга описание, как числовое представление информации об изображении в рамках модели HDRI, и отображение этого описания на том или ином техническом устройстве вывода, например – на компьютерном мониторе, струйном принтере или фотонаборном аппарате. Таким образом, представление и отображение этого представления стали двумя самостоятельными процессами, а само HDRI-описание аппаратно независимым. Именно это и позволяет модели HDRI претендовать в качестве кандидата на новый стандарт описания. Любое конкретное изображение в формате HDRI, в силу полноты описания формата, будет сохранять свою актуальность и через, скажем, 50 или 100 лет, когда средства отображения сильно эволюционируют. То есть, вполне может быть, что через 50 лет человечество будет смотреть в совсем другие мониторы, но на те же HDR изображения. Простота практической реализация получения HDR изображений (об этом чуть позже) позволяет, например, создавать архивные цифровые копии произведений изобразительного искусства, причем файл будет содержать об оригинале всю информацию, без потерь, по крайней мере, в видимой части спектра. Впрочем, аппаратная независимость может дать и другую, вполне конкретную выгоду – упростить процесс управления цветом и гамма — коррекции при переносе изображений между различными устройствами. Кроме того, многие манипуляции с изображением, например – «размытие в движении» (motion blur) или цветокоррекцию лучше выполнять именно в HDR-представлении, поскольку они дают правильные результаты.
В левой колонке представлены обычные (LDRI) изображения в RGB, в правой – HDRI (точнее, их RGB-образы после tone mapping). Представлены результаты уменьшения яркости оригинала в 64 раза и увеличения яркости оригинала в 32 раза. Для HDRI сначала выполнялась операция изменения яркости, затем результат преобразовывался в RGB-представление.
Слева-направо: применение фильтра motion blur к обычному изображению, HDRI и реальное размытие, полученное смещением фотокамеры во время экспозиции. Очевидно, применение фильтра к HDRI дает результат, гораздо более близкий к реальности.
По крайней мере в настоящее время отображение HDR изображения на мониторе или его вывод на печать требует преобразование динамического диапазона и цветового охвата HDRI в динамический диапазон и цветовой охват устройства отображения – RGB для мониторов, CMYK для печати, CIE Lab, Kodak CYY и других. Поскольку все эти модели являются LDRI, выполнить такое преобразование без потерь невозможно. Процедура преобразования получила в литературе название tone mapping и в общем случае использует свойства человеческого зрения для минимизации потерь при преобразовании. Поскольку в настоящее время нет математической модели полно и корректно описывающей зрение человека, нет и общего алгоритма tone mapping, всегда дающего качественные результаты. Однако, исследования в этой области ведутся довольно интенсивно и уже имеется целый ряд алгоритмов (или операторов, в терминах tone mapping), дающих неплохие результаты в конкретных ситуациях. Обзор по состоянию дел в этой области можно прочесть, например, в этой работе. Я далее подробно опишу практическое использование одного из таких операторов, работающих совместно с HDRShop.
Если использовать аналогии, здесь мы имеем ситуацию, хорошо знакомую фотографам. HDRI выступает в роли фотонегатива (динамический диапазон которого может составлять 1000:1), а его отображение (преобразование в LDRI) является отпечатком негатива на фотобумагу, динамический диапазон которой составляет всего лишь 100:1. То есть фотографы постоянно занимаются «тонемаппингом» и наличие хороших фотографий позволяет надеяться, что этот процесс может давать неплохие результаты.
Вернемся к числовому представлению описания HDRI. Бесконечный динамический диапазон – это хорошо, но компьютер не может оперировать бесконечностью. Поэтому, на практике динамический диапазон ограничивается сверху и снизу. Хорошим приближением для такого ограничения можно считать диапазон зрения человека, т.е от 10^-6 до 10^8. Возникает дилемма. Чем шире динамический диапазон представления, тем лучше. С другой стороны, необходимо экономить ресурсы компьютера, поскольку расширение диапазона приводит к увеличению размера файла описания изображения. Как средство решения этой проблемы были разработаны несколько форматов числового представления HDRI.
1. Portable Floatmap (.pfm)
В этом формате для числового представления трех основных каналов R, G, B в формате с плавающей запятой отводится по 4 байта на канал, всего 12 байт (96 бит) на каждый пиксел изображения. Из этих 96 бит один бит отводится под знак, 8 бит для показателя экспоненты и 23 бита для представления мантиссы (или семь значащих цифр). Таким образом, формат .pfm обеспечивает динамический диапазон в 76 порядков. Однако, это приводит к четырехкратному увеличению размера файла, по сравнению со стандартным RGB, причем обычные алгоритмы сжатия информации оказываются в данном случае бессильны.
2. Pixar Log Format
Это формат разработан Pixar для целей кинопроизводства и использует log-кодирование значений RGB. Позволяет описать цвет пиксела 33 битами. Эта кодировка покрывает малый динамический диапазон приблизительно в 3.5 порядка величины, чего вполне достаточно для кинопленки, но не достаточно для представления HDRI.
3. Radiance RGBE (.pic, .hdr)
Идея этого формата предложена Greg Ward и заключается в выделении общей экспоненты для трех основных цветов. Мантисса каждого из трех основных цветов описывается 1 байтом, еще один байт – для записи показателя экспоненты, а всего на описание одного пиксела изображения потребуется 4 байта или 32 бита. Размер HDRI файла в такой кодировке всего лишь на треть больше по сравнению с обычным RGB и равен размеру файла в CMYK-представлении. Алгоритм кодирования следующий. Вещественные числа, описывающие реальные значения основных цветов R, G, B представляются в виде произведения некоторого множителя на степени двойки. Обязательное требование – такой множитель для цвета с наибольшим вкладом должен попадать в пределы от 0.5 до 1 (нормализация). Далее, множители кодируются двоичным представлением и записываются в байты мантисс цветов, а степенной показатель – в байт общей экспоненты.
n’ = n + 128
Число 128 вводится для кодирования отрицательных степеней экспоненты, поскольку место для представления знака не предусмотрено. Таким образом, значение n’ от 1 до 127 соответствуют отрицательным степеням, 128-256 – положительным.
Пример:
Таким образом, с динамическим диапазоном представления в формате Radiance все хорошо – он составляет 76 порядков (от 10^-38 до 10^38). А вот мантисса представления ограничена всего тремя значащими цифрами. Кроме того, ее нормализация может приводить к обнулению значений основных цветов, чей вклад невелик. Впрочем, это оказывается несущественным, поскольку в этом случае основной цвет с наибольшим значением и будет определять общий цвет с погрешностью, нечувствительной для зрения. Относительная ошибка представления составляет не более 1%, а еще одним достоинством формата Radiance является возможность его сжатия.
Фактически формат Radiance RGBE (.pic, .hdr) в настоящее время стал стандартом кодировки «де-факто». Например, большая часть коммерческих библиотек HDRI и общедоступных библиотек в Интернет составлена из изображений в этом формате. Шестая версия 3ds max, как и многие другие программы компьютерной графики, также использует формат Radiance в качестве основного для представления HDRI.
4. LogLuv TIFF (.tif)
Наиболее новый и прогрессивный из перечисленных форматов HDRI, разработан в SGI все тем же Грегом Вардом (Greg Ward) и реализован в виде расширений стандартной библиотеки TIFF. За этим стандартом будущее, так например поддержка просмотра LogLuv TIFF реализована даже в ACDSee. Использует для описания 32 бита на пиксел и основывается на модели восприятия цвета человеком (модели CIE XYZ). LogLuv использует кодирование интенсивности цвета (16 бит) и описание его хроматической (цветной) составляющей в виде координат цветового пространства CIE (u’, v’) – модифицированного CIE XYZ, по 8 бит на координату. Динамический диапазон представления охватывает 38 порядков величины (более точно: min=5.44*10^-20, max=1.84*10^19), а цветовой охват – весь видимый человеком спектр. Относительная погрешность представления не превышает 0.27%. Детали представления описаны в работе.
Существует более старый вариант этой кодировки, использующей 24 бита – 10 для интенсивности и по 7 на хроматические координаты. За экономию места приходится платить усложнением алгоритма кодирования и сужением динамического диапазон всего до пяти порядков величины.
5. OpenEXR
Еще один новый формат, разработан ILM (Industrial Light and Magic). Также использует логарифмическое кодирование интенсивности цвета (L) и его хроматической составляющей (u, v). Имеет две разновидности, 32- битную и 16-битную. Последняя интересна тем, что представляет значения цветов в формате half, разработанном nVidia для языка CgFX и аппаратно поддерживается графическими видеокарт серии FX – как GeForce FX, так и Quadro FX. Таким образом, представление HDRI в этом формате делает возможным их использование в аппаратных шейдерах. В 16-битном описании OpenEXR один бит отводится под знак показателя экспоненты, пять битов для значения показателя экспоненты и десять бит для представления мантисс хроматических координат цвета (u, v) по пять бит на координату. Динамический диапазон представления составляет девять порядков величины – от 6.14*10^-5 до 6.41*10^4. Для OpenEXR разработаны алгоритмы сжатия, лучшие из которых позволяют достичь степени сжатия 2:1.
Каким образом можно получить изображения высокого динамического диапазона?
Одним из источников являются программы компьютерной графики, и прежде всего, рендер-программы пакетов трехмерного моделирования, использующие алгоритмы расчетов на основе корректных физических моделей динамики света, например mental ray.
Другим, гораздо более очевидным и естественным источником является окружающий нас реальный мир. Удивительно, но факт – для получения HDRI в этом случае вполне достаточно обычного фотоаппарата. Теоретические основы процесса получения HDRI из обычных фотографий рассмотрены в статье Пола Дебевека еще в 1997 году и основываются на принципе reciprocity (взаимности) для регистрирующего устройства, согласно которому увеличение времени экспозиции для меньших освещенностей дает то же значение экспозиции, что и большее освещение при соответственно уменьшенном времени экспозиции. То есть, E*t=(E/k)*(k*t). Можно сказать и так: устройство с ограниченным динамическим диапазоном может зарегистрировать сколь угодно малую или большую величину освещенности, если соответствующим образом увеличить или уменьшить время экспозиции.
С практической точки зрения суть этого метода состоит в получении серии фотографий с различными временами экспозиции для захвата освещенности из всего динамического диапазона реальной сцены. Далее строится функция отклика регистрирующего устройства (в нашем случае – фотоаппарата), описывающая его нелинейность. Такая функция отклика получила еще одно название – характеристическая кривая устройства. И наконец, различные значения освещенности, измеренные по серии фотографий, с учетом характеристической кривой восстанавливаются к истинным значениям реальной освещенности и комбинируются в одно HDR изображение. Математические расчеты могут быть выполнены при помощи бесплатной для некоммерческого использования программы HDRShop, разработанной Полом Дебевеком.
Характеристическая кривая описывает нелинейность регистрирующего устройства, его нижний порог чувствительности и порог насыщения. В самом общем случае величина освещенности или экспозиции (для фотоаппарата X=E*t, где X – величина экспозиции, E – энергия реального светового потока, t – время экспозиции), поступающая на регистрирующее устройство из внешнего мира и соответствующее измеренное устройством значение этой величины F(X) связаны нелинейно. Другими словами, если в реальном мире освещенность двух каких-либо объектов отличается в два раза, то на фотографии освещенность этих объектов будет отличаться не в два, а скажем, в 1.8 раз. Основная причина этого заключается в ограниченном динамическом диапазоне чувствительности самого устройства, а также – в физических, химических или иных особенностях протекающих в устройстве регистрирующих процессов. Например, накапливаемый на светочувствительных элементах (CCD) цифровых камер и фотоаппаратов заряд пропорционален величине падающего света, однако, в этих устройствах используются различные нелинейные преобразования полученных данных перед выводом для сохранения на внешнем носителе.
Характеристическая кривая цифровой камеры DCS460 для
черно-белых снимков
Характеристические кривые цифровой камеры DCS460 для
цветных снимков. Кривые должны строиться для каждого
цветного канала независимо
Диаграмма false-color, показывающая относительные значения освещенности в черно – белой (grayscale) версии HDR изображения, полученного при помощи обычного LDR фотоаппарата. Различие в интенсивностях составляет 250 000:1.
Хотя описанный способ рассчитывает освещенность пикселов изображения в относительных единицах, с его помощью вполне возможно восстановить и реальные радиометрические значения освещенности и даже выполнить калибровку характеристической кривой по калибровочным таблицам с известной величиной освещенности.
Описанная технология также нашла свое воплощение и в программно-аппаратных комплексах класса high-end. В качестве примера можно привести SpheroCam HDR.
Эта камера с линзой типа fish eye позволяет получать сферические панорамные HDRI (180х360 градусов) с разрешением вплоть до 5 000 х 13 000 пикселов (к слову сказать, одно такое изображение в формате .pfm займет около 780 Мб). Замечательной особенностью комплекса является динамический диапазон камеры, составляющий 10^7:1, что обеспечивает изменение времен экспозиции в пределах 26 f-stops (2^26) и полностью автоматический режим работы – достаточно развернуть комплекс в нужном месте и запустить систему, она сама выполнит съемку с указанным шагом поворотного механизма и экспозиции. Фирменное программное обеспечение, опять же, в автоматическом режиме рассчитает HDRI (за 1 — 30 минут, в зависимости от освещенности) из серии сделанных камерой снимков и выведет результат на экран laptop’a, входящего в состав системы. Никакой возни с установкой экспозиции вручную и характеристической кривой. Стоит это удовольствие соответственно, но и результат на уровне.
Автомобиль – компьютерная модель, задний план – обычная фотография высокого качества, освещение, отражение и цвет – HDRI, полученные с помощью SpheroCam HDR, рендеринг iRay.de.
1. Реальные значения освещенности, полный цветовой охват и весь динамический диапазон, доступные зрению человека в сочетании с относительной простотой технологии получения HDR изображений делают их уникальным средством для длительного сохранения без потерь любой визуально ценной информации. Например, фотографий произведений искусства.
2. Аппаратная независимость. Описание информации об изображении в реальных значениях освещенности означает аппаратную независимость формата HDRI. Так например, цветокоррекция в RGB меняет сами значения интенсивностей каналов в зависимости от гамма-характеристики и цветового охвата монитора, на котором выполнялась цветокоррекция, и сохраняет эти изменения в исходном файле. При переносе на другой монитор, с другими индивидуальными характеристиками, это же изображение будет выглядеть совсем иначе. Другой пример – преобразование между разными цветовыми моделями, например, между RGB и CMYK, которое принципиально не может быть выполнено без потерь в силу различий цветовых охватов. Можете себе представить, что останется от исходного изображения после нескольких преобразований. HDRI позволяет реализовать принципиально иной подход – файл содержит полную и потому не нуждающуюся в изменении информацию об изображении. А задача аппаратного устройства заключается в том, чтобы взять максимум того, что оно может взять из такого описания. Таким образом, перенос изображения для отображения или вывода на самых разных устройствах не требует изменения информации об изображении, а только регулирования возможностей и свойств отображения самого устройства.
3. Графическая обработка изображений. HDRI предоставляет беспрецедентные возможности по цветокоррекции. То есть, широкий динамический диапазон, сравнимый с диапазоном человеческого зрения, и полный цветовой охват дают в руки художника ВСЕ возможности цветокоррекции. Кроме того, обычные графические манипуляции общего характера над изображениями широкого диапазона, такие как применение различных фильтров (например, размытия, edge detection, и других), дают более корректные результаты, нежели над их LDRI-аналогами. Я не хочу сказать, что Photoshop’у пора на покой. Нет, но если редакторы подобного рода останутся в прежнем виде, они неизбежно превратятся только в средство доводки LDRI — представлений HDRI. На рынке должны появиться (и уже появились, например – Photogenics HDR или CinePaint) и обрести популярность графические программные инструменты для обработки изображений HDR. Скорее всего, благополучие будущего современных пакетов графического редактирования напрямую будет связано с успешностью их эволюции именно в этом направлении.
4. Применения в области трехмерной компьютерной графики, анимации и спецэффектов для кино обусловлены реальными значениями освещенности пикселей, хранимых HDR изображениями. Панорамные изображения широкого диапазона успешно используются в качестве источника реалистичного окружающего освещения, отражений и преломлений для синтетических компьютерных объектов. Примеры смотрите в начале статьи. Реалистичность освещения компьютерных объектов позволяет, в свою очередь, естественно и просто встраивать их в «живые» съемки. И эта возможность уже довольно интенсивно и успешно используется в кино для создания спецэффектов и соединения компьютерной анимации и кино.
Пример «синтетической» сцены. Задний план и освещение заданы растровым HDR изображением реально существующего места. Ближний план и автомобиль – компьютерные объекты. Расчет сцены выполнен методом «дифференциального рендеринга», разработанным Полом Дебевеком и описанным в его работе «Rendering Synthetic Objects into Real Scenes: Bridging Traditional and Image-based Graphics with Global Illumination and High Dynamic Range Photography».
5. Я уже говорил о возможностях сохранения всей визуально ценной информации в HDRI, «без купюр». Здесь же хочу обратить внимание на одно из специфических применений этой возможности. Речь идет о сохранении данных освещенности трехмерных компьютерных сцен, рассчитанных рендер-программами с применением методов GI (глобальной освещенности). В силу того, что эти алгоритмы используют физически корректные модели для расчетов, их результаты лежат далеко за пределами возможностей LDRI – это как правило нецелочисленные значения широкого диапазона. Тем не менее, общепринятая в современных пакетах трехмерного моделирования практика – ни о чем не спрашивая и никак не информируя пользователя о последствиях отображать рассчитанную освещенность на обычном мониторе или сохранять данные в LDR-файлах, например – .tif или .jpg, что совершенно неправильно, поскольку большая часть рассчитанной информации попросту теряется. Типичный пример – рендеринг во фрейм-буфер, используемый в 3ds max. Правильно – сохранять результаты рассчитанной освещенности в HDR формате, применять к ним операторы tone mapping для создания LDR-образов, которые и нужно отображать на мониторе. Таким образом, HDRI можно использовать как средство против «произвола по умолчанию» современных 3D пакетов, позволяя рендерам действительно сохранять все то, что они насчитали.
6. Поскольку HDRI может сохранять радиометрические и фотометрические значения освещенности, рассчитанные рендерами, эти данные можно сравнивать с реально измеренными данными, например для отладки и совершенствования алгоритма рендеров, для проектирования освещения в CAD-проектах или для трехмерного моделирования по фотографиям.
7. Еще одна интересная область применения – трехмерное моделирование по фотографиям, например с помощью генераторов ландшафтов, использующих растровые карты высот рельефа. Использование HDRI в этом случае позволяет достичь гораздо большей детализации рельефа по высотам.
HDRShop – программа для обработки и манипуляций с HDR изображениями, разработана Полом Дебевеком и бесплатна для некоммерческого использования. Основное назначение – создание HDRI из последовательности LDR фотографий с различной экспозицией. Имеет средства для расчета характеристической кривой аппаратуры, композиции и монтажа HDRI из LDRI, функции преобразования типов панорамных изображений, форматов изображений (HDRI и LDRI) и набор графических фильтров. HDRShop содержит руководства, достаточно полно описывающие работу с программой, и в частности – калибровку оборудования и создание HDRI.
Возможности программы могут быть расширены посредством механизма плагинов, об одном из них – для tone mapping, я расскажу ниже.
Idruna Photogenics HDR – очень близкий родственник Adobe Photoshop, позволяет редактировать графические изображения, рисовать различными инструментами, применять фильтры, выполнять цветокоррекцию и т. д. В отличие от Photoshop, не ограничивается работой только с обычными (LDR) изображениями, позволяя редактировать и HDRI. Математически реализовано это как обработка чисел с плавающей запятой, 32 бита на канал, 96 бит на пиксел. Однако, если редактирование в Photoshop жестко основывается на отображении результатов на экране монитора, редактирование HDRI в Photogenics не имеет такой обратной связи. Таким образом, хотя редактирование HDRI в Photogenics заключается в преобразовании и сохранении истинных цветовых значений пикселов, отображение результатов редактирования на экране ограничено возможностями монитора и цветовым пробником (color picker) программы. Photogenics не использует никаких алгоритмов преобразования диапазона HDRI в диапазон монитора (tone mapping), например с целью предварительного просмотра конечного результата, за исключением указания гамма — коэффициента, значения экспозиции и возможности загрузки пользовательских LUT (Look Up Tables – таблиц соответствия цветов для отображения фотослайдов на калиброванном мониторе). Это, пожалуй, самый серьезный недостаток Photogenics. В остальном, программа совершенно замечательна и не только в плане работы с HDRI, но и в оригинальности реализованных концепций рисования. В арсенале программы есть совершенно уникальные инструменты рисования светом, огнем и неоном. Реализована концепция неразрушающего редактирования – все изменения изображения трактуются как отдельный слой и накладываются сверху на исходное изображение. Имеется возможность преобразования между HDR и LDR типами изображений с настройкой цветов, гаммы, экспозиции и других параметров, а также – создания HDR изображения из имеющейся последовательности обычных изображений разной экспозиции.
Photogenics HDR поддерживает работу с файлами форматов Kodak Cineon/DPX (10 бит на канал), mental ray .ct и .map (8, 24, 32, 96, 128 бит), Radiance RGBE, .tif (8/16bit/float/Pixar/LogL и LogLUV), Alias|WaveFront .IFF (96 и 128 бит). Photogenics HDR (Windows, Linux) является коммерческой программой и бесплатно не распространяется, но на сайте разработчиков можно найти полнофункциональную 30-дневную демонстрационную версию.
Еще один open-source редактор общего назначения, поддерживающий работу с HDRI на различных операционных системах – Windows, Macintosh OS X (X11), Linux, IRIX, DEC/Compaq Alpha, FreeBSD, NetBSD, Solaris, Intel IA64, IBM S/390, HP-UX. CinePaint предназначен для ручного редактирования отдельных кинокадров и их небольших последовательностей. Успел поучаствовать в таких кинопроектах, как Scooby-Doo, Harry Potter, Cats & Dogs, Dr. Dolittle 2, Little Nicky, Grinch, Sixth Day, Stuart Little, Planet of the Apes. Фактически – полный аналог Photoshop, с немножко непривычным интерфейсом, наличием frame manager для просмотра и редактирования последовательности кинокадров, и поддержкой 16 битных (на один канал) операций.
Все же, это скорее инструмент обработки отсканированной фотопленки (с динамически диапазоном не более 10000:1), чем инструмент для работы с HDRI – пока поддерживает только 16-битную обработку, поддержка 32 битов (96 бит на пиксел) планируется в будущих версиях. Работает с такими HDRI форматами, как Cineon, OpenEXR, TIFF, алгоритмов tone mapping не использует.
Программа предназначена для преобразования диапазона яркостей HDRI к диапазону яркостей, отображаемых монитором (tonemapping). Одна из наиболее новых и перспективных разработок в этой области, позволяющая получить хорошие результаты для самого широкого круга изображений, автор – Erik Reinhard. В основе алгоритма оператора tonemap – хорошо известная фотографам техника под названием Zone system, используемая при печати изображений с негатива на фотобумагу. Применение оператора tonemap основывается на введении пользователем параметров, значение которых определяется исходя из индивидуальных особенностей конкретного изображения.
Оператор разделяет все яркости изображения на три области – темную, область средней освещенности (средних тонов) и яркую. Основываясь на визуальной оценке яркости средних тонов изображения, устанавливается параметр key: 0.18 для нормально освещенных (значение по умолчанию), бОльшие значения – для слишком темных изображений (авторы рекомендуют 0.36, 0.72…), мЕньшие значения – для излишне светлых изображений (0.09, 0.045…). Этот параметр корректирует общую освещенность – осветляет темные изображения и затемняет светлые.
Темные тона изображения оператор оставляет практически в неизменном виде, а вот светлые – сжимает к диапазону монитора. Для этого используется параметр white (значение по умолчанию – 1e20, чего вполне достаточно в большинстве случаев), уменьшение этого параметра может привести не к сжатию, а к отсечению ярких светов в изображении. Кроме глобальных изменений всего изображения, оператор tonemap действует как локальный оператор dodge/burn изменяя контрастность каждого пиксела в зависимости от его окружения. Этим процессом управляют два параметра – treshold и phi. Уменьшение treshold и увеличение phi приводит к повышению контраста. Параметры low, high и gamma выполняют служебную роль и менять их не стоит.
Ниже приведены результаты применения tonemapping к HDR изображению и для сравнения – изображение, полученное из того же источника при помощи Photogenics HDR.
Изображение получено простым сохранением панорамного HDR изображения в один из LDR форматов (.jpg в данном случае) в программе HDRShop.
Изображение получено при помощи стандартных средств программы Photogenics HDR – подбора значения экспозиции и гаммы монитора. Я стремился получить максимум деталей в изображении. Так, детали присутствуют в яркой области за окном, но изображение внутри комнаты получилось излишне темным. К тому же, здесь явная проблема с цветами.
Изображение получено при помощи оператора tonemap, key=1.08, white=1e100, treshold=0.005, phi=32.
Оператор tonemap реализован как плагин HDRShop и является бесплатным.
Среди других программ, полезных в работе c HDRI стоит упомянуть о mkhdri.exe – программе командной строки, рассчитывающей HDR изображение из последовательности LDR фотографий разной экспозиции и о HDRView.exe – программе — просмотрщике HDRI.
В 3ds max технология HDRI может применяться для решения двух основных задач – для освещения трехмерных сцен и для определения свойств отражения/преломления материалов трехмерных поверхностей. Рендеринг (расчет освещенности) может быть выполнен как стандартными средствами 3ds max, так и при помощи mental ray, VRay, finalRender или brazil r/s.
Для освещения трехмерной сцены необходимо во всех случаях создавать стандартный источник света 3ds max типа Skylight:
Skylight представляет собой полусферу, накрывающую сцену сверху. Координаты этого источника света значения не имеют – max считает, что Skylight всегда находится сверху и целиком накрывает всю сцену. Для задания освещения от растровой карты нажимаем кнопку None группы параметров Sky color и в открывшемся окне Material/Map Browser выбираем bitmap, затем тип карты – Radiance Image File (HDRI) или HDR Image и нужный файл. Шестая версия max обладает встроенной поддержкой формата HDRI, для более ранних версий можно воспользоваться плагинами импорта/экспорта сторонних разработчиков.
HDR изображение нуждается в дополнительной настройке, которая выполняется при помощи кнопки Setup диалога выбора файла.
Здесь настраивается используемый динамический диапазон изображения (White Point Linear) – ползунок перемещается до тех пор, пока в изображении не будет обрезанных (clamped) областей, отмеченных цветом Mark White clamp и Mark Black clam. Линейное значение точки белого (на данном скриншоте 29.717) следует запомнить. Нажимаем Ok и все что осталось сделать – в свитке Coordinates>Environ Mapping выставить Spherical Environment, в свитке Bitmap Parameters>Filtering>None и в свитке Output>RGB Level установить запомненное значение White Point (30 в нашем случае).
Для определения свойств преломления и отражения материалов можно использовать два способа. Первый, глобальный, заключается в задании HDR изображения в качестве карты окружения (Rendering>Environment> Environment Map) и назначении карт типа Raytrace в слотах Maps свойств материала Reflection и Refraction. Второй способ, локальный, состоит в указании конкретных растровых HDR изображений в качестве карт отражения/преломления для каждого материала по отдельности. Настройка параметров HDRI в обоих случаях аналогична описанной в установке света. Везде использовались панорамные (Latitude/Longitude) HDR изображения, для освещения размер изображений может быть небольшим, а для окружения желательно использовать изображения высокого разрешения.
Для рендера стандартными средствами 3ds max разработчики рекомендуют использовать Light Tracer (Rendring>Advanced Lightning>Light Tracer) или mental ray. В последнем случае расчет освещенности должен выполняться обязательно с использованием Global Illumination и Final Gather. Эта же схема – Skylight/Environment/настройка свойств материалов используется и при расчете другими рендерами, например VRay, finalrender и brasil r/s, хотя и с некоторыми особенностями, специфичными в отношении настроек самих рендеров. Например, VRay имеет собственные средства определения Skylight и Environment, а также свои карты материалов, а finalRender имеет свой вариант поддержки HDRI – карта типа HDRI Bitmap, позволяющая дополнительно настраивать экспозицию и размытие изображения.
Расчет освещенности сканлайн рендером max с освещением в 2 omni и LDRI в качестве свойств отражения материала.
Освещение – Skylight с назначенным HDRI в качестве карты освещения и Environment, свойства отражения материалов Reflection определяются картой типа Raytrace. Расчет выполнен рендером Light Tracer 3ds max. Время расчета составило около 1 часа 45 минут на Pentium III-600.
Та же сцена, рассчитана при помощи mental ray. Время расчетов – около 50 минут.
Та же сцена, mental ray, другой ракурс.
Та же сцена, mental ray, для освещения и Environment выбрана другое HDR изображение.
HDRI, mental ray.
Шестая версия max позволяет также сохранять рассчитанное рендер — изображение в формате HDRI.
Эта возможность может быть использована для tone mapping изображений, что особенно полезно при наличии «засветок» в рендере.
Подводим итоги. Технология HDRI уже прочно вошла в нашу жизнь и принесла несомненные выгоды от ее использования в области компьютерной графики (некоторые из трехмерщиков даже называют это «святым Граалем» освещения) и незаменимы в киноэффектах. Не последнюю роль сыграли исследования Пола Дебевека, благодаря которым HDR изображения стали общедоступными по причине простоты их получения. Более широкое распространение HDRI, несмотря на очень привлекательные возможности, ограничивается современным уровнем технологий отображения, и прежде всего CRT. Так что в ближайшем будущем, скорее всего мы будем наблюдать сосуществование модели HDRI, без которой мы уже не можем, и обычной RGB, без которой мы пока еще не можем.
Интересно, какими будут мониторы лет через 10-15?