综述:视频和图像去雾算法以及相关的图像恢复和增强研究
翻译自IEEE的一篇文章《Review of Video and Image Defogging Algorithms and Related Studies on Image Restoration and Enhancement》
——作者为:YONG XU1,2, (Senior Member, IEEE), JIE WEN1, LUNKE FEI1,AND ZHENG ZHANG1, (Student Member, IEEE)

摘要:
INDEX TERMS:索引术语
一、介绍
二、雾天图像的检测与分类
2.1 图像中雾区的检测
2.1.1 基于半逆图像的雾区检测
2.1.2 基于气象能见度距离的雾区探测
2.2 雾天图像的分类算法
三、图像去雾算法
3.1 基于图像恢复的图像去雾
3.1.1 基于多幅图像的图像恢复
3.1.1.1 在同一天气下拍摄的多幅图像
3.1.1.2 在不同天气下拍摄的多幅图像
3.1.2 基于单幅雾图的图像恢复
3.1.2.1 Fattal的恢复算法
3.1.2.2 Tan等人的恢复算法
3.1.2.3 He等人的恢复算法以及他们的改进算法
3.1.2.4 Tarel等人的恢复算法
3.1.2.5 Bayesian去雾
3.1.2.6 基于学习的恢复算法
3.2 基于图像对比度增强的图像去雾
3.2.1 基于Retinex理论的图像去雾
3.2.2 基于传统对比度增强方法的图像去雾
3.2.2.1 亮度变换
3.2.2.2 同态滤波
3.2.2.3 高增滤波
3.2.2.4 小波变换
3.3 基于融合策略的图像去雾
四、视频去雾算法
五、图像去雾算法的客观质量评价标准
5.1 图像可见度评价标准
5.1.1 盲评价指标
5.1.2 图像可见度测量(IVM)
5.1.3 图像对比度
5.1.4 视觉对比度测量(VCM)
5.2 色彩恢复评价标准
5.3 图像结构相似性
六、实验
七、结论
致谢
参考文献

摘要:

在雾霾天气下,视觉系统获取的视频和图像会严重退化,影响目标的检测、跟踪和识别。 因此,从这样一个有雾的视频或图像中恢复真实场景具有重要意义。 本文的主要目的是对现有的视频和图像去雾算法进行总结。我们首先回顾了雾图像的检测和分类方法。然后,总结了现有的图像去雾算法,包括图像恢复算法、图像对比度增强算法和基于融合的图像去雾算法,并介绍了当前的视频去雾算法。 本文总结了目前比较常用的几种图像质量客观评价方法,并对几种经典的图像去雾算法进行了实验比较。最后提出了需要进一步研究的视频和图像去雾问题。
The code of all algorithms will beavailable at http://www.yongxu.org/lunwen.html.

INDEX TERMS:索引术语

Foggy image classification, image defogging, video defogging, image quality assessment.(雾图像分类,图像去雾,视频去雾,图像质量评估)

一、介绍

雾霾是陆地和海洋上常见的现象,在雾霾天气里,大气中有许多相当大的颗粒。 它们不仅吸收和散射场景中的反射光,而且还将一些大气光散射到相机上。 因此,摄像机获取的图像质量下降,对比度低、可见度差[1],这将严重影响视觉系统,尤其是可见光视觉系统。 由于图像的退化,图像中的目标和障碍物难以检测。 这不利于自动视频处理,如特征提取、目标跟踪和目标识别,也是空中、海上和道路交通事故的主要原因之一。 因此,设计一种图像去雾算法对提高视觉系统的环境适应性具有重要意义。
随着计算机技术的发展,视频和图像去雾算法受到了广泛的关注,并广泛应用于民用和军事领域,如遥感、目标检测和交通监控等。Hautiere等[2]采用图像去雾算法提高了车辆视觉系统的可视性,有效地防止了交通事故的发生。对于户外场景的图像,Narasimhan等人分析了灰霾、雾、云、雨等不同天气条件下的视觉表现[3],建立了基于大气散射现象的图像去雾物理成像模型[4][5]。由于现有的去雾或去雾算法没有明确的边界,所以本文将图像去雾指的是能够从图像中去除雾或霾的算法。针对室外场景,提出了许多基于物理模型的改进去雾算法。一些视频和图像去雾算法也被提出用于现实世界的交通监控场景[6]-[9]。为了提高无人地面车辆(USV)视觉系统的可见度,Ma等人在雾海图像恢复之前,提出了一种改进的基于暗通道的图像去雾算法,并将提出的单帧图像去雾算法推广到了快速视频去雾[10]。在能见度较低的情况下,如雾天,很难找到跑道以及来自视觉系统的危险。为了解决这个问题,Rajput等人提出了一种基于Retinex理论的对比度增强算法,有效地提高了视觉系统获取的雾状图像的可见度[11]。大多数现有的去雾算法也旨在从陆地图像中去除雾。然而,对海洋和空气的研究却很少。以上应用均表明,视频和图像去雾算法具有重要意义,值得研究。
近年来,一些机构对图像去雾进行了研究,取得了良好的效果。在美国,美国国家航空航天局(NASA)的角度研究中心(LRC)(the Langley Research Center(LRC) of National Aeronautics and Space Administration(NASA))从1995年开始研究图像增强和去雾算法,他们的研究为基于Retinex理论的图像增强领域做出了巨大贡献1。他们的算法可以在恶劣天气条件下,如烟、雾、霾、水下、夜间或低照度条件下,极大地提高图像采集的可见性[11]–[15]。在DSP微处理器上,他们的算法可以达到每秒30帧的速度,图像大小为256×256[16]。法国道路和桥梁中心实验室(the French Central Laboratory of Roads and Bridges)在提高雾天车辆通行系统的可见性方面取得了重大进展[2],[17]–[19]。他们还建立了三个雾天道路图像数据库(FRIDA)2,用于识别能见度恢复算法。哥伦比亚大学计算机视觉实验室(the Computer Vision Laboratory of Columbia University)建立了一个天气和照明数据库(WILD)3,该数据库是在室外城市场景的各种天气和照明条件下获得的[3]。他们提出了许多图像去雾算法,通过使用同一场景的多幅图像来提高可视性[3]–[5],[20]–[23]。以色列理工学院混合成像实验室(the Hybrid Imaging Laboratory of Technion of Israel)的一个小组通过多极化图像[24]-[28]开发了一种图像去雾算法。微软研究亚洲视觉计算组(the Visual ComputingGroup of Microsoft Research Asia)与中国香港大学合作,在单一图像去雾方面取得了显著的进步,并提出了图像恢复的暗通道,获得了室外雾状图像的生动修复效果[29 ],[30 ]。
1 更多关于Retinex算法的结果见:
http://dragon.larc.nasa.gov/retinex/background/retpubs.html
2 FRIDA:
http://perso.lcpc.fr/tarel.jean-philippe/index.html
3 WILD:
http://www.cs.columbia.edu/CAVE/software/wild/index.php
4 更多基于极化的去雾算法的结果可参考:
http://webee.technion.ac.il/~yoav/research/instant-defogging.html

本文旨在研究近十年来提出的图像和视频去雾算法。完整的视频去雾系统如图1所示。现有的视频和图像去雾算法大多没有考虑是否有雾的因素。然而,对于智能去雾算法来说,判断雾和非雾图像的方法是非常重要的。因此,在本文中,我们也将对其进行简要的总结。本文的结构如下。在第二节中,我们将首先提供一些判断图像是否需要处理的方法。第三节总结了许多用于单图像去雾的去雾算法。第四节介绍了几种最新的视频去雾算法。第五节介绍了几种常用的图像去雾算法的质量评价标准。第六节为实验部分,最后对论文进行了总结,并提出了今后需要研究的问题。

二、雾天图像的检测与分类

现有的视频和图像去雾算法总是直接应用于图像,而不管是否存在雾。但在实际应用中,需要知道在当前环境下采集的图像是否需要用去雾算法进行处理。主要原因如下:如果不作判断,用去雾算法得到的恢复图像的可见性可能比原始图像差。同时,去雾算法的使用也非常耗时,不利于实现目标的实时检测、跟踪和识别。有两种方法可以判断当前场景是否有雾。第一种方法是以图像的不可见区域为雾区的雾检测方法。第二种方法是foggyimage分类法。

2.1 图像中雾区的检测

有两种方法可以检测图像的雾区,第一种方法是基于半逆图像,第二种方法是基于气象可视距离。

2.1.1 基于半逆图像的雾区检测

