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
    {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}.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])

Приложение

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

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

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

свернуть все

Рассеивание среды разложения, заданной как 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)=(потому чтоθsinθsinθпотому чтоθ)(xy).

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

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

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

g(xпотому чтоθ+ysinθ,xsinθ+yпотому чтоθ)FTG(ωxпотому чтоθ+ωysinθ,ωxsinθ+ωyпотому чтоθ)

Преобразование Фурье вейвлета 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

Для просмотра документации необходимо авторизоваться на сайте