clear all;
close all;
clc;
img =imread("lena_noise.bmp");subplot(221);imshow(img);title("噪声图");
img1 =im2double(img);
F =fsd(img1);
H =GaussianLowpass(img1,80);subplot(222);imshow(H);title("频域滤波器");
G = F.*H;subplot(223);imshow(G);title("H*F");
G =real(ifft2(ifftshift(G)));
G =G(1:size(img,1),1:size(img,2));subplot(224);imshow(G);title("去噪后图像,D0=80");%傅里叶频谱function F =fsd(img)[m,n]=size(img);%傅里叶变换
F =fft2(img,m*2,n*2);%中心化
F =fftshift(F);end% Butterworth滤波器function H =Bfilter(img, D0)
N =2;[m,n]=size(img);
P = m*2;
Q = n*2;
H =zeros(P, Q);
a = D0^(2* N);for u =1: P
for v =1: Q
d =(u-m)^2+(v-n)^2;H(u, v)=1/(1+(d^N)/ a);endendend%高斯低通滤波器function H =GaussianLowpass(img,D0)[M,N]=size(img);
H =zeros(2*M,2*N);for u =1:2*M
for v =1:2*N
D_square =(u-M)*(u-M)+(v-N)*(v-N);H(u,v)=exp(-D_square/(2*D0*D0));endendend%理想低通滤波器函数function H =ILPF(img,D0)[m,n]=size(img);
P =2*m;
Q =2*n;
H =zeros(P,Q);for u =1:P
for v =1:Q
D =((u-m)*(u-m)+(v-n)*(v-n))^0.5;if D <= D0
H(u,v)=1;elseH(u,v)=0;endendendend