Вейвлет и масштабирующиеся фильтры
возвращает преобразование Фурье масштабирующегося фильтра для 2D среды рассеивания вейвлета, phif = filterbank(sf)sf. phif одна или матрица с двойной точностью в зависимости от значения Precision свойство рассеивающейся среды. phif имеет размерности M-by-N, где M и N являются заполненными размерами строки и столбца рассеивающейся среды.
[ возвращается преобразования Фурье для вейвлета просачивается phif,psifilters] = filterbank(sf)psifilters. psifilters Nfb-by-1 массив ячеек, где Nfb является количеством наборов фильтров в рассеивающейся среде. Каждый элемент psifilters трехмерный массив. Трехмерными массивами является M-by-N-by-L, где M и N являются заполненными размерами строки и столбца фильтров вейвлета, и L является количеством фильтров вейвлета для каждого набора фильтров. Фильтры вейвлета упорядочены путем увеличения шкалы с NumRotations вейвлет фильтрует для каждой шкалы. В шкале фильтры вейвлета упорядочены попеременно угол.
[ возвращается центральные пространственные частоты для вейвлета просачивается phif,psifilters,f] = filterbank(sf)psifiltersF Nfb-by-1 массив ячеек, где Nfb является количеством наборов фильтров в sf. j th элемент f содержит центральные частоты для j th набор фильтров вейвлета в psifilters. Каждый элемент f L-by-2 матрица с каждой строкой, содержащей центральные частоты соответствующего L th вейвлет.
[ возвращает параметры фильтра для 2D среды рассеивания. phif,psifilters,f,filterparams] = filterbank(sf)filterparams Nfb-by-1 массив ячеек таблиц MATLAB®, где j th элемент filterparams таблица MATLAB, содержащая параметры фильтра для j th набор фильтров
[___] = filterbank( возвращает желаемые выходные параметры для наборов фильтров, заданных в sf,fb)fb. fb скаляр или вектор целых чисел между 1 и numfilterbanks(sf) включительно. Если fb скаляр, psifilters M-by-N-by-L матрица и filterparams таблица MATLAB.
В этом примере показано, как построить масштабирующийся фильтр, и вейвлет фильтруют центральные частоты для среды рассеивания вейвлета 2D набора фильтров изображений.
Создайте среду рассеивания вейвлета изображений с двумя наборами фильтров. Первый набор фильтров имеет добротность 2, и второй набор фильтров имеет добротность 1.
sf = waveletScattering2('QualityFactors',[2 1])sf =
waveletScattering2 with properties:
ImageSize: [128 128]
InvarianceScale: 64
NumRotations: [6 6]
QualityFactors: [2 1]
Precision: "single"
OversamplingFactor: 0
OptimizePath: 1
Получите масштабирующийся фильтр, фильтры вейвлета и частоты центра вейвлета для среды.
[phif,psifilters,f] = filterbank(sf);
Сделайте объемную поверхностную диаграмму масштабирующегося фильтра.
Nx = size(phif,1); Ny = size(phif,2); fx = -1/2:1/Nx:1/2-1/Nx; fy = -1/2:1/Ny:1/2-1/Ny; surf(fx,fy,fftshift(phif)) shading interp title('Scaling Filter') xlabel('f_x') ylabel('f_y')

Постройте частоты центра вейвлета для этих двух наборов фильтров.
figure
plot(f{1}(:,1),f{1}(:,2),'k*')
hold on
grid on
plot(f{2}(:,1),f{2}(:,2),'r^','MarkerFaceColor',[1 0 0])
axis equal
xlabel('f_x')
ylabel('f_y')
legend('First Filter Bank Q = 2','Second Filter Bank Q = 1')
В этом примере показано, как получить и построить определенный вейвлет среды рассеивания вейвлета изображений.
Создайте среду рассеивания вейвлета изображений с двумя наборами фильтров. Первый набор фильтров имеет добротность 2 и семи вращений на вейвлет. Второй набор фильтров имеет добротность 1 и пяти вращений на вейвлет.
sf = waveletScattering2('QualityFactors',[2 1],'NumRotations',[7 5])
sf =
waveletScattering2 with properties:
ImageSize: [128 128]
InvarianceScale: 64
NumRotations: [7 5]
QualityFactors: [2 1]
Precision: "single"
OversamplingFactor: 0
OptimizePath: 1
Получите фильтры вейвлета и центральные частоты для среды. Возвратите размерности этих двух массивов ячеек.
[~,psifilters,f] = filterbank(sf); psifilters
psifilters=2×1 cell
{192x192x42 single}
{192x192x20 single}
f
f=2×1 cell
{42x2 double}
{20x2 double}
Первый набор фильтров имеет 42 фильтра вейвлета, и второй набор фильтров имеет 20 фильтров. Количество просачивается, каждый набор фильтров является кратным соответствующему значению в NumRotations. Используйте функцию помощника helperPlotWavelet построить определенный вейвлет и отметить его центральную частоту.
figure whichFilterBank = 1; whichWavelet = 13; helperPlotWavelet(psifilters,f,whichFilterBank,whichWavelet)

