dddtree2

Двухдерево и двойная плотность 2-D вейвлет

Описание

пример

wt = dddtree2(typetree,x,level,fdf,df) возвращает typetree дискретное вейвлет 2-D входного изображения, x, до уровня, level. Вейвлет использует фильтры разложения (анализа), fdf, для первого уровня и фильтров анализа, df, для последующих уровней. Поддерживаемые вейвлеты преобразований - это критически выбранные DWT, двойная плотность, действительное ориентированное двойственное дерево, комплексное ориентированное двойное дерево, действительное ориентированное двойное дерево с двойной плотностью и комплексное ориентированное двойное дерево с двойной плотностью вейвлета преобразования. Критически выбранный DWT является разложением банка фильтров в ортогональном или биортогональном базисе (не избыточном). Другие вейвлеты преобразований являются блоками фильтров с избыточной дискретизацией с различными степенями селективности по направлению.

пример

wt = dddtree2(typetree,x,level,fname) использует фильтры, заданные как fname для получения вейвлет. Допустимые спецификации фильтра зависят от типа вейвлет. Посмотрите dtfilters для получения дополнительной информации.

пример

wt = dddtree2(typetree,x,level,fname1,fname2) использует фильтры, указанные в fname1 для первого этапа двухдревовидного вейвлет и фильтров, заданных в fname2 для последующих этапов двойственного древовидного вейвлет. Установка различных фильтров для этапа 1 действительна и необходима только при typetree является 'realdt', 'cplxdt', 'realdddt', или 'cplxdddt'.

Примеры

свернуть все

Визуализируйте шесть направленных вейвлет реального ориентированного двойственного древовидного вейвлет-преобразования.

Создайте фильтры анализа Фарраса первого этапа для этих двух деревьев.

  Faf{1} = [0      0
   -0.0884   -0.0112
    0.0884    0.0112
    0.6959    0.0884
    0.6959    0.0884
    0.0884   -0.6959
   -0.0884    0.6959
    0.0112   -0.0884
    0.0112   -0.0884
         0         0];
Faf{2} = [ 0.0112  0
    0.0112         0
   -0.0884   -0.0884
    0.0884   -0.0884
    0.6959    0.6959
    0.6959   -0.6959
    0.0884    0.0884
   -0.0884    0.0884
         0    0.0112
         0   -0.0112];

Создайте 6-тапные фильтры анализа Q-сдвига Кингсбери для последующих этапов мультиразрешения.

af{1} = [ 0.0352   0
         0         0
   -0.0883   -0.1143
    0.2339         0
    0.7603    0.5875
    0.5875   -0.7603
         0    0.2339
   -0.1143    0.0883
         0         0
         0   -0.0352];

af{2} = [0   -0.0352
         0         0
   -0.1143    0.0883
         0    0.2339
    0.5875   -0.7603
    0.7603    0.5875
    0.2339         0
   -0.0883   -0.1143
         0         0
    0.0352         0];

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

  • Размерности строки и столбца делятся на 24.

  • Минимум размера строки и столбца должен быть больше или равен продукту максимальной длины фильтров анализа и 23.

J = 4;
L = 3*2^(J+1);
N = L/2^J;
x = zeros(2*L,3*L);
[numrows,numcols] = size(x)
numrows = 192
numcols = 288

Получите действительное ориентированное двойственное древовидное вейвлет изображения нулей до уровня 4.

wt = dddtree2('realdt',x,J,Faf,af)
wt = struct with fields:
       type: 'realdt'
      level: 4
    filters: [1x1 struct]
        cfs: {1x5 cell}
      sizes: [14x2 double]

Четвертый элемент в wt.cfs являются вейвлет уровня 4. Вставьте 1 в одно положение шести вейвлет (три ориентации × два дерева) в самом грубом масштабе и инвертировать преобразование вейвлета.

wt.cfs{4}(N/2,N/2+0*N,1,1) = 1;
wt.cfs{4}(N/2,N/2+1*N,2,1) = 1;
wt.cfs{4}(N/2,N/2+2*N,3,1) = 1;
wt.cfs{4}(N/2+N,N/2+0*N,1,2) = 1;
wt.cfs{4}(N/2+N,N/2+1*N,2,2) = 1;
wt.cfs{4}(N/2+N,N/2+2*N,3,2) = 1;
xrec = idddtree2(wt);

Визуализируйте шесть направленных вейвлетов.

