Граничные эффекты в реальном значении бандлимитированных систем Shearlet

Этот пример показывает, как эффекты ребра могут привести к коэффициентам shearlet с ненулевыми мнимыми частями даже в реальной системе shearlet. В примере также рассматриваются две стратегии смягчения этих эффектов границы: изменение размера или заполнение изображения и изменение количества шкал.

Полосное конусно-адаптированное конечное преобразование шестерни, реализованное в shearletSystem объект разработан в [1] и [2]. Проблема потенциальных эффектов ребра в этой системе подробно обсуждается в [1].

Конвенция о частотном порядке в фильтрах Shearlet

Шипованные конусообразные шестерни выполнены в частотный диапазон, для получения дополнительной информации см. Shearlet Systems. Шестеренчатые фильтры в shearletSystem используйте незначительное изменение пространственной внутренней системы координат, описанной в Image Coordinate Systems (Image Processing Toolbox). Если вы знакомы с соглашениями MATLAB для упорядоченного расположения пространственных частот в 2-D дискретном преобразовании Фурье, можно пропустить этот раздел примера.

В MATLAB 2-D преобразование Фурье упорядочивает частоты в направлении X и Y, начиная с (X, Y) = (0,0) в верхнем левом углу изображения. Чтобы увидеть это, создайте изображение, состоящее только из DC или среднего компонента.

imMean = 10*ones(5,5);
imMeanDFT = fft2(imMean)
imMeanDFT = 5×5

   250     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0

Пространственные частоты увеличиваются вниз по размерности строки (Y) и поперек столбцов (X) до достижения частоты Найквиста и затем снова уменьшаются. В приведенном выше примере в изображении нет колебаний, поэтому вся энергия сконцентрирована в imMeanDFT(1,1), что соответствует (0,0) в пространственных частотах. Теперь создайте изображение, состоящее из ненулевого среднего значения и синусоиды с низкой отрицательной частотой в обоих направлениях X и Y.

x = 0:15;
y = 0:15;
[X,Y] = meshgrid(x,y);
Z = 5+4*exp(2*pi*1j*(12/16*X+12/16*Y));
Zdft = fft2(Z);
imagesc(abs(Zdft))

Figure contains an axes. The axes contains an object of type image.

Средний компонент находится в верхнем левом углу ДПФ 2-D, и низкая отрицательная частота в направлении X и Y находится в правом нижнем углу изображения, как и ожидалось.

Теперь применить fftshift, который для матриц (изображений) меняет первый квадрант на третий, а второй квадрант на четвертый. Это означает, что высокие отрицательные пространственные частоты в X и Y теперь находятся в верхнем левом углу. Пространственная частота уменьшается в направлении Y до нуля и затем снова увеличивается до Nyquist, когда вы перемещаетесь вниз по изображению. Точно так же пространственные частоты в X уменьшаются, когда вы перемещаетесь вдоль изображения вправо до нуля, а затем увеличиваетесь до Nyquist. (0,0) пространственная частотная составляющая перемещается в центр изображения.

imagesc(abs(fftshift(Zdft)))

Figure contains an axes. The axes contains an object of type image.

Частотное упорядоченное расположение резьбовых фильтров, возвращаемых filterbank функция следует этому сдвинутому соглашению для пространственных частот в X, но соглашение перевернуто для пространственных частот в Y. Пространственные частоты в Y большие и положительные в верхнем левом углу, уменьшаются к нулю, когда вы движетесь вниз по строкам и снова увеличиваетесь к большим отрицательным пространственным частотам. Соответственно, пространственные частоты Y перевернуты относительно fftshift MATLAB выход. Это не влияет на расчет коэффициентов shearlet. Это необходимо учитывать только при визуализации фильтров резьбы в 2-D частотные диапазоны.

Реальные полосовые лимитированные ширмалы и симметрия по частоте

Получите реальную систему шестеренок с размером изображения по умолчанию 128 на 128. Визуализируйте три горизонтальных адаптированных к конусам сдвига для коэффициентов сдвига -1,0,1, соответственно, в самой грубой пространственной шкале (самое лучшее пространственное разрешение частоты).

sls = shearletSystem;
[psi,scale,shear,cone] = filterbank(sls);
omegax = -1/2:1/128:1/2-1/128;
omegay = -1/2:1/128:1/2-1/128;
figure
subplot(2,2,1)
surf(omegax,flip(omegay),psi(:,:,2),'EdgeColor',"none")
view(0,90)
title('Horizontal Cone — Shear = -1')
xlabel('$\omega_x$','Interpreter',"latex",'FontSize',14)
ylabel('$\omega_y$','Interpreter',"latex","FontSize",14)
subplot(2,2,2)
surf(omegax,flip(omegay),psi(:,:,3),'EdgeColor',"none")
xlabel('$\omega_x$',"Interpreter","latex",'FontSize',14)
ylabel('$\omega_y$',"Interpreter","latex","FontSize",14)
view(0,90)
title('Horizontal Cone — Shear = 0')
subplot(2,2,3)
surf(omegax,flip(omegay),psi(:,:,4),'EdgeColor',"none")
xlabel('$\omega_x$',"Interpreter","latex","FontSize",14)
ylabel('$\omega_y$',"Interpreter","latex","FontSize",14)
view(0,90)
title('Horizontal Cone — Shear = 1')

