以下是用频率域平滑滤波器处理图像的MATLAB代码:
close all;
f=imread('D:\matlab\bin\moer.tif');%插入图像
[M,N] = size(f); %f为含噪图像
F=fftshift(fft2(f)); %图像频域
%构造陷波滤波器,可以修改D0和n获得更好的效果。
u=0:(M-1);
v=0:(N-1);
[V,U]=meshgrid(v,u);
D0=10;
n=2;
v0=113;
v1=145;
D1=abs(V-v0);
D2=abs(V-v1);
H=1./(1+(D0^2./(D1.*D2)).^n);
%滤波
G=fftshift(F.*H);
g=real(ifft2(G));
subplot(1,2,1),imshow(f,[]),title('原图像');
subplot(1,2,2),imshow(g,[]),title('处理后图像');
在上述代码中,首先读取原始图像。然后对灰度图像进行傅里叶变换,并定义陷波滤波器,对图像进行滤波。最后进行逆傅里叶变换,并显示处理后的图像。
处理后的图像: