傅里叶域高斯滤波器

Gaussian filter in fourier domain

我尝试用matlab在傅立叶域中应用高斯滤波器,结果模糊但输出图像像拼图一样混乱,我不知道为什么!

img='src.pgm';
scale=10;

I=imread(img);
S=size(I);
TF_I=zeros([S(1) S(2)]);

TF_I= fft2(I);

mask = fspecial('gaussian',S(1),scale);

TF_mask=fft2(mask);

TF_out = TF_I.*TF_mask;

img_out=ifft2(TF_out);

img_out=uint8(img_out);

imshow(img_out);

试试这个:

TF_mask=fft2(ifftshift(mask));

DFT(fft 计算)假定原点位于 top-left 像素。 mask 原点位于图像中间。 ifftshift 将原点移动到 top-left 像素。