dddtreecfs

Извлечение коэффициентов или проекций вейвлета двойного дерева/двойной плотности

Описание

пример

out = dddtreecfs(outputtype,wt,outputspec,outputindices) извлекает коэффициенты или проекции подпространства из 1-D или 2-D разложения вейвлет, wt. Если outputtype равен 'e', out содержит вейвлет или масштабирующие коэффициенты. Если outputtype равен 'r', out содержит вейвлет или масштабирующие подпространственные проекции (реконструкции).

пример

out = dddtreecfs(outputtype,wt,outputspec,outputindices,'plot') строит графики сигнала или реконструкции изображения или заданных коэффициентов анализа. Можно включать 'plot' опция в любом месте после wt вход.

Примеры

свернуть все

Получите комплексное двухдревовидное вейвлет 1-D шумного доплеровского сигнала. Восстановите приближение, основанную на коэффициентах детализации уровня три, несколькими способами.

Загрузите шумный сигнал Доплера. Получите комплексное преобразование двойственного дерева до уровня 3.

load noisdopp;
wt = dddtree('cplxdt',noisdopp,3,'dtf1')
wt = struct with fields:
       type: 'cplxdt'
      level: 3
    filters: [1x1 struct]
        cfs: {1x4 cell}

Постройте график восстановления исходного сигнала на основе коэффициентов детализации уровня три с outputspec установлено на 'scale'.

xr = dddtreecfs('r',wt,'scale',{3},'plot');

Figure CPLXDT contains an axes. The axes with title Nodes of Tree: [3] contains an object of type line.

Область выхода xr - массив ячеек 1 на 1. Сгенерируйте ту же реконструкцию при помощи 'cumind' и древовидные узлы уровня три. Первый элемент каждого вектора в массиве ячеек обозначает уровень, а второй элемент обозначает дерево. Подтвердите, что реконструкции идентичны.

outputindices = {[3 1];[3 2]};
xr2 = dddtreecfs('r',wt,'cumind',outputindices);
max(abs(xr2-xr{1}))
ans = 0

Область выхода xr2 является тем же типом данных, что и исходный сигнал.

Загрузите шумный сигнал Доплера. Получите комплексное преобразование двойственного дерева до уровня 3.

load noisdopp;
wt = dddtree('cplxdt',noisdopp,3,'dtf1')
wt = struct with fields:
       type: 'cplxdt'
      level: 3
    filters: [1×1 struct]
        cfs: {[1×512×2 double]  [1×256×2 double]  [1×128×2 double]  [1×128×2 double]}

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

outputindices = {[2 1]; [2 2]; [3 1]; [3 2]};

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

Извлеките коэффициенты детализации.

detailCoeffs = dddtreecfs('e',wt,'ind',outputindices,'plot');

Область выхода detailCoeffs - массив ячеек 1 на 4. Элементы массива ячеек содержат коэффициенты вейвлета, соответствующие элементам в outputindices. Для примера подтвердите detailCoeffs{1} содержит коэффициенты детализации второго уровня из первого дерева.

max(abs(wt.cfs{2}(1,:,1)-detailCoeffs{1}))
ans = 0

Загрузите шумный сигнал Доплера. Получите комплексное преобразование двойственного дерева до уровня 3.

load noisdopp;
wt = dddtree('cplxdt',noisdopp,3,'dtf1');

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

outputindices = {[2 1]; [2 2]; [3 1];[3 2]};

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

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

out = dddtreecfs('e',wt,'cumind',outputindices,'plot');

Figure CPLXDT contains 8 axes. Axes 1 with title Type of TREE: CPLXDT contains an object of type line. Axes 2 contains an object of type line. Axes 3 contains an object of type line. Axes 4 contains an object of type line. Axes 5 contains an object of type line. Axes 6 contains an object of type line. Axes 7 contains an object of type line. Axes 8 contains an object of type line.

Сгенерируйте реконструкцию на основе коэффициентов детализации второго и третьего уровня.

xr = idddtree(out);

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

xr2 = dddtreecfs('r',wt,'scale',{2;3});
max(abs(xr-(xr2{1}+xr2{2})))
ans = 8.8818e-16

Используйте комплексное двухдревовидное вейвлет, чтобы изолировать диагональные функции на изображении при + 45 и -45 степенях .

Загрузите и отобразите xbox изображение.

load xbox
imagesc(xbox)

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

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

fdf = dtfilters('FSfarras');
df = dtfilters('qshift10');
wt = dddtree2('cplxdt',xbox,3,fdf,df);

Изолируйте функции диагонального изображения + 45 и -45 в вейвлет-коэффициентах первого уровня. Сделайте это, создав массив ячеек из векторов, задающих узлы дерева, содержащие детали диагонали. Первый элемент в векторе задает уровень. Три остальных элемента задают ориентацию, вейвлет и действительную и мнимую части, соответственно (см dddtree2).

