пути

Рассеивание путей

Синтаксис

spaths = paths(sf)
[spaths,npaths] = paths(sf)

Описание

spaths = paths(sf) возвращает рассеивающиеся пути для всех порядков рассеивающейся среды, sf. spaths является массивом ячеек таблиц MATLAB® с элементами n, где n является количеством порядков в рассеивающейся среде.

пример

[spaths,npaths] = paths(sf) возвращает количество путей в каждом порядке как n-by-1 вектор-столбец, где n является количеством порядков в рассеивающейся среде. Сумма элементов npaths является общим количеством рассеивающихся путей.

Примеры

свернуть все

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

Создайте среду рассеивания изображений с размером изображения 256 256 и шкала инвариантности, равная минимуму размера изображения. Значение OptimizePath по умолчанию 1 (true).

sf = waveletScattering2('ImageSize',[256 256],'InvarianceScale',128)
sf = 

  waveletScattering2 with properties:

             ImageSize: [256 256]
       InvarianceScale: 128
          NumRotations: [6 6]
        QualityFactors: [1 1]
             Precision: "single"
    OversamplingFactor: 0
          OptimizePath: 1

Получите количество рассеивающихся путей в каждом порядке. Отобразите общее количество рассеивающихся путей.

[spaths,npaths] = paths(sf);
sum(npaths)
ans =

   391

Установите значение OptimizePath среды к false. Отобразите общее количество рассеивающихся путей. Для этой среды рассеивающееся преобразование не сокращает количество путей, чтобы вычислить на основе фактора пропускной способности.

sf.OptimizePath = false;
[spaths,npaths] = paths(sf);
sum(npaths)
ans =

   571

Этот пример показывает, как свойство OptimizePath может влиять на рассеивающиеся пути, которые включают определенный вейвлет.

Создайте среду рассеивания вейвлета изображений по умолчанию. Получите все фильтры вейвлета и сосредоточьте пространственные частоты для среды. Получите все пути к рассеиванию среды. Отобразите общее количество путей.

sf = waveletScattering2
[~,psifilters,f] = filterbank(sf);
[spaths,npaths] = paths(sf);
disp(['Total Number of Paths: ',num2str(sum(npaths))])
sf = 

  waveletScattering2 with properties:

             ImageSize: [128 128]
       InvarianceScale: 64
          NumRotations: [6 6]
        QualityFactors: [1 1]
             Precision: 'single'
    OversamplingFactor: 0
          OptimizePath: 1

Total Number of Paths: 241

Отобразитесь количество вейвлета просачивается каждый набор фильтров.

disp(['Filter Bank 1: ',num2str(size(psifilters{1},3))]);
disp(['Filter Bank 2: ',num2str(size(psifilters{2},3))]);
Filter Bank 1: 24
Filter Bank 2: 24

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

waveletA = 14;
disp(['Center Frequency: ',num2str(f{1}(waveletA,:))]);
ind = find(spaths{3}.path(:,2)==waveletA);
spaths{3}(ind,:)
Center Frequency: 0.08119    0.046875

ans =

  6x1 table

        path     
    _____________

    0    14    19
    0    14    20
    0    14    21
    0    14    22
    0    14    23
    0    14    24

Постройте центральные частоты фильтров вейвлета на путях.

plot(f{1}(waveletA,1),f{1}(waveletA,2),'k^');
xlabel('f_x')
ylabel('f_y')
hold on
waveletBs = spaths{3}.path(ind,3);
plot(f{2}(waveletBs,1),f{2}(waveletBs,2),'bx');
grid on
legend('First Filter Bank Wavelet','Second Filter Bank Wavelets',...
    'Location','northeastoutside')

Теперь установите свойство OptimizePath рассеивающейся среды sf к false. Получите фильтры вейвлета, сосредоточьте пространственные частоты и рассеивающиеся пути среды.

sf.OptimizePath = false
[~,psifilters2,f2] = filterbank(sf);
[spaths2,npaths2] = paths(sf);
disp(['Total Number of Paths: ',num2str(sum(npaths2))])
sf = 

  waveletScattering2 with properties:

             ImageSize: [128 128]
       InvarianceScale: 64
          NumRotations: [6 6]
        QualityFactors: [1 1]
             Precision: 'single'
    OversamplingFactor: 0
          OptimizePath: 0

Total Number of Paths: 385

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

waveletA = 14;
disp(['Center Frequency: ',num2str(f2{1}(waveletA,:))]);
ind = find(spaths2{3}.path(:,2)==waveletA);
spaths2{3}(ind,:)
Center Frequency: 0.08119    0.046875

ans =

  12x1 table

        path     
    _____________

    0    14    13
    0    14    14
    0    14    15
    0    14    16
    0    14    17
    0    14    18
    0    14    19
    0    14    20
    0    14    21
    0    14    22
    0    14    23
    0    14    24

Постройте центральные частоты фильтров вейвлета на путях. Некоторые дочерние фильтры имеют центральные частоты выше, чем выбранный вейвлет.

figure
plot(f2{1}(waveletA,1),f2{1}(waveletA,2),'k^');
xlabel('f_x')
ylabel('f_y')
hold on
waveletBs = spaths2{3}.path(ind,3);
plot(f2{2}(waveletBs,1),f2{2}(waveletBs,2),'bx');
grid on
legend('First Filter Bank Wavelet','Second Filter Bank Wavelets',...
    'Location','northeastoutside')

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

свернуть все

Рассеивание среды разложения, заданной как объект waveletScattering2.

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

свернуть все

Рассеивание путей всех порядков рассеивающейся среды, возвращенной как массив ячеек таблиц MATLAB. spaths имеет элементы n, где n является количеством порядков в рассеивающейся среде.

Каждая таблица MATLAB в spaths содержит одну переменную, path. Переменная path является вектором - строкой с одним столбцом для каждого элемента пути. Скаляр 0 обозначает оригинальное изображение. Положительные целые числа в L th столбец обозначают, что соответствующий вейвлет просачивается (L −1) th набор фильтров. Полосовые фильтры вейвлета упорядочены путем уменьшения центральной частоты. Существуют вейвлеты NumRotations на центральную пару частоты.

Количество рассеивающихся путей в каждом порядке рассеивающейся среды. npaths является no-by-1 вектор-столбец, где no является количеством порядков в рассеивающейся среде. Сумма элементов npaths является общим количеством рассеивающихся путей.

Смотрите также

|

Введенный в R2019a