一.实验理论基础``
维纳滤波(wiener filtering) 一种基于最小均方误差准则、对平稳过程的最优估计器。这种滤波器的输出与期望输出之间的均方误差为最小,因此,它是一个最佳滤波系统。可用于提取被平稳噪声所污染的信号。
  从连续的(或离散的)输入数据中滤除噪声和干扰以提取有用信息的过程称为滤波,这是信号处理中经常采用的主要方法之一,具有十分重要的应用价值,而相应的装置称为滤波器。根据滤波器的输出是否为输入的线性函数,可将它分为线性滤波器和非线性滤波器两种。维纳滤波器是一种线性滤波器。
维纳滤波的基本原理是:设观察信号y(t)含有彼此统计独立的期望信号x(t)和白噪声ω(t)可用维纳滤波从观察信号y(t)中恢复期望信号x(t)。设线性滤波器的冲击响应为h(t),此时其输入y(t)为y(t)=x(t)+w(t),输出为

从而,可以得到输出对x(t)期望信号的误差为

其均方误差为:

E[ ]表示数学期望。应用数学方法求最小均方误差时的线性滤波器的冲击响应hopt(t)可得方程:

式中,Ryx(t)为y(t)与x(t)的互相关函数,Ryy(τ-σ)为y(t)的自相关函数。上述方程称为维纳-霍夫(Wiener-Hopf)方程。求解维纳-霍夫方程可以得到最佳滤波器的冲击响应hopt(t)。

clear;
close all;
clc
%Read image
I = im2double(imread('31.jpg'));
figure,subplot(4,4,1),imshow(I);
title('Original Image');
noise = imnoise(zeros(size(I)),'gaussian',0,0.0001);%Simulate a motion blur
LEN = 21;
THETA = 11;
PSF = fspecial('motion', LEN, THETA);
blurred = imfilter(I, PSF, 'circular');
subplot(4,4,2),imshow(blurred);
title('Blurred Image');%Simulate the noise image
g = I + noise;
subplot(4,4,3),imshow(g);
title('noise image');%Simulate blur and noise
bg = blurred + noise;
subplot(4,4,4),imshow(bg)
title('Blur and Noise image')%Restore the I image
wnr11 = deconvwnr(I, PSF);%信噪比为零
subplot(4,4,5),imshow(wnr11);
title('Original Image、S/N=0');wnr12 = deconvwnr(blurred, PSF);%信噪比为零
subplot(4,4,6),imshow(wnr12);
title('blurred Image、S/N=0');wnr13 = deconvwnr(g, PSF);%信噪比为零
subplot(4,4,7),imshow(wnr13);
title('noise Image、S/N=0');wnr14 = deconvwnr(bg, PSF);%信噪比为零
subplot(4,4,8),imshow(wnr14);
title('blur and noise Image、S/N=0');Sn = abs(fft2(noise)).^2;
nA = sum(Sn(:))/prod(size(noise));
SI = abs(fft2(I)).^2;
IA = sum(SI(:))/prod(size(I));
R = nA/IA;wnr21 = deconvwnr(I,PSF,R);%噪信比已知 R
subplot(4,4,9),imshow(wnr21);
title('Original Image、N/S=R');wnr22 = deconvwnr(blurred,PSF,R);%噪信比已知 R
subplot(4,4,10),imshow(wnr22);
title('blurred Image、N/S=R');wnr23 = deconvwnr(g,PSF,R);%噪信比已知 R
subplot(4,4,11),imshow(wnr23);
title('noise Image、N/S=R');wnr24 = deconvwnr(bg,PSF,R);%噪信比已知 R
subplot(4,4,12),imshow(wnr24);
title('blur and noise Image、N/S=R');NCORR = fftshift(real(ifft2(Sn)));%自相关函数
ICORR = fftshift(real(ifft2(SI)));wnr31 = deconvwnr(I,PSF,NCORR,ICORR);%自相关函数
subplot(4,4,13),imshow(wnr31);
title('Original Image、自相关函数');wnr32 = deconvwnr(blurred,PSF,NCORR,ICORR);%自相关函数
subplot(4,4,14),imshow(wnr32);
title('blurred Image、自相关函数');wnr33 = deconvwnr(g,PSF,NCORR,ICORR);%自相关函数
subplot(4,4,15),imshow(wnr33);
title('noise Image、自相关函数');wnr34 = deconvwnr(bg,PSF,NCORR,ICORR);%自相关函数
subplot(4,4,16),imshow(wnr34);
title('blur and noise Image、自相关函数');

实验结果
实验结果分为4*4=16张图片,第一排:第一张为原图,第二张为加入运动模糊图片,第三张为加入高斯白噪声图片,第四张为加入运动模糊和高斯白噪声的图片。
第二、三、四排分别是S/N=0,N/S=R,利用自相关函数,对第一排图片进行维纳滤波。滤波结果如下:

实验分析
维纳滤波需要估计图像的信噪比(SNR)或者噪信比(NSR),信号的功率谱使用图像的方差近似估计,噪声分布是已知的。从第二列中可以看出,若无噪声,此时维纳滤波相当于逆滤波,恢复运动模糊效果是极好的。从第二、三、四排可以看出噪信比估计的准确性对图像影响比较大的。利用自相关函数的维纳滤波是效果最好的。
加入的高斯白噪声方差越大,影响效果越明显。对运动模糊图片的滤波效果优于加入高斯白噪声图片效果。对于图片中存在的运动模糊,逆滤波方法更优。对于总体噪声而言,利用自相关函数的维纳滤波适用性更强,效果更好。