Приложение
Следующая функция помощника используется в этом примере.
function helperPlotWavelet(psiFilters,psiFreq,filBank,wvFilter) Nx = size(psiFilters{filBank},2); Ny = size(psiFilters{filBank},1); fx = -1/2:1/Nx:1/2-1/Nx; fy = -1/2:1/Ny:1/2-1/Ny; imagesc(fx,fy,fftshift(psiFilters{filBank}(:,:,wvFilter))) axis xy hold on xlabel('f_x') ylabel('f_y') plot(psiFreq{filBank}(wvFilter,1),psiFreq{filBank}(wvFilter,2),... 'k^','markerfacecolor',[0 0 0]) str = sprintf('Filter Bank: %d Wavelet: %d',filBank,wvFilter); title(str) end
В этом примере показано, как решить, что полуглавная ось вейвлета просачивается 2D среда рассеивания вейвлета.
Создайте 2D среду рассеивания вейвлета. Среда имеет два набора фильтров с добротностями 2 и 1, соответственно. Существует семь вращений на вейвлет в первом наборе фильтров и пять вращений на вейвлет во втором наборе фильтров. Возвратите преобразования Фурье фильтров вейвлета и их центральных пространственных частот и параметров набора фильтров.
sf = waveletScattering2('QualityFactors',[2 1],'NumRotations',[7 5]); [~,psif,f,fparams] = filterbank(sf);
Вейвлет просачивается psif упорядочены путем увеличения шкалы, с NumRotations вейвлет фильтрует для каждой шкалы. В шкале фильтры вейвлета упорядочены попеременно.
Возвратите пропускную способность на 3 дБ, о которой сообщают, углы поворота и наклонный параметр первого набора фильтров. Возвратите размерности матрицы, содержащей фильтры вейвлета первого набора фильтров. Подтвердите что (количество вращений) (количество пропускной способности), равняется размеру третьей размерности матрицы. Продуктом является количество вейвлета, просачивается набор фильтров. Размеры строки и столбца являются размерностями заполненных фильтров вейвлета. Обратите внимание на то, что наклонный параметр меньше 1.
fparams{1}.psi3dBbwans = 1×6
0.1464 0.1036 0.0732 0.0518 0.0366 0.0366
fparams{1}.rotationsans = 1×7
0 0.4488 0.8976 1.3464 1.7952 2.2440 2.6928
fparams{1}.slantans = 0.5817
size(psif{1})ans = 1×3
192 192 42
Векторный fparams{1}.psi3dBbw имеет шесть элементов. Число элементов равно количеству шкал вейвлета в первом наборе фильтров.
От первого набора фильтров получите невращаемый фильтр вейвлета из второй самой прекрасной шкалы. Получите центральную пространственную частоту вейвлета. Используйте функцию помощника helperPlotWaveletFT построить вейвлет и отметить его центральную частоту. Код для helperPlotWaveletFT показан в конце этого примера.
whichFilterBank = 1;
whichScale = 2;
whichRotAngle = 1;
numRot = sf.NumRotations(whichFilterBank);
wvf = psif{whichFilterBank}(:,:,1+(whichScale-1)*numRot+(whichRotAngle-1));
wvfCenFrq = f{whichFilterBank}(1+(whichScale-1)*numRot+(whichRotAngle-1),:);
helperPlotWaveletFT(wvf,wvfCenFrq)
Возьмите обратное преобразование Фурье фильтра вейвлета. Фильтр строго действителен, и обратное преобразование Фурье с комплексным знаком. Используйте функцию помощника helperPlotWavelet построить абсолютное значение вейвлета. Код для helperPlotWavelet показан в конце этого примера.
wvf_ifft = ifft2(wvf); figure helperPlotWavelet(wvf_ifft)