imagesc(xrec);
colormap gray; axis off;
title('Real Oriented Dual-Tree Wavelets')

Figure contains an axes. The axes with title Real Oriented Dual-Tree Wavelets contains an object of type image.

Получите вейвлет двойной плотности изображения.

Загрузите изображение и получите вейвлет двойной плотности с помощью 6-касательных фильтров (см dtfilters).

load xbox
imagesc(xbox)
colormap gray

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

wt = dddtree2('ddt',xbox,1,'filters1')
wt = struct with fields:
       type: 'ddt'
      level: 1
    filters: [1x1 struct]
        cfs: {[64x64x8 double]  [64x64 double]}
      sizes: [10x2 double]

В критически выбранном 2-D дискретном вейвлет существует один высокочастотный фильтр. Фильтрация строк и столбцов изображения фильтром highpass соответствует извлечению деталей в диагональной ориентации. В вейвлет двойной плотности присутствуют два высокочастотных фильтра, H1 и H2. Диагонально ориентированные детали извлекаются путем фильтрации строк и столбцов с четырьмя комбинациями фильтров highpass. Визуализируйте диагональные детали в четырех вейвлет-высокочастотных поддиапазонах.

H1H1 = wt.cfs{1}(:,:,4);
H1H2 = wt.cfs{1}(:,:,5);
H2H1 = wt.cfs{1}(:,:,7);
H2H2 = wt.cfs{1}(:,:,8);
subplot(2,2,1)
imagesc(H1H1);
title('H1 H1')
colormap gray;
subplot(2,2,2);
imagesc(H1H2);
title('H1 H2')
subplot(2,2,3)
imagesc(H2H1)
title('H2 H1')
subplot(2,2,4)
imagesc(H2H2)
title('H2 H2')

Figure contains 4 axes. Axes 1 with title H1 H1 contains an object of type image. Axes 2 with title H1 H2 contains an object of type image. Axes 3 with title H2 H1 contains an object of type image. Axes 4 with title H2 H2 contains an object of type image.

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

Загрузите изображение и получите комплексное двухдревовидное вейвлет.

load xbox
imagesc(xbox)
colormap gray

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

wt = dddtree2('cplxdt',xbox,1,'FSfarras','qshift10')
wt = struct with fields:
       type: 'cplxdt'
      level: 1
    filters: [1x1 struct]
        cfs: {[5-D double]  [64x64x2x2 double]}
      sizes: [5x2 double]

Получите и отобразите диагонально ориентированные детали из двух деревьев.

waveletcfs = wt.cfs{1};
subplot(2,2,1)
imagesc(waveletcfs(:,:,3,1,1))
title('Diagonal - Tree 1 - Real')
colormap gray
subplot(2,2,2)
imagesc(waveletcfs(:,:,3,1,2))
title('Diagonal - Tree 1 - Imaginary')
subplot(2,2,3)
imagesc(waveletcfs(:,:,3,2,1))
title('Diagonal - Tree 2 - Real')
subplot(2,2,4)
imagesc(waveletcfs(:,:,3,2,2))
title('Diagonal - Tree 2 - Imaginary')

Figure contains 4 axes. Axes 1 with title Diagonal - Tree 1 - Real contains an object of type image. Axes 2 with title Diagonal - Tree 1 - Imaginary contains an object of type image. Axes 3 with title Diagonal - Tree 2 - Real contains an object of type image. Axes 4 with title Diagonal - Tree 2 - Imaginary contains an object of type image.

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

свернуть все

Тип разложения вейвлета, заданный как один из 'dwt', 'ddt', 'realdt', 'cplxdt', 'realdddt', или 'cplxdddt'. Тип, 'dwt', приводит к критически дискретному (нерезервирующему) дискретному вейвлет. Другие типы разложения вызывают избыточную дискретизацию вейвлет. 'ddt' приводит к преобразованию вейвлета с двойной плотностью с одним масштабированием и два вейвлета фильтрами для фильтрации как строка, так и столбец. Преобразование вейвлета с двойной плотностью использует одни и те же фильтры на всех этапах. 'realdt' и 'cplxdt' формируют ориентированные двойственные древовидные вейвлет-преобразования, состоящие из двух и четырех разделяемых вейвлет. 'realdddt' и 'cplxdddt' получают двойные древовидные вейвлет двойной плотности. Двухдревовидные вейвлет используют различные фильтры для первого этапа (уровня).

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

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

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