Ancuti等人首次提出了一种基于“半逆”图像的雾区检测算法5[31]。通过选择原始图像像素的最大值及其逆图像像素,得到半逆图像S:
(1)
其中c为一个RGB通道,为原图像,为原图像的逆图像。
Ancuti等人在对逆图像进行重新规格化后,检测到Lch颜色空间的h*通道中有雾的区域,并将半逆图像与原图像相差较大的像素视为清晰像素,并将剩余像素作为雾区像素,这种雾区检测方法是基于图像雾区像素的强度值通常远大于空白区像素的强度值。
在图像的天空或多雾区域,像素通常在所有颜色通道中都具有高强度,即>0.5。因此,在这些区域中,半逆图像将具有与原始图像相同的值。然而,在清晰区域中,至少有一个半逆图像通道,其中像素值将被逆图像替换。也就是说,式(1)的输出分别是雾区的原始图像和清晰区的逆图像。利用原始图像与半逆图像的差异,可以很容易地检测出雾区。该算法简单有效,但不适用于当前场景是否有雾的判断。这是因为通过该算法,清晰图像的天空区域或白色区域将被误认为是雾区。
思考:这种雾区检测方法是基于图像雾区像素的强度值通常远大于空白区像素的强度值,但是在图像的天空区域像素强度值很高,容易被误认为是误区。因此该方法虽简单有效,但是却不适合判断当前场景是否有误。

2.1.2 基于气象能见度距离的雾区探测

国际照明委员会(CIE)定义了图像的气象可见度距离及其测量方法[32]。图像的气象可见度距离广泛应用于车辆视觉系统中的雾图像检测领域[33]。对于雾状图像,Hautiere和Tarel等人通过计算气象可视距离,提出了一种白天雾区探测算法[34],他们首先使用Canny-Deriche滤波器来提取图像轮廓,从而突出道路的边缘;然后采用区域生长算法确定路面层;第三,确立了获取目标区域的四种条件;最后,通过计算测量带宽得到图像的可见距离。Hautiere和Tarel等人使用水平线表示可见距离,在车载摄像系统中,水平线以上的区域通常对比度较低,可视为雾区或不可见区。Bronte等人也通过估计可视距离来检测图像的雾区[35]。
基于气象能见度的雾检测方法将雾图像分为可见区和不可见区。虽然雾探测算法具有探测图像雾区的能力,但也存在一些不足。图像水平线上方的不可见区域并不意味着它就是雾区。一些自然清晰图像的远处场景也显得模糊,用雾检测算法可能会误认为是不可见区域或雾区,而且对于一些雾分布不均匀的雾图像,很难找到一条水平线来分割雾区和清晰区域。但气象可视距离可以用来判断哪个地区有雾薄或浓雾。这可能有助于估计去雾算法的参数 *。

2.2 雾天图像的分类算法

雾状图像分类方法需要建立包含大量清晰图像和雾状图像的图像库。该方法提取了两类图像之间差异较大的特征,并利用有效的分类器对特征进行训练,得到分类超平面。最后,一个待查询图像可以被分类为模糊图像或清晰图像,如图2所示。

图2:雾天图像分类流程图
在雾的分类方法中,特征是最重要的,直接决定了分类精度,没有一种特征能够准确地对雾图像和清晰图像进行分类。Li等人指出对于图像可见度,暗通道和图像对比度的强度可以作为雾状和清晰图像分类的特征[36]。Yu等人提取图像可见度、图像视觉对比度和暗通道图像强度作为特征,并使用支持向量机(SVM)对雾状图像进行分类[37]。图像可见度也可用气象可见度距离计算。图像视觉对比度的测量是Jobson等人首次提出的[38]。利用大气散射模型,张等人取每幅雾状图像与同一场景的清晰图像之间的角度偏差作为雾状图像分类的特征[39]。他们还使用SVM对雾状图像进行分类。尽管他们的方法可以获得良好的分类性能,但在实际应用中很难同时获得同一场景的清晰图像和模糊图像。Pavlic等人根据傅里叶变换功率谱和SVM对公路车辆视觉系统的影响,提出了一种基于全局特征的雾状图像分类方法[40]。
未来雾天图像分类仍有一些问题需要解决,主要问题如下:
(1)没有一个完美的标准来判断图像是一个有雾的图像还是清晰的图像。例如,在晴天,一些远处自然清晰的图像变得模糊,很难确定它们是否需要处理。换言之,有些图像很难被归入模糊图像或清晰图像的类别。
(2)有必要找到更有效的特征来识别雾状图像。因为计算效率很重要,所以需要快速提取特征。一些质量评价指标可以作为雾天图像分类的特征。
(3)判断现场的雾度是很重要的。对于一些去雾算法,如果能从图像分类中得到当前环境的雾度,则可以对去雾算法的一些参数进行自适应调整,以获得更好的性能,这对视频和图像去雾在现实世界中的应用是有益的。此外,还可以根据雾图像的雾度自适应选择最佳的去雾算法。

三、图像去雾算法

在一些文献中,根据是否使用物理模型,可将图像去雾算法简单地分为两类[36][41][45]。第一类是基于物理模型[19][22][46]–[48]的图像恢复。该方法根据雾天图像退化的原因,建立物理成像模型。这类算法需要估计物理模型的参数,如大气光和透射(深度)。通过对物理模型的逆解,可以得到恢复后的图像。图像复原算法的目的是在保持良好的色彩复原性能的前提下,获得一幅具有良好视觉效果的自然清晰的图像。另一类是基于图像增强[49]–[54]的去雾算法,不考虑雾环境下的物理成像模型。尝试采用多种图像增强方法来增强雾天图像的对比度和可见性。近年来,基于融合的去雾算法通过融合多幅输入图像来增强图像,受到了广泛的关注[55]–[58]。因此,基于融合的去雾算法可以看作是去雾算法的第三类。图像去雾算法的类别如图3所示。

图3:图像去雾算法分类

3.1 基于图像恢复的图像去雾

1976年,McCartney首次提出了基于Mie散射理论的大气散射物理模型[59]。图4显示了雾天气下的物理大气散射模型。

图4:雾天条件下的物理大气散射[22]
物理模型由大气光学模型和正透射模型(direct transmission model)组成。图4显示了雾状条件下图像的退化原因。在正透射模型中,大气散射会使成像光衰减,导致图像边缘细节和物体纹理退化。在大气光学模型中,一些阳光也会被大气散射并传输到相机,这些光不是场景光,可以被视为图像的雾分量,其影响类似于遮住图像中对象的面纱。对于清晰的图像,正透射模型在成像模型中占很大比例。随着雾浓度的增加,正透射模型所占的比例减小,而大气光学模型所占的比例增大,图像的可见度降低。也就是说,大气光学模型是导致在雾天条件下获得的图像是低对比度和低能见度的模糊图像的主要原因。
Narasimhan和Nayar[5][23],Nayar和Narasimhan[60]认为散射系数与均匀大气中可见光的波长无关,并提出了一个简单的图像恢复物理模型:
(2)
其中,是天空的亮度,是场景点x的归一化亮度,为大气散射系数,表示场景点x与摄像机之间的距离。在公式(2)的右侧,第一项表示正透射模型,第二项表示大气光学模型。式(2)还表明,由于距离的增加,正透射模型的比例将减小。这也是为什么图像中一些遥远的场景在晴天看起来模糊的原因。
He等人[29]进一步简化了式(2):
(3)
其中,代表清晰图像,是透射,是与物体在无限距离内相对应的大气光值,通常是从天空区域简单估计的。
式(3)中只有两个未知参数。如果能得到透射比和大气光照值,则得到恢复图像。对于基于物理模型的去雾算法,参数直接决定去雾结果。这意味着参数估计越精确,去雾性能越好。我们应该指出,简化的物理模型是建立在单散射和均匀大气介质假设的基础上的,因此在某些情况下,该模型可能不是最好的成像模型,例如海雾或非均匀雾。
在过去的几年中,许多基于物理模型的图像恢复算法被提出,并且可以根据使用的图像数量分为两类:第一类是基于多重图像的图像恢复,第二类是基于单一图像的图像恢复[61],[62]。

3.1.1 基于多幅图像的图像恢复

基于多幅图像的图像恢复算法可以分为两类,如图3所示。研究人员使用了在同一天气下拍摄的多幅雾状图像。第二种方法使用不同天气条件下所需的多种场景图像。

3.1.1.1 在同一天气下拍摄的多幅图像

