Пути рассеяния
Создайте сеть рассеяния изображения с размером изображения 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')

sf - Сеть рассеяния вейвлет-изображенийwaveletScattering2 объектСеть рассеяния вейвлетного изображения, заданная как waveletScattering2 объект.
spaths - Пути рассеянияПути рассеяния всех порядков сети рассеяния, возвращаемые в виде массива ячеек таблиц MATLAB. spaths имеет n элементов, где n - число порядков в сети рассеяния.
Каждая таблица MATLAB в spaths содержит одну переменную, path. Переменная path - вектор строки с одним столбцом для каждого элемента пути. Скаляр 0 обозначает исходное изображение. Положительные целые числа в столбце Lth обозначают соответствующий вейвлет-фильтр в (L − 1) -м наборе фильтров. Вейвлет-полосовые фильтры упорядочены путем уменьшения центральной частоты. Есть NumRotations вейвлеты на пару центральной частоты.
npaths - Количество путей рассеянияКоличество путей рассеяния в каждом порядке сети рассеяния. npaths - вектор столбца no-by-1, где no - количество порядков в сети рассеяния. Сумма элементов npaths - общее число путей рассеяния.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.