Анализ уровня 1 фильтрует, задается как матрица или массив ячеек матриц. Задайте fdf как матрица, когда typetree является 'dwt' или 'ddt'. Размер и структура матрицы зависят от typetree введите следующим образом:

  • 'dwt' - Это критически выбранное дискретное вейвлет. В этом случае fdf - двухколоночная матрица с lowpass (масштабирование) фильтром в первом столбце и highpass (вейвлет) фильтром во втором столбце.

  • 'ddt' - Это вейвлет двойной плотности. DWT с двойной плотностью представляет собой трехканальный идеальный блок фильтров реконструкции. fdf является трехколоночной матрицей с lowpass (масштабирование) фильтром в первом столбце и двумя highpass (вейвлет) фильтрами во втором и третьем столбцах. В преобразовании вейвлета двойной плотности один lowpass и два highpass фильтра составляют трехканальный идеальный набор фильтров реконструкции. Это эквивалентно трем фильтрам, образующим плотную систему координат. Вы не можете произвольно выбрать два вейвлета в DWT с двойной плотностью. Три фильтра вместе должны сформировать плотную систему координат.

Задайте fdf как массив ячеек 1 на 2 матриц при typetree является преобразованием двойственного дерева, 'realdt', 'cplxdt', 'realdddt', или 'cplxdddt'. Размер и структура элементов матрицы в массиве ячеек зависят от typetree введите следующим образом:

  • Для двухдревовидных комплексных вейвлет, 'realdt' и 'cplxdt', fdf{1} - матрица N -by-2, содержащая lowpass (масштабирование) и highpass (вейвлет) фильтры для первого дерева и fdf{2} - матрица N -by-2, содержащая lowpass (масштабирование) и highpass (вейвлет) фильтры для второго дерева.

  • Для двойных древовидных комплексных вейвлет двойной плотности, 'realdddt' и 'cplxdddt', fdf{1} - матрица N -by-3, содержащая lowpass (масштабирование) и два highpass (вейвлет) фильтра для первого дерева и fdf{2} - матрица N -by-3, содержащая lowpass (масштабирование) и два highpass (вейвлет) фильтра для второго дерева.

Фильтры анализа для уровней > 1, заданные как матрица или массив ячеек матриц. Задайте df как матрица, когда typetree является 'dwt' или 'ddt'. Размер и структура матрицы зависят от typetree введите следующим образом:

  • 'dwt' - Это критически выбранное дискретное вейвлет. В этом случае df - двухколоночная матрица с lowpass (масштабирование) фильтром в первом столбце и highpass (вейвлет) фильтром во втором столбце. Для критически выбранных ортогональных или биортогональных DWT фильтрует в df и fdf должны быть идентичными.

  • 'ddt' - Это вейвлет двойной плотности. DWT с двойной плотностью представляет собой трехканальный идеальный блок фильтров реконструкции. df является трехколоночной матрицей с lowpass (масштабирование) фильтром в первом столбце и двумя highpass (вейвлет) фильтрами во втором и третьем столбцах. В преобразовании вейвлета двойной плотности один lowpass и два highpass фильтра составляют трехканальный идеальный набор фильтров реконструкции. Это эквивалентно трем фильтрам, образующим плотную систему координат. Для double-плотности DWT фильтрует в df и fdf должны быть идентичными.

Задайте df как массив ячеек 1 на 2 матриц при typetree является преобразованием двойственного дерева, 'realdt', 'cplxdt', 'realdddt', или 'cplxdddt'. Для двухдревовидных преобразований фильтрует в fdf и df должно быть другим. Размер и структура элементов матрицы в массиве ячеек зависят от typetree введите следующим образом:

  • Для двухдревовидных вейвлет, 'realdt' и 'cplxdt', df{1} - матрица N -by-2, содержащая lowpass (масштабирование) и highpass (вейвлет) фильтры для первого дерева и df{2} - матрица N -by-2, содержащая lowpass (масштабирование) и highpass (вейвлет) фильтры для второго дерева .

  • Для двойных древовидных комплексных вейвлет двойной плотности, 'realdddt' и 'cplxdddt', df{1} - матрица N -by-3, содержащая lowpass (масштабирование) и два highpass (вейвлет) фильтра для первого дерева и df{2} - матрица N -by-3, содержащая lowpass (масштабирование) и два highpass (вейвлет) фильтра для второго дерева.