outputindices = {[1 3 1 1];[1 3 1 2];[1 3 2 1];[1 3 2 2]};
out = dddtreecfs('e',wt,'ind',outputindices,'plot');

Figure CPLXDT contains 4 axes. Axes 1 contains an object of type image. Axes 2 contains an object of type image. Axes 3 contains an object of type image. Axes 4 contains an object of type image.

Этот пример показывает, как коэффициенты анализа распределены, в зависимости от преобразования, в древовидном выходе dddtree и dddtree2.

1-D вейвлет

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

Критически выбранное дискретное преобразование вейвлета

load noisdopp
wt = dddtree('dwt',noisdopp,4,'sym4')
wt = struct with fields:
       type: 'dwt'
      level: 4
    filters: [1x1 struct]
        cfs: {1x5 cell}

Это обычное нерезервированное дискретное вейвлет. Первые четыре элемента wt.cfs являются вейвлет. Пятый элемент является коэффициентами масштабирования.

Преобразование Вейвлета двойной плотности

wt = dddtree('ddt',noisdopp,4,'filters1')
wt = struct with fields:
       type: 'ddt'
      level: 4
    filters: [1x1 struct]
        cfs: {1x5 cell}

Третья размерность массивов коэффициентов 3-D вейвлетов соответствует дереву. Пятый элемент является коэффициентами масштабирования.

Двухдревовидный комплексный Вейвлет преобразование

wt = dddtree('cplxdt',noisdopp,4,'dtf1')
wt = struct with fields:
       type: 'cplxdt'
      level: 4
    filters: [1x1 struct]
        cfs: {1x5 cell}

Третья размерность всех трехмерных массивов в cfs соответствует действительной и мнимой частям. Первые четыре элемента cfs являются вейвлет и cfs{5} являются коэффициентами масштабирования.

Восстановите сигналы из коэффициентов в узлах дерева [1 1], [5 2], [3 1], и [4 2]. Постройте график сигналов. Выход является массивом ячеек, содержащим реконструкции. Реконструкции имеют ту же длину, что и исходный сигнал.

outputindices = {[1 1];[5 2];[3 1];[4 2]};
XR = dddtreecfs('r',wt,'plot','ind',outputindices);

Figure CPLXDT contains 4 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line. Axes 3 contains an object of type line. Axes 4 contains an object of type line.

Извлеките и постройте график коэффициентов, используемых для восстановления сигналов. Выход является массивом ячеек, содержащим коэффициенты соответствующей длины: 512, 64, 128 и 64.

XR = dddtreecfs('e',wt,'plot','ind',outputindices);

Figure CPLXDT contains 4 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line. Axes 3 contains an object of type line. Axes 4 contains an object of type line.

Теперь используйте 'cumind' вместо 'ind'. Область выхода XR является сигналом длины 1024 в первом случае и a 'cplxdt' двойственное дерево во втором.

XR = dddtreecfs('r',wt,'plot','cumind',outputindices);

Figure CPLXDT contains an axes. The axes with title Nodes of Tree: [1 1] , [5 2] , [3 1] , [4 2] contains an object of type line.

XR = dddtreecfs('e',wt,'plot','cumind',outputindices);

Figure CPLXDT contains 10 axes. Axes 1 with title Type of TREE: CPLXDT contains an object of type line. Axes 2 contains an object of type line. Axes 3 contains an object of type line. Axes 4 contains an object of type line. Axes 5 contains an object of type line. Axes 6 contains an object of type line. Axes 7 contains an object of type line. Axes 8 contains an object of type line. Axes 9 contains an object of type line. Axes 10 contains an object of type line.

Двойное древовидное преобразование Вейвлета двойной плотности

wt = dddtree('cplxdddt',noisdopp,4,'dddtf1')
wt = struct with fields:
       type: 'cplxdddt'
      level: 4
    filters: [1x1 struct]
        cfs: {1x5 cell}

Третья размерность массивов коэффициентов 4-D вейвлетов соответствует дереву. Четвертая размерность в массивах коэффициентов 4-D вейвлетов и третья размерность в массиве коэффициентов масштабирования 3-D соответствует вещественной и мнимой частям.

2-D вейвлет

Загрузите изображение маски 256 на 256. Сгенерируйте двухуровневое вейвлет изображения для каждого типа преобразования. Наблюдайте размерности выходных коэффициентов.

Критически выбранное дискретное преобразование вейвлета

load mask
im = X;
wt = dddtree2('dwt',im,3,'sym4')
wt = struct with fields:
       type: 'dwt'
      level: 3
    filters: [1x1 struct]
        cfs: {1x4 cell}
      sizes: [10x2 double]

Это обычное нерезервное 2-D дискретное вейвлет. Третья размерность в массивах коэффициентов 3-D вейвлетов соответствует ориентации. Коэффициенты масштабирования являются последним элементом cfs.

