dddtreecfs

Извлеките dual-tree/double-density коэффициенты вейвлета или проекции

Описание

пример

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

пример

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

Примеры

свернуть все

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

Загрузите шумный Доплеровский сигнал. Получите комплексное двойное дерево, преобразовывают вниз к уровню 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 object. The axes object 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 objects. Axes object 1 with title Type of TREE: CPLXDT contains an object of type line. Axes object 2 contains an object of type line. Axes object 3 contains an object of type line. Axes object 4 contains an object of type line. Axes object 5 contains an object of type line. Axes object 6 contains an object of type line. Axes object 7 contains an object of type line. Axes object 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 object. The axes object 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 objects. Axes object 1 contains an object of type image. Axes object 2 contains an object of type image. Axes object 3 contains an object of type image. Axes object 4 contains an object of type image.

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

1D вейвлет преобразовывает

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

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

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 objects. Axes object 1 contains an object of type line. Axes object 2 contains an object of type line. Axes object 3 contains an object of type line. Axes object 4 contains an object of type line.

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

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

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

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

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

Figure CPLXDT contains an axes object. The axes object 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 objects. Axes object 1 with title Type of TREE: CPLXDT contains an object of type line. Axes object 2 contains an object of type line. Axes object 3 contains an object of type line. Axes object 4 contains an object of type line. Axes object 5 contains an object of type line. Axes object 6 contains an object of type line. Axes object 7 contains an object of type line. Axes object 8 contains an object of type line. Axes object 9 contains an object of type line. Axes object 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 содействующем массиве масштабирования соответствуют действительным и мнимым частям.

2D вейвлет преобразовывает

Загрузите в 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]

Это - обычный безызбыточный 2D дискретный вейвлет, преобразовывают. Третья размерность в 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 objects. Axes object 1 contains an object of type image. Axes object 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 objects. Axes object 1 contains an object of type image. Axes object 2 contains an object of type image. Axes object 3 contains an object of type image. Axes object 4 contains an object of type image.

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

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

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

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

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

свернуть все

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

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

Выведите спецификацию в виде одного из 'lowpass'шкала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