exponenta event banner

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-shift для последующих этапов анализа множественных решений.

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 дискретном вейвлет-преобразовании имеется один фильтр верхних частот. Фильтрация строк и столбцов изображения фильтром верхних частот соответствует извлечению деталей в диагональной ориентации. В вейвлет-преобразовании с двойной плотностью имеется два фильтра верхних частот, H1 и H2. Диагонально ориентированные детали извлекаются путем фильтрации строк и столбцов изображения четырьмя комбинациями фильтров верхних частот. Визуализируйте диагональные детали в четырех вейвлет-верхних полосах.

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).

Фильтры анализа уровня один, заданные как матрица или массив ячеек матриц. Определить fdf как матрица, когда typetree является 'dwt' или 'ddt'. Размер и структура матрицы зависят от typetree введите следующее:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • '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) являются коэффициентами нижних частот или масштабированием.

  • '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) являются коэффициентами нижних частот или масштабированием.

  • '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) являются коэффициентами нижних частот или масштабированием.

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

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

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

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

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

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

'ddt', 'realdddt', 'cplxdddt'

'Lo', 'H1', и 'H2' обозначают фильтры нижних и двух верхних частот соответственно.

  • 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