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 с реальными значениями или трехмерные массивы с реальными значениями. Если задан как трехмерные массивы, 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 матрица или вещественный трехмерный массив. Сросшееся изображение xfus имеет тот же размер, что и x1 и x2.

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

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

Ссылки

[1] de Zeeuw, P. M. «Wavelet and image fusion». CWI, Амстердам, март 1998 года. https://groups.google.com/d/msg/comp.soft-sys.matlab/AjqIENmx1Z4/5g7QDFrZvWMJ

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

[3] Misiti, M., Y. Misiti, G. Oppenheim, and J.-M. Погги. Les ondelettes et использует приложения. Франция: Hermes Science/Lavoisier, 2003.

См. также

|

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