维纳滤波器图像复原

一 、背景

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

二、算法原理

(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('图像复原');

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

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

  • 0
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远方上&肖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值