%%%%%%%%%%%%%%%%%%%%维纳滤波
%用真实的PSF函数采用维纳滤波方法复原图像
wnr1 = deconvwnr(Blurred1,PSF1);
wnr2 = deconvwnr(Blurred2,PSF2);
subplot(1,2,1);imshow(wnr1);
title('Restored1, True PSF');
subplot(1,2,2);imshow(wnr2);
title('Restored2, True PSF');
%采用过大的模糊距离参数和过大的模糊运动方向角度参数
wnr3 = deconvwnr(Blurred1,fspecial('motion',2*LEN,THETA));
wnr4 = deconvwnr(Blurred1,fspecial('motion',LEN,2*THETA));
figure;
subplot(1,2,1);imshow(wnr3);
title('Restored3, "Long" PSF');
subplot(1,2,2);imshow(wnr4);
title('Restored4, Steep');
%不考虑噪声的影响,采用逆滤波方法复原图像
wnr5 = deconvwnr(BlurredNoisy1,PSF1);
wnr6 = deconvwnr(BlurredNoisy2,PSF2);
figure;
subplot(1,2,1);imshow(wnr5);
title('Inverse Filtering of BlurredNoisy1');
subplot(1,2,2);imshow(wnr6);
title('Inverse Filtering of BlurredNoisy2');
%估计信噪比,应用于图像复原过程中
NSR = sum((V*prod(size(I))).^2) / sum(im2double(I(:)).^2);%信噪比的倒数
wnr7 = deconvwnr(BlurredNoisy1,PSF1,NSR);
wnr8 = deconvwnr(BlurredNoisy2,PSF2,NSR);
figure;
subplot(1,2,1);imshow(wnr7);
title('Restored1 with NSR');
subplot(1,2,2);imshow(wnr8);
title('Restored2 with NSR');
%采用过小的噪信比(即过大的信噪比)作为参数
wnr9 = deconvwnr(BlurredNoisy1,PSF1,NSR/100);
wnr10 = deconvwnr(BlurredNoisy2,PSF2,NSR/100);
figure;
subplot(1,2,1);imshow(wnr9);
title('Restored1 with NSR/100');
subplot(1,2,2);imshow(wnr10);
title('Restored2 with NSR/100');
%提供信号的自相关函数ICORR和噪声的自相关函数NCORR
NP=(V*prod(size(I))).^2;
NPOW = sum(NP(:))/prod(size(I)); % 噪声功率
NCORR = fftshift(real(ifftn(NP))); % 噪声自相关函数(ACF)
IP = abs(fftn(im2double(I))).^2;
IPOW = sum(IP(:))/prod(size(I)); % 原始图像的功率
ICORR = fftshift(real(ifftn(IP))); % 图像自相关函数(ACF)
wnr11 = deconvwnr(BlurredNoisy1,PSF1,NCORR,ICORR);
wnr12 = deconvwnr(BlurredNoisy2,PSF2,NCORR,ICORR);
figure;
subplot(1,2,1);imshow(wnr11);
title('Restored1 with ACF');
subplot(1,2,2);imshow(wnr12);
title('Restored2 with ACF');
%仅已知噪声的功率NPOW和真实图像的1-D自相关函数ICORR
ICORR1 = ICORR(:,ceil(size(I,1)/2));
wnr13 = deconvwnr(BlurredNoisy1,PSF1,NPOW,ICORR1);
wnr14 = deconvwnr(BlurredNoisy2,PSF2,NPOW,ICORR1);
figure;
subplot(1,2,1);imshow(wnr13);
title('Restored1 with NP & 1D-ACF');
subplot(1,2,2);imshow(wnr14);
title('Restored2 with NP & 1D-ACF');