维纳滤波(附matlab代码)相关推荐

  1. MATLAB应用实战系列NSGA-II多目标优化算法原理及应用实例(附MATLAB代码)

    前言 NSGA-Ⅱ是最流行的多目标遗传算法之一,它降低了非劣排序遗传算法的复杂性,具有运行速度快,解集的收敛性好的优点,成为其他多目标优化算法性能的基准. NSGA-Ⅱ算法是 Srinivas 和 D ...

  2. a*算法matlab代码_NSGAII多目标优化算法讲解(附MATLAB代码)

    小编今天为大家讲解NSGA-II多目标优化算法,提到多目标优化,大家可能第一个就想到NSGA-II算法,今天小编就带领大家解开NSGA-II的神秘面纱. NSGA-II全称是快速非支配排序遗传算法,这 ...

  3. 惩罚函数外点matlab,禁忌搜索算法求解带时间窗的车辆路径问题(惩罚函数版 附MATLAB代码)...

    本周应小伙伴要求继续学习TS求VRPTW,不过这次通过使用惩罚约束的形式允许解违反时间窗约束和容量约束,不过要给违反约束的解加以惩罚. 这次我们的目标函数就不单单只有车辆总行驶距离了,还要包括当前解中 ...

  4. 数学规划模型总结(附MatLab代码)

    数学规划模型总结(附MatLab代码) 概述 定义 一般形式 分类 线性规划(linear programming) 非线性规划(nonlinear programming) 整数规划(integer ...

  5. 【图像分割】基于计算机视觉实现视网膜图像中的血管分割附matlab代码

    1 简介 视网膜图像里的血管是可以被观察到的一类微血管,并且它是无创伤的,而其分布位置也属于深度部位[5].其分布.结构和形态特征的变化能在一定程度上反映病变的程度.而白血病.糖尿病以及高血压等疾病都 ...

  6. 四维空间的二维线框投影可视化(附matlab代码)

    四维空间的二维线框投影可视化(附matlab代码) 1 三维空间在2维屏幕上的投影 1.1平行投影 1.2透视投影 2 四维空间在2维屏幕上的投影 2.1 四维空间与三维空间的一些区别 2.2 四维空 ...

  7. 数字水印进阶篇——基于DWT-SVD的数字水印(附matlab代码)

    引言 之前写过一篇介绍空间域LSB的数字水印算法,有需要的朋友可以看看 数字水印入门篇--空间域LSB的数字水印(附matlab代码) 因空间域的数字水印是通过直接在图像上改变像素的方式来隐藏水印信息 ...

  8. SAR成像系列:【3】合成孔径雷达(SAR)的二维回波信号与简单距离多普勒(RD)算法 (附matlab代码)

    合成孔径雷达发射信号以线性调频信号(LFM)为基础,目前大部分合成孔径雷达都是LFM体制,为了减轻雷达重量也采用线性调频连续波(FMCW)体制:为了获得大带宽亦采用线性调频步进频(FMSF)体制. ( ...

  9. 鲸鱼算法优化PID参数优化附matlab代码

    第一 章  鲸鱼优化算法 算法介绍参考文献:Seyedali Mirjalili,Andrew Lewis. The Whale Optimization Algorithm[J]. Advances ...

  10. 一维搜索方法/黄金分割法(附matlab代码)

    一维搜索方法中的黄金分割法(附matlab代码) 一维搜索方法:一维搜索,又称一维优化,是指求解一维目标函数 f(X) 最优解的过程,分为试探法和插值法. 黄金分割法:属于一维搜索方法中的试探法,适用 ...

最新文章

  1. 区域显示触发_天涯明月刀手游五行藏珍天机奇遇怎么触发?五行藏珍天机奇遇攻略...
  2. NameNode机制和DataNode机制
  3. python播放网络音乐_python使用Tkinter实现在线音乐播放器
  4. javaweb项目得执行过程及servlet得请求(Httprequest)和响应(Httpresponse)
  5. CCS中的cmd命令文件
  6. 多元函数概念思维导图_(重要!)高中数学概念品味+思维导图(全)-2020年1月13日更新 第16章(最后一章) 统计初步...
  7. file.delete删除不了文件_非常实用的文件服务系统
  8. 用户自定义函数代替游标进行循环拼接
  9. C#之FileInfo的简单操作
  10. 利用python获取tushare 财经数据
  11. ipa安装失败,以及安装办法
  12. C#枚举(Enum)
  13. flutter 上滑悬浮吸顶
  14. my torch voyage
  15. ios 开发 flurry 资料
  16. CASS9.2启动提示连接数据库失败的解决方案
  17. Linux I2C设备regmap机制简析
  18. 谈谈 Spring 中的 NoSuchBeanDefinitionException
  19. 空间实景三维激光点云数据处理服务来了!
  20. 趣味测评对话交互版流量主小程序开发

热门文章

  1. python处理词项的停用词_词项邻近 停用词 词干还原
  2. arm开发板 qt5.6.0 qt使用文泉驿字体
  3. PHP 接收 UDP包_常用的抓包工具包含电脑端及手机端
  4. 台电固态硬盘用什么测试软件,常规测试、实际使用测试与总结_固态硬盘评测-中关村在线...
  5. Mybatis框架Mybatis下载步骤
  6. 3道常见的SQL笔试题,你要不要来试试!
  7. 计算机二级栈,计算机二级国考office的高科技玩法之:堆栈的续集
  8. python3.7 中文汉化包
  9. 深信服短信认证云信通短信配置说明
  10. Maven 引入 ojdbc:ojdbc14-10.2.0.4.0.jar