1.首先生成退化图像
采用下述代码生成退化图像g
>> f=checkerboard(8);
>> PSF=fspecial('motion',7,45);
>> gb=imfilter(f,PSF,'circular');
>> noise=imnoise2('Gaussian',size(f,1),size(f,1),0,sqrt(0.001));
>> g=gb+noise;
2.维纳滤波
使用函数deconvwnr可实现维纳滤波
frest1=deconvwnr(g,PSF); %直接逆滤波,效果不好,未考虑噪声
Sn=abs(fft2(noise)).^2; %噪声功率谱
nA=sum(Sn(:))/numel(noise); %噪声平均功率
Sf=abs(fft2(f)).^2; %图像功率谱
fA=sum(Sf(:))/numel(f); %图像平均功率
R=nA/fA; %噪信功率比
frest2=deconvwnr(g,PSF,R); %结果改进
NCORR=fftshift(real(ifft2(Sn))); %噪声自相关函数
ICORR=fftshift(real(ifft2(Sf))); %未退化图像的自相关函数
frest3=deconvwnr(g,PSF,NCORR,ICORR); %效果较好
上述三种方式结果如下:
3.问题
上述计算函数所需参数时使用了noise和f,若已知这些,计算的意义何在???