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('原始圖像');