参考文献[24]、[26]、[28]、[63]针对大气粒子散射的空气光是部分偏振的(极化的)这一事实,提出了一些利用多个偏振图像的图像去雾算法。Treibitz等人将图像恢复效果与一幅或两幅偏振图像进行了比较,证明了使用两幅偏振图像可以降低图像恢复的噪声[64]。利用不同方向的偏振滤波器,得到了同一场景下不同亮度的偏振图像。这种图像恢复算法利用至少两幅偏振图像来估计物理模型的参数,然后对物理模型进行逆解。
Schechner等人首先讨论了一种使用两幅偏振图像的图像恢复算法[28]。两幅偏振图像分别通过平行和垂直方向拍摄。基于偏振图像的图像去雾算法假定正透射不受方位的影响,将两幅偏振图像分别定义为式(4)和式(5)。
(4)
(5)
是正透射模型。和分别是平行和垂直极化图像的大气光学模型。
(6)
(7)
其中,和是两个平行和垂直偏振图像的大气光值,可以从天空区域估计。极化/偏振的程度是:
(8)
在偏振去雾方法中,各偏振图像的偏振度和大气光是估计复原图像的关键参数,偏振度可由偏振图像的两个大气光值来估计:
(9)
然后可以从式(4)-式(9)估计大气光学模型和透射率。
(10)
(11)
因此,可以利用透射率和大气光学模型对方程(3)的物理模型进行反求,得到恢复图像。基于偏振图像的原始图像去雾算法没有考虑晴天获取的自然图像也会遇到大气散射的问题。所以,通过保留一部分光线,可以得到更自然的复原图像。出于这个想法,Schechner等人通过将系数乘以极化度(偏振度),提出了一种改进算法,即[26]。Miyazaki等人以交通图像的两个交通量作为参考,估计参数[63]。他们的算法需要建立一个交通标志数据库来查找两个交通标志,这很难满足实时处理的需要。考虑到一些图像没有天空区域,Shwartz等人[27]提出了一种通过选择场景中的两个相似特征来估计的新方法。为了抑制基于极化/偏振的去雾算法的噪声放大,提出了一种自适应正则化方法来进一步优化恢复图像[64]。
在基于偏振的去雾算法中,的值由人工估计。虽然基于偏振的去雾算法比一些基于光学滤波的算法有更好的性能,但是手动操作不利于自动去雾(劣势)。基于大气光偏振特性的去雾算法。因此,随着极化程度的降低,其效果将降低。而且,在浓雾天气也会失效。此外,对于某些场景,特别是带有移动摄像机的场景,由于场景随滤波器旋转的变化速度更快,因此很难获得两个偏振图像。

3.1.1.2 在不同天气下拍摄的多幅图像

Narasimhan等人研究了利用不同天气条件下采集的两幅或多幅图像进行图像复原的算法[3]–[5],[21]–[23]。Narasimhan等人分析了不同天气条件下的视觉表现,提出了一个物理双色大气散射模型[60]。基于该模型,他们提出了雾天条件下场景识别的地理测量框架,并从两幅或多幅雾天图像中计算出了场景的三维结构和颜色[21]。但是如果场景中物体的颜色与雾或霾的颜色相似,使用该模型进行去雾是不稳定的。为了解决这个问题,提出了一种单色大气散射模型[22],Narasimhan等人文中还提出了一种基于该模型的快速图像去雾算法[22]。首先,在不同的天气条件下,两幅场景图像的强度变化可以引起深度不连续和场景结构的变化。然后利用场景结构增强对比度。他们将他们的算法扩展到视频去雾,从而提高了监视场景的可见性。
上述图像恢复算法仅适用于监控场景。对于其他的动态场景,特别是车载摄像机,由于这两幅图像很难同时获得,这些算法都会失败,我们应该指出,单色大气散射模型只描述了均匀天气条件对场景强度的影响,所以在雾或霾不均匀的天气里,它会失效。

3.1.2 基于单幅雾图的图像恢复

与使用多幅图像的图像恢复算法相比,单幅图像恢复算法具有许多优点,近年来受到了广泛的关注[19]、[29]、[47]、[65]、[68]。单图像去雾算法能够在任何条件下增强任意的雾图像。
如前几节所述,透射和大气光值是反演物理模型的关键参数。但是,式(3)的物理模型是一个欠定方程(当方程的个数少于未知函数的个数时,就称为欠定的),因此我们应该用一些先验知识来估计上述两个参数。

3.1.2.1 Fattal的恢复算法

Fattal提出了一种基于表面着色(表面聚焦)和透射是局部不相关的假设来估计透射和大气光的方法[48],他通过两个分解步骤提出了一个重新定义的物理模型。他首先将未知清晰图像分解为地表反照率系数和阴影因子的乘积,即。然后他进一步把分解成两个分量。一个分量与大气光平行,另一个分量是剩余分量。使用独立分量分析(ICA)算法[69]和高斯-马尔可夫随机场模型[70]计算传输。在小窗口条件下,基于表面着色和透射不相关的假设,利用独立分量分析算法估计大气光。Fattal的去雾方法利用统计特性来估计图像恢复的参数。因此,性能在很大程度上取决于输入图像。当图像有浓雾且信噪比不足时,该方法将失败。

3.1.2.2 Tan等人的恢复算法

Tan等人根据两个基本观察结果,提出了一种基于单幅图像的自动去雾算法:一是清晰图像或增强图像通常比雾图像具有更高的对比度;二是大气光在小的局部区域变化平稳[71]。Tan等人首先使用白平衡操作将输入图像转换为白色。然后用马尔可夫随机场对大气光学模型进行建模。基于此模型,可以通过最大化恢复图像的局部对比度来估计大气光。他们的算法可以自动增强有雾图像的可视性,并且不需要任何用户交互操作。在他们提出的方法中,大气光的全局参数简单地由输入图像的最高亮度(强度)来估计。他们的方法的目的是获得具有最大对比度的恢复图像。他们没有考虑到颜色恢复,这会使增强图像的颜色失真。由于采用基于小块(局部)的光学方法来估计大气光学模型,因此在得到的图像中可能会出现一些“光晕”效应,特别是深度不连续区域。

3.1.2.3 He等人的恢复算法以及他们的改进算法

为了解决上述问题,He等人提出了一种新的基于单幅图像的去雾算法,该算法是一种有效的室外图像恢复方法[29]。
He等人研究了大量清晰的室外图像,发现在清晰的室外图像的大部分区域(除了天空区域和白色区域),都有一个最小值为零的像素通道。这也被称为暗通道先验理论。暗通道图像是由:
(12)
其中,表示以像素x为中心的正方形窗口,r、g、b分别为红色、绿色、蓝色分量。对于清晰的图像,除了天空区域和白色区域,。
根据他们的发现,He等人[29]首先提出了暗通道先验(DCP)理论,通过在等式(3)的局部区域进行以下最小操作来估计用于图像恢复的传输:
(13)
就式(12)和式(13)而言,粗略的透射是:
(14)
由于在暗通道图像的局部区域使用最小滤波,暗通道图像将具有块伪影(光晕伪影)。这也会导致存储的图像有块伪影。为了解决块效应,原有的DCP去雾算法采用了软抠图操作来优化透射。在原有的DCP算法中,还利用DCP理论得到了大气光照值。He等人第一次选择暗通道图像中亮度最高0.1%的局部区域,然后简单地选择原始雾图像所选区域中亮度最高的像素作为大气光。最后,通过式子(15)获得复原图像:
(15)
其中,是通过软抠图优化的透射,是用来防止分母为0的小常数。
DCP去雾算法能有效地去除室外雾图中的雾。Gibson等人提供了一个数学解释,为什么DCP理论对图像去雾效果良好[72]。多雾图像的颜色信息越多,恢复效果越好,但如果图像有较大的天空区域、较大的白色区域或浓雾和非均匀雾,则DCP理论将失效,而且用于改善透射的软抠图算法费时费力,不适用于实际应用。然而,如果我们使用粗糙的透射率进行图像去雾,结果图像将具有由基于块/片/局部的最小滤波引起的光晕。Huang等人分析了原有DCP去雾算法的缺点,提出了一种改进的三模块DCP算法用于单图像去雾[47]。他们的算法也能增强沙尘暴图像。为了提高效率,Xie等人建议使用多尺度retinex算法来估计透射[73]。Gibson等人也使用中值滤波优化透射,此外,他们的工作还表明,在图像压缩之前执行去雾算法比在压缩之后执行去雾算法要好[74]。但使用中值滤波可能会导致边缘退化。一些研究人员尝试使用在保留边缘信息方面具有良好性能的滤波器来代替软抠图算法。例如,基于加权最小二乘(WLS)的边缘保持平滑法[75]、局部自适应维纳滤波[76]、双边滤波[77]和联合双边滤波[78]是很好的候选方法。He等人提出了一种引导图像滤波方法,该方法具有更好的边缘保持效果,并且比双边滤波和联合双边滤波快[30]。在此基础上,进一步提出了一些改进的基于引导图像滤波的去雾算法。例如,Pei等人使用DCP理论和引导图像滤波恢复夜间烟雾图像[79]。Chen提出了一种改进的DCP去雾算法,利用可见光(VL)和近红外(NIR)图像恢复近红外图像[80]。为了提高去雾效率,Lin和Wang[9]首先使用下采样算法调整了透射的大小,然后使用引导图像滤波优化透射。利用上述保边缘滤波器代替软抠图算法进行图像去雾,不仅可以大大提高去雾效率,而且可以获得较好的边缘恢复效果。
Meng等人提出了一种改进的DCP去雾算法,该算法通过对透射函数施加固有的边界约束,并使用基于混合正则化的加权L1范数来优化透射[81],该算法中,恢复的图像总是在界限范围内,且粗透射图为:
(16)
其中,和是透射图的两个边界约束,A是大气光——每一个通道在每次形成最小滤波和最大滤波后被选择的最大光照强度。
Meng等人[81]使用以下最优透射函数和基于混合正则化的加权L1范数来优化粗透射图:
(17)
式中,λ是平衡目标函数两项的正则化参数,W是加权矩阵,D是一阶微分算子,而o和⊗分别是元素乘法算子和卷积算子。通过最小化上述目标函数,可以得到良好的透射t。这种传输优化算法对有雾图像的恢复有很好的效果,但通过迭代计算得到的良好透射是非常耗时的。迭代次数和两个边界约束不能自适应调整。

