f=imread('cameraman.tif'); % 读图
f=im2double(f); % 转化为double型数据
[r c]=size(f);%设置矩阵的行列数,图的大小
h=fspecial('gaussian',[r c],0.5); % 模糊核
g=imfilter(f,h,'circular'); % 图像模糊
a=0.1;
b=0.000000000001;
n=a+b*randn(r,c); % 噪声,均值为0.1,方差为b^2
g=g+n; % 模糊图像加噪声
F=fft2(f); % 清晰图像频谱
G=fft2(g); % 加噪图像频谱
H=psf2otf(h); % PSF->OTF
N=fft2(n); % 噪声频谱
H2=conj(H).*H;
N2=conj(N).*N;
F2=conj(F).*F;
NF=N2./F2; % 噪信比
huv=H2./(H2+NF);
tuv=(1./(H+eps)).*huv; % 频域滤波器
RA=tuv.*G;
ra=real(ifft2(RA)); % 降噪图像
MN=sum(sum(N2));
MF=sum(sum(F2));
sr=MN/MF;
huv=H2./(H2+sr);
tuv=(1./(H+eps)).*huv; % 另一个频域滤波器
RC=tuv.*G;rc=real(ifft2(RC)); % 另一幅降噪图像
figure,imshow(f);title('原始图像');