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

Вычислите 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

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

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

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

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

Загрузите набор измерений MRI человеческой головы. Обрежьте данные так, чтобы они даже приехали третья размерность. Вычислите 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 и длине 6 фильтров Q-сдвига на уровнях 2 и больше.

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

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

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

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

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

свернуть все

Итоговый уровень, масштабирующий (lowpass) коэффициенты, возвращенные как матрица с действительным знаком.

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

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

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

Ссылки

[1] Чен, H. и Н. Г. Кингсбери. “Эффективная Регистрация Нетвердых 3-D Тел”. IEEE® Transactions на Обработке изображений. Vol 21, январь 2012, стр 262–272.

[2] Кингсбери, N. G. “Комплексные Вейвлеты для Анализа Инварианта Сдвига и Фильтрации Сигналов”. Журнал Прикладного и Вычислительного Гармонического Анализа. Издание 10, май 2001, стр 234–253.

Введенный в R2017a