В этом примере показано, как краевые эффекты могут привести к shearlet коэффициентам с ненулевыми мнимыми частями даже в shearlet системе с действительным знаком. Пример также обсуждает две стратегии того, чтобы смягчить эти граничные последствия: изменение размеров или дополнение изображения и изменение количества шкал.
bandlimited адаптированный к конусу конечный shearlet преобразовывают реализованный в shearletSystem
объект разрабатывается в [1] и [2]. Проблема потенциальных краевых эффектов в этой системе обсуждена подробно в [1].
Bandlimited адаптированные к конусу shearlets создаются в частотном диапазоне, видят Системы Shearlet для большего количества детали. shearlet просачивается shearletSystem
используйте небольшую модификацию пространственной внутренней системы координат, описанной в Системах координат Изображений (Image Processing Toolbox). Если вы знакомы с соглашениями MATLAB для упорядоченного расположения пространственных частот в 2D дискретном преобразовании Фурье, можно пропустить этот раздел примера.
В MATLAB 2D преобразование Фурье заказывает частоты в направлении 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))
Средний компонент находится в левом верхнем угле 2D ДПФ, и низкая отрицательная частота в направлении X и Y находится в правом нижнем углу изображения как ожидалось.
Теперь примените fftshift
, который для матриц (изображения) подкачивает первый квадрант с третьим, и второй квадрант с четвертым. Это означает, что высоко отрицательные пространственные частоты в X и Y находятся теперь в левом верхнем угле. Пространственные уменьшения частоты в направлении Y, чтобы обнулить и затем увеличиваются снова до Найквиста, когда вы спускаете изображение. Точно так же пространственные частоты в X уменьшениях, когда вы проходите изображение направо до нуля и затем увеличиваетесь до Найквиста. (0,0) пространственная частотная составляющая перемещена в центр изображения.
imagesc(abs(fftshift(Zdft)))
Упорядоченное расположение частоты фильтров shearlet возвращено filterbank
функция следует этому переключенному соглашению для пространственных частот в X, но соглашение инвертируется для пространственных частот в Y. Пространственные частоты в Y являются большими и положительными в левом верхнем угле, уменьшении к нулю, когда вы спускаете строки, и увеличиваются снова к большим отрицательным пространственным частотам. Соответственно, пространственные частоты Y инвертируются относительно fftshift
MATLAB
вывод . Это не оказывает влияния на расчет shearlet коэффициентов. Это должно быть учтено только, когда визуализация shearlet просачивается 2D частотный диапазон.
Получите shearlet систему с действительным знаком с размером изображения по умолчанию 128 128. Визуализируйте три горизонтали адаптированный к конусу shearlets для сдвига факторов-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')
Как ожидалось и требуемый для shearlets быть с действительным знаком в пространственной области, их преобразования Фурье с действительным знаком должны быть симметричными относительно положительных и отрицательных X и Y пространственные частоты. Повторите шаги для вертикального адаптированного к конусу shearlets в самой прекрасной пространственной шкале частоты.
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')
В квадратном изображении легче гарантировать необходимую симметрию для всех факторов сдвига и расширений, чем в изображении, где соотношение сторон отличается от одного. Чем более явный различие между размерностями высоты и ширины изображения, тем тяжелее это становится, чтобы гарантировать необходимую симметрию. Обеспечение совершенной симметрии в 2D плоскости частоты также более трудно, когда shearlet перекрывает ребра изображения.
В shearletSystem,
количество шкал определяет поддержку фильтра lowpass. Чем больше количество шкал, тем более сконцентрированный поддержка частоты фильтра lowpass (приблизительно 0,0). Для shearlet системы с действительным знаком шесть масштабируют 0 shearlets (3 горизонтали, и 3 вертикальных shearlets) заполняют поддержку частоты вокруг фильтра lowpass. Соответственно, в то время как количество сдвигов является постоянным в данной шкале, фактическая поддержка частоты shearlets не. Чтобы видеть это, создайте другую shearlet систему только с одной шкалой и постройте вертикально-коническую шкалу 0 shearlets.
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')
В этой shearlet системе шкала 0 shearlets имеют всю свою энергию в самых высоких X и Y пространственные частоты. В этих ребрах 2D плоскости частоты симметрия, требуемая для shearlet коэффициентов чисто с действительным знаком, может перенести числовую нестабильность. Важный момент - то, что шкала, в которой это может произойти, зависит от количества шкал в shearlet системе, а также соотношении сторон анализируемого изображения.
Постройте частотные характеристики фильтра lowpass и шести фильтров shearlet, чтобы показать, как 2D плоскость частоты заполнена, гарантируя совершенную систему реконструкции.
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')
Только с одной шкалой в shearlet системе шесть shearlets должны заполнить любую область 2D пространства частоты, не покрытого фильтром lowpass. Соответственно, отказ в симметрии, требуемой для shearlet коэффициентов чисто с действительным знаком, может произойти, когда существует только один подарок шкалы, потому что те shearlets имеют поддержку, перекрывающую ребра. Следующий раздел обсуждает два способа принять меры против внешнего вида коэффициентов с комплексным знаком в shearlet с действительным знаком, преобразовывают.
Каждый раз, когда квадрат возможного применения отображает. Легче гарантировать совершенную симметрию в shearlet частотной характеристике, когда соотношение сторон является тем. Это верно, даже когда фильтры shearlet перекрывают ребро изображения. Если у вас есть Image Processing Toolbox™, можно использовать imresize.
Читайте в следующем изображении и отобразите изображение и его размер.
im = imread('pout.tif');
size(im)
ans = 1×2
291 240
figure imshow(im)
Изображение 291 240. Количество по умолчанию шкал в shearlet преобразовывает для этого размера изображения, 4. Получите shearlet с действительным знаком, преобразовывают для количества по умолчанию шкал. Проверяйте, имеет ли какой-либо из коэффициентов ненулевую мнимую часть.
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 = 0.0021
~any(imag(cfs(:)))
ans = logical
0
Теперь shearlet коэффициенты не чисто действительны. Совершенное свойство реконструкции преобразования не затронуто.
imrec = isheart2(sls,cfs); max(abs(imrec(:)-double(im(:))))
ans = 1.9895e-13
Однако присутствие shearlet коэффициентов с комплексным знаком может быть нежелательным.
Одна стратегия смягчить это, если вы хотите преобразование с двумя шкалами, состоит в том, чтобы изменить размер изображения к 291 291.
imr = imresize(im,[291 291]); imshow(imr)
sls = shearletSystem('ImageSize',size(imr),'NumScales',2); cfs = sheart2(sls,double(imr)); max(imag(cfs(:)))
ans = 0
~any(imag(cfs(:)))
ans = logical
1
Путем простого изменения размеров изображения, чтобы иметь соотношение сторон равняются одному, вы можете получить чисто действительный shearlet, преобразовывают с желаемым количеством шкал.
Как альтернатива изменению размеров, можно просто заполнить изображение к желаемому размеру. Используйте wextend
функционируйте к нулевой клавиатуре столбцы типа image к 291. Получите shearlet преобразование дополненного нулем изображения и проверьте, что коэффициенты чисто действительны. Если вы интересуетесь только аналитическими коэффициентами, можно отбросить любое дополнение после получения 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
Существуют случаи, где просто увеличения или уменьшения на единицу количества шкал достаточно, чтобы устранить любые краевые эффекты в симметрии shearlet, преобразовывают. Например, с оригинальным изображением, просто постепенно увеличивая количество шкал каждый приводит только к вещественным коэффициентам.
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, Серен и Габриэле Штайдль. "Быстро Конечное Преобразование Shearlet: Пример". arXiv предварительно распечатывают arXiv:1202.1773 (2014).
[2] Voigtlaender, Феликс и боек Энн. "Анализ по сравнению с разреженностью синтеза для - Shearlets". arXiv предварительно распечатывают arXiv:1702.03559 (2017).
isheart2
| shearletSystem
| sheart2