MATLAB傅立叶图像滤波

时间:2014-04-11 18:51:15

标签: image matlab filtering

我目前正在学习如何使用Matlab中的傅里叶变换过滤图像。我设法在图像上应用低通滤波器,问题是,我不能用高通滤波器做同样的事情。这是我得到的代码和图像。你能帮帮我吗?

clc

clear

A=imread('3.tif'); % image size is 200 x 200

B=fftshift(fft2(A));

mask=zeros(200);

mask(80:120,80:120)=1;

C=mask.*B;

D=ifft2(C);

D=uint8(D);

imshow(D);

结果如下:

http://i.stack.imgur.com/Y2UaI.png

当我尝试应用反向掩码时出现问题,如下所示:

clc

clear

A=imread('3.tif'); % image size is 200 x 200

B=fftshift(fft2(A));

mask=zeros(200);

mask=mask+255;

mask(80:120,80:120)=0;

C=mask.*B;

D=ifft2(C);

D=uint8(D);

imshow(D);

结果:

http://i.stack.imgur.com/NzYNG.png

有什么问题?

1 个答案:

答案 0 :(得分:3)

在第二个代码上更改此内容:

mask=zeros(200);
mask=mask+255;

...到此

mask=ones(200);

您也忘记在两个代码上致电ifftshift

D=ifft2(ifftshift(C));

这是我得到的:

  • 低通

enter image description here

  • 高通

enter image description here