exponenta event banner

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}

Третье измерение всех массивов 3-D в 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 в первом случае, и '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 и третье измерение в 3D содействующем множестве вычисления представляют дерево.

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

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' для восстановления и отображения четырех изображений на основе четырех компонентов нижних частот соответственно.

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 - массив ячеек, содержащий четыре компонента нижних частот. Каждый компонент 32 на 32.

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

свернуть все

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

Вейвлет-преобразование, указанное как структура. Структурный массив является выводом dddtree или dddtree2.

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

  • '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