当前位置:   article > 正文

维纳滤波器图像复原_维纳滤波图像复原

维纳滤波图像复原

一 、背景

下图截取自一幅卫星影像,造成图像质量下降的点扩展函数可近似为高斯模型,并含有加性白噪声。设法估计图像退化的参数,利用维纳滤波进行恢复。
在这里插入图片描述

二、算法原理

(1)首先假设点扩散函数为高斯模型 ,加性白噪声为高斯噪声 ,理想的未退化的图像为 ,那么退化图像可表示为 ,要想恢复出理想图像,就要估计点扩散函数 和加性白噪声 ;
(2)为了更好地估计叠加有白噪声的高斯模糊图像的点扩展函数,可以先对图像进行去噪处理。因此我们采用均值滤波对退化图像进行去噪;
(3)采用最大似然估计算法来估计退化图像的点扩展函数 ,即寻找最适合的点扩展函数来极大化似然函数,先假设一个初始值,然后通过迭代方式估计出点扩展函数;
(4)估计加性白噪声 ,采用matlab图像处理工具箱中的二维维纳滤波函数来估计噪声参数;
(5)最后采用维纳滤波对退化图像进行复原。维纳滤波也称最小均方误差滤波,它能处理被退化函数退化和噪声污染的图像。该滤波方法建立在图像和噪声都是随机变量的基础之上,目标是找到理想图像 的一个估计 ,使它们之间的均方误差最小,即 。

三、算法步骤

(1)均值滤波去噪
(2)估计加性白噪声模型参数
(3)估计点扩散函数
(4)维纳滤波进行图像复原

四、matlab程序代码


f=im2double(imread('hw3_satellite.tiff'));
figure
subplot(2,2,1);imshow(f);title('原图像')
%均值滤波去噪
[r,c]=size(f);
h=ones(3,3)/9; %box模板
f=double(f);
n=zeros(r,c);
for a=2:r-1
    for b=2:c-1
        n(a,b)=sum(sum(h.*f(a-1:a+1,b-1:b+1)));
    end
end
subplot(2,2,2);imshow(n);title('均值滤波去噪后的图像');
%估计噪声参数
[~,noise_var]=wiener2(f,[5 5])
estimated_nsr = noise_var / var(f(:));
%EM算法估计点扩散函数
INITPSF=ones(17,17);%起始猜想
[~,P0]=deconvblind(n,INITPSF,20,10*sqrt(noise_var));%迭代20次
subplot(2,2,3);imshow(P0);title('估计的PSF');
 
%维纳滤波
J = deconvwnr(f, P0, estimated_nsr);
subplot(2,2,4);imshow(J);title('图像复原');

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

五、处理结果(包括必要的中间结果)。

估计出的点扩散模型为:
在这里插入图片描述
估计出的噪声功率估计值为:
在这里插入图片描述
原图像、均值滤波去噪后的图像、估计的PSF、图像复原后的图像如下:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/117331
推荐阅读
相关标签
  

闽ICP备14008679号