exponenta event banner

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

Динамический диапазон относится к диапазону уровней яркости от темного до светлого. Динамический диапазон реальных сцен может быть довольно высоким. Изображения с высоким динамическим диапазоном (HDR) пытаются захватить весь тональный диапазон реальных сцен (называемых сценами), используя 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, можно уменьшить динамический диапазон изображения с помощью процесса, называемого отображением тонов. Отображение тонов масштабирует HDR-данные до диапазона [0, 1] при попытке сохранить внешний вид исходного изображения. Функции отображения тональных сигналов, такие как tonemap, tonemapfarbman, и localtonemap дать более точные результаты, чем простое линейное масштабирование, например, выполненное rescale функция. Однако следует отметить, что отображение тональных сигналов приводит к потере тонкой информации и деталей.

Для отображения HDR-изображений необходимо выполнить отображение тональных сигналов. Пример см. в разделе Отображение изображения с высоким динамическим диапазоном.

Создание изображения с высоким динамическим диапазоном

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

hdr_image = makehdr(files);

Запись изображения с высоким динамическим диапазоном в файл

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

hdrwrite(hdr,'filename');

См. также

| | | | |

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

Подробнее