exponenta event banner

dualtree

Кингсбери Q-сдвиг 1-D двойное дерево комплексного вейвлет-преобразования

Описание

[A,D] = dualtree(X) возвращает 1-D двойное комплексное вейвлет-преобразование (DTCWT) X. Продукция A - матрица действительных коэффициентов масштабирования конечного уровня (нижних частот). Продукция D - массив L-by-1 ячеек комплексных вейвлет-коэффициентов, где L - уровень преобразования.

Вход X должно быть не менее двух образцов. DTCWT получается по умолчанию до уровня floor(log2N), где N - длина X если X является вектором и размерностью строки X если X является матрицей. Если N нечетный, X удлиняется на один образец, отражая последний элемент X.

По умолчанию dualtree использует околосимметричную пару биоргональных фильтров с длинами 5 (масштабный фильтр) и 7 (вейвлет-фильтр) для уровня 1 и ортогональную Q-сдвиговую пару гильбертовых вейвлет-фильтров длиной 10 для уровней, больших или равных 2.

[___,Ascale] = dualtree(X) возвращает коэффициенты масштабирования (нижних частот) на каждом уровне.

пример

[___] = dualtree(X,Name,Value) задает дополнительные параметры с использованием аргументов пары «имя-значение». Например, 'Level',10 задает разложение до уровня 10.

Примеры

свернуть все

Загрузите сигнал ЭКГ.

load wecg
plot(wecg)
axis tight

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

Получите четырехуровневое преобразование двойного дерева. Возвращает коэффициенты аппроксимации (нижних частот) на всех уровнях.

[a,d,as] = dualtree(wecg,'Level',4);

Постройте график вейвлет-коэффициентов конечного уровня из дерева A и дерева B.

figure
subplot(2,1,1)
plot(real(d{4}))
axis tight
title('Tree A')
subplot(2,1,2)
plot(imag(d{4}))
axis tight
title('Tree B')

Figure contains 2 axes. Axes 1 with title Tree A contains an object of type line. Axes 2 with title Tree B contains an object of type line.

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

figure
for k=1:4
    subplot(2,2,k)
    plot(as{k})
    axis tight
    title(['Level: ',num2str(k)])
end

Figure contains 4 axes. Axes 1 with title Level: 1 contains an object of type line. Axes 2 with title Level: 2 contains an object of type line. Axes 3 with title Level: 3 contains an object of type line. Axes 4 with title Level: 4 contains an object of type line.

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

Загрузите сигнал ЭКГ. Сигнал имеет 2048 выборок.

load wecg
len = numel(wecg);
plot(wecg)
axis tight

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

Создайте два нулевых вектора 1 на 3000. Вставьте сигнал ЭКГ в различные сегменты каждого нулевого вектора.

shift1 = 328;
shift2 = 368;
vec1 = zeros(1,3000);
vec2 = zeros(1,3000);
vec1(shift1+[1:len]) = wecg;
vec2(shift2+[1:len]) = wecg;

Получить преобразование двойного дерева обоих векторов. Использовать параметры по умолчанию.

[a1,d1] = dualtree(vec1);
[a2,d2] = dualtree(vec2);

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

energy1 = cell2mat(cellfun(@(x)(sum(abs(x).^2)),d1,'uni',0));
energy2 = cell2mat(cellfun(@(x)(sum(abs(x).^2)),d2,'uni',0));
levels =cell(numel(energy1),1);
for k=1:numel(energy1)
    levels{k} = sprintf('Level %d',k);
end
energies = table(levels,energy1,energy2)
energies=11×3 table
       levels       energy1    energy2
    ____________    _______    _______

    {'Level 1' }    16.014     16.014 
    {'Level 2' }    19.095     19.095 
    {'Level 3' }     35.99      35.99 
    {'Level 4' }    25.141     25.065 
    {'Level 5' }     16.81     17.452 
    {'Level 6' }    9.7078      9.161 
    {'Level 7' }    2.3201     2.0513 
    {'Level 8' }    8.3808     8.4197 
    {'Level 9' }    23.006      22.56 
    {'Level 10'}    70.764     73.964 
    {'Level 11'}    64.097     59.022 

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

свернуть все

Входные данные, определенные как действительный вектор, матрица или расписание. Вход X должно быть не менее двух образцов. Если X является расписанием, оно может содержать один вектор или переменную матрицы, или может содержать несколько переменных, каждая из которых содержит вектор столбца. Если X является матрицей, dualtree работает на столбцах X.

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

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

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

Пример: 'LevelOneFilter','antonini','Level',4

Уровень разложения, заданный как положительное целое число, меньшее или равное floor(log2N), где N - длина X если X является вектором и размерностью строки X если X является матрицей. Если не указано, Level по умолчанию: floor(log2N).

Биорогональный фильтр для использования в анализе первого уровня, указанный как:

  • 'legall' - Фильтр LeGall 5/3 [3]

  • 'nearsym13_19' - (13,19) -тэп почти ортогональный фильтр [2]

  • 'nearsym5_7' - (5,7) -тэп почти ортогональный фильтр [1]

  • 'antonini' - (9,7) - фильтр Антонини [1]

По умолчанию dualtree использование 'nearsym5_7', околосимметричную пару биортогональных фильтров с длинами 5 (масштабный фильтр) и 7 (вейвлет-фильтр).

Длина пары ортогонального анализа Гильберта Q-сдвига для использования для уровней 2 и выше, указанная как одно из перечисленных значений [2]. По умолчанию dualtree использует ортогональную Q-сдвиговую пару гильбертовского вейвлет-фильтра длиной 10.

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

свернуть все

Коэффициенты аппроксимации конечного уровня, возвращаемые как действительный вектор, если X является вектором или матрицей, если X является мультисигналом. Коэффициенты аппроксимации являются коэффициентами масштабирования конечного уровня (нижних частот). Если X - матрица, размеры столбцов X и A равны.

Вейвлет-коэффициенты, возвращаемые как массив L-by-1 ячеек комплексных вейвлет-коэффициентов, где L - уровень преобразования. Действительные части коэффициентов находятся в дереве A, а мнимые части - в дереве B. X является матрицей, каждый элемент D - матрица, размер столбца которой равен размеру столбца X.

Коэффициенты аппроксимации на каждом уровне преобразования, возвращаемые в виде массива L-by-1 ячеек из коэффициентов реального масштабирования (нижних частот), где L - уровень преобразования. Если X является матрицей, каждый элемент D - матрица, размер столбца которой равен размеру столбца X.

Ссылки

[1] Антонини, М., М. Барло, П. Матье и И. Даубехиес. «Кодирование изображения с помощью вейвлет-преобразования». Транзакции IEEE по обработке изображений 1, № 2 (апрель 1992 года): 205-20. https://doi.org/10.1109/83.136597.

[2] Кингсбери, Ник. «Сложные вейвлеты для инвариантного анализа сдвига и фильтрации сигналов». Прикладный и вычислительный гармонический анализ 10, № 3 (май 2001 года): 234-53. https://doi.org/10.1006/acha.2000.0343.

[3] Ле Галль, Д. и А. Табатабай. «Поддиапазонное кодирование цифровых изображений с использованием симметричных фильтров короткого ядра и методов арифметического кодирования». В ICASSP-88., Международная конференция по акустике, речи и обработке сигналов, 761-64. Нью-Йорк, Нью-Йорк, США: IEEE, 1988. https://doi.org/10.1109/ICASSP.1988.196696.

Расширенные возможности

.
Представлен в R2020a