在数学应用上,对于运动引起的图像模糊,最简单的方法是直接做逆滤波,但是逆滤波对加性噪声特别敏感,使得恢复的图像几乎不可用。最小均方差(维纳)滤波用来去除含有噪声的模糊图像,其目标是找到未污染图像的一个估计,使它们之间的均方差最小,可以去除噪声,同时清晰化模糊图像。

定义

给定一个系统

y(t)=h(t)∗x(t)+n(t)

y(t)=h(t)*x(t)+n(t)
这里, ∗ *是卷积符号

  • x(t)x(t)是在时间 t t刻输入的信号(未知)
  • h(t)h(t)是一个线性时间不变系统的脉冲响应(已知)
    • n(t) n(t)是加性噪声,与 x(t) x(t)不相关(未知)
    • y(t) y(t)是我们观察到的信号
      我们的目标是找出这样的卷积函数 g(t) g(t),这样我们可以如下得到估计的 x(t) x(t):

      x^(t)=g(t)∗y(t)

      \hat x(t) = g(t)*y(t)
      这里 x^(t) \hat x(t)是 x(t) x(t)的最小均方差估计。
      基于这种误差度量, 滤波器可以在频率域如下描述

      G(f)=H∗(f)S(f)|H(f)|2S(f)+N(f)=H∗(f)|H(f)|2+N(f)/S(f)

      \begin{split} G(f) &= {{H^*(f)S(f)} \over {|H(f){|^2}S(f) + N(f)}}\\ &= {{H^*(f)} \over {|H(f){|^2} + N(f)/S(f)}} \end{split}
      这里:

    • G(f) G(f)和 H(f) H(f)是 g g和hh在频率域 f f的傅里叶变换。
    • S(f)S(f)是输入信号 x(t) x(t)的功率谱。
    • N(f) N(f)是噪声的 n(t) n(t)的功率谱。
    • 上标 ∗ *代表复数共轭。
      滤波过程可以在频率域完成:

      X^(f)=G(f)∗Y(f)

      \hat X(f) = G(f)*Y(f)
      这里 X^(f) \hat X(f)是 x^(t) \hat x(t)的傅里叶变换,通过逆傅里叶变化可以得到去卷积后的结果 x^(t) \hat x(t)。

    • 解释

      上面的式子可以改写成更为清晰的形式

      G(f)=1H(f)⎡⎣⎢|H(f)|2|H(f)|2+N(f)S(f)⎤⎦⎥=1H(f)⎡⎣|H(f)|2|H(f)|2+1SNR(f)⎤⎦

      \begin{split} G(f) &= {1 \over {H(f)}}\left[ {{{|H(f){|^2}} \over {|H(f){|^2} + {{N(f)} \over {S(f)}}}}} \right] \\ &={1 \over {H(f)}}\left[ {{{|H(f){|^2}} \over {|H(f){|^2} + {1 \over {SNR(f)}}}}} \right] \end{split}
      这里 H(f) H(f)是 h h在频率域ff的傅里叶变换。 SNR(f)=S(f)/N(f) SNR(f)=S(f)/N(f)是信号噪声比。当噪声为零时(即信噪比趋近于无穷),方括号内各项也就等于1,意味着此时刻维纳滤波也就简化成逆滤波过程。但是当噪声增加时,信噪比降低,方括号里面值也跟着降低。这说明,维纳滤波的带通频率依赖于信噪比。

      推导

      上面直接给出了维纳滤波的表达式,接下来介绍推导过程。
      上面提到,维纳滤波是建立在最小均方差,可以如下表示:

      e(f)=E|X(f)−X^(f)|2

      e(f) = E|X(f) - \hat X(f){|^2}
      这里 E E是期望
      如果我们替换表达式中的X^(f)\hat X(f),上面可以重新组合成

      e(f)=E|X(f)−G(f)Y(f)|2=E|X(f)−G(f)[H(f)X(f)+V(f)]|2=E|[1−G(f)H(f)]X(f)−G(f)V(f)|2

      \begin{split} e(f) &= E|X(f) - G(f)Y(f){|^2} \\&= E|X(f) - G(f)[H(f)X(f) + V(f)]{|^2}\\&= E|[1 - G(f)H(f)]X(f) - G(f)V(f){|^2} \end{split}
      展开二次方,得到下式:

      e(f)=[1−G(f)H(f)][1−G(f)H(f)]∗E|X(f)|2−[1−G(f)H(f)]G∗(f)E{X(f)V∗(f)}−G(f)[1−G(f)H(f)]∗E{V(f)X∗(f)}+G(f)G∗(f)E|V(f)|2

      \eqalign{ e(f)&= [1 - G(f)H(f)]{[1 - G(f)H(f)]^*}E{\rm{|X(f)}}{{\rm{|}}^2} \cr &- [1 - G(f)H(f)]{G^*}(f)E\{ X(f){V^*}(f)\} \cr &- G(f){[1 - G(f)H(f)]^*}E\{ V(f){X^*}(f)\} \cr &+ G(f){G^{\rm{*}}}(f)E|V(f){|^2} \cr}
      然而,我们假设噪声与信号独立无关,这样有

      E{X(f)V∗(f)}=E{V(f)X∗(f)}=0

      E\{ X(f){V^*}(f)\} =E\{ V(f){X^*}(f)\}=0
      并且我们如下定义功率谱

      S(f)=E|X(f)|2N(f)=E|V(f)|2

      S(f) =E|X(f)|^2\\ N(f) =E|V(f)|^2
      这样我们有

      e(f)=[1−G(f)H(f)][1−G(f)H(f)]∗S(f)+G(f)G∗(f)N(f)

      \eqalign{& e(f) = [1 - G(f)H(f)]{[1 - G(f)H(f)]^*}S(f) + G(f){G^*}(f)N(f)}
      为了得到最小值,我们对 G(f) G(f)求导,令方程等于零。

      d(f)dG(f)=G∗(f)N(f)−H(f)[1−G(f)H(f)]∗S(f)=0

      {{{\rm d}(f)} \over {{\rm d}G(f)}} = {G^*}(f)N(f) - H(f){[1 - G(f)H(f)]^*}S(f) = 0
      由此最终推出维纳滤波器。

      测试

      Matlab自带了示例程序,如下

      %Read image
      I = im2double(imread('cameraman.tif'));
      figure,subplot(2,3,1),imshow(I);
      title('Original Image (courtesy of MIT)');%Simulate a motion blur
      LEN = 21;
      THETA = 11;
      PSF = fspecial('motion', LEN, THETA);
      blurred = imfilter(I, PSF, 'conv', 'circular');
      subplot(2,3,2),imshow(blurred);
      title('Blurred Image');%Restore the blurred image
      wnr1 = deconvwnr(blurred, PSF, 0);
      subplot(2,3,3),imshow(wnr1);
      title('Restored Image');%Simulate blur and noise
      noise_mean = 0;
      noise_var = 0.0001;
      blurred_noisy = imnoise(blurred, 'gaussian', ...noise_mean, noise_var);
      subplot(2,3,4),imshow(blurred_noisy)
      title('Simulate Blur and Noise')%Restore the blurred and noisy image:First attempt
      wnr2 = deconvwnr(blurred_noisy, PSF, 0);
      subplot(2,3,5);imshow(wnr2);title('Restoration of Blurred, Noisy Image Using NSR = 0')%Restore the Blurred and Noisy Image: Second Attempt
      signal_var = var(I(:));
      wnr3 = deconvwnr(blurred_noisy, PSF, noise_var / signal_var);
      subplot(2,3,6),imshow(wnr3)
      title('Restoration of Blurred, Noisy Image Using Estimated NSR');


      维纳滤波需要估计图像的信噪比(SNR)或者噪信比(NSR),信号的功率谱使用图像的方差近似估计,噪声分布是已知的。从第一排中可以看出,若无噪声,此时维纳滤波相当于逆滤波,恢复运动模糊效果是极好的。从第二排可以看出噪信比估计的准确性对图像影响比较大的,二排中间效果几乎不可用。

      参考阅读

      http://en.wikipedia.org/wiki/Wiener_deconvolution 英文维基百科
      http://www.owlnet.rice.edu/~elec539/Projects99/BACH/proj2/wiener.html 莱斯大学的项目资料

      转载保留声明

      作者 日期 联系方式
      风吹夏天 2015年5月29日 wincoder@qq.com

