dualtree3

3-D двойное древовидное комплексное вейвлет

Описание

[a,d] = dualtree3(x) возвращает 3-D комплексное вейвлет x на максимальном уровне, floor(log2(min(size(x)))).

[a,d] = dualtree3(x,level) возвращает 3-D преобразование двухдревовидного вейвлета вниз в level.

пример

[a,d] = dualtree3(___,Name,Value) задает опции, использующие аргументы пары "имя-значение" в дополнение к любому из входных параметров в предыдущих синтаксисах.

пример

[a,d] = dualtree3(___,'excludeL1') исключает вейвлет (деталь) коэффициентов первого уровня. Исключение вейвлет первого уровня может ускорить алгоритм и сохранить память. Первый уровень не показывает направленной селективности уровней 2 и выше. Совершенное свойство реконструкции двухдревовидного вейвлета преобразования сохраняется только, если включены коэффициенты вейвлета первого уровня. Если вы не задаете эту опцию или добавляете 'includeL1'затем функция включает коэффициенты первого уровня.

Примеры

свернуть все

Сгенерируйте объемный набор данных. Постройте график нескольких поперечных сечений данных, наблюдаемых сверху. Данные не симметричны относительно оси X или оси Y.

xl = 64;

xx = linspace(-5,5,xl);

[x,y,z] = meshgrid(xx);

G = (x+3*y)./(1+exp((x.^2+2*y.^2+z.^2)-10));

for k = 1:16
    subplot(4,4,k)
    surf(xx,xx,G(:,:,4*k))
    view(2)
    shading interp
    title(['z = ' num2str(xx(4*k),2)])
end

Figure contains 16 axes. Axes 1 with title z = -4.5 contains an object of type surface. Axes 2 with title z = -3.9 contains an object of type surface. Axes 3 with title z = -3.3 contains an object of type surface. Axes 4 with title z = -2.6 contains an object of type surface. Axes 5 with title z = -2 contains an object of type surface. Axes 6 with title z = -1.3 contains an object of type surface. Axes 7 with title z = -0.71 contains an object of type surface. Axes 8 with title z = -0.079 contains an object of type surface. Axes 9 with title z = 0.56 contains an object of type surface. Axes 10 with title z = 1.2 contains an object of type surface. Axes 11 with title z = 1.8 contains an object of type surface. Axes 12 with title z = 2.5 contains an object of type surface. Axes 13 with title z = 3.1 contains an object of type surface. Axes 14 with title z = 3.7 contains an object of type surface. Axes 15 with title z = 4.4 contains an object of type surface. Axes 16 with title z = 5 contains an object of type surface.

Вычислите 3-D преобразование данных в двойном дереве до уровня 4. Задайте длину фильтра Q-сдвига Гильберта 14.

[a,d] = dualtree3(G,4,'FilterLength',14);

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

m = 1;

for k = 1:8
    subplot(4,4,2*k-1)
    surf(real(d{m}(:,:,3*k)))

    view(2)
    shading interp
    axis tight
    title(['Re d\{1\}, n = ' int2str(3*k)])

    subplot(4,4,2*k)
    surf(imag(d{m}(:,:,3*k)))

    view(2)
    shading interp
    axis tight
    title(['Im d\{1\}, n = ' int2str(3*k)])
end

Figure contains 16 axes. Axes 1 with title Re d\{1\}, n = 3 contains an object of type surface. Axes 2 with title Im d\{1\}, n = 3 contains an object of type surface. Axes 3 with title Re d\{1\}, n = 6 contains an object of type surface. Axes 4 with title Im d\{1\}, n = 6 contains an object of type surface. Axes 5 with title Re d\{1\}, n = 9 contains an object of type surface. Axes 6 with title Im d\{1\}, n = 9 contains an object of type surface. Axes 7 with title Re d\{1\}, n = 12 contains an object of type surface. Axes 8 with title Im d\{1\}, n = 12 contains an object of type surface. Axes 9 with title Re d\{1\}, n = 15 contains an object of type surface. Axes 10 with title Im d\{1\}, n = 15 contains an object of type surface. Axes 11 with title Re d\{1\}, n = 18 contains an object of type surface. Axes 12 with title Im d\{1\}, n = 18 contains an object of type surface. Axes 13 with title Re d\{1\}, n = 21 contains an object of type surface. Axes 14 with title Im d\{1\}, n = 21 contains an object of type surface. Axes 15 with title Re d\{1\}, n = 24 contains an object of type surface. Axes 16 with title Im d\{1\}, n = 24 contains an object of type surface.

Повторите процедуру для коэффициентов второго уровня. Когда число уровней увеличений на единицу, массив коэффициентов вейвлета уменьшается вдвое вдоль первых двух размерностей.

