filterbank

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

Описание

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

[phif,psifilters,f,filterparams] = filterbank(sf) возвращает параметры фильтра для 2-D сети рассеяния. 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 contains an axes. The axes 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. The axes 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. Используйте функцию helper helperPlotWavelet чтобы построить график определенного вейвлета и отметить его центральную частоту.

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

Figure contains an axes. The axes 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

Этот пример показов, как определить полумасштабную ось вейвлета фильтра в 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}.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 имеет шесть элементов. Количество элементов равно количеству вейвлета, шкал в первой группе фильтров.

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

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

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

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

Figure contains an axes. The axes 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. The axes 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. The axes 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.

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

свернуть все

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

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

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

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

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

Подробнее о

свернуть все

Наклонный параметр

Наклонный параметр или пространственное соотношение сторон управляет формой эллиптической поддержки вейвлета Морле.

Вейвлет Морле имеет вид

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

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

Повернутый вейвлет Морле имеет вид

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

Если g (x, y) и G (ω x, <reservedrangesplaceholder1> <reservedrangesplaceholder0> ) формируют пару Фурье:g(x,y)FTG(ωx,ωy)и их вращение:

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

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

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

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

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

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

См. также

Введенный в R2019a