Имя фильтра, заданное как вектор символов или строковый скаляр. Для критически выбранного DWT задайте любой допустимый ортогональный или биортогональный вейвлет. Посмотрите wfilters для получения дополнительной информации. Для избыточных вейвлет см. dtfilters для допустимых имен фильтров.

Имя фильтра первой стадии, заданное как вектор символов или строковый скаляр. Установка фильтра первого уровня, который отличается от вейвлет и масштабирующих фильтров на последующих уровнях, действительна и необходима только при двойных древовидных вейвлет, 'realdt', 'cplxdt', 'realdddt', и 'cplxdddt'.

Имя фильтра для каскадов > 1, заданное как вектор символов или строковый скаляр. Установка другого фильтра для каскадов > 1 действительна и необходима только с двухдревовидными вейвлет, 'realdt', 'cplxdt', 'realdddt', и 'cplxdddt'.

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

свернуть все

Вейвлет, возвращенное как структура с этими полями:

Тип разложения вейвлета, используемый в анализе, возвращен как один из 'dwt', 'ddt', 'realdt', 'cplxdt', 'realdddt', или 'cplxdddt'. 'dwt' - критически выбранный DWT. 'ddt' приводит к преобразованию вейвлета с двойной плотностью с одним масштабированием и два вейвлета фильтрами для фильтрации как строка, так и столбец. 'realdt' и 'cplxdt' формируют ориентированные двойные древовидные вейвлет-преобразования, состоящие из 2 и 4 разделяемых вейвлет. 'realdddt' и 'cplxdddt' получают двойные древовидные вейвлет двойной плотности, состоящие из двух и четырех разделяемых вейвлет.

Уровень вейвлет, возвращенный как положительное целое число.

Фильтры разложения (анализа) и реконструкции (синтеза), возвращенные как структура с этими полями:

Фильтры анализа первой стадии, возвращенные как матрица N-на-2 или N-на-3 для вейвлет-преобразований с одним деревом или как массив ячеек 1 на 2 из двух матриц N-на-2 или N-на-3 для вейвлет-преобразований с двумя деревьями. Матрицы N -by-3 для вейвлет двойной плотности. Для матрицы N -by-2 первым столбцом матрицы является фильтр масштабирования (lowpass), а вторым - вейвлет (highpass). Для матрицы N -by-3 первый столбец матрицы является фильтром масштабирования (lowpass), а второй и третий столбцы являются вейвлет (highpass) фильтрами. Для преобразований двойственного дерева каждый элемент массива ячеек содержит фильтры анализа первого этапа для соответствующего дерева.

Фильтры анализа для уровней > 1, возвращенные как N-на-2 или N-на-3 матрица для вейвлет-преобразований с одним деревом или массив ячеек 1 на 2 из двух матриц N-на-2 или N-на-3 для вейвлет-преобразований с двумя деревьями. Матрицы N -by-3 для вейвлет двойной плотности. Для матрицы N -by-2 первым столбцом матрицы является фильтр масштабирования (lowpass), а вторым - вейвлет (highpass). Для матрицы N -by-3 первый столбец матрицы является фильтром масштабирования (lowpass), а второй и третий столбцы являются вейвлет (highpass) фильтрами. Для преобразования двойственного дерева каждый элемент массива ячеек содержит фильтры анализа для соответствующего дерева.

Фильтры реконструкции первого уровня, возвращенные как матрица N-на-2 или N-на-3 для вейвлет-преобразований с одним деревом или массив ячеек 1 на 2 из двух матриц N-на-2 или N-на-3 для вейвлет-преобразований с двумя деревьями. Матрицы N -by-3 для вейвлет двойной плотности. Для матрицы N -by-2 первым столбцом матрицы является фильтр масштабирования (lowpass), а вторым - вейвлет (highpass). Для матрицы N -by-3 первый столбец матрицы является фильтром масштабирования (lowpass), а второй и третий столбцы являются вейвлет (highpass) фильтрами. Для преобразований двойственного дерева каждый элемент массива ячеек содержит фильтры синтеза первого этапа для соответствующего дерева.