3.1.2.4 Tarel等人的恢复算法

由于软抠图算法过于复杂,Tarel等人提出了一种利用中值滤波及其变体代替软抠图算法的快速图像复原算法[19]。Tarel等人的算法能实时处理彩色或灰色图像。该算法通过白平衡算法将大气光照值设为(1,1,1)。由于最小滤波是恢复图像中产生块效应的原因,他们只使用暗通道图像来估计大气遮蔽。对于每个像素,他们假设大气遮蔽V(x)小于原始雾图像的最小分量。他们希望获得最大的V,大部分地区是平滑的,除了图像的边缘区域。为了提高效率,同时保留边缘和角点,他们利用中值滤波及其变体。前两个中值滤波算子用于获得以下粗糙的大气散射遮蔽:
(18)
是原始雾图像的最小分量,,,并且p表示恢复程度,p通常设置为[0.9,0.95]范围内的常数,是中值滤波窗口的直径。
Tarel等人提出了一种中线沿直线的中位数算法(Median of Median Along Linesalgorithm)来实现粗大气散射遮蔽的优化。然后还可以通过式(3)获得恢复的图像。Tarel等人的去雾算法可以恢复灰色和彩色图像。

3.1.2.5 Bayesian去雾

基于场景反照率和景深是两个统计上独立的分量,Kratz和Nishino提出了一种用于单图像去雾的贝叶斯去雾算法[65][82]。他们首先将图像分解成场景反照率和深度:
(19)
他们定义,,,和可分别视为场景反照率和景深的项。然后应用阶乘马尔可夫随机场(FMRF)对这两项与输入图像之间的依赖关系进行建模:
(20)
通过最大熵公式(20)估计场景反照率C和深度D。然后通过反求物理模型得到恢复图像。
Wang等人提出了一种基于贝叶斯理论和马尔可夫正则化的多尺度深度融合深度图估计算法[53]。他们首先假设每个先验深度图由噪声和真深度图t组成,如下所示:
(21)
其中,表示真实深度图对先验图的贡献程度的权重。他们用高斯函数来模拟噪声。然后通过最大化后验函数来估计真深度图。
(22)
他们使用Gibbs分布对进行建模,并将式(22)转换为能量函数,定义为:
(23)
其中,。第一项是同时具有平滑和边缘保持约束的平滑项,第二项可以看作是噪声分量。通过能量函数的迭代计算,可以得到精确的深度图和恢复图像。该算法在减少光晕伪影方面是有效的,但迭代时间长,需要人工设置参数。

3.1.2.6 基于学习的恢复算法

Tang等人提出了一种新的基于学习的透射估计方法[83]。他们利用随机森林学习了一个回归模型,该模型揭示了雾霾相关特征与其图像斑块真实透射率之间的关系。对于一幅未知的雾状图像,首先将图像分割成若干小块,提取与雾度相关的特征,然后利用学习后的随机森林模型得到每一小块图像的透射,再将每一小块图像的透射聚合得到粗透射。该算法还利用引导图像滤波进一步优化透射。基于学习的算法具有学习不同天气条件下的自适应回归模型的能力,能够对雾不均匀或浓雾情况下的雾图像进行恢复。但是基于学习的算法也有很多缺点。该算法需要大量的无雾和有雾图像对作为学习回归模型的训练数据,但是很难获得大量的训练数据,回归模型估计的粗透射不是图像的真实透射。它不能揭示图像的真实深度信息,特别是边缘区域。

3.2 基于图像对比度增强的图像去雾

图像对比度增强算法旨在提高图像的对比度,广泛应用于图像去雾、水下图像增强和医学图像增强等领域。

3.2.1 基于Retinex理论的图像去雾

Edwin Land首次提出了基于色彩恒常性的Retinex理论[84]。Retinex一词来自两个词“retina”和“cortex”,这两个词表示生物视觉感受。Retinex理论在图像去雾、暗图像增强、Mars Express图像增强等领域有着广泛的应用[12]、[85]–[87]。
Retinex理论认为图像由入射分量和反射分量组成。入射分量表示图像的亮度信息,也称为亮度图像。反射分量表达图像的内部信息,又称反射图像。Retinex模型如图5所示。

图 5:Retinex模型[80]
基于Retinex理论,图像可以描述为:
(24)
其中,S是原始雾图像,R是反射分量,L是入射分量,(x,y)是图像的位置坐标。
基于Retinex的去雾算法通过对Retinex模型的求解来实现图像的去雾。为了从S中获得R,对等式(24)的两边应用对数:
(25)
从式(25)中,如果我们可以得到L,则可以得到R,因此L的估计直接决定了图像去雾的效果。为了估计入射分量(L),早期研究提出了基于随机路径的算法[88]、基于激情方程的迭代算法(the passion equation-based iteration algorithm)[89]和基于高斯差分(DOG)算子的多尺度算法。Hurlbert等人总结了上述入射分量的估计方法[90]。另外,McCann等人提出了两种基于多分辨率金字塔的Retinex算法:McCann99 Retinex算法和Frankle-McCann Retinex算法[91][92]。用于图像增强的Retinex算法的目标是同时实现动态压缩、颜色恒定性和颜色/亮度还原[93]。上述估计算法比较复杂,在色彩对比方面性能不佳。由于高斯函数在大范围空间常数下具有良好的性能,Jobson等人提出使用高斯函数来估计入射分量[93],[94]。这也是最初的单尺度Retinex(SSR)算法,其中入射分量由下式估计:
(26)
其中,*表示卷积运算,高斯函数可以被表示为:,其中是高斯函数的尺度参数,k是一个归一化因子,用来保证。对于一个RGB图像,图像的反射由下式实现:
(27)
其中,是一个RGB图像三个通道中的一个。在SSR算法中,尺度参数决定了图像增强的性能。如果值较大,则增强后的图像保持了良好的色彩/亮度再现,但图像细节的恢复效果不佳。否则,就会产生相反的效果。换句话说,SSR算法不能同时实现动态范围压缩和颜色/亮度再现(还原)。
为了克服上述缺点,提出了多尺度Retinex(MSR)算法和带颜色恢复的多尺度Retinex(MSRCR)算法[12]、[13]、[93]、[95]、[96]。与SSR算法不同,MSR算法在每个通道中使用三个不同尺度的归一化高斯滤波器,可以看作是三个不同尺度的SSR算法输出的加权和,定义为:
(28)
其中,表示每个尺度的权重。在MSR算法中,三个权重都等于1/3。对于大多数图像,高斯函数的三个尺度分别设置为15、80和250[96]。最后,采用增益/偏移算法将反射分量变换到显示域[0,255]。
MSR算法具有小尺度动态范围压缩、图像边缘细节增强、大尺度色彩平衡等优点。但MSR算法不能实现良好的颜色恢复。为了解决这个问题,MSRCR算法使用颜色恢复步骤来控制饱和度:
(29)
其中,Ci是颜色恢复函数。在通过式(29)获得反射分量之后,还需要将输出转换为显示域。Moore等人提出了一种处理基于Retinex算法的输出自动规范化方法[97]。Jobson等人提出了一种将输出转换到显示域的“标准增益/偏移”算法[96]。
Petro等人分析了SSR、MSR和MSRCR算法,指出颜色恢复函数存在颜色反转的风险,并提出了一种应用于亮度通道的颜色恢复方法[98]。源代码和在线演示可以在主页上访问。14
雾是图像的低频成分,为了增强室外雾图像场景,Wang等人首先利用小波变换对雾图像进行增强,然后利用SSR算法提高亮度,实现无雾图像[49]。Zhao等人用非线性的双弯曲函数(S型函数)代替MSR算法中的对数函数进行雾状图像去雾[54]。原始的SSR、MSR和MSRCR算法使用高斯滤波来估计入射分量,这将导致增强图像的边缘退化。原因是高斯滤波不具有良好的边缘保持性能。为了解决这个问题,Hu等人首先使用双边滤波器估计入射分量,然后使用Gamma调整和双弯曲函数进一步增强反射图像[99]。Yang等人提出了一种新的可变滤光片Retinex算法,该算法自适应地为雾图像的每个局部区域选择尺度参数[100],该算法可以大大提高图像的局部对比度,提高图像的可见度。