m = 2;

for k = 1:8
    subplot(4,4,2*k-1)
    surf(real(d{m}(:,:,3*k)))

    view(2)
    shading interp
    axis tight
    title(['Re d\{2\}, n = ' int2str(3*k)])

    subplot(4,4,2*k)
    surf(imag(d{m}(:,:,3*k)))

    view(2)
    shading interp
    axis tight
    title(['Im d\{2\}, n = ' int2str(3*k)])
end

Figure contains 16 axes. Axes 1 with title Re d\{2\}, n = 3 contains an object of type surface. Axes 2 with title Im d\{2\}, n = 3 contains an object of type surface. Axes 3 with title Re d\{2\}, n = 6 contains an object of type surface. Axes 4 with title Im d\{2\}, n = 6 contains an object of type surface. Axes 5 with title Re d\{2\}, n = 9 contains an object of type surface. Axes 6 with title Im d\{2\}, n = 9 contains an object of type surface. Axes 7 with title Re d\{2\}, n = 12 contains an object of type surface. Axes 8 with title Im d\{2\}, n = 12 contains an object of type surface. Axes 9 with title Re d\{2\}, n = 15 contains an object of type surface. Axes 10 with title Im d\{2\}, n = 15 contains an object of type surface. Axes 11 with title Re d\{2\}, n = 18 contains an object of type surface. Axes 12 with title Im d\{2\}, n = 18 contains an object of type surface. Axes 13 with title Re d\{2\}, n = 21 contains an object of type surface. Axes 14 with title Im d\{2\}, n = 21 contains an object of type surface. Axes 15 with title Re d\{2\}, n = 24 contains an object of type surface. Axes 16 with title Im d\{2\}, n = 24 contains an object of type surface.

Инвертируйте преобразование, задавая ту же длину пары фильтров. Проверяйте на идеальную реконструкцию.

xrec = idualtree3(a,d,'FilterLength',14);
max(abs(xrec(:)-G(:)))
ans = 1.4211e-14

Загрузите набор измерений МРТ головы человека. Обрезать данные так, чтобы они были даже по третьей размерности. Вычислите 3-D преобразование двойственного дерева, исключая коэффициенты вейвлета первого уровня.

load wmri

[A,D] = dualtree3(X(:,:,1:26),2,'excludeL1');

Восстановите данные путем инвертирования преобразования. Установите коэффициенты масштабирования конечного уровня явно равными 0. Отобразите равномерно разнесенный выбор восстановленных изображений.

imrec = idualtree3(A*0,D);

colormap bone
for kj = 1:9
    subplot(3,3,kj)
    surf(imrec(:,:,3*kj-2))
    shading interp
    view(2)
    axis tight off
end

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

свернуть все

Входные данные, заданные как действительный трехмерный массив. Все три размерности x должно быть четным и больше чем или равным 4.

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

Уровень преобразования, заданный как положительное целое число, больше или равное 2 и меньше или равное floor(log2(min(size(x)))).

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

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'LevelOneFilter','legall','FilterLength',6 вычисляет преобразование с помощью фильтров анализа LeGall с длиной масштабирования 5 и длиной волны 3 на уровне 1 и фильтрами Q-сдвига длины 6 на уровнях 2 и выше.

Длина пары фильтр-сдвиг Гильберта, заданная как разделенная разделенными запятой парами, состоящая из 'FilterLength' и один из 6, 10, 14, 16 или 18. dualtree3 использует ортогональную пару фильтров Q-сдвига Гильберта 'FilterLength' для уровней 2 и выше.

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

Фильтр биортогонального анализа первого уровня, заданный как разделенная разделенными запятой парами, состоящая из 'LevelOneFilter' и вектор символов или строка. По умолчанию, dualtree3 использует для уровня 1 почти симметричный биортогональный вейвлет с длинами 5 (масштабирующий фильтр) и 7 (вейвлет).

Типы данных: char | string

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

свернуть все

Коэффициенты конечного уровня масштабирования (lowpass), возвращенные как вещественная матрица.

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

Вейвлет коэффициенты, возвращенные как 1-бай- level массив ячеек. Существует 28 вейвлет в 3-D двухдревовидном преобразовании на каждом уровне.

Типы данных: double
Поддержка комплексного числа: Да

Ссылки

[1] Chen, H., and N. G. Kingsbury. «Эффективная регистрация неригидных 3-D тел». IEEE® Транзакции по обработке изображений. Том 21, январь 2012, стр. 262-272.

[2] Kingsbury, N.G. «Complex Wavelets for Shift Invariant Analysis and Filtering of Signals». Журнал прикладного и вычислительного гармонического анализа, том 10, № 3, май 2001 года, стр. 234-253.

Введенный в R2017a