wfusimg

Fusion двух изображений

Описание

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

пример

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

[xfus,txfus,tx1,tx2] = wfusimg(x1,x2,wname,level,afusmeth,dfusmeth) также возвращает три объекта дерева разложения вейвлета, сопоставленные с xfusx1 , и 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 objects. Axes object 1 with title Mask contains an object of type image. Axes object 2 with title Bust contains an object of type image. Axes object 3 with title Synthesized Image: mean-mean contains an object of type image. Axes object 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 objects. Axes object 1 with title Catherine 1 contains an object of type image. Axes object 2 with title Catherine 2 contains an object of type image. Axes object 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 objects. Axes object 1 with title Original Image 1 contains an object of type image. Axes object 2 with title Original Image 2 contains an object of type image. Axes object 3 with title Fused Images contains an object of type image. Axes object 4 with title Fused Decompositions contains an object of type image.

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

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

Figure contains an axes object. The axes object 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

Входные параметры

свернуть все

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

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

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

Уровень разложения вейвлета в виде положительного целого числа.

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

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

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

свернуть все

Сплавленное изображение, возвращенное как 2D матрица с действительным знаком или трехмерный массив с действительным знаком. Сплавленное изображение xfus имеет тот же размер как x1 и x2.

Деревья разложения вейвлета сопоставлены с xfusx1 , и x2, соответственно, возвращенный как wdectree объекты.

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

Ссылки

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

[2] Литий, H., бакалавр наук Манджунэт и С. К. Митра. "Fusion мультидатчика Изображений Используя Преобразование Вейвлета". Графические Модели и Обработка изображений. Объем 57, Выпуск 3, май 1995, стр 235–245.

[3] Мизити, M., И. Мизити, Г. Оппенхейм и J.-M. Poggi. Приложения Les ondelettes et leurs. Франция: Гермес Science/Lavoisier, 2003.

Смотрите также

|

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