3.2.2 基于传统对比度增强方法的图像去雾

在这一部分中,我们将简要总结基于传统图像对比度增强方法的图像去雾算法,如亮度变换、同态滤波、高增强滤波和小波。

3.2.2.1 亮度变换

由于大多数像素具有较大的颜色值或灰度值,因此雾状图像的直方图通常集中分布。因此,雾状图像具有低对比度和动态范围。亮度变换是一种简单有效的方法,它通过重新分布直方图来增强图像[101]。幂律gamma变换(power-law:幂次法则;幂次定律)、分段线性变换和直方图均衡化(HE)是典型的对比度增强算法,广泛应用于夜间图像增强、X射线图像增强和图像去雾等领域。在图像去雾领域,通常在最后一步采用幂律gamma变换和分段线性变换来提高增强图像的亮度。Gao等人[102]将其应用于由MSR算法获得的增强图像的每个通道。在基于Retinex的算法中,用于将反射分量变换到显示域的增益/偏移步骤也可以看作是一种特殊的分段线性变换。利用分段线性变换进一步提高了SSR算法得到的增强图像的可见性[85]。
HE方法通过重新分配图像直方图来扩大图像的动态范围来增强图像。该方法分为两类:全局直方图均衡化(GHE)和局部直方图均衡化(LHE)[52],[103]。GHE算法可以增强雾状图像的整体对比度,但不能增强雾状图像的局部对比度。对于雾分布不均匀的雾图像,GHE算法不能取得良好的性能。特别是在深度不连续区域,GHE算法会产生晕轮伪影。Jun和Rong[104]使用GHE算法首先对雾状图像进行增强,然后使用小波变换来减少晕轮伪影和噪声。
为了增强图像的局部信息,提出了各种LHE算法及其改进[103]、[105]、[106]。Kim提出了一种部分重叠子块直方图均衡化(POSHE)算法。POSHE算法首先对每个子块执行GHE算法,然后对重叠像素应用加权融合策略[103]。POSHE算法不仅提高了图像的对比度,而且减少了块效应。Patel等人比较了多种局部直方图均衡化算法的亮度保持性能[107]。Ramya等人提出了一种保持亮度的动态模糊直方图均衡化(BPDFHE)算法,以增强雾状图像的可见度并保持色彩清晰度[7]。为了减少由HE算法引起的噪声,提出了对比度受限的自适应直方图均衡化(CLAHE)算法[108]。Xu等人[8]对HIS空间的亮度分量执行CLAHE算法,以增强雾状图像的可见性,同时降低噪声。
尽管图像对比度可以通过直方图拉伸来增强,但图像往往显得不切实际。当图像深度变化很大或有不均匀的雾或霾时,这种简单的技术将失败。直接在每个通道上执行HE算法会改变雾状图像的颜色结构,导致HE算法出现颜色失真问题。尽管我们只能将HE算法应用于强度通道以减少颜色失真,但由于亮度对雾图像的所有通道的影响,增强图像也会遇到颜色退化的问题。然而,对于一些浓雾雾图像,基于HE算法得到的增强图像的可见性要优于基于Retinex算法和基于物理模型的算法。

3.2.2.2 同态滤波

一般来说,在频域中,图像的高频分量与图像边缘等强度发生显著变化的图像区域相关联。低频分量表示图像的反射区域,包括天空区域。物理模型中的大气光分量可以看作是低频的主要分量。雾状图像的边缘信息通常由于雾的影响而退化。换言之,高频分量减少而低频分量增加。因此,如果我们能够改善图像的高频成分,削弱图像的低频成分,雾状图像的可见度可能会得到增强。同态滤波方法具有与Retinex理论相似的模型,但不需要估计入射分量[109],同态滤波通过使用高通滤波来增强高频分量和减少低频分量来增强图像。该算法简单、快速,但对浓雾或非均匀雾也不能增强。

3.2.2.3 高增滤波

高增强滤波还通过放大高频分量来增强图像[101]。高增滤波和基于Retinex的算法也有一些相似之处,高增滤波的掩模图像可以看作是基于Retinex算法的反射图像。高增滤波将掩模图像和原始图像融合,提高高频分量,增强图像的可见性和边缘信息。该算法简单快速。该算法可以增强视觉效果,但会导致颜色失真和噪声放大。

3.2.2.4 小波变换

与同态滤波和高增滤波方法类似,小波变换也通过改善高频分量和降低低频分量来增强图像[110]。Busch等人提出了一种基于小波变换的交通控制系统雾能见度分析方法[111]。Jia和Yue[112]首先使用小波变换分解YUV空间的亮度分量,然后对低频子带应用高斯滤波去除大气光模型,并使用高通滤波器增强高频子带中的图像信息,最后通过小波逆变换得到增强图像。Rong等人使用了反锐化掩蔽算法来增强低频的对比度[113]。基于小波变换的算法在抑制光晕效应和噪声方面有很好的性能,但对于大雾和非均匀雾的图像,其可见度并不能得到改善。这主要是因为使用的滤镜很简单,不考虑场景信息。换句话说,通过简单的滤波不能很好地估计雾分量和边缘信息。Yang等人结合小波变换和物理模型进行图像去雾[114]。他们利用小波变换得到的低频信号来估计图像的粗透射,然后利用引导图像滤波来优化图像去雾的透射。

3.3 基于融合策略的图像去雾

近红外图像和可见光图像的融合算法已经应用于许多领域,如人脸识别、目标检测、目标跟踪和识别[115]-[117]。一般来说,近红外(NIR)的散射小于可见光(VL)。因此,在雾天,近红外图像比VL图像具有更详细的信息和更高的对比度。基于这个事实,Schaul等人提出将近红外图像和VL图像融合以增强雾状图像的可见度[58]。利用加权最小二乘优化框架直接融合两幅原始图像。在浓雾天气条件下,如果近红外图像对比度很低,算法将失败。近红外图像去雾和VL图像去雾是未来的另一个研究方向,将有助于提高目标的检测、跟踪和识别性能。
Ancuti等人提出了一种基于融合的单帧图像去雾算法,该算法通过融合来自原始雾图像的多幅图像[31]。他们首先使用半逆方法(见第A(1)节,即1.1节)来检测雾图像中的雾区,然后估计清晰区域中的大气值。然后使用下式获得几幅图像:
(30)
其中,ai是[0,1]范围内的一个常量值,i∈[1,k],k表示用于融合的图像数量,I是原始雾状图像。然后对每个图像Li执行雾区检测操作,选择对应图像Li的低色差区域作为最终输入图像进行融合。最后,通过对输入图像进行简单的加权融合,实现了图像的复原。
上述算法基于半逆图像的雾区检测。对于某些场景,特别是海洋场景,由于原始图像和逆图像的差别很小,基于半逆方法的雾霾检测会失败。这意味着如果雾区检测失败,将获得不良性能。
为了解决上述问题,Ancuti等人提出了另一种简单的基于融合的去雾算法,该算法通过另外两个同样来自原始图像的输入图像来实现[118],[119]。第一个输入图像通过原始雾图像的白平衡操作获得,第二个输入图像通过简单的线性变换获得,该线性变换用于增强雾图像的对比度。最后,采用三权图的像素融合方法对两幅输入图像进行融合,以提高雾天图像的可见度。Ancuti等人还扩展了他们的基于融合的水下图像增强算法[55]。他们提出的基于融合的去雾算法简单快速,可以达到与物理去雾算法类似的效果,如DCP算法[29]和Fattal算法[48]。但当图像中含有不均匀的雾时,它就失效了。原因是该算法没有考虑雾图像的深度信息。
基于融合策略,Fu等人利用不同尺度伽马校正得到的两幅输入图像进行沙尘暴图像增强[57]。Guo等人提出了一种改进的基于不同输入图像融合的单帧图像去雾算法[56]。
基于融合的算法是对于单帧图像去雾新颖有效。第二个输入图像用于增强融合图像的对比度,第一个输入图像用于补偿颜色失真,并减少由第二个输入图像引起的光晕效应和噪声。换句话说,第一个图像用于恢复颜色和降低噪声,第二幅图像用于增强图像的可见性。尽管这些算法快速、简单,但如果第二幅输入图像不能有效地增强雾状图像的可见性,则无法获得良好的性能。表1总结了一些典型的图像去雾算法的优缺点。

