张驰, 谭南林, 李响, 李国正,*, 苏树强
(1. 北京交通大学 机械与电子控制工程学院, 北京 100044; 2. 华东交通大学 交通运输与物流学院, 南昌 330013)
雾霾天气下所拍摄的图像退化严重,对比度降低,细节信息损失,色调偏移,不利于分析与识别。对雾天图像进行增强处理,可提高其可见度,丰富图像的信息量,改善图像的品质,对图像的深入理解以及机器对图像进一步识别和深层次学习有很大的帮助。因此,对雾天图像的增强处理方法展开研究,在航空航天[1]、交通监控[2]和室外监测等领域有重要的实际工程意义。
现有常用的雾天图像增强算法主要有:基于暗通道的去雾算法、直方图均衡(Histogram Equalization,HE)算法和基于色彩恒常性理论的Retinex算法[3]。从实际应用角度来看,这3类算法均有着各自的局限性:①暗通道理论在去雾研究中得到了很多应用,从大气散射模型出发,对透视率进行细化,有很好的去雾效果[4]。结合暗通道理论以及Retinex算法对雾天图像进行增强,可以有效复原图像的清晰度和对比度[5-6]。基于偏振成像和暗通道技术的结合,引入了动态偏差因子,不仅能有效地提高模糊图像的可见性,而且能显著地保护图像的细节[7]。基于Retinex算法和引导滤波对夜间图像进行增强,根据图像的颜色特征,利用引导滤波器对照明分量进行估计,并将其应用于边缘保持平滑算子[8]。该算法处理视觉效果好,但时空复杂度较高,且应用环境受限。②HE算法通过分散灰度值、修改直方图分布来增强图像对比度。有使用显著直方图设计灰色层次映射方法对图像进行增强跟踪,提升视觉效果[9]。针对航天领域中无人机的应用条件,统计直方图数据对图像分别进行白平衡处理和对比度增强处理,使用自动色阶得到增强图像[10]。为了改善图像质量并增强视觉效果,提出基于非线性直方图变换与参数优化的降质图像对比度畸变校正方法[11]。HE算法虽然处理速度快,客观评价参数较优,但是增强后的图片会有失真现象,亮度不均,细节丢失,主观评价差。③Retinex是从图像中估计出光照,得到增强图像,主要包括单尺度Retinex (Single Scale Retinex, SSR)、多尺度Retinex(Multi-Scale Retinex, MSR)、带颜色恢复的多尺度Retinex(Multi-Scale Retinex with Color Restoration, MSRCR)等算法[12]。使用空间自适应基于α-范数的变分Retinex模型,利用亮通道先验和局部方差图生成正则化参数进行图像增强[13]。采用MSR算法和双边滤波结合的方案对图像低频系数进行处理,采用软阈值滤波算法对图像高频系数进行处理进行图像增强[14]。基于双边滤波和MSR算法结合离散小波变换和Otsu阈值分割算法进行图像增强[15]。基于MSR算法,提出了一种平衡图像对比度和色彩一致性的显式多尺度表示,并引入直方图截断技术[16]。为了恢复图像色彩,提出了基于高斯滤波和引导滤波的改进型MSRCR图像增强算法,该算法能有效地抑制噪声干扰,有效恢复图像色彩[17]。基于改进的MSR算法,将RGB 3个通道分别进行非线性灰度拉伸,得到每个像素点光照阴影关系比例,对雾天图像进行增强[18]。该算法能够有效提升雾天图像,对比度高,细节丰富,色感一致性好,颜色自然。但是由于其多尺度计算复杂度高,边缘位置模糊,缺乏亮度恒常性,颜色恢复算法简单,会出现反转颜色失真现象,对噪声会有加强效果,因而处理还并不十分理想。
可见,现有3类算法对退化图像增强在图像失真、损失细节、去除噪声干扰、运算速度、色彩还原等方面无法做到同时达到很好的效果。为此,本文提出了一种改进型Reitnex算法,首先以改进的双边滤波法作为中心环绕滤波函数,能够保留边缘信息的同时去除噪声。其次将S型sigmoid函数应用于雾天图像的颜色还原与增强处理,能够减少计算复杂度并得到更佳的色彩信息。最后通过实验对比了暗通道、HE和MSRCR算法的处理结果,验证了该算法的可行性和有效性。
Retinex算法基于颜色恒常知觉理论,认为得到的雾天图像I(x,y)是由入射光分量L(x,y)即光照图像和反射光分量R(x,y)组成[14],
I(x,y)=L(x,y)R(x,y)
(1)
将式(1)转换到对数空间进行计算,有利于人眼对图像信息的感知,转换数学公式如下:
ln(Ri(x,y))=ln(Ii(x,y))-
ln(Gi(x,y)Ii(x,y))
(2)
式中:Gi(x,y)为中心环绕函数,现有Retinex算法常选用高斯函数,下标i为通道数。
Retinex算法的核心是计算出来精确的照度分量和反射分量,在此基础上能够还原出更加真实的原始图像。对于雾天图片有显著的增强效果,所得到的去雾图像具有较高的局部对比度和较小的颜色失真。SSR算法难以在细节增强与色感一致性两方面都有好的结果。因此提出MSR加入3 个尺度,在不同雾天条件下都有表现较佳的尺度,但2 种算法都会出现偏色现象。在MSR基础上加入颜色恢复得到MSRCR算法,消除图像颜色失真现象。
在Retinex算法的中心环绕滤波算法中,目标点上的像素值通常是由其所在位置上的周围的一个小局部邻居像素的值所决定,所以处理的效果是对整幅图像进行模糊处理。这会导致边缘锐化不足,细节信息丢失。而双边滤波的基本思路是同时考虑将要被滤波的像素点的空域信息和值域信息,与领域中心点距离近、亮度差异较小像素点对滤波影响大,距离远、差异大的像素点影响小,滤波函数为
(3)
式中:k(x)为权重和,将结果归一化;ξ为空间像素点;f(x)为像素值,x为要求的点;c为距离函数;s为相似度函数。为此,考虑将空间高斯函数和值域高斯函数进行结合,使用双边滤波代替高斯滤波作为MSRCR中心环绕函数,从而保留边缘处距离相距近但是像素值差异大的像素点特性,进而保持雾天原图像中的边缘信息,改善光晕、过增强问题。
雾天的图像有着能见度较低、视觉模糊的特点,图像色彩偏向于灰白色。由于雾气浓度不同、景深和不同波长光线衰减不同,所以整幅图像雾天所造成的模糊程度是不同的。本文目标是将在雾天影响衰减的图像恢复,还原色彩,增强整幅图像的对比度,提高图像的可视性。
针对现有Retinex算法存在的噪声处理差、增强时间成本高、颜色恢复性差等问题,本文提出如图1所示的算法流程,B(X,Y)为双三次插值结果,aij为权重系数,W(i)和W(j)分别为横坐标和纵坐标权重,S(x)为sigmoid函数。
图1 改进型Retinex算法流程图Fig.1 Flowchart of improved Retinex algorithm
首先,对Retinex算法中心环绕滤波算法进行改进,使用双边滤波法能够提升边缘的效果,同时提升对噪声的处理能力。具体算法实现首先将待处理的原始图像进行高斯金字塔向下采样,由卷积采样与偶数行采样组成,其公式为
(4)
式中:m和n分别为行数和列数,k为金字塔代数;W(m,n)为高斯卷积核。
求得滤波使用的核函数,基于空间距离和像素差值求得高斯权重,在中心点为极大值或极小值且周边像素值差异较大时,认为该点为噪声点,对于噪声点的处理时将中心点的权重降低。对x轴和y轴方向分别进行滤波,由于双边滤波法2个权重值相乘,计算复杂度高,还存在归一化问题,所以滤波函数修改为
h(x)=k-1(x)(c(ξ,x)+s(f(ξ),f(x)))dξ
(5)
因为是对雾天图像进行增强处理,原始光照条件受到雾天大气散射影响缓慢变化,在改进的双边滤波之后,对图像进行对比度压缩,以降低去雾操作对图像的退化影响。图像尺寸还原时,采用双三次差值,用到了四邻域的像素信息,能够产生效果更好,更加精确的插补图形,图像的放大效果很好,在整个算法中也有一定的滤波效果,双三次差值公式为
(6)
雾天原始图像和通过上述改进型Retinex算法得到的入射光图像如图2所示。
图2 雾天原始图像和入射光图像Fig.2 Original foggy image and incident light image
其后,在对数空间将两图相减,在尺度不变的情况下对于图片的细节增强与颜色恒常性两方面都有好的结果。在计算的时间上,传统多尺度Retinex算法使用3个不同尺度进行3次计算,本文算法计算复杂度低,并且在对图像进行高斯金字塔向下采样降低了处理的量级。
Retinex算法中传统的颜色恢复方法是利用输入图像中三通道颜色间的比例关系来计算颜色恢复因子矫正图像,该方法会造成像素值的溢出现象。
为了解决还原失真的问题,采用S型函数函数来调节计算,根据S型函数特点,图像中亮度两端区域范围被压缩,中间亮色区域被拉伸。且人眼对亮度的感知通常是平均亮度越大的地方,感知的亮度差别就越大。将中心亮度区域层次化,就能够提升整幅图像的视觉效果。
将对数域相减结果图像进行S型曲线函数拉伸,因为S型函数的动态压缩能力要高于其他如线性、对数函数[9]。S型曲线选用sigmoid函数,该函数符合高斯积累特性,并且在低像素值的区段内和对数函数反函数指数函数曲线相似,还可以省去将图像从对数预转换回实数域的过程,sigmoid函数表达式为
(7)
在亮色区域和暗色区域进行不同系数的处理,应用于雾天图像颜色还原对比度还原的公式设定为
(8)
式中:P(x)为颜色还原后的像素值;k1为对比度系数,和原雾天图像的标准差成正相关;k2为像素值系数,亮度越高系数越小。对图像的颜色还原曲线如图3所示。
在对图像颜色还原后有很好的效果,对原色彩饱和度很高的图像也有着不错的效果,避免了MSRCR算法使得颜色失真的问题。本文方法经过还原后像素值不会小于0,也不会超过255,避免了颜色反转的现象。在处理之后,RGB 3通道的像素值大小关系也不会有变化,在CIE色度值中各个通道的占比变化也相对恒定,减弱了图像的偏色现象,颜色还原效果主要在客观指标中体现。
图4(a)MSRCR算法中颜色还原步骤会使原图颜色饱和区域出现失真问题,图4(b)本文算法避免了该现象。
图3 颜色还原直方图曲线示例Fig.3 Example of color reduction histogram curve
图4 MSRCR算法和本文算法处理结果Fig.4 Proccessing result of MSRCR algorithm and proposed algorithm
为验证本文提出算法的增强效果,使用OpenCV平台进行验证,CPU主频为3.40 GHz,图片尺寸为480 像素×360 像素。将本文算法的去雾处理结果,与暗通道算法、HE和MSRCR等现有算法进行对比,以验证其可行性和有效性。
由于图像主观评价个体差异大,易受外界环境影响,难以用于科学研究及实际工程之中,针对一幅图像的客观评价至今并没有标准化的图像质量评价标准。为此,本文结合图像物理特性及意义选择以下参数作为评价指标。客观评价指标采用图像的亮度、标准差、信息熵及清晰度。处理目标为雾天图像,雾天的特点为对比度色彩衰减,画面白化,亮度值偏高。亮度值体现彩色图像的整体亮度,去雾效果较好的亮度值相对原图偏低。标准差反应了图像像素值的离散程度,值越高说明对比度越高,算法去雾效果越好,图像标准差std计算公式如下:
(9)
式中:M和N分别为图像尺寸的宽度和高度;f(i,j)为图像在坐标(i,j)的像素值;mean为图像的亮度均值。
图像的信息熵代表图像的不确定性,也就是信息量,值越大,含有的信息量越多,信息熵ent表达式如下[5]:
(10)
式中:Pr,g,b为图像中颜色为(r,g,b)像素出现的概率。
清晰度选用Laplace梯度法,使用Laplace算子分别提取水平和竖直方向的梯度,清晰度值越高,说明处理效果越好。图5~图8是4张不同环境下雾天图像的增强结果。
图5 雾天图像1增强效果比较Fig.5 Comparison of enhancement effects for foggy image 1
图6 雾天图像2增强效果比较Fig.6 Comparison of enhancement effects for foggy image 2
图7 雾天图像3增强效果比较Fig.7 Comparison of enhancement effects for foggy image 3
图8 雾天图像4增强效果比较Fig.8 Comparison of enhancement effects for foggy image 4
图5~图8从左到右分别是雾天原图,暗通道、HE、MSRCR和本文算法结果。选取不同雾天环境的多幅雾天图像验证本文算法,图8中图像来源于NASA的雾天图片库,本文算法在航空领域中也有很好的增强效果。从上面多组直观的图像和客观评价结果(见表1~表4)可以看出:
暗通道算法会使得结果图像颜色值偏小,图像中显示过于饱和,该算法最大的问题是计算复杂度过高,无法应用在实时处理环境。
HE算法计算速度快,因为算法就是提升像素之间的差异,所以增强后的图片对比度增加,标准差值大,客观评价效果不错,但是视觉效果差,细节消失,出现图像失真的问题。
MSRCR算法的结果整体比较优异,对不同雾天图像都有较好的增强效果,对比度较低,颜色较为集中,对颜色饱和区域的还原结果差,运算量较大,且需要配置参数。
表1 雾天图像1客观评价结果Table 1 Objective evaluation result of foggy image 1
表2 雾天图像2客观评价结果Table 2 Objective evaluation result of foggy image 2
表3 雾天图像3客观评价结果Table 3 Objective evaluation result of foggy image 3
表4 雾天图像4客观评价结果Table 4 Objective evaluation result of foggy image 4
本文算法在不同的雾天场景中都有着较好的增强效果,本文算法对雾天增强的结果清晰度较原图提升约200%,标准差提升约110%,信息熵提升约10%。相比于现有算法,除了标准差会有部分图像不如HE算法,其余评价标准都优于现有算法。
现有算法的问题主要为实时性和增强效果无法同时达到最优,部分算法需要调整匹配参数。本文提出的算法在主观视觉和客观评价上都有着较好的处理效果,通过客观图像评价标准可看出该方法对雾天图像增强处理后能够含有更多的信息,颜色更加真实,细节更加丰富,改善了光晕现象。本文提出的算法对不同图像不需修改参数,对不同的雾天条件都有较好的去雾效果,并在实时性上也能达到20帧/s的要求。
本文在Retinex算法基础上进行改进,提出了新的图像去雾算法,经实验验证,得出如下结论:
1) 用改进的双边滤波算法作为Retinex算法的滤波函数,在高斯金字塔图像进行处理,减小计算量,算法适用性强。
2) 使用改进的S型sigmoid函数颜色还原方法,省去了从对数域转换回实数域的计算过程。通过上述方法的得到得结果在图像亮度、标准差、熵、清晰度等客观图像标准下有更好得结果,计算耗时短,与参数无关,细节突出,颜色还原度高。
未来的研究可以针对雾天和非雾天气进行区分,减小增强的计算复杂度,应用到户外的视频监控场景中。