Динамическая область значений относится к области значений уровней яркости, от темного до светлого. Динамическая область значений реальных сцен может быть довольно высоким. Изображения с высокой динамической областью значений (HDR) пытаются захватить всюсь тональную область значений реальных сцен (называемых scene-referred), используя 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
являются изображениями с данными в области значений [0, 1]. Поскольку данные HDR не связаны с областью значений [0, 1] и могут содержать Inf
значения, необходимо тщательно изучить поведение каждой функции при работе с данными.
Некоторые функции обрезают значения вне ожидаемой области значений, прежде чем продолжать обработку данных. Эти функции могут вернуть неожиданные результаты, потому что обрезка приводит к потере информации.
Некоторые функции ожидают данных в области значений [0, 1], но не корректируют данные перед их обработкой. Эти функции могут вернуть неправильные результаты.
Некоторые функции ожидают реальных данных. Если ваше изображение HDR содержит значения Inf
, тогда эти функции могут вернуть неожиданные результаты.
Некоторые функции не имеют ограничений на область значений входных данных. Эти функции принимают и обрабатывают данные HDR правильно.
Для работы с функциями, которые требуют данных LDR, можно уменьшить динамическую область значений изображения с помощью процесса, называемого tone mapping. Отображение тонов масштабирует данные HDR в область значений [0, 1] при попытке сохранить внешний вид оригинального изображения. Функции отображения тональных сигналов, такие как tonemap
, tonemapfarbman
, и localtonemap
дают более точные результаты, чем простое линейное перемасштабирование, такое как выполненное rescale
функция. Однако обратите внимание, что отображение тонов приводит к потере тонкой информации и деталей.
Чтобы отобразить изображения HDR, необходимо выполнить отображение тональных сигналов. Для получения примера смотрите Отображение High Dynamic Области значений Image.
Чтобы создать HDR-изображение из группы изображений с низкой динамической областью значений, используйте makehdr
функция. Обратите внимание, что изображения с низкой динамической областью значений должны быть пространственно зарегистрированы, а файлы изображений должны содержать метаданные EXIF. Задайте изображения низкой динамической области значений в массиве ячеек.
hdr_image = makehdr(files);
Чтобы записать HDR- изображения из рабочей области в файл, используйте hdrwrite
функция.
hdrwrite(hdr,'filename');
hdrread
| hdrwrite
| localtonemap
| makehdr
| tonemap
| tonemapfarbman