基于暗通道先验的图像去雾算法改进研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于暗通道先验的图像去雾算法改进研究
摘要:暗通道先验去雾算法求得的的透射率比较精细,去雾效果优于大多数去雾算法。然而在暗通道求取过程中,最小值滤波的处理会使得暗色向外扩张,导致透射率扩张变大,使得去雾后的图像在边缘部分产生“光晕”现象。为了减弱光晕效应,利用形态学理论对粗略透射率进行腐蚀处理,腐蚀掉扩张变大的透射率,然后使用容差机制修复不符合暗原色先验的明亮区域透射率,再使用引导滤波精细化透射率,最后利用去雾模型复原图像。实验表明,改进后的算法去雾效果更佳、去雾速度更快,具有更强的鲁棒性。
关键词:暗通道先验去雾;腐蚀;引导滤波
DOIDOI:10.11907/rjdk.161089
中图分类号:TP312
文献标识码:A 文章编号:1672-7800(2016)005-0030-04
0 引言
雾霾天气不仅影响人们的出行,也给视频监控、自动驾驶等涉及室外图像应用的领域带来了很大挑战,并引起了相关研究人员的重视,如今已出现了不少研究成果。图像去雾的研究方法可分为两大类,基于图像增强的方法和基于物理模型的方法。早期图像去雾研究主要利用图像处理的知识来
去雾,Kim[1]提出对雾图进行局部直方图均衡处理的方法,
这种方法根据每个像素的邻域对像素进行处理,可以突出图像的特征,但运算量较大,算法复杂度较高。Land[2-3]基于色彩恒常性提出了Retinex即视网膜皮层理论,其后出现了
一些基于Retinex的图像增强算法[4-6],与其它图像增强算法相比,基于Retinex的图像增强算法处理的图像,局部对比
度相对较高,色彩失真较小。基于图像增强的去雾方法可以利用成熟的图像处理算法来增强图像的对比度,突出图像中的特征信息,但这种方法会造成图像部分信息损失,导致图像失真。图像去雾的另一类是基于物理模型的方法,该方法研究大气悬浮颗粒对光的散射作用,通过大气散射模型来复原图像,恢复的图像效果更真实,图像信息能得到较好保存。Narasimhan等[7]提出了雾霾天气条件下的单色大气散射模型,后来基于物理模型的方法几乎均建立在此模型之上。Tan[8]基于无雾图比雾图有更高对比度的假定来最大化有雾
图像的对比度,该算法在很大程度上能复原图像结构和细节,然而Tan的算法趋向于过度补偿降低的对比度,容易产生光晕效应。Fattal[9]把图像场景光分解成反射和透射两部分,然后基于独立主成成分分析来估计场景光强,这种方法可以有效去除局部的雾但不能很好恢复浓雾的图像。Kim等[10]结合局部对比度增强和去雾模型方法,能够抑制伪影的产生,但时间复杂度较高。刘倩等[11]使用均值滤波去雾,对单幅图
像去雾效果尚可,但是用于视频去雾时帧之间的过渡就不很自然。王燕等[12]使用中值滤波去雾,其有一定的去雾能力,但图像周边会出现明显的分界。何凯明等[13]提出的暗通道先验去雾算法,可以得到精细的透射率,去雾效果优于大多数的去雾算法,已成为去雾领域的经典。去雾后的图像在景深变化大的地方会产生光晕现象,而导致这一问题的原因是在暗通道计算过程中使用了最小值滤波。在求取暗通道过程中,最小值滤波的处理会使得暗色向外扩张,导致透射率扩张变大,从而使去雾后的图像在边缘部分产生“光晕”现象。为了减弱光晕效应,本文利用形态学理论知识对粗略透射率进行腐蚀处理,腐蚀掉扩张变大的透射率,然后使用容差机制修复不符合暗原色先验的明亮区域透射率,再使用引导滤波精细化透射率,最后利用去雾模型复原图像。为了加快处理速度,本文在降采样图像里寻找大气光,并使用暗点优先膨胀算法求暗通道。另外原文求取大气光值的方法在一些情形下并不是很合理,尤其是场景中出现白色物体时,而使用四叉树细分的分层搜索方法却没有这种问题。实验表明,改进的去雾算法去雾效果更佳,且去雾速度更快。
本文图像去雾流程:求取大气光值→粗略透射率估计→透射率精细化→图像复原。
1 暗通道先验去雾
2 算法改进
2.1 大气光值求取
文献[13]方法过程如下:①从暗通道图中按照亮度大小取前0.1%的像素;②对于这些像素位置,在原始有雾图像I 中寻找对应的具有最高亮度的像素点的值,作为A值。
很多去雾相关论文都沿用了这种方法,然而这种取法在一些情况下并不太合理,比如图像中含有白色物体时,往往会在白色物体区域取得大气光值,而不是在真正的浓雾区域取得,这样会造成处理后的图像出现偏色现象。
图像有雾区域像素变化通常比较小,即对比度低。基于四叉树细分的分层搜索方法可以准确地找到浓雾区域并取得合理的大气光值,过程如图1所示,首先将一幅图像等分成4个矩形区域,然后分别用每个矩形区域内所有像素值的平均值减去它们的标准差得到一个结果值,选择结果值最大的那个区域并将它进一步等分成4个更小的区域。重复这一过程直到选择区域的大小比预先指定的阈值小。图1中红色块是最后选择的区域,在该区域,选择能够最小化与纯白光向量(255,255,255)距离的颜色向量作为大气光值,即选取最明亮颜色向量作为大气光值。
2.2 粗略透射率修正
2.2.1 透射率腐蚀处理
在暗通道计算过程中,首先会得到原图RGB三原色最小通道值,然后对最小暗通道值进行最小值滤波处理。对于较
小的值,以它为中心的滤波窗口内的点值都会受其影响,如图3(b)所示(正中间数据“198”位置会被赋予较小的数据值50),造成暗色向外扩张。由式(4)可知,明亮区域透射率会相应扩大。这样在景深变化明显的地方,去雾后的“光晕”现象就较明显。为了减弱光晕效应,可以使用形态学腐蚀的方法,将扩张变大的区域进行缩小,达到修复的作用,如图3(c)、(d)所示。实验表明,使用圆形结构元素,半径为透射率图长度和宽度最小值的1%来腐蚀透射率图可以得到较好的去雾效果。
2.3 处理时间优化为了降低处理时间,在求取大气光值时采取在降采样的图像上寻找,这样并不会降低最后寻找到的大气光值的准确性,因为求取目标是要在最浓雾的区域找大气光值,而要寻找大气光值的周围邻近的像素点值通常都是相同或非常接近的,所以跟在原图上找到的值是一致的,而寻找时间却大大缩短。在暗通道求取过程中,最小值滤波处理比较耗时,本文使用文献[15]提出的暗点优先膨胀算法代替最小值滤波处理,这样可有效降低运算时间。
基于暗点优先膨胀的暗通道计算过程如下:①取得原图RGB三原色最小通道值,形成一幅灰度图;②对灰度图像素值进行排序;③选取一个最小值,将以其点为中心的指定窗口大小内的所有点都设为此值,并记录已处理的点;④依次选择次小的点值进行相同操作,并忽略已处理的点,这样就