图像去模糊(维纳滤波)相关推荐

  1. 图像去模糊(逆滤波)

    引言 图像模糊是一种拍摄常见的现象,我曾在图像去模糊(维纳滤波) 介绍过.这里不再详述,只给出物理模型,这里我们仍在频率域表示 G(u,v)=H(u,v)F(u,v)+N(u,v)(1) 其中提到最简 ...

  2. 图像去模糊之初探--Single Image Motion Deblurring

    曾经很长一段时间, 对图像去模糊都有一种偏见, 认为这是一个灌水的领域, 没有什么实用价值,要到这样的文章,不管是多高的档次, 直接pass. 最近在调研最近几年的关于Computational Ph ...

  3. 【youcans 的 OpenCV 例程 200 篇】107. 退化图像的维纳滤波

    欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中 [youcans 的 OpenCV 例程 2 ...

  4. 视频图像去模糊常用处理方法

    视频图像去模糊常用处理方法 随着"平安城市"的广泛建设,各大城市已经建有大量的视频监控系统,虽然监控系统己经广泛地存在于银行.商场.车站和交通路口等公共场所,但是在公安工作中,由于 ...

  5. 基于传统优化方法的图像去模糊文献综述(部分经典文献)

    由于图像模糊在生活中是广泛存在的,图像去模糊问题从上个世纪起就得到了关注和研究.从上个世纪60年代起,为了解决图像去模糊问题,首次提出将图像问题转化到频域中来解决,提出了逆滤波.维纳滤波等经典的算法. ...

  6. 【OpenCV 例程 300 篇】107. 退化图像的维纳滤波

    专栏地址:『youcans 的 OpenCV 例程 300篇 - 总目录』 [第 7 章:图像复原与重建] 106. 退化图像的逆滤波 107. 退化图像的维纳滤波 108. 约束最小二乘方滤波 10 ...

  7. CVPR 2018 | 使用CNN生成图像先验,实现更广泛场景的盲图像去模糊

    现有的最优方法在文本.人脸以及低光照图像上的盲图像去模糊效果并不佳,主要受限于图像先验的手工设计属性.本文研究者将图像先验表示为二值分类器,训练 CNN 来分类模糊和清晰图像.实验表明,该图像先验比目 ...

  8. 【深度学习】图像去模糊算法代码实践!

    作者:陈信达,上海科技大学,Datawhale成员 1.起源:GAN 结构与原理 在介绍DeblurGANv2之前,我们需要大概了解一下GAN,GAN最初的应用是图片生成,即根据训练集生成图片,如生成 ...

  9. CVPR 2022 3月7日论文速递(17 篇打包下载)涵盖 3D 目标检测、医学影像、图像去模糊、车道线检测等方向

    CVPR2022论文速递系列: CVPR 2022 3月3日论文速递(22 篇打包下载)涵盖网络架构设计.姿态估计.三维视觉.动作检测.语义分割等方向 CVPR 2022 3月4日论文速递(29 篇打 ...

  10. 怎么p出模糊的照片_36. 盲去卷积 - 更加实用的图像去模糊方法

    本文同步发表在我的微信公众号和知乎专栏"计算摄影学",欢迎扫码关注, 上一篇文章35. 去卷积:怎么把模糊的图像变清晰?吸引了很多朋友的关注.在这篇文章里面,我给大家讲了一种叫做& ...

最新文章

  1. nginx lua 配置cc 防攻击-使用lua 配置黑白名单
  2. Android初步学习BroadCast与Service实现简单的音乐播放器
  3. Mr.J-- jQuery学习笔记(十)--trigger方法详解
  4. sql如何取前几行_10 个不为人知的 SQL 技巧
  5. vmware克隆linux虚拟机网卡无法上网的解决办法
  6. Keras一些基本概念
  7. 解决 screen 连接不上,提示“There is no screen to be resumed matching 18352.” 的问题
  8. 20号:JAVA的值传递与引用传递的正确理解
  9. 设计模式(13)——构建者模式(Builder)
  10. Atitit oil painting article list sumup s55 C:\Users\Administrator\Desktop\油画技术资料包\Atitit Atitit 图像
  11. tensorflow summary demo with linear-model
  12. 互动大屏,unity透明视频的实现方法:
  13. Hive DDL 数据定义语言
  14. 数据安全--3--数据安全5A之授权
  15. 笔记本计算机回收站在哪里,电脑回收站不见了怎么办 四种方法教你快速解决问题【图文教程】...
  16. netlink(2)- rtnetlink
  17. USB音频芯片/TYPE-C音视频处理芯片方案选型表
  18. 蛋白质结构信息获取与解析(基于Biopython)
  19. java去除水印_易剪辑,分享一款免费的去除水印的工具
  20. c html保存为图片格式,【单选题】在 IE 中,若要把整个网页的文字和图片一起保存在一个文件中,则文件的类型应为 。 A. HTM B. HTML C. MHT D. TXT...

热门文章

  1. 全面认识MOS管,一篇文章就够了
  2. 【C语言】qsort函数使用(详解)
  3. 华为p10 android几,是运行速度最快的安卓手机? 华为P10
  4. 如何将逻辑地址转换成物理地址
  5. Qt图表绘制(QtCharts)-绘制简单的盒须图[箱形图](12)
  6. Qt数据库:(五)QSqlQueryModel
  7. SiamFC:Fully-Convolutional Siamese Networks for Object Tracking
  8. 基于Java的SMTP协议邮件发送模拟系统
  9. Linux权限不理解?看完这篇就够用了
  10. ROWNUM和ROWID的认识