exponenta event banner

wfusimg

Слияние двух изображений

Описание

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

пример

xfus = wfusimg(x1,x2,wname,level,afusmeth,dfusmeth) возвращает слитое изображение xfus полученные слиянием двух оригинальных изображений x1 и x2.

[xfus,txfus,tx1,tx2] = wfusimg(x1,x2,wname,level,afusmeth,dfusmeth) также возвращает три объекта дерева вейвлет-декомпозиции, связанные с xfus, x1, и x2соответственно.

[___] = wfusimg(___,'plot') печать объектов txfus, tx1, и tx2. Этот синтаксис может использоваться с любым из предыдущих синтаксисов.

Примеры

свернуть все

В этом примере показано, как объединить два изображения для создания нового изображения.

Загрузите маску и изображения бюста.

load mask
x1 = X;
load bust
x2 = X;

Объединение двух изображений из вейвлет-декомпозиций уровня 5 с помощью db2 вейвлет. Выполните слияние, взяв среднее значение как для приближений, так и для деталей.

wv = 'db2';
lv = 5;
xfusmean = wfusimg(x1,x2,wv,lv,'mean','mean');

Снова объедините два изображения, но на этот раз выполните слияние, взяв максимум приближений и минимум для деталей.

xfusmaxmin = wfusimg(x1,x2,wv,lv,'max','min');

Постройте график оригинальных и сросшихся изображений.

subplot(2,2,1)
image(x1)
axis square
title('Mask')
subplot(2,2,2)
image(x2)
axis square
title('Bust')
subplot(2,2,3)
image(xfusmean)
axis square 
title('Synthesized Image: mean-mean')
subplot(2,2,4)
image(xfusmaxmin)
axis square
title('Synthesized Image: max-min')
colormap(map)

Figure contains 4 axes. Axes 1 with title Mask contains an object of type image. Axes 2 with title Bust contains an object of type image. Axes 3 with title Synthesized Image: mean-mean contains an object of type image. Axes 4 with title Synthesized Image: max-min contains an object of type image.

В этом примере показано, как восстановить изображение из двух нечетких версий исходного изображения.

Загрузите две нечеткие версии исходного изображения.

load cathe_1
x1 = X;
load cathe_2
x2 = X;

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

wv = 'sym4';
lv = 5;
xfus = wfusimg(x1,x2,wv,lv,'max','max');

Постройте график оригинальных и сросшихся изображений.

subplot(2,2,1)
image(x1)
axis square
title('Catherine 1')
subplot(2,2,2)
image(x2)
axis square
title('Catherine 2')
subplot(2,2,3)
image(xfus)
axis square 
title('Synthesized Image')
colormap(map)

Figure contains 3 axes. Axes 1 with title Catherine 1 contains an object of type image. Axes 2 with title Catherine 2 contains an object of type image. Axes 3 with title Synthesized Image contains an object of type image.

В этом примере показано, как сплавить два изображения с помощью определяемого пользователем метода слияния.

Загрузите два изображения одинакового размера.

load mask
a = X;
load bust
b = X;

Определите метод слияния и вызовите функцию слияния helperUserFusion. Исходный код для helperUserFusion перечислены в приложении.

fus_method = struct('name','userDEF','param','helperUserFusion');

Дважды объедините изображения с помощью пользовательского метода. Первое использование wfusmat, которая сливает сами изображения, а не их вейвлет-разложения. Затем использовать wfusimg, что срастает вейвлет-разложения.

c = wfusmat(a,b,fus_method);
d = wfusimg(a,b,'db4',5,fus_method,fus_method);

Постройте график оригинальных и сросшихся изображений.

subplot(2,2,1)
image(a)
title('Original Image 1')
axis square
subplot(2,2,2)
image(b)
title('Original Image 2')
axis square
subplot(2,2,3)
image(c)
title('Fused Images')
axis square
subplot(2,2,4)
image(d)
title('Fused Decompositions')
axis square
colormap(pink(220))

Figure contains 4 axes. Axes 1 with title Original Image 1 contains an object of type image. Axes 2 with title Original Image 2 contains an object of type image. Axes 3 with title Fused Images contains an object of type image. Axes 4 with title Fused Decompositions contains an object of type image.

Визуализация различий между объединенными изображениями.

figure
image(c-d)
axis square
colormap(pink(220))

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

Приложение

helperUserFusion

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

function c = helperUserFusion(A,B)
% This function is in support of the wavelet fusion examples only. It may
% change or be removed in a future release.

% create an upper triangular logical array the same size as A.
d = logical(triu(ones(size(A))));
% set a threshold
t = 0.3;

c = A;
% set the upper triangular portion of the output to a blend of A and B
c(d) = t*A(d)+(1-t)*B(d);
% set the lower triangular portion of the output to a different blend of A
% and B
c(~d) = t*B(~d)+(1-t)*A(~d);
end

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

свернуть все

Изображения для объединения, заданные как вещественные матрицы 2-D или вещественные массивы 3-D. Если указано как массивы 3-D, x1 и x2 считаются цветными изображениями в цветовом пространстве RGB, а третий размер массивов должен быть равен 3.

Изображения x1 и x2 должен быть одинакового размера. Чтобы изменить размер изображений, используйте wextend или imresize.

Вейвлет, используемый для создания вейвлет-декомпозиции, определяемой как вектор символов или строковый скаляр. Вейвлет должен быть ортогональным или биортогенным и распознаваться wfilters.

Уровень вейвлет-декомпозиции, заданный как положительное целое число.

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

afusmethОписание
'max'

Максимум

'min'

Минимум

'mean'

Средний

'img1'

Первый элемент

'img2'Второй элемент
'rand'Случайный элемент

При указании в качестве массива структуры структура имеет вид struct('name',nameMETH,'param',paramMETH) где nameMETH может быть одним из значений, перечисленных здесь.

nameMETHОписание
'linear' 
'UD_fusion'Слияние вверх-вниз
'DU_fusion'Слияние вниз-вверх
'RL_fusion'Правое-левое слияние
'UserDEF'Пользовательское слияние

Для описания этих опций и paramMETH параметр, см. wfusmat.

Пример: afusmeth = struct('name','linear','param',0.3)

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

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

свернуть все

Слитое изображение, возвращаемое как вещественно-значная матрица 2-D или вещественно-значный массив 3-D. Слитое изображение xfus имеет тот же размер, что и x1 и x2.

Деревья вейвлет-декомпозиции, связанные с xfus, x1, и x2, соответственно, возвращено как wdectree объекты.

Пример: plot(txfus) отображает объект в графическом интерфейсе пользователя, который можно использовать для проверки дерева.

Ссылки

[1] де Зеув, П. М. «Вейвлет и слияние изображений». CWI, Амстердам, март 1998 года. https://groups.google.com/d/msg/comp.soft-sys.matlab/AjqIENmx1Z4/5g7QDFrZvWMJ

[2] Литий, H., бакалавр наук Манджунат и С. К. Митра. «Слияние мультисенсорных изображений с помощью вейвлет-преобразования». Графические модели и обработка изображений. Том 57, выпуск 3, май 1995 года, стр. 235-245.

[3] Мисити, М., Я. Мисити, Г. Оппенгейм и Ж.-М. Погги. Les ondelettes et leurs applications. Франция: Hermes Science/Lavoisier, 2003.

См. также

|

Представлен до R2006a