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