Фильтры реконструкции для уровней > 1, возвращенные как N-by-2 или N-by-3 матрица для вейвлет-преобразований с одним деревом или массив ячеек 1 на 2 из двух N-by-2 или N-by-3 матриц для вейвлет-преобразований с двумя деревьями. Матрицы N-by-3 для вейвлет двойной плотности. Для матрицы N-by-2 первый столбец матрицы является масштабным (lowpass) фильтром, а второй - вейвлет (highpass) фильтром. Для матрицы N-by-3 первый столбец матрицы является масштабным (lowpass) фильтром, а второй и третий столбцы являются вейвлет (highpass) фильтрами. Для преобразований двойственного дерева каждый элемент массива ячеек содержит фильтры анализа первого этапа для соответствующего дерева.

Вейвлеты вейвлет-преобразования, заданные как 1-by- (level+ 1) массив ячеек из матриц. Размер и структура элементов матрицы массива ячеек зависят от типа преобразования вейвлета, typetree следующим образом:

  • 'dwt'cfs{j}(:,:,d)

    • j = 1,2,... level - уровень.

    • d = 1,2,3 - ориентация.

    • cfs{level+1}(:,:) являются коэффициентами lowpass, или масштабирования.

  • 'ddt'cfs{j}(:,:,d)

    • j = 1,2,... level - уровень.

    • d = 1,2,3,4,5,6,7,8 - ориентация.

    • cfs{level+1}(:,:) являются коэффициентами lowpass, или масштабирования.

  • 'realdt'cfs{j}(:,:,d,k)

    • j = 1,2,... level - уровень.

    • d = 1,2,3 - ориентация.

    • k = 1,2 - вейвлет дерево преобразований.

    • cfs{level+1}(:,:,k) являются коэффициентами lowpass, или масштабирования.

  • 'cplxdt'cfs{j}(:,:,d,k,m)

    • j = 1,2,... level - уровень.

    • d = 1,2,3 - ориентация.

    • k = 1,2 - вейвлет дерево преобразований.

    • m = 1,2 - действительная и мнимая части.

    • cfs{level+1}(:,:,k,m) являются коэффициентами lowpass, или масштабирования.

  • 'realdddt'cfs{j}(:,:,d,k)

    • j = 1,2,... level - уровень.

    • d = 1,2,3,4,5,6,7,8 - ориентация.

    • k = 1,2 - вейвлет дерево преобразований.

    • cfs{level+1}(:,:,k) являются коэффициентами lowpass, или масштабирования.

  • 'cplxdddt'cfs{j}(:,:,d,k,m)

    • j = 1,2,... level - уровень.

    • d = 1,2,3,4,5,6,7,8 - ориентация.

    • k = 1,2 - вейвлет дерево преобразований.

    • m = 1,2 - действительная и мнимая части.

    • cfs{level+1}(:,:,k,m) являются коэффициентами lowpass, или масштабирования.

Каждая ориентация соответствует конкретному поддиапазону. Двойные преобразования плотности 'ddt', 'realddt', и 'cplxdddt' формируют вейвлет восьми ориентаций. Другие преобразования, 'dwt', 'realdt', и 'cplxdt' формируют вейвлет трех ориентаций. Соответствие поддиапазонам выглядит следующим образом.

typetreeОриентации
'dwt', 'realdt', 'cplxdt'

'L' и 'H', обозначают lowpass и highpass фильтры, соответственно.

  • d=1: 'LH' поддиапазон

  • d=2: 'HL' поддиапазон

  • d=3: 'HH' поддиапазон

'ddt', 'realdddt', 'cplxdddt'

'Lo', 'H1', и 'H2' обозначает lowpass и два highpass фильтра, соответственно.

  • d=1: 'Lo H1' поддиапазон

  • d=2: 'Lo H2' поддиапазон

  • d=3: 'H1 Lo' поддиапазон

  • d=4: 'H1 H1' поддиапазон

  • d=5: 'H1 H2' поддиапазон

  • d=6: 'H2 Lo' поддиапазон

  • d=7: 'H2 H1' поддиапазон

  • d=8: 'H2 H2' поддиапазон

Размеры компонентов в cfs, возвращенный как N-by-2 целочисленная матрица. Значение N зависит от уровня разложения вейвлета и типа разложения вейвлета: N = 2 + level × (количество ориентаций).

  • cfs(1,:) = размерности входа изображения.

  • cfs(2+level,:) = размерности коэффициентов масштабирования.

  • cfs(1+no×(i–1)+(1:no),:) = размерности i уровня коэффициенты детализации, где no количество ориентаций.

Введенный в R2013b