Реальное ориентированное двойственное древовидное вейвлет

wt = dddtree2('realdt',im,3,'dtf1')
wt = struct with fields:
       type: 'realdt'
      level: 3
    filters: [1x1 struct]
        cfs: {1x4 cell}
      sizes: [11x2 double]

Четвертая размерность в массивах коэффициентов 4-D вейвлетов и третья размерность в массиве коэффициентов масштабирования 3-D соответствуют дереву. Третья размерность в массивах коэффициентов 4-D вейвлетов соответствует ориентации.

Комплексно-ориентированное двухдревовидное вейвлет

wt = dddtree2('cplxdt',im,3,'dtf1')
wt = struct with fields:
       type: 'cplxdt'
      level: 3
    filters: [1x1 struct]
        cfs: {[5-D double]  [5-D double]  [5-D double]  [32x32x2x2 double]}
      sizes: [11x2 double]

[size(wt.cfs{1});size(wt.cfs{2});size(wt.cfs{3})]
ans = 3×5

   128   128     3     2     2
    64    64     3     2     2
    32    32     3     2     2

Третья размерность массивов коэффициентов 5-D вейвлетов представляет ориентацию. Четвертая размерность в массивах 5-D и третья размерность в массиве 4-D коэффициентов масштабирования представляет дерево. Пятая размерность в массивах 5-D и четвертая размерность в массиве 4-D представляют действительную и мнимую части.

Преобразование Вейвлета двойной плотности

wt = dddtree2('ddt',im,3,'filters1')
wt = struct with fields:
       type: 'ddt'
      level: 3
    filters: [1x1 struct]
        cfs: {1x4 cell}
      sizes: [26x2 double]

Третья размерность в массивах коэффициентов 3-D вейвлетов представляет ориентацию.

Действительное преобразование вейвлета двойной плотности

wt = dddtree2('realdddt',im,3,'self1')
wt = struct with fields:
       type: 'realdddt'
      level: 3
    filters: [1x1 struct]
        cfs: {1x4 cell}
      sizes: [26x2 double]

Третья размерность в массивах коэффициентов 4-D вейвлетов представляет ориентацию. Четвертая размерность в массивах 4-D и третья размерность в массиве 3-D коэффициентов масштабирования представляют дерево.

Комплексно-ориентированное Вейвлетом преобразование двойной плотности

wt = dddtree2('cplxdddt',im,3,'self1')
wt = struct with fields:
       type: 'cplxdddt'
      level: 3
    filters: [1x1 struct]
        cfs: {[5-D double]  [5-D double]  [5-D double]  [32x32x2x2 double]}
      sizes: [26x2 double]

[size(wt.cfs{1}) ; size(wt.cfs{2}) ; size(wt.cfs{3})]
ans = 3×5

   128   128     8     2     2
    64    64     8     2     2
    32    32     8     2     2

Третья размерность массивов коэффициентов 5-D вейвлетов представляет ориентацию. Четвертая размерность в массивах 5-D и третья размерность в массиве 4-D коэффициентов масштабирования представляет дерево. Пятая размерность в массивах 5-D и четвертая размерность в массиве 4-D представляют действительную и мнимую части.

Восстановите и постройте два изображения на основе коэффициентов детализации второго уровня и коэффициентов масштабирования, соответственно.

XR = dddtreecfs('r',wt,'plot','scale',{2;4});

Figure CPLXDDDT contains 2 axes. Axes 1 contains an object of type image. Axes 2 contains an object of type image.

Область выхода XR - массив ячеек, содержащий оба изображения 256 на 256.

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

XR = dddtreecfs('e',wt,'scale',{2;4});
XR{1}
ans = struct with fields:
       type: 'cplxdddt'
      level: 3
    filters: [1x1 struct]
        cfs: {[5-D double]  [5-D double]  [5-D double]  [32x32x2x2 double]}
      sizes: [26x2 double]

XR{2}
ans = struct with fields:
       type: 'cplxdddt'
      level: 3
    filters: [1x1 struct]
        cfs: {[5-D double]  [5-D double]  [5-D double]  [32x32x2x2 double]}
      sizes: [26x2 double]

Подтвердите единственные ненулевые коэффициенты в каждой структуре, содержащейся в XR являются коэффициентами вейвлета уровня два и коэффициентами масштабирования, соответственно.

dtInd = 1;
[max(abs(XR{dtInd}.cfs{1}(:)));max(abs(XR{dtInd}.cfs{2}(:)));...
    max(abs(XR{dtInd}.cfs{3}(:)));max(abs(XR{dtInd}.cfs{4}(:)))]
ans = 4×1

         0
  143.9924
         0
         0

