Рассеивание путей
Этот пример сравнивает количество путей в рассеивании вейвлета изображений среды с тремя порядками.
Создайте среду рассеивания изображений с размером изображения 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 обозначает оригинальное изображение. Положительные целые числа в L th столбец обозначают, что соответствующий вейвлет просачивается (L −1) th набор фильтров. Полосовые фильтры вейвлета упорядочены путем уменьшения центральной частоты. Существует NumRotations
вейвлеты на центральную пару частоты.
npaths
— Количество рассеивающихся путейКоличество рассеивающихся путей в каждом порядке рассеивающейся среды. npaths
no-by-1 вектор-столбец, где no является количеством порядков в рассеивающейся среде. Сумма элементов npaths
общее количество рассеивающихся путей.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.