Динамический диапазон относится к диапазону уровней яркости от темного до светлого. Динамический диапазон реальных сцен может быть довольно высоким. Изображения с высоким динамическим диапазоном (HDR) пытаются захватить весь тональный диапазон реальных сцен (называемых сценами), используя 32-битные значения с плавающей запятой для хранения каждого цветового канала. Изображения HDR содержат высокий уровень детализации, близкий к диапазону зрения человека. Панель инструментов включает функции для чтения, создания и записи HDR-изображений. Панель инструментов также включает операторы карты тонов для создания изображений с низким динамическим диапазоном (LDR) из 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Многие функции панели инструментов предполагают, что изображения типа данных 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');hdrread | hdrwrite | localtonemap | makehdr | tonemap | tonemapfarbman