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

Динамическая область значений относится к области значений уровней яркости, от темного до светлого. Динамическая область значений реальных сцен может быть довольно высоким. Изображения с высокой динамической областью значений (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

Отображение и обработка изображения

Многие функции тулбокса предполагают, что изображения типа данных 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');

См. также

| | | | |

Похожие примеры

Подробнее о