表1::一些典型图像去雾算法的比较
去雾方法 优点 缺点 应用
在不同天气下拍摄的多幅图像 颜色恢复得很好 (1)源图像难以获取。(2)未恢复出雾浓或不均匀的图像。 特殊应用,如监视和薄雾天气。
在同一天气下拍摄的多幅图像 在薄雾条件下,(得到的复原图像)色彩保真度良好、图像能见度高 (1)大气光值手动设置。(2)恢复浓雾图像失败。(3)源图像难以得到。 镜头静止,并且是薄雾天气。
Fattal [48] 在非均匀雾或薄雾条件下,图像能见度高 在浓雾或信噪比不足的情况下无法增强图像。 单色有雾图像。
Tan et al.[71] 雾天图像的对比度良好 雾天图像可能会过度还原,产生晕轮效应和色彩失真。 单色或灰色有雾图像。
He et al.[29,30] 产生的图像是一种近似自然的清晰图像,具有良好的色彩恢复效果 (1)非均匀雾和浓雾天气下图像恢复失败。(2)无法恢复大面积天空或大面积白色的图像。 单色图像,特别是有薄雾的户外图像。
Tarel et al.[19] (1)快速;(2)薄雾图像能见度高 (1)颜色失真。(2)无法处理场景深度不连续的图像。 单色或灰色图像。
Bayesian去雾 光晕效应小,雾天图像能见度高 (1)计算量大。(2)可能会导致边缘退化和颜色失真。 单色雾度图像,特别是薄雾度图像。
基于学习 [84] 也许适合所有的场景 (1)难以获取大数据集。(2)缺乏完善的学习模式。(3)现有算法不够成熟。 彩色图像。

基于Retinex

简单和快速,非常适合低亮度的雾天图像

(1)对不均匀雾天图像增强失败。(2)不能增强雾天图像的局部信息。

单色或灰色图像。可以提高低亮度图像的可视性。
亮度转换 产生的图像对比度高 (1)颜色和边缘失真。(2)增加噪声(Boost noise)。3)光晕效应。 单色或灰色图像,特别是与薄雾和相同深度的图像。
小波变换 突出显示雾天图像的局部信息或边缘信息。良好的噪声抑制。 (1)浓雾或非均匀雾图像增强失败。(2)可能使产生的图像过亮或过暗。 单色或灰色图像,特别是有薄雾或均匀雾的图像。
基于融合的算法 一般来说,基于融合的算法比单一图像去雾算法具有更好的性能。 融合方法复杂,效率低。 单色或灰色图像。

四、视频去雾算法

以往的图像去雾算法在提高雾图像的可见度方面具有良好的性能。然而,在一些实际应用中,如无人驾驶飞机或车辆的场景监视和视觉系统中,我们需要提高视频系统所获取视频的实时可见性。与各种图像去雾算法相比,针对雾天情况下视频序列的可见性问题,提出的算法很少,而且大多数视频去雾算法都是针对同一背景图像的视频监控提出的。但是,许多算法已经被提出用于视频增强和视频去噪。Rao等人将现有的视频去噪技术和夜间视频增强算法分为两类:自增强和基于上下文的融合增强( context-based fusion enhancement)[120]。自增强算法逐帧执行去雾算法,不考虑帧间相关信息。基于上下文的融合增强算法可以充分利用帧间相关信息。换言之,该类别融合不同或相邻帧的信息以进行视频增强,从而能够保留视频的颜色细节。对于视频去雾,Guo等人提出了两种基于通用雾掩模分量估计的监控场景快速去雾算法[121]。视频去雾算法可分为三类,如图6所示。第一类是基于帧的视频去雾算法,它对视频的每个帧执行单个图像去雾算法[74],[122]。第二类是基于融合的视频去雾算法,它是基于每个视频帧的增强背景图像和前景图像的融合。视频去雾算法的第三类是基于通用分量的去雾算法,它基于对可用于所有视频帧的通用分量的估计。在每个帧上执行单个图像去雾算法非常耗时,并且可能导致颜色和亮度突变。因此,本文主要介绍了第二类和第三类视频去雾算法。

图6:视频算法的分类
基于融合的去雾算法首先提取每个帧的背景和前景。然后采用单图像去雾算法分别对背景图像和前景图像进行增强。最后,通过融合每帧增强后的背景图像和前景图像,实现视频去雾。基于融合的去雾算法只恢复背景图像,提高了视频去雾的效率。有研究者提出用帧差分法提取每帧的背景和前景图像,并分别用CLAHE算法对背景和前景图像进行增强[8]、[123]。John等人还提出了一种基于视频背景和前景分离的视频去雾算法[6],他们首先利用基于物理模型的单图像去雾算法对背景图像进行增强,同时得到全局亮度参数;然后利用估计的亮度参数对每帧的前景图像进行增强;最后,将增强后的背景图像与每个增强后的前景图像进行融合,得到增强后的视频。需要指出的是,在大雾天气条件下,表示目标的前景图像不易准确提取,这种方法可能导致相邻两帧图像的颜色或亮度发生突变。原因是单帧图像去雾算法没有考虑相邻帧的颜色和亮度信息的相关性。Yoon等人提出了一种改进的DCP去雾算法,该算法利用多相水平集公式化方法(the multiphase level set formulation method)代替软抠图算法来恢复视频中的每一帧,然后提出了一种颜色校正方法来解决颜色变异问题[124]。
基于通用分量的视频去雾算法试图估计一个代表雾分布的通用分量,并将其应用于视频的后续帧。这些视频去雾算法是合理的,能够提高效率。Guo等人将视频背景图像的透射作为监控场景视频去雾的通用分量[121],他们首先通过帧差分方法提取视频背景;然后利用MSR算法估计背景图像的透射,并利用双边滤波和Rudin-Osher-Fatemi(ROF)模型[125]对透射进行优化;最后,采用通用透射对后续帧进行增强。Xie等人也将场景的背景图像的透射用作视频去雾的通用分量[126]。虽然以背景图像的透射为通用分量可以大大提高视频去雾的效率,但一些增强的视频帧,特别是与背景有较大差异的帧,会出现边缘退化和光晕伪影。其原因是通用透射是从背景估计的,而不是后续视频帧的真实透射。前一帧的边缘信息和深度信息与后一帧的边缘信息和深度信息不一致,特别是目标较多的帧,因此目标的某些边缘会退化。为了解决这个问题,Ma等人[127]提出了一种新的基于引导图像滤波和雾掩蔽理论相结合的快速视频去雾算法。雾掩蔽理论将雾视为雾图像的遮罩或掩模,通过从原始雾图像中减去增强图像得到雾罩。他们首先使用单图像去雾算法来增强视频的第一帧,同时获得雾罩;然后应用引导图像滤波得到后续帧的新雾罩;最后,得到了增强视频。他们的视频去雾算法不需要提取背景,通过引导图像滤波获得相应新帧的新雾罩,可以有效地消除“假轮廓”现象,因此他们的算法也可以应用到带有移动摄像机的场景中。Zhang等人同时以关键帧的透射为通用分量,采用光流法估计非关键帧的透射,提高了效率[128]。

五、图像去雾算法的客观质量评价标准

图像质量评价标准可分为三类:全参考图像质量评价[129]、部分参考图像质量评价[130],无参考图像质量评价[131],全参考和部分参考图像质量评价需要与雾状图像相对应的清晰图像作为参考图像。这在实际应用中很难满足,除非有一个合成的雾状图像。因此,在图像去雾领域,无参考度量被广泛使用,例如峰值信噪比(PSNR)[132]、结构相似性(SSIM)[129]、信息熵、平均梯度和全局对比度[133]。
Chen等人提出了一种基于支持向量机(SVM)的质量排序系统,用于比较图像去雾算法15[134]。该算法从每个图像中提取521个特征进行训练和分类。吉布森等人。Gibson等人也提出了一种基于adaboost学习的雾海图像对比度增强方法16[135]。以上两种算法都很新颖,但都过于复杂。
图像去雾的主要目的是提高雾图像可见度。一个好的去雾算法不仅需要增强图像的可见性、边缘和纹理信息,而且还需要保持图像的结构和颜色。具有良好可见性的图像还意味着它具有明显的边缘和纹理信息。因此,一个好的图像质量评估方法需要比较不同去雾算法的可见性、颜色恢复和图像结构相似性的效果。

5.1 图像可见度评价标准

可以使用各种指数来比较图像的可见性,例如盲评估的前两个指标[136]、图像可见性测量(IVM)[37]、图像对比度[137]和视觉对比度测量(VCM)[38]。

5.1.1 盲评价指标17

盲评估的前两个指标使用图像边缘的增强程度来表示图像可见度的增强程度[136]。第一个指标e表示图像去雾后可见边的增加速率,并通过:
(31)
其中,nr和no分别表示恢复图像Ir和原始图像Io中可见边集的基数。文献[136]、[138]对可见边缘分割算法进行了详细介绍。CIE定义局部对比度大于5%的边缘集为可见边缘[32]。因为对于一些浓雾图像,原始浓雾图像的可见边缘数可能为0,我们将公式(31)转换为:
(32)
其中,M和N是图像尺寸。e值越大,能见度改善程度越大。此指标使用增加的可见边数来表示图像可见性的增强程度。
第二个指标使用图像梯度的增强程度来表示图像边缘和纹理信息的恢复程度。较大的也意味着相应的去雾算法比其他算法具有更好的边缘保持性能。计算为:
(33)
其中,,和分别是分别是恢复图像和原始图像的梯度,表示恢复图像的可见边集。这个基于梯度的标志/指标也可以作为衡量边缘信息恢复的指标。

