图像去模糊(维纳滤波)
在数学应用上,对于运动引起的图像模糊,最简单的方法是直接做逆滤波,但是逆滤波对加性噪声特别敏感,使得恢复的图像几乎不可用。最小均方差(维纳)滤波用来去除含有噪声的模糊图像,其目标是找到未污染图像的一个估计,使它们之间的均方差最小,可以去除噪声,同时清晰化模糊图像。
定义
给定一个系统
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)|2e(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)}=0E\{ X(f){V^*}(f)\} =E\{ V(f){X^*}(f)\}=0
并且我们如下定义功率谱S(f)=E|X(f)|2N(f)=E|V(f)|2S(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
图像去模糊(维纳滤波)相关推荐
- 图像去模糊(逆滤波)
引言 图像模糊是一种拍摄常见的现象,我曾在图像去模糊(维纳滤波) 介绍过.这里不再详述,只给出物理模型,这里我们仍在频率域表示 G(u,v)=H(u,v)F(u,v)+N(u,v)(1) 其中提到最简 ...
- 图像去模糊之初探--Single Image Motion Deblurring
曾经很长一段时间, 对图像去模糊都有一种偏见, 认为这是一个灌水的领域, 没有什么实用价值,要到这样的文章,不管是多高的档次, 直接pass. 最近在调研最近几年的关于Computational Ph ...
- 【youcans 的 OpenCV 例程 200 篇】107. 退化图像的维纳滤波
欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中 [youcans 的 OpenCV 例程 2 ...
- 视频图像去模糊常用处理方法
视频图像去模糊常用处理方法 随着"平安城市"的广泛建设,各大城市已经建有大量的视频监控系统,虽然监控系统己经广泛地存在于银行.商场.车站和交通路口等公共场所,但是在公安工作中,由于 ...
- 基于传统优化方法的图像去模糊文献综述(部分经典文献)
由于图像模糊在生活中是广泛存在的,图像去模糊问题从上个世纪起就得到了关注和研究.从上个世纪60年代起,为了解决图像去模糊问题,首次提出将图像问题转化到频域中来解决,提出了逆滤波.维纳滤波等经典的算法. ...
- 【OpenCV 例程 300 篇】107. 退化图像的维纳滤波
专栏地址:『youcans 的 OpenCV 例程 300篇 - 总目录』 [第 7 章:图像复原与重建] 106. 退化图像的逆滤波 107. 退化图像的维纳滤波 108. 约束最小二乘方滤波 10 ...
- CVPR 2018 | 使用CNN生成图像先验,实现更广泛场景的盲图像去模糊
现有的最优方法在文本.人脸以及低光照图像上的盲图像去模糊效果并不佳,主要受限于图像先验的手工设计属性.本文研究者将图像先验表示为二值分类器,训练 CNN 来分类模糊和清晰图像.实验表明,该图像先验比目 ...
- 【深度学习】图像去模糊算法代码实践!
作者:陈信达,上海科技大学,Datawhale成员 1.起源:GAN 结构与原理 在介绍DeblurGANv2之前,我们需要大概了解一下GAN,GAN最初的应用是图片生成,即根据训练集生成图片,如生成 ...
- CVPR 2022 3月7日论文速递(17 篇打包下载)涵盖 3D 目标检测、医学影像、图像去模糊、车道线检测等方向
CVPR2022论文速递系列: CVPR 2022 3月3日论文速递(22 篇打包下载)涵盖网络架构设计.姿态估计.三维视觉.动作检测.语义分割等方向 CVPR 2022 3月4日论文速递(29 篇打 ...
- 怎么p出模糊的照片_36. 盲去卷积 - 更加实用的图像去模糊方法
本文同步发表在我的微信公众号和知乎专栏"计算摄影学",欢迎扫码关注, 上一篇文章35. 去卷积:怎么把模糊的图像变清晰?吸引了很多朋友的关注.在这篇文章里面,我给大家讲了一种叫做& ...
最新文章
- nginx lua 配置cc 防攻击-使用lua 配置黑白名单
- Android初步学习BroadCast与Service实现简单的音乐播放器
- Mr.J-- jQuery学习笔记(十)--trigger方法详解
- sql如何取前几行_10 个不为人知的 SQL 技巧
- vmware克隆linux虚拟机网卡无法上网的解决办法
- Keras一些基本概念
- 解决 screen 连接不上,提示“There is no screen to be resumed matching 18352.” 的问题
- 20号:JAVA的值传递与引用传递的正确理解
- 设计模式(13)——构建者模式(Builder)
- Atitit oil painting article list sumup s55 C:\Users\Administrator\Desktop\油画技术资料包\Atitit Atitit 图像
- tensorflow summary demo with linear-model
- 互动大屏,unity透明视频的实现方法:
- Hive DDL 数据定义语言
- 数据安全--3--数据安全5A之授权
- 笔记本计算机回收站在哪里,电脑回收站不见了怎么办 四种方法教你快速解决问题【图文教程】...
- netlink(2)- rtnetlink
- USB音频芯片/TYPE-C音视频处理芯片方案选型表
- 蛋白质结构信息获取与解析(基于Biopython)
- java去除水印_易剪辑,分享一款免费的去除水印的工具
- c html保存为图片格式,【单选题】在 IE 中,若要把整个网页的文字和图片一起保存在一个文件中,则文件的类型应为 。
A. HTM B. HTML C. MHT D. TXT...
热门文章
- 全面认识MOS管,一篇文章就够了
- 【C语言】qsort函数使用(详解)
- 华为p10 android几,是运行速度最快的安卓手机? 华为P10
- 如何将逻辑地址转换成物理地址
- Qt图表绘制(QtCharts)-绘制简单的盒须图[箱形图](12)
- Qt数据库:(五)QSqlQueryModel
- SiamFC:Fully-Convolutional Siamese Networks for Object Tracking
- 基于Java的SMTP协议邮件发送模拟系统
- Linux权限不理解?看完这篇就够用了
- ROWNUM和ROWID的认识