Figure contains 3 axes. Axes 1 with title Horizontal Cone — Shear = -1 contains an object of type surface. Axes 2 with title Horizontal Cone — Shear = 0 contains an object of type surface. Axes 3 with title Horizontal Cone — Shear = 1 contains an object of type surface.

Как ожидалось и требовалось для того, чтобы шестерни были реальными в пространственной области, их реальные преобразования Фурье должны быть симметричными относительно положительных и отрицательных X и Y пространственных частот. Повторите шаги для адаптированных к конусам вертикальных сдвигов при самой мелкой пространственной шкале частоты.

figure
subplot(2,2,1)
surf(omegax,flip(omegay),psi(:,:,5),'EdgeColor',"none")
view(0,90)
title('Vertical Cone — Shear = -1')
xlabel('$\omega_x$','Interpreter',"latex",'FontSize',14)
ylabel('$\omega_y$','Interpreter',"latex","FontSize",14)
subplot(2,2,2)
surf(omegax,flip(omegay),psi(:,:,6),'EdgeColor',"none")
xlabel('$\omega_x$',"Interpreter","latex",'FontSize',14)
ylabel('$\omega_y$',"Interpreter","latex","FontSize",14)
view(0,90)
title('Vertical Cone — Shear = 0')
subplot(2,2,3)
surf(omegax,flip(omegay),psi(:,:,7),'EdgeColor',"none")
xlabel('$\omega_x$',"Interpreter","latex","FontSize",14)
ylabel('$\omega_y$',"Interpreter","latex","FontSize",14)
view(0,90)
title('Vertical Cone — Shear = 1')

Figure contains 3 axes. Axes 1 with title Vertical Cone — Shear = -1 contains an object of type surface. Axes 2 with title Vertical Cone — Shear = 0 contains an object of type surface. Axes 3 with title Vertical Cone — Shear = 1 contains an object of type surface.

В квадратном изображении легче гарантировать необходимую симметрию для всех факторов сдвига и расширений, чем в изображении, где соотношение сторон отличается от единицы. Чем более выражена разница между высотой и размерностями ширины изображения, тем сложнее становится обеспечить необходимую симметрию. Обеспечение совершенной симметрии в плоскости 2-D частоты также сложнее, когда шестерня перекрывает ребра изображения.

В shearletSystemколичество шкал определяет поддержку lowpass. Чем больше количество шкал, тем больше концентрирована поддержка частоты lowpass вокруг (0,0). Для реальной системы срезов шесть срезов шкалы-0 (3 горизонтальных и 3 вертикальных срезов) заполняют поддержку частоты вокруг фильтра lowpass. Соответственно, в то время как количество срезов постоянно в заданном масштабе, фактическая частотная поддержка срезов не имеет значения. Чтобы увидеть это, создайте другую систему срезов только с одним масштабом и постройте график срезов шкалы 0 вертикального конуса.

sls1 = shearletSystem('NumScales',1);
psi1 = filterbank(sls1);
figure
subplot(2,2,1)
surf(omegax,flip(omegay),psi1(:,:,5),'EdgeColor',"none");
view(0,90)
title('Vertical Cone — Shear = -1')
xlabel('$\omega_x$','Interpreter',"latex",'FontSize',14)
ylabel('$\omega_y$','Interpreter',"latex","FontSize",14)
subplot(2,2,2)
surf(omegax,flip(omegay),psi1(:,:,6),'EdgeColor',"none");
xlabel('$\omega_x$',"Interpreter","latex",'FontSize',14)
ylabel('$\omega_y$',"Interpreter","latex","FontSize",14)
view(0,90)
title('Vertical Cone — Shear = 0')
subplot(2,2,3)
surf(omegax,flip(omegay),psi1(:,:,7),'EdgeColor',"none");
xlabel('$\omega_x$',"Interpreter","latex","FontSize",14)
ylabel('$\omega_y$',"Interpreter","latex","FontSize",14)
view(0,90)
title('Vertical Cone — Shear = 1')

Figure contains 3 axes. Axes 1 with title Vertical Cone — Shear = -1 contains an object of type surface. Axes 2 with title Vertical Cone — Shear = 0 contains an object of type surface. Axes 3 with title Vertical Cone — Shear = 1 contains an object of type surface.

В этой системе шестеренок шкала-0 имеют всю свою энергию в самых высоких пространственных частотах X и Y. На этих ребрах 2-D плоскости частот симметрия, необходимая для чисто вещественных коэффициентов шестеренки, может страдать численными нестабильностями. Важной точкой является то, что шкала, при которой это может произойти, зависит от количества шкал в системе shearlet, а также соотношения сторон анализируемого изображения.

Постройте график частотных характеристик lowpass и шести срезающих фильтров, чтобы показать, как 2-D плоскость частот заполнена, что обеспечивает совершенную систему реконструкции.