dtInd = 2;
[max(abs(XR{dtInd}.cfs{1}(:)));max(abs(XR{dtInd}.cfs{2}(:)));...
    max(abs(XR{dtInd}.cfs{3}(:)));max(abs(XR{dtInd}.cfs{4}(:)))]
ans = 4×1
103 ×

         0
         0
         0
    1.0545

Использование 'ind' для восстановления и отображения четырех изображений на основе четырех компонентов lowpass, соответственно.

outputindices = {[4 1 1];[4 2 1];[4 1 2];[4 2 2]};
XR = dddtreecfs('r',wt,'plot','ind',outputindices);

Figure CPLXDDDT contains 4 axes. Axes 1 contains an object of type image. Axes 2 contains an object of type image. Axes 3 contains an object of type image. Axes 4 contains an object of type image.

Область выхода XR - массив ячеек, содержащий четыре изображения. Каждое изображение 256 на 256. Отобразите коэффициенты, используемые для восстановления изображений.

XR = dddtreecfs('e',wt,'plot','ind',outputindices);

Figure CPLXDDDT contains 4 axes. Axes 1 contains an object of type image. Axes 2 contains an object of type image. Axes 3 contains an object of type image. Axes 4 contains an object of type image.

Область выхода XR - массив ячеек, содержащий четыре lowpass компонента. Каждый компонент 32 на 32.

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

свернуть все

Выход, заданный как 'e' или 'r'. Использование 'e' для получения масштабирования или вейвлет. Использование 'r' для получения проекции или реконструкции на соответствующее подпространство масштабирования или вейвлет.

Вейвлет, заданное как структура. Массив структур является выходом из dddtree или dddtree2.

Выходные спецификации, заданные как один из 'lowpass', 'scale', 'ind', или 'cumind'. Спецификации выхода определяются следующим образом:

  • 'lowpass' - Выводит lowpass, или масштабирование, коэффициенты или приближение сигнал/изображение на основе коэффициентов масштабирования. Если вы устанавливаете спецификацию выхода равной 'lowpass', не задавать outputindices. Если на outputtype является 'e', out - массив структур с полями, идентичными входному массиву структур wt кроме того, что все вейвлету (подробные) коэффициенты равны нулю. Если на outputtype является 'r', out - сигнал или приближение изображения, основанная на коэффициентах масштабирования. Сигнал или приближение изображения равны в размере исходному входу dddtree или dddtree2.

  • 'scale' - Выводит коэффициенты или приближение сигнала/изображения на основе шкал, заданных в outputindices. Если на outputtype является 'e', out - массив ячеек из массивов структур. Поля массивов структур в out идентичны полям входного массива структур wt. Коэффициенты в cfs все поле равно нулю, кроме коэффициентов, соответствующих шкалам в outputindices. Если на outputtype является 'r', out - сигнал или приближение изображения на основе шкал в outputindices. Сигнал или приближение изображения равны в размере исходному входу dddtree или dddtree2.

  • 'ind' - Выводит коэффициенты или приближение сигнала/изображения на основе индексов положения дерева, заданных в outputindices. Если на outputtype является 'e', out - массив ячеек из векторов или матриц, содержащий коэффициенты, заданные индексами положения дерева в outputindices. Если на outputtype является 'r', out - массив ячеек из векторов или матриц, содержащий сигнал или приближения изображения на основе соответствующих индексов положения дерева в outputindices.

  • 'cumind' - Выводит коэффициенты или приближение сигнала/изображения на основе индексов положения дерева, заданных в outputindices. Если на outputtype является 'e', out является массивом структур. Поля массива структур идентичны полям массива входа структур wt. Коэффициенты в cfs Все поля равны нулю, кроме коэффициентов, соответствующих древовидным позициям в outputindices. Если на outputtype является 'r', out - сигнал или приближение изображения, основанная на коэффициентах, соответствующих индексам положения дерева в outputindices.

Пример: 'ind',{[1 1]; [1 2]}

Выходные индексы, заданные как массив ячеек со скалярными или векторными элементами. Если outputspec равен 'scale'скалярный элемент выбирает соответствующий элемент в cfs область wt. Если outputspec равен 'ind' или 'cumind', элементы outputspec являются векторы-строки. Первый элемент вектора-строки соответствует элементу в cfs область wt. Последующие элементы вектора-строки соответствуют индексам массива, содержащегося в элементе массива ячеек. Описание последующих элементов смотрите в Распределение коэффициентов анализа в древовидной структуре вейвлета. Для получения дополнительной информации см. dddtree и dddtree2.

Пример: 'scale',{1;2;3}

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

свернуть все

Сигнал или реконструкция изображения или коэффициенты, возвращенные в виде вектора, матрицы, массива структур, массива ячеек векторов или матриц или массива ячеек массивов структур. Форма out зависит от значения outputspec и outputindices.

См. также

| | | |

Введенный в R2013b