paths

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

Описание

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