figure
for ns = 1:size(psi1,3)
    surf(omegax,flip(omegay),psi1(:,:,ns),'edgecolor','none'); 
    xlabel('$\omega_x$','Interpreter',"latex","FontSize",14)
    ylabel('$\omega_y$','Interpreter',"latex",'FontSize',14)
    view(0,90);
    hold on;
end 
title('One-Scale Shearlet Transform Filters')

Figure contains an axes. The axes with title One-Scale Shearlet Transform Filters contains 7 objects of type surface.

При наличии только одной шкалы в системе срезных отверстий шесть срезов должны заполнять любую область 2-D, разнос частот не покрывается фильтром lowpass. Соответственно, разбивка симметрии, требуемой для чисто действительных коэффициентов шестеренки, может происходить, когда присутствует только одна шкала, потому что эти шестерни имеют поддержку, перекрывающую ребра. В следующем разделе рассматриваются два способа защиты от внешнего вида комплексных коэффициентов в реальном преобразовании шестеренки.

Изменение размера или заполнение прямоугольных изображений

По возможности используйте квадратные изображения. Легче гарантировать совершенную симметрию в частотной характеристике shearlet, когда соотношение сторон одно. Это верно, даже когда фильтры шестеренки перекрывают ребро изображения. Если у вас есть Image Processing Toolbox™, можно использовать imresize. Прочтите на следующем изображении и отобразите изображение и его размер.

im = imread('pout.tif');
size(im)
ans = 1×2

   291   240

figure
imshow(im)

Figure contains an axes. The axes contains an object of type image.

Изображение 291 на 240. Количество шкал по умолчанию в преобразовании shearlet для этого размера изображения 4. Получите реальное преобразование шестеренки для количества шкал по умолчанию. Проверяйте, имеет ли какой-либо из коэффициентов ненулевую мнимую часть.

sls = shearletSystem('ImageSize',size(im));
cfs = sheart2(sls,double(im));
max(imag(cfs(:)))
ans = 0
~any(imag(cfs(:)))
ans = logical
   1

Коэффициенты shearlet являются чисто реальными, как и ожидалось. Повторите шаги с максимальным количеством шкал, равным 2.

sls = shearletSystem('ImageSize',size(im),'NumScales',2);
cfs = sheart2(sls,double(im));
max(imag(cfs(:)))
ans = 9.7239e-05
~any(imag(cfs(:)))
ans = logical
   0

Теперь коэффициенты shearlet не являются чисто реальными. Идеальное свойство реконструкции преобразования не затронуто.

imrec = isheart2(sls,cfs);
max(abs(imrec(:)-double(im(:))))
ans = 2.1316e-13

Однако наличие комплексных коэффициентов шиповника может быть нежелательным.

Одна стратегия смягчить это, если Вы хотите преобразование с двумя шкалами, состоит в том, чтобы изменить размеры изображения к 291 на 291.

imr = imresize(im,[291 291]);
imshow(imr)

Figure contains an axes. The axes contains an object of type image.

sls = shearletSystem('ImageSize',size(imr),'NumScales',2);
cfs = sheart2(sls,double(imr));
max(imag(cfs(:)))
ans = 0
~any(imag(cfs(:)))
ans = logical
   1

Путем простого изменения размера изображения, чтобы иметь соотношение сторон, равную единице, вы можете получить чисто реальное преобразование шестеренки с желаемым количеством шкал.

В качестве альтернативы изменению размеров можно просто дополнить изображение нужным размером. Используйте wextend функция для обнуления столбцов изображений равной 291. Получите преобразование shearlet изображения с нулевым заполнением и проверьте, что коэффициенты чисто действительны. Если вас интересуют только коэффициенты анализа, можно отменить любое заполнение после получения преобразования shearlet. Это связано с тем, что изображения коэффициента шестеренки имеют такое же пространственное разрешение, как и оригинальное изображение.

impad = wextend('ac','zpd',im,51,'r');
cfs = sheart2(sls,double(impad));
max(imag(cfs(:)))
ans = 0
~any(imag(cfs(:)))
ans = logical
   1

Настройте количество шкал

Существуют случаи, когда достаточно просто увеличить или уменьшить количество шкал на единицу, чтобы исключить любые эффекты ребра в симметрии преобразования шестеренки. Для примера с помощью оригинального изображения простое увеличение количества шкал на один приводит к чисто вещественным коэффициентам.

sls = shearletSystem('ImageSize',size(im),'NumScales',3);
cfs = sheart2(sls,double(im));
max(imag(cfs(:)))
ans = 0
~any(imag(cfs(:)))
ans = logical
   1

Ссылки

[1] Häuser, Sören, and Gabriele Steidl. «Fast Finite Shearlet Transform: A Tutorial». arXiv preprint arXiv:1202.1773 (2014).

[2] Voigtlaender, Felix, and Anne Pein. "Разность анализа и синтеза для α-Shearlets ". arXiv preprint arXiv:1702.03559 (2017).

См. также

| |

Похожие темы