exponenta event banner

filterbank

Вейвлет-фильтры и фильтры масштабирования

Описание

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

[phif,psifilters] = filterbank(sf) возвращает преобразования Фурье для вейвлет-фильтров в psifilters. psifilters - массив ячеек Nfb-by-1, где Nfb - количество блоков фильтров в сети рассеяния. Каждый элемент psifilters является 3-D массивом. Массивы 3-D являются M-by-N-by-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. Использовать функцию помощника 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 имеет шесть элементов. Количество элементов равно количеству вейвлет-шкал в первом блоке фильтров.

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

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

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

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

Центральные пространственные частоты вейвлет-фильтров, возвращаемые в виде массива Nfb-by-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). См. раздел Определение основной полуоси вейвлета.

Подробнее

свернуть все

Параметр наклона

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

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

start( x, y) = e (x2 + start2y2 )/2start2eiλ x

где v - параметр наклона. Обычно v < 1, так что эллипс x2start2 + y2start2/start2 вытянут пространственно в направлении y. Вейвлет поворачивается в направлении по часовой стрелке: (x′y ) = (cosunsinü sinü cosstart) (xy).

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

start( x , y ') = e (x′2+ν2y′2 )/2start2eiλ x ′

Если g (x, y) и G (startx, starty) образуют пару Фурье: g (x, y) ↔FTG (startx, starty), то так же делают их вращения:

g (xcosstart+ ysinstart, − xsinstart+ ycosstart) ↔FTG ((

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

start^ (startx, starty) = 2serverstart2starte start2, ((startx λ) 2 + startystart2)

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

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

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

См. также

Представлен в R2019a