5.1.2 图像可见度测量(IVM)

受盲评指标的启发,Yu等人[37]提出了另一种基于可见边缘分割的图像可见性测量方法[136],[138]。IVM定义为:
(34)
其中,其中nr是可见边缘的数目,ntotal是边缘的数目,C(x)是平均对比度,并且℘表示可见边缘的图像区域。

5.1.3 图像对比度

清晰图像的对比度通常远高于雾状图像,因此可以使用图像对比度来比较不同的去雾算法。增强图像的对比度越高,去雾算法就越好,Ma和Wen[85]用图像的全局对比度来比较不同去雾算法的性能。Tripathi等人使用对比度增益比较不同的去雾算法[42]。对比度增益表示增强图像和原始雾图像之间的平均对比度差[137],并通过下式计算:
(35)
其中,和分别表示增强图像和雾图像的平均对比度。对于一个尺寸为M×N的图像,它的平均对比度为:
(36)
其中,C是图像在一个小窗口的局部对比度,由下式计算得:
(37)
其中,,,并且i是局部区域的半径。对比度增益越大,去雾算法的效果越好。
Ramya等人使用对比度改善指数(CI)比较能见度改善的程度,并使用Tenengrad(阈值梯度幅度最大化)准则(TEN)来评估边缘和纹理信息的恢复效果[7 ]。CI还使用局部对比度来评估图像质量。CI与对比度增益的唯一区别是局部对比度的计算,因此这两个指标对图像质量的评价效果相同。TEN方法测量图像的锐度,并通过图像梯度之和来计算。盲评指标可视为TEN指标的改进指标。

5.1.4 视觉对比度测量(VCM)

Jobson等人[38]提出了一种视觉对比度测量(VCM)来量化图像的可见度,并通过下式计算:
(38)
其中,Rv是标准偏差大于给定阈值的局部区域的数量,Rt是局部区域的总数。Jobson等人没有给出阈值计算算法。在实验中,我们选择了OTSU阈值图像分割算法来自适应地计算阈值[37],[139]。VCM使用表示图像对比度的局部标准差来测量可见度。一般来说,VCM越高,增强图像越清晰。

5.2 色彩恢复评价标准

盲评估指标σ可用于评估去雾算法的颜色恢复性能[136],σ表示图像去雾后饱和像素的速率,并计算为:
(39)
其中,M和N是图像的尺寸,ns表示增强图像的黑白像素的数量,这些像素在原始雾图像中不是绝对的黑白像素。σ越小,去雾算法的效果越好。但是在比较不同算法时,指标σ并不完美,这是因为一些算法的增强图像,特别是基于Retinex的算法需要通过增益/偏移算法转换到显示域[0,255]。增益/偏移算法将一些像素变换为黑白像素,以提高显示的动态范围,从而会导致较高的σ。
Yu等人认为一个好的去雾算法应该允许原始雾图像和增强图像具有相似的直方图分布[61]。他们使用两幅彩色图像的直方图相关系数(HCC)作为评估颜色恢复性能的标准。

5.3 图像结构相似性

Wu和Zhu[41]利用图像结构相似性(SSIM)和通用质量指数(UQI)[140]来评估原始雾状图像和增强图像之间的结构相似性性能。传统的SSIM和UQI准则都使用高质量的图像作为参考图像。因此,SSIM和UQI越高,比较图像越好。然而,在实际应用中的图像去雾,总是选择原始的雾状图像作为参考图像,因此大的SSIM和UQI并不意味着图像质量高。例如,两个相同的雾图像的SSIM指标一定大于雾图像和增强图像的SSIM指标因此,具有最佳可见性的增强图像可能具有最小的SSIM和UQI。此外,从雾状图像中去除雾也会改变图像结构。这也导致了小的SSIM和UQI。

六、实验

在这一部分中,通过主观和客观评价比较了几种经典的单图像去雾算法。图7-9为图像去雾效果图,实验中采用了两种经典的图像增强算法,四种基于物理模型的去雾算法,并对基于融合的去雾算法进行了比较,采用9个客观质量评价指标对这些经典去雾算法进行了比较,表1-3给出了这些算法的质量比较。

图7:几种典型去雾算法与非均匀雾场景的比较
图8:几种典型去雾算法与道路场景的比较

图9:几种经典的去雾算法与阴暗多雾场景的比较

图10:图9中对应图像的局部区域
(a)原始图像;(b)CLAHE[108];(c)MSRCR[98];(d)Fattal[48];(e)Tarel和Hautiere[19];(f)He等人[29];(g)Meng等人[81];(h)Ancuti等人[31]。
图7-10显示MSRCR算法在保持颜色方面取得了最好的性能,但是它并没有有效地提高可见度。CLAHE算法是一种简单有效的增强暗均匀雾图像的算法(见图8(b)和图9(b)),但它不能增强非均匀雾图像(见图7(b)),这也证明了CLAHE算法不能解决深度不连续问题。Meng等人提出的去雾算法是He等人提出的一种改进算法,其去雾效果优于He等人(见图7(g)和图8(g)),但由于大气光的误差估计导致了颜色失真(见图9(g))。Fattal、Tarel等人和Ancuti等人的去雾算法大大增强了雾状图像的可见度。Fattal的去雾算法在去除非均匀雾方面取得了最好的效果,但是一些场景也被去除了,如图7(d)的“框”区域所示。图8(d)和图9(d)表明,Fattal的去雾结果亮度较低,通过白平衡操作或伽马校正进一步提高其亮度可以获得更好的结果。

表2:图7去雾结果的客观图像质量比较

表3:图8去雾结果的客观图像质量比较

表4:图9去雾结果的客观图像质量比较

上表显示,MSRCR算法比其他去雾算法在所有能见度评估标准中获得的值更小,这与主观评价是一致的。上表还表明,上述去雾算法均能提高雾图像的可见度。特别地,改进的Meng-DCP算法比He算法获得了更大的能见度准则值,这与去雾结果的比较是一致的。从上表可以看出,Ancuti的去雾算法比其他的去雾算法获得了更大的e值,这说明该算法在图像边缘的恢复方面具有最好的性能。Fattal的去雾算法比其他算法具有更好的对比度恢复性能。
与相应的原始图像相比,图8和图9所示的Fattal、Meng和Ancuti的结果存在颜色失真的问题。其算法的表3和表4所示的HCC值证明HCC准则与主观评价一致,可以作为不同去雾算法颜色恢复的比较准则。上表和图也证明了HCC准则比第三盲评估指标σ更适合不同去雾算法的颜色恢复比较。
表2-表4表明,与基于增强和融合的去雾算法相比,基于物理模型的算法保留了更好的图像结构。上表和图表证明,SSIM和UQI指数越小,去雾效果越好。这也证明了去雾也会改变图像的结构。
没有一种去雾算法在所有条件下都有很好的性能,所以很难确定哪种算法是最佳的去雾算法。从上表和图中可以看出,质量评价指标与主观评价并不完全一致,但可以作为比较不同去雾算法的参考。

图11:无天空区域航拍照片去雾算法的研究。(a)原始图像;(b)CLAHE[108];(c)MSRCR[98];(d)Tarel和Hautiere[19];(e)Meng等人[81];(f)Nishino等人[82]。

图12:高亮度道路场景中几种去雾算法的结果。(a)原始图像;(b)CLAHE[108];(c)MSRCR[98];(d)Tarel和Hautiere[19];(e)Meng等人[81];(f)Nishino等人[82]。

图13:浓雾环境下几种去雾算法的效果。(a)原始图像;(b)CLAHE[108];(c)MSRCR[98];(d)Tarel和Hautiere[19];(e)He等人[29];(f)Meng等人[81]。

图14:浓雾海景中几种去雾算法的结果。(a)原始图像;(b)CLAHE[108];(c)MSRCR[98];(d)Tarel和Hautiere[19];(e)He等人[29];(f)Meng等人[81]。

图15:薄雾海面上几种去雾算法的结果。(a)原始图像;(b)CLAHE[108];(c)MSRCR[98];(d)Tarel和Hautiere[19];(e)He等人[29];(f)Meng等人[81]。
针对不同条件下的单幅图像去雾,如海面或无天空区域、浓雾或薄雾等,选择了几种去雾算法。去雾结果如图11-15所示。图11-15表明MSRCR算法在增强海雾图像方面取得了良好的效果。对于海雾图像,Meng的算法不适用。图12显示,Nishino算法对高亮度图像具有鲁棒性,但该算法会导致颜色失真。从图13可以看出,Tarel算法对浓雾环境下的道路图像有很好的增强效果。在图13-图15中,通过快速引导图像滤波优化了He算法[29]的透射[141]。表5比较了几种典型的去雾算法的计算效率,从表5可以看出,Meng的算法比He的去雾算法需要更多的计算时间。这也证明了迭代计算图像透射是非常耗时的。
表5:一些典型去雾算法的计算时间

