空间滤波&频域滤波(3)
2016-02-03 14:31
162 查看
图像的退化与复原
图像的退化过程一般可归纳为退化函数和噪声的影响:其中h(x,y)是退化函数,n(x,y)是噪声函数,转换到频率域可将卷积运算简化为乘积运算:
1. 常见的噪声模型
一般有高斯噪声、瑞利噪声、伽马噪声、指数噪声、均匀噪声、脉冲(椒盐)噪声图1-1. 噪声概率密度函数
非周期噪声分布的参数估计:截取图像窗口(或整张图),计算其直方图,调整图1-1中噪声函数参数,使其分布逼近直方图
以上噪声一般在空间域处理(非周期),根据不同的噪声分布选用不同的空间滤波器(在这里仅考虑噪声为图像退化的唯一原因)
图1-2. 空间滤波器(参考《数字图像处理》)
2. 周期噪声
图像中的周期信号在傅里叶域为对称的二维点,因此非常适合频域滤波器频域处理的理论分析及常用滤波器见空间滤波&频域滤波(2),这里再补充一个最佳陷波滤波器
“当存在几种干扰分量时,前面讨论的方法有时就不能采用了,因为它们在滤波的过程中可能会消除太多的图像信息。。。最佳陷波滤波在一定意义上最小化了复原估计值的局部方差”(《数字图像处理》)
最佳陷波滤波主要分两步:
1.通过频谱分析确定一个陷波带通滤波器,以提取噪声模型,逆傅里叶变换后得到空间域噪声模型的估计
2.为了更逼近真实噪声模型,最佳陷波滤波对上一步的估计设置加权系数,这样最终的恢复结果为
其中加权系数w(x,y)的确定主要考虑使得恢复结果和真实结果的窗口内方差取极小值得到。
为了减小运算量,一般将窗口内的所有权重取相同的值,即对一个窗口来说,w(x,y)为常数,此时上式每个值取窗口中心值计算即可
3. 考虑退化函数的图像复原
前面对图像复原的分析和处理仅考虑噪声的影响,即假定的系统模型为,但实际情况下由于相机等硬件和环境影响,系统为
,因此需要对退化函数做出估计。
退化函数的估计有3种方法:
1.基于图像观察的估计
选取退化图像中高对比度的区域(为了降低噪声的影响),对其进行处理以得到清晰的样本,然后利用两者得到一个估计
为选取的高对比度区域,
为处理后的清晰样本。个人认为这是最直接(很多情况下是无法对退化函数做数学建模的)最有效(效果取决于参照样本)的方法。
2.基于试验的估计
如果手上有与获取退化图像的设备相似(甚至同一套),那么基于试验方法理论上能得到准确的退化函数
试验过程是使用相同的系统对一个冲击(小亮点,尽可能量以降低噪声影响)成像,得到退化的冲击响应
G(u,v)为观察到的退化图像,A是冲击的傅里叶变换(在频域为一个常数)
3.建模估计
如果已知图像退化的原因,可以尝试从数学上对其进行建模。
如Hufnagel等人基于大气湍流的物理特性提出的一个退化模型
这里以运动模糊为例介绍其退化模型的推导:
令T为快门时间,x'(t)和y'(t)为时间t内x方向和y方向的位移,那么清晰图像f(x,y)和模糊图像g(x,y)的关系为
对其做傅里叶变换,整理,得
即退化模型为
,其中a、b为时间T内x、y方向的总位移
基于退化函数的频域图像复原
基于退化函数的复原方法主要有逆滤波、维纳滤波、约束最小二乘方滤波、几何均值滤波等
1.逆滤波
直接忽略噪声的影响,复原公式为
这种方法的缺点显而易见:如果H(u,v)较小,那么噪声将显著影响复原效果(考虑真实情况带噪声N(u,v)的复原
)
2.维纳滤波
考虑噪声,以复原图和原始图的最小均方误差为依据
其中
和
分别为噪声功率谱和未退化图像功率谱,然而在实际中一般是不知道噪声的情况的,因此一般用参数K来近似,K的选取采用交互式方法
3.约束最小二乘方滤波
其中P(u,v)为3*3的拉普拉斯算子的频域形式,与维纳滤波一样,gamma的取值也采用交互式方法确定
4. 实验
以lena图像为原始数据,对其进行运动模糊,然后添加高斯噪声;对退化的图像采用维纳滤波图4-1. 维纳滤波复原运动模糊
如图4-1,a为原始图像,b为在a的基础上做运动模糊(x方向a=0.1,y方向b=0,取T=1),然后加上高斯噪声(均值为0,方差为0.05)得到;c为使用维纳滤波器取K=0时(此时相当于逆滤波器)的结果,d为使用维纳滤波器取K=0.01的结果,e为取K=0.021的结果
注:1)在模拟运动模糊时若x和y方向同时有位移(C++实现),得到的图像与MATLAB的效果不同,后者与理论效果更近(参数维纳滤波一文有两者对比)
2)在做F(u,v)H(u,v)时,F(u,v)的实部和虚部均与H(u,v)的实部相乘,否则会产生周期重影
5. 代码及参考
涉及代码主要在FFT上,参考空间滤波&频域滤波(2)参数维纳滤波(Parametric Wiener Filter)和图像去模糊(维纳滤波)有相关理论分析及MATLAB实现
文章大部分内容参考自冈萨雷斯的《数字图像处理》
相关文章推荐
- SQL 语言划分
- Office Web Apps2013安装部署
- Oracle 死锁的检测查询及处理
- JSON 数据格式详解
- 文件基本操作---小程序---显示目标文件内容
- ls 命令
- php中的单例模式和工厂模式
- mysql 如何手动插入数据blob类型数据
- java工具(一)----如何在java程序中调用linux命令或者shell脚本及 画图
- 228. Summary Ranges
- 【HTML5入门教程二】HTML5 视频属性的技巧分享
- 开发商内部员工怒揭楼市内幕 你绝对想不到
- GCD 串行队列和并行队列以及dispatch_group
- 自定义RatingBar
- TRUNCATE TABLE 与 DELETE区别
- MMM金融互助平台崩盘了,你当接盘侠了没?
- MMM金融互助平台崩盘了,你当接盘侠了没?
- Web 通信 之 长连接、长轮询(long polling)
- 关于Android 的内存泄露及分析(转)
- 抽样误差率