filterbank

Вейвлет и масштабирующиеся фильтры

Описание

phif = filterbank(sf) возвращает преобразование Фурье масштабирующегося фильтра для 2D сети рассеивания вейвлета, 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 вейвлет.

[phif,psifilters,f,filterparams] = filterbank(sf) возвращает параметры фильтра для 2D сети рассеивания. 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 contains an axes object. The axes object with title Scaling Filter contains an object of type surface.

Постройте частоты центра вейвлета для этих двух наборов фильтров.

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')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent 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. Используйте функцию помощника helperPlotWavelet построить определенный вейвлет и отметить его центральную частоту.

figure
whichFilterBank = 1;
whichWavelet = 13;
helperPlotWavelet(psifilters,f,whichFilterBank,whichWavelet)

Figure contains an axes object. The axes object with title Filter Bank: 1 Wavelet: 13 contains 2 objects of type image, line.

Приложение

Следующая функция помощника используется в этом примере.

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}.psi3dBbw
ans = 1×6

    0.1464    0.1036    0.0732    0.0518    0.0366    0.0366

fparams{1}.rotations
ans = 1×7

         0    0.4488    0.8976    1.3464    1.7952    2.2440    2.6928

fparams{1}.slant
ans = 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)

Figure contains an axes object. The axes object with title Wavelet Filter in Frequency Domain contains 2 objects of type image, line.

Возьмите обратное преобразование Фурье фильтра вейвлета. Фильтр строго действителен, и обратное преобразование Фурье с комплексным знаком. Используйте функцию помощника helperPlotWavelet построить абсолютное значение вейвлета. Код для helperPlotWavelet показан в конце этого примера.

wvf_ifft = ifft2(wvf);
figure
helperPlotWavelet(wvf_ifft)

Figure contains an axes object. The axes object with title Wavelet Filter in Spatial Domain contains an object of type image.

Обратите внимание на то, что полуглавная ось поддержки вейвлета находится в направлении 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])

Figure contains an axes object. The axes object with title Wavelet Filter in Spatial Domain contains 2 objects of type image, line.

От того же набора фильтров и шкалы, выберите вращаемый фильтр вейвлета. Постройте абсолютное значение вейвлета в пространственной области. Используйте связанный угол поворота в 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])

Figure contains an axes object. The axes object with title Wavelet Filter in Spatial Domain contains 2 objects of type image, line.

Приложение

Следующие функции помощника используются в этом примере.

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

Входные параметры

свернуть все

Сеть рассеивания вейвлета изображений в виде waveletScattering2 объект.

Наборы фильтров в виде целого числа или вектора из целых чисел между 1 и numfilterbanks(sf) включительно. Если fb скаляр, psifilters M-by-N-by-L матрица и filterparams таблица MATLAB.

Выходные аргументы

свернуть все

Преобразование Фурье масштабирующегося фильтра, возвращенного как 2D матрица с действительным знаком. Точность phif зависит от значения Precision свойство рассеивающейся сети. phif имеет размерности M-by-N, где M и N являются заполненными размерами строки и столбца рассеивающейся сети.

Преобразования Фурье фильтров вейвлета, возвращенных как Nfb-by-1 массив ячеек, где Nfb является количеством наборов фильтров в рассеивающейся сети. Каждый элемент psifilters трехмерный массив. Трехмерными массивами является M-by-N-by-L, где M и N являются заполненными размерами строки и столбца фильтров вейвлета, и L является количеством фильтров вейвлета для каждого набора фильтров. Фильтры вейвлета упорядочены путем увеличения шкалы с NumRotations вейвлет фильтрует для каждой шкалы.

Пример: Обратите внимание на то, что size(psifilters,3) равно размеру (f,1).

Сосредоточьте пространственные частоты фильтров вейвлета, возвращенных как Nfb-by-1 массив ячеек, где Nfb является количеством наборов фильтров в рассеивающейся сети. j th элемент f содержит центральные частоты для j th набор фильтров вейвлета в psifilters. Каждый элемент f L-by-2 матрица с каждой строкой, содержащей центральные частоты соответствующего L th вейвлет. Пространственные частоты находятся в циклах на пиксель.

Отфильтруйте параметры для 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 имеет форму

ψ(x,y)=e(x2+ν2y2)/2σ2eiωλx

где v является наклонным параметром. Как правило, v <1, так, чтобы эллипс x2σ2+y2σ2/ν2 удлинен пространственно в y - направление. Вейвлет вращается в направлении по часовой стрелке: (xy)=(cosθsinθsinθcosθ)(xy).

Вращаемый вейвлет Morlet имеет форму

ψ(x,y')=e(x2+ν2y2)/2σ2eiωλx

Если g (x, y) и G (ω x, ω y) формируют пару Фурье: g(x,y)FTG(ωx,ωy), затем так сделайте их вращения:

g(xcosθ+ysinθ,xsinθ+ycosθ)FTG(ωxcosθ+ωysinθ,ωxsinθ+ωycosθ)

Преобразование Фурье вейвлета Morlet

ψ^(ωx,ωy)=2πσ2νeσ2ν((ωxωλ)2+ωyν2)

Данный вейвлет ψ (x, y) имеет полосу пропускания, о которой сообщают, bw. Полоса пропускания, о которой сообщают, зависит от шкалы, но не угла поворота. Для полосы пропускания на 3 дБ, о которой сообщают, bw полосой пропускания вдоль полуглавной пространственной оси эллипса, который описывает поддержку вейвлета, является bw × slant.

Полуглавная пространственная ось зависит от угла поворота. Полуглавная пространственная ось может быть вычислена из векторного rotations в выходном аргументе filterparams.

Как упорядочено в выходных аргументах f и psifilters, фильтр вейвлета psifilters(:,:,1 + k × NumRotations) поскольку целочисленный k является первым, невращаемым вейвлетом в данной шкале. Вейвлет имеет центральную пространственную частоту f(1 + k × NumRotations,:), который имеет форму (ωx,0). Смотрите определяют вейвлет полуглавная ось.

Смотрите также

Введенный в R2019a