Вейвлет и масштабирующие фильтры
возвращает преобразование Фурье масштабирующего фильтра для 2-D сети вейвлет, phif = filterbank(sf)sf. phif - матрица с одинарной или двойной точностью в зависимости от значения Precision свойство сети рассеяния. phif имеет размерности M -by- N, где M и N являются заполненными размерами строки и столбца сети рассеяния .
[ возвращает преобразования Фурье для вейвлет в phif,psifilters] = filterbank(sf)psifilters. psifilters - Nfb ячеек -by-1, где Nfb - количество банков фильтров в сети рассеяния. Каждый элемент psifilters является трехмерный массив. Трехмерные массивы M N L, где M и N - обитые размеры строки и столбца фильтров вейвлета, и L количество фильтров вейвлета для каждого банка фильтра. Вейвлет упорядочены путем увеличения шкалы с NumRotations вейвлет для каждой шкалы. В течение шкалы вейвлета фильтры упорядочены по углу поворота.
[ возвращает центральные пространственные частоты для вейвлет в phif,psifilters,f] = filterbank(sf)psifilters. f - Nfb ячеек -by-1, где Nfb - количество банков фильтров в sf. j-й элемент f содержит центральные частоты для j-й группы вейвлет-фильтров в psifilters. Каждый элемент f является матрицей L -by-2 с каждой строкой, содержащей центральные частоты соответствующего L -го вейвлета.
[ возвращает параметры фильтра для 2-D сети рассеяния. phif,psifilters,f,filterparams] = filterbank(sf)filterparams - Nfb ячеек -by-1 массива MATLAB® таблицы, где j-й элемент filterparams - таблица MATLAB, содержащая параметры фильтра для j-го банка фильтров
[___] = filterbank( возвращает требуемые выходы для банков фильтров, указанных в sf,fb)fb. fb является скаляром или вектором целых чисел между 1 и numfilterbanks(sf) включительно. Если fb является скаляром, psifilters является M -by- N -by- L матрицей и filterparams является таблицей MATLAB.
Этот пример показывает, как построить график фильтра масштабирования и центральных частот вейвлет для сети вейвлет изображений с двумя фильтрами.
Создайте вейвлет изображения рассеивающую сеть с двумя банками фильтров. Первый блок фильтров имеет коэффициент качества 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 array
{192x192x42 single}
{192x192x20 single}
f
f=2×1 cell array
{42x2 double}
{20x2 double}
Первый блок фильтров имеет 42 вейвлет, а второй блок фильтров имеет 20 фильтров. Количество фильтров в каждой группе фильтров кратно соответствующему значению в NumRotations. Используйте функцию helper 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
Этот пример показов, как определить полумасштабную ось вейвлета фильтра в 2-D вейвлеты сети рассеяния.
Создайте 2-D вейвлет. Сеть имеет два банка фильтров с факторами качества 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 имеет шесть элементов. Количество элементов равно количеству вейвлета, шкал в первой группе фильтров.
Из первой группы фильтров получаем неотключенный вейвлет из второй самой мелкой шкалы. Получите центральную пространственную частоту вейвлета. Используйте функцию helper 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)
Возьмем обратное преобразование Фурье вейвлет. Фильтр строго действителен, и обратное преобразование Фурье является комплексным. Используйте функцию helper 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])
Приложение
В этом примере используются следующие вспомогательные функции.
helperPlotWaveletFT - График в частотный диапазон
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
helperPlotWavelet - График в пространственной области
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 - Фурье-преобразование масштабирующего фильтраПреобразование Фурье масштабирующего фильтра, возвращаемое как действительная матрица 2-D. Точность phif зависит от значения Precision свойство сети рассеяния. phif имеет размерности M -by- N, где M и N являются заполненными размерами строки и столбца сети рассеяния.
psifilters - Фурье-преобразования вейвлетФурье-преобразования вейвлет, возвращенные как Nfb на 1 массив ячеек, где Nfb - количество банков фильтров в сети рассеяния. Каждый элемент psifilters является трехмерный массив. Трехмерные массивы M N L, где M и N - обитые размеры строки и столбца фильтров вейвлета, и L количество фильтров вейвлета для каждого банка фильтра. Вейвлет упорядочены путем увеличения шкалы с NumRotations вейвлет для каждой шкалы.
Пример: Обратите внимание, что size(psifilters,3) равно размеру .(f,1)
f - Центральные пространственные частотыЦентральные пространственные частоты вейвлет, возвращенные как Nfb на 1 массив ячеек, где Nfb - количество банков фильтров в сети рассеяния. j-й элемент f содержит центральные частоты для j-й группы вейвлет-фильтров в psifilters. Каждый элемент f является матрицей L -by-2 с каждой строкой, содержащей центральные частоты соответствующего L-го вейвлета. Пространственные частоты указаны в циклах на пиксель.
filterparams - Параметры фильтраФильтруйте параметры для 2-D сети рассеяния, sf. filterparams - Nfb ячеек -by-1 из таблиц MATLAB, где j-й элемент filterparams - таблица MATLAB, содержащая параметры фильтра для j-й группы фильтров. Каждая таблица содержит следующие переменные:
Q - коэффициент качества банка фильтров, возвращаемый как целое число.
J - Самый высокий фактор, используемый при расширении вейвлетов Морле, 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). Смотрите Вейвлет Semi-Major Оси.
Наклонный параметр или пространственное соотношение сторон управляет формой эллиптической поддержки вейвлета Морле.
Вейвлет Морле имеет вид
где v - наклонный параметр. Обычно v < 1, так что эллипс удлиняется пространственно в y -направлении. Вейвлет вращается в направлении по часовой стрелке :.
Повернутый вейвлет Морле имеет вид

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