注:以上算法在同样的电脑上测试,系统是Win7,软件为Matlab2015a,硬件为Intel Core i7-4790 CPU和16GB RAM
表5:基于不同透射方式的改进暗通道先验算法的去雾时间

图16:基于不同透射优化方法的改进暗通道先验除雾算法比较,第一行图像为原始雾图像,去雾结果采用软抠图优化[29]、双边滤波[77]、联合双边滤波[78],引导图像滤波[30]和Meng的优化算法[81]。第二行图像分别为原始透射图像和利用上述算法得到的优化透射图像。
基于暗通道先验的去雾算法是近年来最流行的单图像去雾算法之一。为了提高边缘保持和效率,人们提出了各种透射优化算法。因此,我们在本实验中比较了一些典型的透射优化算法。图16和表6表示出了一些典型的改进的基于暗通道先验的去雾算法的比较。我们看到,软抠图算法、双边滤波、联合双边滤波和引导图像滤波算法都取得了很好的效果,但是使用引导图像滤波可以大大提高效率。

七、结论

本文不仅综述了各种视频和图像去雾算法,还简要介绍了相关的图像恢复和增强方法,虽然单图像去雾算法在过去几年得到了长足的发展,但仍有许多问题需要解决。除此之外,视频去雾算法是实现智能去雾的关键技术,但也有许多困难需要克服。主要问题如下:
(1)很少有技术能够判断当前场景是否有雾。现有的算法只具有恢复有雾图像的能力。因此,今后克服这一问题具有重要意义。雾图像的雾级分类也值得研究。它可以提高对图像去雾的某些参数的估计。近年来,人们提出了许多模式识别算法,特别是基于深度学习的分类方法,这种方法不需要人类去发现有雾图像和清晰图像的最大差异特征。它可以从图像中自动提取鉴别特征,并学习分类模型。
(2)目前还没有一种单一的图像去雾算法能够在各种大雾天气下获得良好的去雾效果。现有的单图像去雾算法可以有效地增强均匀雾或薄雾的图像。但是,如果雾在图像中的分布不均匀,或者图像中充满浓雾,一些单一的图像去雾算法将失败。因此,有必要进一步研究能够在不同雾天(如夜间雾天、浓雾天和非均匀雾天)自适应增强采集到的雾天图像的单图像去雾算法。也许我们可以结合雾天图像分类、能见度检测和单图像去雾来解决这个问题。在雾天天气条件下,基于成像物理模型的现有算法尤其是去雾算法主要针对地面雾状图像。这种成像模型可能不是其他场景的完美模型,例如在海上或空中。因此有必要针对不同的场景建立不同的模型或多个模型。基于融合的去雾算法可能是解决这些问题的一种潜在方法。对于一些特殊的场景,我们可以用两种不同的去雾算法来融合两幅去雾图像。
(3)在现有的去雾算法中,需要手动设置参数。虽然通过不断调整其参数可以获得良好的性能,但这在实时应用中是不现实的,需要简单、快速、有效的算法,可以根据图像的雾度自适应地设置参数。这也证明了图像雾级的分类是非常重要的。
(4)视频去雾算法是视觉系统中的一项重要技术。然而,所有现有的视频去雾算法都聚焦在监视场景上。对于带有移动相机的场景,没有有效的视频去雾算法。对于视频去雾,有效性和实时性同样重要。很难同时确保良好的去雾效果和实时处理。对于现有的基于背景提取的视频去雾算法,背景估计在视频去雾效果上有很大的影响。因此,寻找一种雾天背景估计的快速算法是非常必要的,而色移问题也有待于进一步的研究。对于像汽车行驶记录仪这样的运动摄像机,基于帧的视频去雾算法和基于通用分量的去雾算法应该更适合。对于实时场景,也许我们可以牺牲一点图像恢复质量来提高效率。
(5)由于以往的客观评价与主观评价不完全一致,很难直接应用于评价不同的去雾算法。因此,还需要提出一个更好的质量评价指标或方法。也许可以引入一些智能机器学习算法,如深度学习算法来进行图像质量评估。

致谢

作者要感谢山东大学的Edward C. Mignot博士的语言建议。

参考文献

可参照原文,不在赘述。


由于是在Word中弄然后复制过来的,导致公式和图片不显示,需要的可以直接参考原文。 本人刚接触这方面的内容,如有翻译不得当之处欢迎大家指出。


综述:视频和图像去雾算法以及相关的图像恢复和增强研究相关推荐

  1. 图像和视频的快速去雾算法研究

    王昕, 孙莹莹, 李影昉. 图像和视频的快速去雾算法研究[J]. 影像科学与光化学, 2016, 34(1): 82-87.   WANG Xin, SUN Yingying, LI Yingfang ...

  2. 单幅图像去雾算法研究综述

    来源 <计算机工程与应用>北大核心期刊,CSCD数据库. 影响因子:2.348 简介 图像去雾算法是以满足特定场景需求,突出图片细节并增强图片质量为目的的图像分析与处理方法.在雾霾天气下, ...

  3. [论文阅读] (11)ACE算法和暗通道先验图像去雾算法(Rizzi | 何恺明老师)

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

  4. Python基于OpenCV的图像去雾算法[完整源码&部署教程]

    1.图片识别 2.视频展示 [项目分享]Python基于OpenCV的图像去雾算法[完整源码&部署教程]_哔哩哔哩_bilibili 3.算法原理 图像增强算法常见于对图像的亮度.对比度.饱和 ...

  5. 基于暗通道先验的单幅图像去雾算法小结

    在开始之前,先看一组去雾的效果图. 1. 关于去雾的意义及算法 去雾在视频监控.航拍.遥感.自动/辅助驾驶等需要在室外复杂.恶劣天气下运行的视觉系统,都可能需要运用到这一技术. 目前去雾算法主要有两个 ...

  6. 基于MATLAB改进暗通道先验的图像去雾算法

    基于MATLAB改进暗通道先验的图像去雾算法 摘要:暗通道先验去雾算法求得的的透射率比较精细,去雾效果优于大多数去雾算法.然而在暗通道求取过程中,最小值滤波的处理会使得暗色向外扩张,导致透射率扩张变大 ...

  7. 【老生谈算法】matlab实现视频图像增强和去雾算法——去雾算法

    matlab视频图像增强和去雾算法 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]视频图像增强和去雾算法matlab实现.d ...

  8. 避免图像去雾算法中让天空部分出现过增强的一种简易方法

    FROM:http://www.chawenti.com/articles/25193.html 在经典的几种去雾算法中,包括何凯明的暗通道去雾.Tarel的基于中值滤波的去雾以及一些基于其他边缘保留 ...

  9. 暗通道优先的图像去雾算法(上)

    FROM:http://blog.csdn.net/baimafujinji/article/details/27206237 11.1  暗通道优先的图像去雾算法 图像增强与图像修复二者之间有一定交 ...

最新文章

  1. 第十一课.DCGAN与CycleGAN
  2. Xamarin iOS开发实战上册(内部资料daxueba.net)
  3. 华为eNSP和SecureCRT连接乱码问题
  4. 企业微服务:实现crud操作之创建实体类
  5. 算法笔记_202:第三届蓝桥杯软件类决赛真题(Java高职)
  6. Nginx访问403异常问题处理
  7. Linux 吉祥物30岁了!“出道”30年,你对Linux了解多少?
  8. Linux性能监控(转)
  9. Python进阶(九)常用高级函数Counter、defaultdict、nametuple、map、reduce、filter、groupby
  10. 我用超白痴的方法解出了这道题,大家有没有更好的方法
  11. X86栈切换,任务切换
  12. 计算机windows8黑屏怎么办,win8电脑黑屏只有鼠标如何处理?开机黑屏只有鼠标处理办法...
  13. Beamer中数学符号字体
  14. 那些不正经的前端笔试题
  15. android磁盘分区,Android SD卡做磁盘分区图文教程
  16. css3文字水平垂直居中对齐的几种方法
  17. 现代信号处理——平稳随机信号通过线性系统
  18. JNI教程(一):什么是JNI
  19. Springboot -Shiro整合JWT(注解形式)
  20. 【电商运营】你真的了解社交媒体营销(SMM)吗?

热门文章

  1. UE_LOG打印信息
  2. 数据分析:基于Pandas的全球自然灾害分析与可视化
  3. SpringBoot:入门简单使用
  4. 画色彩如何画出体积感
  5. 苹果x用安兔兔测试html5,安兔兔跑分23万,苹果iPhone X怎么样?
  6. 美国Zip code大全
  7. 电子发票税费计算问题
  8. UICC 之 USIM 详解全系列——USIM App文件结构
  9. 后台模板vue-admin-template的安装
  10. js进栈出栈_JavaScript js调用堆栈(一)