图像恢复技术之Matlab中的维纳滤波代码复现

k=0.001;
blur=g;
bf = fftshift(fft2(blur));
[M,N]=size(blur);
H=zeros(M,N);
rad= 5;
length = 2*rad+1;
psf=zeros(length,length);
for i=1:length
    for j=1:length
        
        if((  (i-rad-1)*(i-rad-1) + (j-rad-1)*(j-rad-1) ) < rad*rad )
					H(i,j) =1.0/(rad*rad*3.14159);
                    psf(i,j) =1.0/(rad*rad*3.14159);
        end
        
        
    end
end



H= fftshift(fft2(H));
Hg = conj(H);
spec = Hg.*H;
spectt = spec +k;
can = spec./spectt;

jk = can./H;
 Gg=bf.*jk;


Gg=ifftshift(Gg);
pp=im2uint8(mat2gray(real(ifft2(Gg))));%退化后的图像

subplot(2,2,1);
imshow(blur);
subplot(2,2,2);
imshow(pp);

图像恢复技术之Matlab中的维纳滤波代码复现。此代码为维纳滤波的算法的MATLAB复现,其中K为维纳滤波参数,代码中的psf为模拟散焦函数,代码的关键之处在于矩阵对齐与补0,效果还不错。

你可能感兴趣的:(图像恢复技术之Matlab中的维纳滤波代码复现)