维纳滤波复原法
维纳滤波就是最小二乘滤波,它是使原始图像与其恢复图像之间的均方误差最小的复原方法,对图像进行维纳滤波主要是为了消除图像中的噪声。
示例:利用维纳滤波器进行复原处理
编写对应的m文件如下:
clear all;
clc;
I=zeros(800,800);
I(300:500,500:600)=1;
noise=0.1*randn(size(I));
PSF=fspecial('motion',21,11);
Blurred=imfilter(I,PSF,'circular');
Blurrednoise=im2uint8(Blurred+noise);
NSR=sum(noise(:).^2)/sum(I(:).^2);%%信噪比倒数%%
NP=abs(fftn(noise)).^2;
NPOW=sum(NP(:))/prod(size(noise));
NCORR=fftshift(real(ifftn(NP)));
IP=abs(fftn(I)).^2;
IPOW=sum(IP(:))/prod(size(I));
ICORR=fftshift(real(ifftn(IP)));
ICORR1=ICORR(:,ceil(size(I,1)/2));
NSR=NPOW/IPOW;
subplot(2,2,1)
imshow(Blurrednoise,[]);
title('Blurred and noise图像');
subplot(2,2,2)
imshow(deconvwnr(Blurrednoise,PSF,NSR),[]);
title('deconvwnr(A,PSF,NSR)图像');
subplot(2,2,3)
imshow(deconvwnr(Blurrednoise,PSF,NCORR,ICORR),[]);
title('deconvwnr(A,PSF,NCORR,ICORR)图像');
subplot(2,2,4)
imshow(deconvwnr(Blurrednoise,PSF,NPOW,ICORR1),[]);
title('deconvwnr(A,PSF,NPOW,ICORR1)图像');
程序运行结果如下图: