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
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. Используйте функцию помощника 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}.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)

Возьмите обратное преобразование Фурье фильтра вейвлета. Фильтр строго действителен, и обратное преобразование Фурье с комплексным знаком. Используйте функцию помощника 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

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

свернуть все

Рассеивание среды разложения в виде 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