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];

Оцените функцию отклика камеры из изображений в 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. 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-на-1 вектор для полутоновых изображений и n-на-3 матрица для цветных изображений. Функция отклика камеры преобразует значение логарифмической экспозиции (сияние сцены) в уровни интенсивности на входных изображениях. Значение n 2bit depth. Для примера, если битовая глубина входа набора изображений составляет 8, то n равняется 256.

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

Совет

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

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

Ссылки

[1] Debevec, P.E., and J. Malik. «Восстановление карт луча высокой динамической области значений из фотографий». В классах ACM SIGGRAPH 2008, статья № 31. Нью-Йорк, Нью-Йорк: ACM, 2008.

См. также

| |

Введенный в R2019a