как использовать фильтр во временной области для фильтрации изображения?

Я получаю несколько вейвлетов в частотной области в Matlab. Затем я перевожу его в вейвлет во временной области с помощью преобразований Фурьеifft2. Размер вейвлета во временной области и в частотной области такой же, как у изображения. И оба они матричные.

Вопрос в том:

как использовать фильтр во временной области для фильтрации изображения,или перенести фильтр во временной области на то, что может умножить изображение? Обычно,фильтр во временной области фильтрует изображение путем свертки. Но размер фильтров, которые я получаю путем перевода из вейвлета в частотную область, такой же, как и изображение. Кажется, что это не может свертка.

X = imread('barbara.jpg');
shearletSystem = SLgetShearletSystem2D(0,size(X,1),size(X,2),scales);  
%the size of {shearlets} and {shearlets_timedomain} are [size(X,1),size(X,2),nshear],nshear is the number of the shearlets
%shearlets is the filter in the frequency domain,shearlets_timedomain is the filter in the time domain
shearlets_timedomain=fftshift(ifft2(ifftshift(shearletSystem.shearlets(:,:,:))));

person zhan    schedule 17.09.2020    source источник
comment
Если я правильно понимаю этот вопрос, то то, что вы описываете, верно. Умножение в одном домене — это свертка в другом. Таким образом, преобразуйте свои фильтры во временную область, а затем сверните их с изображением. Пожалуйста, добавьте минимальный воспроизводимый пример, чтобы мы могли увидеть, в чем проблема; не забудьте включить образец ввода и вывода.   -  person Adriaan    schedule 17.09.2020
comment
Используйте convn для применения свертки изображения с ядром фильтра.   -  person Cris Luengo    schedule 17.09.2020
comment
@Adriaan Адриан, я добавил пример. Я хочу использовать shearlets_timedomain для фильтрации изображения. Но размер одного shearlets_timedomain такой же, как у входного изображения. Как свернуться? Фильтр кажется таким большим.   -  person zhan    schedule 17.09.2020
comment
@Cris Luengo Как свернуться? Фильтр, который я получаю путем переноса из вейвлета в частотную область, кажется таким большим.   -  person zhan    schedule 17.09.2020
comment
Да, это будет неэффективно, но вы все равно можете использовать convn. Используйте «такой же» вариант для выходного размера. Вероятно, вы должны применить фильтр в частотной области путем умножения.   -  person Cris Luengo    schedule 17.09.2020


Ответы (1)


FWT может быть полностью выполнен в частотной области, см. объяснение в этой статье . Если я правильно понимаю, ваш вопрос заключается не в том, почему свернутый сигнал имеет тот же размер, что и оригинал (см. ответ @ChrisLuengo), а в том, как выполнить субдискретизацию (выбирая либо четные, либо нечетные позиции) в частотной области.

Как говорит @Adriaan, свертка во временной области - это точечное умножение в частотной области и наоборот. Для субдискретизации сигнала x длины n [x(1) ... x(n) в MatLab] и его преобразования Фурье X, взятие x(1:2:n) во временной области соответствует взятию X(1:(n/2)) в частотной области - просто для полноты, взятие x(2:2:n) во временной области соответствует взятию X((n/2+1):n) в частотной области.

person alle_meije    schedule 12.01.2021