exponenta event banner

burstinterpolant

Создание изображения с высоким разрешением из набора изображений в пакетном режиме с низким разрешением

Описание

пример

B = burstinterpolant(imds,tforms,scale) создает изображение с высоким разрешением, B из набора изображений в пакетном режиме с низким разрешением, сохраненных как ImageDatastore объект, imds. scale задает значение увеличения для изображения с высоким разрешением. Размер B является scale умножает размер входных изображений.

пример

B = burstinterpolant(images,tforms,scale) создает изображение с высоким разрешением, B из набора изображений в пакетном режиме с низким разрешением, хранящихся в массиве ячеек images. Размер B является scale умножает размер входных изображений.

Примеры

свернуть все

Укажите расположение изображений в пакетном режиме с низким разрешением для сохранения в качестве объекта хранилища данных изображений. Входные изображения представляют собой 2-D изображения RGB.

setDir = fullfile(toolboxdir('images'),'imdata','notebook');

Используйте imageDatastore функция для чтения и хранения изображений в пакетном режиме с низким разрешением в качестве объекта хранилища данных изображения.

imds = imageDatastore(setDir,'FileExtensions',{'.png'});

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

montage(imds)
title('Set of Low-Resolution Burst Mode Images')

Figure contains an axes. The axes with title Set of Low-Resolution Burst Mode Images contains an object of type image.

Вычислить параметры геометрического преобразования

Чтобы вычислить параметры геометрического преобразования, преобразуйте все изображения RGB в светлые изображения с помощью rgb2lightness функция. Изображения облегченности пакетного режима сохраняются как объект хранилища данных изображения.

imdsTransformed = transform(imds,@(x) rgb2lightness(x));

Считывайте первое легковесное изображение в рабочее пространство и используйте его в качестве опорного изображения для оценки геометрических преобразований.

refImg = read(imdsTransformed);

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

[optimizer,metric] = imregconfig('monomodal');

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

numImages = numpartitions(imds);

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

tforms = repmat(affine2d(),numImages-1,1);

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

idx = 1;
while hasdata(imdsTransformed)
    movingImg = read(imdsTransformed);
    tforms(idx) = imregtform(refImg,movingImg,'rigid',optimizer,metric);
    idx = idx + 1;
end

Создание изображения с высоким разрешением

Укажите масштабный коэффициент для создания изображения с высоким разрешением.

scale = 4;

Создайте изображение с высоким разрешением из набора RGB-изображений в пакетном режиме с низким разрешением. Укажите параметр преобразования для надежной оценки значений пикселей высокого разрешения.

B = burstinterpolant(imds,tforms,scale);

Отображение изображения с высоким разрешением.

figure('WindowState','maximized')
imshow(B)
title ('High-Resolution Image')

Figure contains an axes. The axes with title High-Resolution Image contains an object of type image.

Считывайте изображение RGB в пакетном режиме с низким разрешением из хранилища данных изображения и отображайте его размер.

Img = read(imds);
inputDim = [size(Img,1) size(Img,2)]
inputDim = 1×2

   161   186

Отображение размера изображения с высоким разрешением. Поскольку масштабный коэффициент равен 4, размер изображения с высоким разрешением в 4 раза превышает размер RGB-изображений в пакетном режиме с низким разрешением.

outputDim = [size(B,1) size(B,2)]
outputDim = 1×2

   644   744

Загрузить в рабочую область данные массива ячеек, содержащие изображение в пакетном режиме с низким разрешением. Входные изображения являются мономодальными и 2-D RGB-изображениями.

load('LRData')

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

montage(images,'Size',[2 4],'BackgroundColor',[1 1 1]);
title('Set of Low-Resolution Burst Mode Images')

Figure contains an axes. The axes with title Set of Low-Resolution Burst Mode Images contains an object of type image.

Вычислить параметры геометрического преобразования

Чтобы вычислить параметры геометрического преобразования, преобразуйте все изображения RGB в светлые изображения с помощью rgb2lightness функция.

imagesT = cellfun(@rgb2lightness,images,'UniformOutput',false);

Считывайте первое легковесное изображение в рабочее пространство и используйте его в качестве опорного изображения для оценки геометрических преобразований.

refImg = imagesT{1};

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

[optimizer,metric] = imregconfig('monomodal');

Найти общее количество изображений, хранящихся в массиве ячеек.

