exponenta event banner

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-stop и изменяющееся время экспозиции.

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. The axes 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. The axes contains an object of type image.

Укажите время экспозиции для каждого изображения в ImageDatastore объект.

expTimes = [0.0333 0.1000 0.3333 0.6250 1.3000 4.0000];

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

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. The axes 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-й элемент в векторе соответствует k-му LDR-изображению во входном наборе. При указании expTimes, функция переопределяет метаданные экспозиции EXIF.

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

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

Примечание

Если ввод является массивом ячеек изображений LDR, необходимо указать время экспозиции в качестве второго входного аргумента, используя пару имя-значение 'ExposureTimes'.

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

свернуть все

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

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

Совет

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

  • Входные файлы изображений в files и imds должен содержать метаданные экспозиции EXIF. Чтобы оценить crf значения, функция считывает время экспозиции в метаданных EXIF. При указании expTimes, функция переопределяет время экспозиции в метаданных EXIF.

Ссылки

[1] Дебевец, П. Э. и Ж. Малик. «Восстановление карт излучения с высоким динамическим диапазоном по фотографиям». В классах ACM SIGGRAPH 2008, статья № 31. Нью-Йорк, Нью-Йорк: ACM, 2008.

См. также

| |

Представлен в R2019a