我们在matlab中对图(1)做频谱上的分析,将下图保存为本地图片“fft.jpg”
图(1)
运行matlab,在命令窗口中输入
im_file=imread('D:\matlab\fft.jpg');%读者可以根据自己的fft.gif图片所在位置修改imread函数参数
im_gray=rgb2gray(im_file);
im_Ft=fft2(im_gray);%对灰度图进行二维傅里叶变换
im_iFt=fftshift(im_Ft););%为了便于观察和处理,对矩阵调整。不懂的可以查看fftshift函数功能
im_abs=abs(im_iFt);%对傅里叶变换取幅值
surf(im_abs),shading interp;%画出幅值图,结果如下图(2)所示
图(3)
可以试着滤除图3中十字形的区域以外的蓝色(蓝色表示幅度小)部分。将im_iFt矩阵四个边角的60个像素为边长的正方形区域全部置0。
im_iFt=im_S2;
im_S2(1:60,1:60);
im_S2(1:60,1:60)=0;
im_S2(128:189,1:60)=0;
im_S2(128:189,118:179)=0;
im_S2(1:60,118:179)=0;
im_S2=ifftshift(im_S2);
i_imfile=ifft2(im_S2);
imwrite(real(i_imfile),'iFt.jpg','jpg');
最后保存为iFt.jpg图片,输出结果如下图所示