我目前正在学习如何使用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
有什么问题?
答案 0 :(得分:3)
在第二个代码上更改此内容:
mask=zeros(200);
mask=mask+255;
...到此
mask=ones(200);
您也忘记在两个代码上致电ifftshift
:
D=ifft2(ifftshift(C));
这是我得到的: