filterbank

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

Синтаксис

phif = filterbank(sf)
[phif,psifilters] = filterbank(sf)
[phif,psifilters,f] = filterbank(sf)
[phif,psifilters,f,filterparams] = filterbank(sf)
[___] = filterbank(sf,fb)

Описание

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) возвращается центральные пространственные частоты для вейвлета просачивается psifilters. f является 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 набора фильтров изображений.

Создайте среду рассеивания вейвлета изображений с двумя наборами фильтров. Первый набор фильтров имеет добротность 1, и второй набор фильтров имеет добротность 2.

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 = 2x1 cell array
    {192x192x42 single}
    {192x192x20 single}

f
f = 2x1 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, соответственно. Существует семь вращений на вейвлет в первом наборе фильтров и пять вращений на вейвлет во втором наборе фильтров. Возвратите преобразования Фурье фильтров вейвлета и их центрального пространственного freqencies и параметров набора фильтров.

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) равен size(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, возвратился как целое число.

  • точность Точность рассеивающейся среды, возвращенной как '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 - направление. Вейвлет вращается в направлении по часовой стрелке:.

Вращаемый вейвлет 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