exponenta event banner

пути

Описание

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 обозначает исходное изображение. Положительные целые числа в столбце Lth обозначают соответствующий вейвлет-фильтр в (L − 1) -м наборе фильтров. Вейвлет-полосовые фильтры упорядочены путем уменьшения центральной частоты. Есть NumRotations вейвлеты на пару центральной частоты.

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

Представлен в R2019a