Работа с изображениями расширенного динамического диапазона

Динамический диапазон относится к области значений уровней яркости от темного до света. Динамический диапазон реальных сцен может быть довольно высоким. Изображения расширенного динамического диапазона (HDR) пытаются получить целую тональную область значений реальных сцен (названный scene-referred), с помощью 32-битных значений с плавающей точкой, чтобы сохранить каждый цветовой канал. Изображения HDR содержат высокий уровень детали, близко к области значений человеческого видения. Тулбокс включает функции для чтения, создания и записи изображений HDR. Тулбокс также включает операторы тональной карты для создания изображений низкого динамического диапазона (LDR) от изображений HDR для обработки и отображения.

Считайте изображение HDR

Чтобы считать изображение HDR в рабочую область MATLAB®, используйте hdrread функция.

hdr_image = hdrread('office.hdr');

Выходное изображение hdr_image m-by-n-by-3 изображение типа данных single.

whos
  Name        Size            Bytes    Class     Attributes

  hdr_image   665x1000x3      7980000  single

Область значений данных превышает область значений [0, 1] ожидаемый данных LDR.

hdr_range = [min(hdr_image(:)) max(hdr_image(:))]
hdr_range =

  1×2 single row vector

         0    3.2813

Отображение и изображение HDR процесса

Много функций тулбокса принимают что изображения типа данных single и double изображения LDR с данными в области значений [0, 1]. Поскольку данные о HDR не связаны с областью значений [0, 1] и могут содержать Inf значения, необходимо исследовать поведение каждой функции тщательно при работе с данными о HDR.

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

  • Некоторые ожидаемые данные функций в области значений [0, 1], но не настраивают данные прежде, чем обработать его. Эти функции могут возвратить неправильные результаты.

  • Некоторые функции ожидают действительные данные. Если ваше изображение HDR содержит значения Inf, затем эти функции могут возвратить неожиданные результаты.

  • Некоторые функции не имеют никаких ограничений для области значений входных данных. Эти функции принимают и обрабатывают данные о HDR правильно.

Чтобы работать с функциями, которые требуют данных LDR, можно уменьшать динамический диапазон изображения с помощью процесса под названием tone mapping. Настройте данные о HDR шкал отображения к области значений [0, 1] при попытке сохранить внешний вид оригинального изображения. Настройте функции отображения, такие как tonemap, tonemapfarbman, и localtonemap дайте более точные результаты, чем простое линейное перемасштабирование такой, как выполняется rescale функция. Однако обратите внимание, что тональное отображение подвергается потере тонкой информации и детали.

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

Создайте изображение расширенного динамического диапазона

Чтобы создать изображение HDR из группы низких изображений динамического диапазона, используйте makehdr функция. Обратите внимание на то, что низкие изображения динамического диапазона должны быть пространственно указаны, и файлы изображений должны содержать метаданные EXIF. Задайте низкие изображения динамического диапазона в массиве ячеек.

hdr_image = makehdr(files);

Запишите изображение расширенного динамического диапазона в файл

Чтобы записать изображение HDR из рабочей области в файл, используйте hdrwrite функция.

hdrwrite(hdr,'filename');

Смотрите также

| | | | |

Связанные примеры

Больше о