makehdr

Создайте изображение расширенного динамического диапазона

Синтаксис

HDR = makehdr(files)
HDR = makehdr(imds)
HDR = makehdr(___,Name,Value)

Описание

пример

HDR = makehdr(files) создает изображение расширенного динамического диапазона (HDR) с одинарной точностью HDR из набора пространственно зарегистрированных изображений низкого динамического диапазона (LDR) в files.

HDR = makehdr(imds) создает изображение расширенного динамического диапазона с одинарной точностью HDR из набора пространственно зарегистрированных изображений LDR, сохраненных как объект ImageDatastore, imds.

пример

HDR = makehdr(___,Name,Value) пары "имя-значение" использования, чтобы управлять различными аспектами создания изображений в дополнение к входному параметру от любого из предыдущих синтаксисов.

Примечание

Входные файлы изображений должны содержать Формат Файла обмена изображениями (EXIF) метаданные воздействия. makehdr использует среднее воздействие между самыми яркими и самыми темными изображениями как основное воздействие для вычислений HDR. Это значение не должно появляться ни в каком конкретном файле. Для получения дополнительной информации о вычислении этого среднего значения воздействия, см. Алгоритмы.

Примеры

свернуть все

Создайте изображение расширенного динамического диапазона (HDR) из набора изображений низкого динамического диапазона (LDR), которые совместно используют ту же f-остановку, но имеют различные времена воздействия.

Загрузите шесть низких изображений динамического диапазона в рабочую область. Создайте вектор их соответствующих времен воздействия. Отобразите изображения как монтаж.

files = {'office_1.jpg','office_2.jpg','office_3.jpg',...
         'office_4.jpg','office_5.jpg','office_6.jpg'};
expTimes = [0.0333 0.1000 0.3333 0.6250 1.3000 4.0000];
montage(files)

Объедините изображения LDR в изображение HDR.

hdr = makehdr(files,'RelativeExposure',expTimes./expTimes(1));

Отобразите изображение HDR.

rgb = tonemap(hdr);
imshow(rgb)

Создайте изображение расширенного динамического диапазона (HDR) из набора шести изображений низкого динамического диапазона (LDR), которые совместно используют ту же f-остановку, но имеют различные времена воздействия. Предполагаемые значения функции отклика камеры вычисляются из этих изображений LDR и используются, чтобы сгенерировать изображение HDR.

Считайте набор шесть пространственно указанный, изображения LDR в рабочую область. Создайте объект imageDatastore, содержащий эти изображения. Отобразите изображения как монтаж.

setDir = fullfile(toolboxdir('images'),'imdata','office_*');
imds = imageDatastore(setDir);
montage(imds)

Оцените функцию отклика камеры от изображений в datastore.

crf = camresponse(imds);

Объедините изображения LDR в изображение HDR при помощи предполагаемых значений функции отклика камеры.

hdr = makehdr(imds,'CameraResponse',crf);

Отобразите изображение HDR.

rgb = tonemap(hdr);
imshow(rgb)

Входные параметры

свернуть все

Набор пространственно зарегистрированных изображений LDR, заданных как массив строк или массив ячеек из символьных векторов. Эти изображения могут быть цветной или шкалой полутонов любой битовой глубины. Однако предпочтительная битовая глубина для изображений LDR равняется 8 или 16.

Типы данных: char | string | cell

Набор пространственно зарегистрированных изображений LDR, заданных как объект ImageDatastore. Эти изображения могут быть цветной или шкалой полутонов любой битовой глубины. Однако предпочтительная битовая глубина для изображений LDR равняется 8 или 16.

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: makehdr(files,'RelativeExposure',[0.1 0.3 0.4]);

Имя файла, чтобы использовать в качестве основного воздействия, заданного как скаляр строки или вектор символов.

Типы данных: char | string

Примечание

Можно использовать только один из 'BaseFile', 'ExposureValues' и пар "имя-значение" 'RelativeExposure' за один раз.

Значение воздействия каждого файла во входном наборе, заданном как числовой вектор положительных значений. k th элемент в векторе соответствует k th LDR изображение во входном наборе. Увеличение одного значения воздействия (EV) соответствует удвоению воздействия. Уменьшение одного EV соответствует сокращению вдвое воздействия. Если вы задаете этот параметр, функция заменяет метаданные воздействия EXIF.

Типы данных: single | double

Относительное значение воздействия каждого файла во входном наборе, заданном как числовой вектор положительных значений. k th элемент в векторе соответствует k th LDR изображение во входном наборе.

Например, изображение со значением относительного воздействия (RE) 0,5 имеет вдвое меньше воздействия, чем изображение со значением RE 1. Точно так же изображение со значением RE 3 имеет три раза воздействие изображения со значением RE 1. Если вы задаете этот параметр, функция заменяет метаданные воздействия EXIF.

Типы данных: single | double

Минимум правильно представил значение, заданное как положительное целое число. Для каждого изображения LDR пиксели с меньшим значением, чем этот минимум рассматриваются недоэкспонированными и не способствуют итоговому изображению HDR. По умолчанию это минимальное значение установлено к 2% максимальной интенсивности, позволенной типом данных image.

Типы данных: single | double

Максимум правильно представил значение, заданное как положительное целое число. Для каждого изображения LDR пиксели с большим значением, чем этот максимум рассматриваются переэкспонированными и не способствуют итоговому изображению HDR. По умолчанию это максимальное значение установлено к 98% максимальной интенсивности, позволенной типом данных image.

Типы данных: single | double

Функция отклика камеры, заданная как n-by-1 вектор для полутоновых изображений и n-by-3 матрица для цветных изображений. Функция отклика камеры сопоставляет значение логарифмического воздействия (сияние сцены) к уровням яркости во входных изображениях. Значение n 2bit depth. Например, если битовая глубина входного набора изображений равняется 8, то n 256.

Примечание

'MaximumLimit' и пары "имя-значение" 'MinimumLimit' проигнорированы, когда 'CameraResponse' задан.

Типы данных: single | double

Выходные аргументы

свернуть все

Изображение расширенного динамического диапазона, возвращенное как m-by-n-by-3 числовой массив.

Типы данных: single

Алгоритмы

Функция makehdr вычисляет среднее значение воздействия при помощи значений воздействия (EVs) входных изображений. Значение воздействия для каждого изображения вычисляется на основе апертуры и скорости затвора. Апертура и значения скорости затвора хранятся в метаданных EXIF того входного файла, или задан с помощью пары "имя-значение" 'ExposureValues'. Средний EV вычисляется так же в среднем самый высокий и самый низкий EVs и используется как основное воздействие.

Ссылки

[1] Райнхард и др. Расширенный динамический диапазон, Отображающий 2006. Ch. 4.

[2] Debevec, P.E., и Дж. Малик. "Восстановление Карт Сияния Расширенного динамического диапазона из Фотографий". В SIGGRAPH ACM 2 008 классов, Статья № 31. Нью-Йорк, Нью-Йорк: ACM, 2008.

Смотрите также

| | | | |

Введенный в R2008a