Обратите внимание на то, что полуглавная ось поддержки вейвлета находится в направлении Y. Это сопоставимо с наклонным параметром, значение которого меньше 1. Векторный (0,0.1) совпадает с полуглавной осью. Постройте вектор в предыдущей фигуре.
vec = [0 0.1]; hold on plot([0 vec(1)],[0 vec(2)],'wx-') xlim([-0.2 0.2]) ylim([-0.2 0.2])

От того же набора фильтров и шкалы, выберите вращаемый фильтр вейвлета. Постройте абсолютное значение вейвлета в пространственной области. Используйте связанный угол поворота в fparams{1}.rotations, и вращайте по часовой стрелке векторный (0,0.1) той суммой. Постройте вращаемый вектор в фигуре. Подтвердите, что вектор выравнивается с полуглавной осью вращаемого вейвлета.
whichRotAngle = 3;
rotAngle = fparams{whichFilterBank}.rotations(whichRotAngle);
rmat = [cos(rotAngle) sin(rotAngle) ; -sin(rotAngle) cos(rotAngle)];
wvf = psif{whichFilterBank}(:,:,1+(whichScale-1)*numRot+(whichRotAngle-1));
wvf_ifft = ifft2(wvf);
rvec = rmat*vec';
figure
helperPlotWavelet(wvf_ifft)
hold on
plot([0 rvec(1)],[0 rvec(2)],'wx-')
xlim([-0.2 0.2])
ylim([-0.2 0.2])
Приложение
Следующие функции помощника используются в этом примере.
function helperPlotWaveletFT(wavelet,cenFreq) Nx = size(wavelet,2); Ny = size(wavelet,1); fx = -1/2:1/Nx:1/2-1/Nx; fy = -1/2:1/Ny:1/2-1/Ny; imagesc(fx,fy,fftshift(wavelet)) colorbar axis xy hold on xlabel('$\omega_x$','Interpreter',"latex") ylabel('$\omega_y$','Interpreter',"latex") axis equal axis tight plot(cenFreq(1),cenFreq(2),'k^','markerfacecolor',[0 0 0]) title('Wavelet Filter in Frequency Domain') end
function helperPlotWavelet(wavelet) Nx = size(wavelet,2); Ny = size(wavelet,1); fx = -1/2:1/Nx:1/2-1/Nx; fy = -1/2:1/Ny:1/2-1/Ny; imagesc(fx,fy,abs(fftshift(wavelet))) colorbar axis xy hold on xlabel('x') ylabel('y') axis equal axis tight title('Wavelet Filter in Spatial Domain') end
sf — Рассеивание среды разложенияwaveletScattering2 объектРассеивание среды разложения, заданной как waveletScattering2 объект.
fb — Наборы фильтровНаборы фильтров, заданные как целое число или вектор целых чисел между 1 и numfilterbanks(sf) включительно. Если fb скаляр, psifilters M-by-N-by-L матрица и filterparams таблица MATLAB.
phif — Преобразование Фурье масштабирующегося фильтраПреобразование Фурье масштабирующегося фильтра, возвращенного как 2D матрица с действительным знаком. Точность phif зависит от значения Precision свойство рассеивающейся среды. phif имеет размерности M-by-N, где M и N являются заполненными размерами строки и столбца рассеивающейся среды.
psifilters — Преобразования Фурье фильтров вейвлетаПреобразования Фурье фильтров вейвлета, возвращенных как Nfb-by-1 массив ячеек, где Nfb является количеством наборов фильтров в рассеивающейся среде. Каждый элемент psifilters трехмерный массив. Трехмерными массивами является M-by-N-by-L, где M и N являются заполненными размерами строки и столбца фильтров вейвлета, и L является количеством фильтров вейвлета для каждого набора фильтров. Фильтры вейвлета упорядочены путем увеличения шкалы с NumRotations вейвлет фильтрует для каждой шкалы.
Пример: Обратите внимание на то, что size(psifilters,3) равно размеру (.f,1)
f — Сосредоточьте пространственные частотыСосредоточьте пространственные частоты фильтров вейвлета, возвращенных как Nfb-by-1 массив ячеек, где Nfb является количеством наборов фильтров в рассеивающейся среде. j th элемент f содержит центральные частоты для j th набор фильтров вейвлета в psifilters. Каждый элемент f L-by-2 матрица с каждой строкой, содержащей центральные частоты соответствующего L th вейвлет. Пространственные частоты находятся в циклах на пиксель.
filterparams — Отфильтруйте параметрыОтфильтруйте параметры для 2D среды рассеивания, sf. filterparams Nfb-by-1 массив ячеек таблиц MATLAB, где j th элемент filterparams таблица MATLAB, содержащая параметры фильтра для j th набор фильтров. Каждая таблица содержит эти переменные:
Q — Добротность набора фильтров, возвращенного как целое число.
J — Самый высокий фактор, используемый в расширении вейвлетов Morlet, 2J/Q, возвращенный как целое число.
precision — Точность рассеивающейся среды, возвращенной как 'single' или 'double'.
omegapsi — Частоты центра вейвлета в порядке убывания (самый высокий к самому низкому), возвращенный как вектор.
freqsigmapsi — Стандартные отклонения частоты вейвлета, возвращенные как вектор.
slant — Наклонный параметр для пространственной вертикальной полуглавной оси вейвлета, возвращенного как вещественное число. Наклонный параметр, также известный как пространственное соотношение сторон, характеризует форму поддержки вейвлета.
spatialsigmapsi — Вейвлет пространственные стандартные отклонения, возвращенные как вектор.
spatialsigmaphi — Масштабирующийся фильтр пространственное стандартное отклонение, возвращенное как вещественное число.
psi3dBbw — Пропускная способность вейвлета 3 дБ, возвращенная как вектор.
psiftsupport — Поддержка частоты вейвлета, возвращенная как вектор.
phiftsupport — Масштабирующаяся поддержка частоты фильтра, возвращенная как вещественное число.
phi3dBbw — Масштабирующаяся пропускная способность фильтра 3 дБ, возвращенная как вещественное число.
rotations — Углы ориентации вейвлета в радианах, возвращенных как вектор. Длина rotations равняется NumRotations значение сопоставлено с набором фильтров.
Следующие векторы в таблице имеют равную длину: omegapsi, freqsigmapsi, spatialsigmapsi, psi3dBbw, и psiftsupport.
Общее количество вейвлета просачивается, набором фильтров является length(omegapsi)×length(rotations). Смотрите определяют вейвлет полуглавная ось.
Наклонный параметр или пространственное соотношение сторон управляют формой эллиптической поддержки вейвлета Morlet.
Вейвлет Morlet имеет форму
где v является наклонным параметром. Как правило, v <1, так, чтобы эллипс удлинен пространственно в y - направление. Вейвлет вращается в направлении по часовой стрелке: .
Вращаемый вейвлет Morlet имеет форму

Если g (x, y) и G (ω x, ω y) формируют пару Фурье: , затем так сделайте их вращения:
Преобразование Фурье вейвлета Morlet
Данный вейвлет ψ (x, y) имеет пропускную способность, о которой сообщают, bw. Пропускная способность, о которой сообщают, зависит от шкалы, но не угла поворота. Для пропускной способности на 3 дБ, о которой сообщают, bw пропускной способностью вдоль полуглавной пространственной оси эллипса, который описывает поддержку вейвлета, является bw × slant.
Полуглавная пространственная ось зависит от угла поворота. Полуглавная пространственная ось может быть вычислена из векторного rotations в выходном аргументе filterparams.
Как упорядочено в выходных аргументах f и psifilters, фильтр вейвлета psifilters(:,:,1 + k × NumRotations) поскольку целочисленный k является первым, невращаемым вейвлетом в данной шкале. Вейвлет имеет центральную пространственную частоту f(1 + k × NumRotations,:), который имеет форму (ωx,0). Смотрите определяют вейвлет полуглавная ось.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.