numImages = length(images);

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

tforms = repmat(affine2d(),numImages-1,1);

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

for i= 2:length(images)
    movingImg = imagesT{i};
    tforms(i-1) = imregtform(refImg,movingImg,'rigid',optimizer,metric);
end

Создание изображения с высоким разрешением

Укажите масштабный коэффициент для создания изображения с высоким разрешением.

scale = 3;

Создайте изображение с высоким разрешением из набора RGB-изображений в пакетном режиме с низким разрешением. Укажите параметр преобразования для надежной оценки значений пикселей высокого разрешения.

B = burstinterpolant(images,tforms,scale);

Отображение изображения с высоким разрешением.

figure
imshow(B); 
title ('High-Resolution Image')

Figure contains an axes. The axes with title High-Resolution Image contains an object of type image.

Считывайте изображение RGB в пакетном режиме с низким разрешением из массива ячеек и отображайте его размер.

Img = images{1};
inputDim = [size(Img,1) size(Img,2)]
inputDim = 1×2

   154   265

Отображение размера изображения с высоким разрешением. Поскольку масштабный коэффициент равен 3, размер изображения с высоким разрешением в 3 раза превышает размер изображений в пакетном режиме с низким разрешением.

ouputDim = [size(B,1) size(B,2)]
ouputDim = 1×2

   462   795

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

свернуть все

Хранилище данных входного изображения, указанное как ImageDatastore объект. Хранилище данных входного изображения содержит несколько изображений в пакетном режиме с низким разрешением, используемых для создания выходных данных изображения с высоким разрешением.

  • Изображения во входном хранилище данных изображения должны быть 2-ми изображениями оттенков серого размера или 2-е изображения RGB m на n размера m на n на 3.

  • Все изображения в хранилище данных входного изображения должны иметь одинаковый размер и тип данных.

  • Число изображений в хранилище данных входного изображения должно быть больше или равно 2.

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

Входные изображения, заданные как массив ячеек k-by-1. k - количество входных изображений, сохраненных в массиве ячеек. Все входные изображения должны иметь одинаковый размер.

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

Параметр преобразования, указанный как affine2d объектный массив размера (k-1) -by-1 или 1-by- (k-1). k - количество изображений на входеimds или images.

Коэффициент изменения размера, заданный как скаляр, больший или равный 1.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

свернуть все

Изображение с высоким разрешением, возвращаемое как 2-D изображение в градациях серого или 2-D изображение RGB. B имеет тот же тип данных, что и входные изображения. Размер B - значение scale умножить размер изображений на входе imds или images.

Например, пусть L - значение scaleи m-на-n - размер изображений в пакетном режиме с низким разрешением. Затем размер изображения с высоким разрешением равен mL-by-nL.

Совет

  • Вычислить tforms по отношению к каждому входному изображению с использованием imregtform функция. Первое изображение на входе может использоваться в качестве опорного изображения для оценки жестких геометрических преобразований (только поворотов и перемещений).

  • Вычислить входные аргументы optimizer и metric в imregtform использование imregconfig функция. optimizer должно быть RegularStepGradientDescent объект и metric должно быть MeanSquares объект.

  • Чтобы улучшить вывод с высоким разрешением, можно изменить значение входного аргумента RegularStepGradientDescent объект оптимизатора в imregtform. Дополнительные сведения об этих изменениях см. в разделе Свойства RegularStepGradientDescent.

Алгоритмы

burstinterpolant функция использует способ обратного взвешивания расстояния [1] для формирования изображения с высоким разрешением из набора изображений в пакетном режиме с низким разрешением. Функция предсказывает значение пикселя высокого разрешения из набора пикселей в изображениях режима пакета низкого разрешения, выбранных на основе параметра преобразования. Использование параметра преобразования tforms делает выбор пикселей устойчивым к любым жестким геометрическим преобразованиям (только повороты и перемещения).

Примечание

  • Если входные изображения 2-D RGB, оцените tforms от компонента легкости. Вы можете использовать rgb2lightness функция для вычисления значений освещенности из значений цвета RGB.

Ссылки

[1] Шепард, Дональд. «Двумерная интерполяционная функция для нерегулярно разнесенных данных», В трудах 23-й Национальной конференции ACM 1968 года, 517-524. Нью-Йорк, Нью-Йорк: ACM, 1968.

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