维纳滤波进行图像去抖动去模糊
首先,我们简单说明一下利用维纳滤波进行图像去抖动去模糊的基本原理,并给出仿真结果。
利用维纳滤波器进行图像去抖去模糊的基本原理如下所示:
对原始图像进行维纳滤波的算法是首先估计出每个像素点的M*N邻域内的平均值和方差值。有如下两个表达式计算:
用如下的表达式计算输出的灰度值。其中a(n1,n2)是调整前的灰度值,b(n1,n2)是调整后的灰度值:
以上这部分是维纳滤波的基本原理,在我们提供的一些参考文献中均有详细介绍,所以这里就不多做介绍了,我们主要是对后面的创新部分进行详细的说明。
注意:由于手机拍摄抖动导致的模糊,在数学上属于运动模糊,所以,我们为了对比滤波性能的好坏,直接使用运动模糊来模拟抖动效果。然后进行滤波对比。
使用传统的维纳滤波算法,对抖动模糊的仿真效果如下所示:
运行程序:main.m
车1:
车2:
车3:
其余结果可自行测试。
下面,我们对维纳滤波之后的图像质量进行实际的分析。
运行程序:main_pnsr.m
图1 图2
图3
注意,在程序main_pnsr.m中
上面的图中:
图1:参数为LEN=30,Motion=30
图2:参数为LEN=30,Motion=38
图3:参数为LEN=30,Motion=20
从仿真结果可知,通过维纳滤波之后,图像的质量得到了明显的提升,和我们肉眼看到的结果一致。
当图像处理端定义的运动模糊模型参数和实际模型完全吻合的时候,图像具有较好的滤波特性,而两个参数出现偏差的时候,滤波效果较差。这个是维纳滤波的一个缺陷,
在分析另一个缺陷:
缺陷分析:
打开main_test.m
由于在实际中,进行维纳滤波的模块都是固定参数的,但是手机拍摄输入的抖动程度是不一定的,那么这个时候,会导致某些程度的抖动,系统无法正常工作。我们对这种现象进行测试,效果如下所示:
设置模糊参数LEN=5,运动模型参数motion=10。
很明显,当两个参数不一致的时候,滤波效果比较差(注意,在实际中,我们不能直接使用PSF这个参数,因为这个参数仅仅在图像源)。
设置模糊参数LEN=15,运动模型参数motion=10。
假设LEN和motion参数完全相同,这个时候,我们又需要对维纳滤波的参数进行设置,
假设LEN = Motion =50;然后设置不同的参数:
0.1:
0.01:
0.001:
0.0001:
0.00001:
0.000001:
即,参数的不同,会对最后的滤波效果有较大的影响。
通过上面分析,使用维纳滤波的时候,由于同时需要控制两个参数,这就大大增加了系统滤波的参数控制难度
注意,在很多现有资料中,代码都deconvwnr(Ipsf,PSF)这么写,其实这么做是不完善的,因为PSF是在图像源中加入抖动的时候产生的。实际中PSF的具体值是未知的,只能知道其维度。
所以,直接使用维纳滤波具有很大的难度。这里我们选择逆卷积+自适应参数控制的方法进行设计。
改进算法的实现:
% 参数自适应识别
这里,我们首先需要引入图像模糊度的概念(图像模糊度的参考论文很多,但是我这没发现利用图像模糊度和去抖动滤波的资料,所以我这里将这两种算法进行结合)
图像模糊度,这里我提供的文献如下所示:
首先,我们打开这个文件夹,运行程序,选择不同的图像进行测试,这里,我们随机的选择三个图像来测试。仿真结果如下所示:
从上面的仿真结果可知,通过对不同的图像进行测试,我们都可以计算其模糊度来区分该图像的模糊程度,从而选择一个合适K值。
这里,我们发现,对于设置不同的模糊度LEN,其值差不多都是0.8左右最小,最大到0.9左右。因此,我们设置如下的对应关系:
即通过计算模糊度,然后根据不同的值,输入进入逆卷积滤波。
改进后的算法流程如下所示:
左图是原始的算法,有图是本文介绍的改进后的算法(看了一些资料,貌似都没这么干)
通过加入模糊度计算之后,我们进行仿真,分别设置抖动程度为
10:
10:
50:
100:
从程序上看,改进后的算法:
其通过对输入模糊图像的模糊度估计,得到K值,而INIIPSF是全1的初始值,因此,整个模型,只需要输入模糊图像即可,而不需要进行其他参数的人为输入。
同时,我们对改进后的算法,计算PNSR。
main_psnr1:输入模糊程度相同的情况,LEN = 50;运行,获得如下的曲线:
main_psnr2:输入模糊程度随机的情况,LEN = 20~100之间随机变化;运行,获得如下的曲线:
这个是对同一个场景下的不同抖动程度的仿真,通过分析,可知,对于任意随机情况下的抖动,系统都能够自动的获得加好的去抖动效果。
关于论文的这个部分内容书写提纲:
1.介绍抖动模糊的一些理论知识——运动模糊
2.介绍维纳滤波和逆卷积滤波的理论知识
3.对维纳滤波进行仿真分析,分析其优势,缺陷
4.根据存在的缺陷,给出本问题的算法
4.1模糊度的介绍(具体参考我发你的资料)
4.2根据模糊度得到逆卷积滤波参数
4.2仿真分析
5将我们的这个去模糊算法,引入到你的模型中进行测试,分析性能提升了多少。