代码之家  ›  专栏  ›  技术社区  ›  KiMaN

傅里叶域高斯滤波器

  •  0
  • KiMaN  · 技术社区  · 7 年前

    我尝试用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);
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Cris Luengo    7 年前

    尝试以下操作:

    TF_mask=fft2(ifftshift(mask));
    

    DFT(什么 fft 计算)假定原点位于左上角的像素。 mask 原点位于图像的中间。 ifftshift 将原点移动到左上角的像素。