研究图像去雾技术有一段时间,阅读很多文献以及实现了很多算法。因此将个人对图像去雾技术的理解写成这篇文章,避免自己忘记,以及跟广大网友交流学习。

1、概述

  图像去雾的研究算法有很多,但是主要分为两类:基于图像增强的去雾算法和基于图像复原的去雾算法。

基于图像增强的去雾算法

去除图像的噪声,提高图像的对比度,从而恢复出无雾清晰视频。具有代表性的图像增强去雾算法有:
1. 直方图均衡化(HE),自适应直方图均衡化(AHE),限制对比度自适应直方图均衡化(CLAHE)
2. Retinex算法
3. 小波变换
4. 同态滤波

基于图像复原的去雾算法

根据大气退化模型,进行响应的去雾处理。具有代表性的去雾算法:
1. HE的暗通道去雾算法,导向滤波的暗通道去雾算法 (Single image haze removal using dark channel prior, Guided image filtering)
2. Fattal的单幅图像去雾算法(Single image dehazing)
3. Tan的单一图像去雾算法(Visibility in bad weather from a single image)
4. Tarel的快速图像恢复算法(Fast visibility restoration from a single color or gray level image)
5. 贝叶斯去雾算法(Single image defogging by multiscale depth fusion)
基于图像复原的去雾方法,使用了大气退化模型进行去雾,相当于图像成像时的逆变换,去雾效果会好于基于图像增强的去雾算法。本文主要讨论基于复原的去雾算法。

2、雾天图像退化模型

  在计算机视觉领域,通常使用雾天图像退化模型来描述雾霾等恶劣天气条件对图像造成的影响,该模型是McCartney首先提出。该模型包括衰减模型和环境光模型两部分。模型表达式为:

I(x)=J(x)erd(x)+A(1erd(x))(1)I(x)=J(x)e−rd(x)+A(1−e−rd(x))·······················(1)
由此可见,图像去雾过程就是根据I(x)求解J(x)的过程。要求解出J(x),还需要根据I(x)求解出透射率t(x)和全局大气光A。
   实际上,所有基于雾天退化模型的去雾算法就是是根据已知的有雾图像I(x)求解出透射率t(x)和全局大气光A。

估计全局大气光A:
1、暗通道去雾算法中的估计全局大气光A
  先从暗原色通道中选取最亮的0.1%比例的像素电,然后选取原输入图像中这些像素具有的最大灰度值作为全局大气光A。RGB三通道中每一个通道都有一个大气光值。
2、分块递归思想估计全局大气光A:
  先将图像平均分为四个部分,然后分别求取四个部分中的平均亮度值,选取亮度值最大的块,将这个块平均分为四个块,选取最亮的块,当分解到块的大小达到一定阈值时,在这个块中选取亮度最大的点作为全局大气光A。
3、亮度最大值作为全局大气光A
  选取输入图像中亮度最大的电的灰度值作为全局大气光A。
4、分段思量估计全局大气光A
  观察一般的图像,天空部分一般分配在图像的上1/3部分,因此将图像水平分为3个部分,然后在最上的1/3部分使用暗通道估计算法估计全局大气光A。
5、快速估计全局大气光A
  首先求取输入图像RGB三通道中的最小值,即求取暗原色通道图像,然后对暗原色通道图像进行均值滤波,然后求取其中灰度值最大的点,接着求取输入图像RGB三通道中值最大的通道图像,然后求取出灰度值最大的点,然后将两个点的灰度值的平均值作为全局大气光A。

估计透射率t(x):
1、暗通道去雾算法
  使用上面的方法先求取出全局大气光A,然后根据公式(2)可以得出:

t(x)=AI(x)AJ(x)(3)t(x)=A−I(x)A−J(x)···············(3)
最小的值作为该块所有像素点的透射率。

3、精细化透射率

精细化透射率方法有:
1、软抠图
2、双边滤波
3、导向滤波

4、恢复无雾图像

  估计出全局大气光A和透射率t(x)后,使用公式(9)可以计算得出去雾后的图像。实践表明这样去雾操作后,得到的无雾图像亮度会偏暗,可以使用自动对比度增强,亮度增强,伽马校正等图像处理方法进行处理,以便得效果更佳的无雾图像。

5、结语

  本文对图像去雾技术进行了简单的概括归纳,重点介绍了基于图像复原的去雾算法原理以及相关的技术。文章没有很详细的讲解算法,只是基本描述了去雾过程所涉及的技术方法。详细的讲解,我会在后续的文章后继续更新。
  因本人水平有限,如有错误还请批评指正