您的位置:首页 > 编程语言 > MATLAB

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

2016-04-16 20:32 435 查看
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,效果还不错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: