camresponse

Оцените функцию отклика камеры

Описание

пример

crf = camresponse(files) оценивает функцию отклика камеры от набора пространственно зарегистрированных изображений низкого динамического диапазона (LDR), перечисленных в files.

пример

crf = camresponse(imds) оценивает функцию отклика камеры от ряда пространственно зарегистрированных изображений LDR, сохраненных как ImageDatastore объект, imds.

пример

crf = camresponse(___,'ExposureTimes',expTimes) задает выдержку для каждого изображения во входном наборе с помощью пары "имя-значение". Можно задать эту пару "имя-значение" в дополнение к входному параметру от любого из предыдущих синтаксисов.

crf = camresponse(images,'ExposureTimes',expTimes) оценивает функцию отклика камеры от ряда пространственно зарегистрированных изображений LDR, сохраненных как массив ячеек. Задайте выдержку для каждого изображения во входном наборе при помощи пары "имя-значение".

Примеры

свернуть все

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

files = ["office_1.jpg","office_2.jpg","office_3.jpg",...
         "office_4.jpg","office_5.jpg","office_6.jpg"];

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

crf = camresponse(files);

Укажите диапазон уровней яркости во входных изображениях.

range = 0:length(crf)-1;

Постройте предполагаемую функцию отклика камеры для каждого из красных, зеленых, и синих компонентов цвета. График показывает отношение между интенсивностью изображений и логарифмическим воздействием.

figure
hold on
plot(crf(:,1),range,'--r','LineWidth',2);
plot(crf(:,2),range,'-.g','LineWidth',2);
plot(crf(:,3),range,'-.b','LineWidth',2);
xlabel('Log-Exposure');
ylabel('Image Intensity');
title('Camera Response Function');
grid on
axis('tight')
legend('R-component','G-component','B-component','Location','southeast')

Figure contains an axes object. The axes object with title Camera Response Function contains 3 objects of type line. These objects represent R-component, G-component, B-component.

Создайте ImageDatastore объект, содержащий шесть изображений низкого динамического диапазона (LDR).

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

Отобразите изображения в монтаже.

montage(imds,'Size',[6 1])

Figure contains an axes object. The axes object contains an object of type image.

Задайте выдержку для каждого изображения в ImageDatastore объект.

expTimes = [0.0333 0.1000 0.3333 0.6250 1.3000 4.0000];

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

crf = camresponse(imds,'ExposureTimes',expTimes);

Укажите диапазон значений интенсивности во входных изображениях.

range = 0:length(crf)-1;

Постройте предполагаемую функцию отклика камеры для каждого из R, G, и компоненты цвета B. График показывает отношение между интенсивностью изображений и логарифмическим воздействием.

figure
hold on
plot(crf(:,1),range,'--r','LineWidth',2);
plot(crf(:,2),range,'-.g','LineWidth',2);
plot(crf(:,3),range,'-.b','LineWidth',2);
xlabel('Log-Exposure');
ylabel('Image Intensity');
title('Camera Response Function');
grid on
axis('tight')
legend('R-component','G-component','B-component','Location','southeast')

Figure contains an axes object. The axes object with title Camera Response Function contains 3 objects of type line. These objects represent R-component, G-component, B-component.

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

свернуть все

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

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

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

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

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

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

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

Примечание

Когда введенный массив ячеек изображений LDR, необходимо задать выдержку как второй входной параметр при помощи пары "имя-значение" 'ExposureTimes'.

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

свернуть все

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

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

Советы

  • Эта функция требует минимума двух изображений с различными временами воздействия. Большее число изображений дает к лучшей оценке crf за счет большего количества времени вычислений.

  • Входные файлы изображений в files и imds должен содержать Формат Файла обмена изображениями (EXIF) метаданные воздействия. Оценить crf значения, функция читает выдержку в метаданных EXIF. Если вы задаете expTimes, функция заменяет выдержку в метаданных EXIF.

Ссылки

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

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

| |

Введенный в R2019a