程 鸿 龙 伟 李炎炎
(四川大学机械工程学院 四川 成都 610065)
在夜间雾、霾等天气条件下拍摄的户外图像,由于人工光源照明不均匀,大气悬浮粒子对光的吸收和散射作用,导致成像设备采集到的夜晚图像存在光照不均匀、图像对比度低、色偏严重等现象。图像中部分信息丢失,影响视频监控和图像采集系统的效果[1-2]。因此,夜间去雾具有重要的意义。
近年来国内外学者主要针对白天条件下的有雾图像进行研究,并取得了较大的突破。现有的去雾算法主要有两类。一类是不依据图像物理成像模型的方法,直接利用数学的方法改变图像的像素值。如直方图均衡化[3]、单尺度和多尺度Retinex方法[4]等。另一类是依据图像物理成像模型的方法。这类方法利用McCartney等[5]提出的衰减模型和大气光模型,求得模型中参数,如大气光值和透射率,最终获得目标图像。如Fattal[6]提出的基于独立成分分析去雾,He等[7]提出的基于暗通道先验去雾,Zhu等[8]提出的基于颜色衰减先验去雾,Berman等[9]提出的基于color-line的非局部图像去雾等。上述算法在白天有雾的条件下均能取得很好的去雾效果,但不适用夜晚去雾。
目前仅有少量关于夜晚图像去雾的研究。Pei等[10]提出了一种基于物理成像模型的夜晚图像去雾算法,首先将夜晚有雾图像转换为理想的白天有雾图,再根据暗通道先验对图片进行去雾处理;Zhang等[11]通过增强估计光照强度以获得光照平衡的结果,再进行颜色校正,最后利用暗通道先验和逐点环境光估计法去雾;Li等[12]构建含有光晕层的夜晚图像成像模型,再基于暗通道先验去雾;方帅等[13]根据大气光局部变化的现象构建新的夜晚成像模型,提出了基于信息熵的透射率估计方法,并通过光源区域的颜色属性来进行颜色校正,最终获得清晰的夜晚图像;杨爱萍等[14]建立含有人工光源的夜晚雾天图像成像模型,利用低通滤波的环境光估计方法,进而预测夜晚成像的透射率,以此进行去雾,再利用直方图匹配方法解决色偏问题。
上述有关夜晚图像去雾研究中,相较于白天图像去雾有统一的大气物理成像模型,夜晚图像去雾目前还没有统一的成像模型,故本文提出一种基于非物理模型的夜晚图像去雾算法。实验结果表明,本文算法能有效提高夜晚图像的清晰度,达到改善视觉效果的目的。
同态滤波是一种减少低频分量增加高频分量,减少光照变化并锐化边缘或细节的图像滤波方法。它以照度反射模型作为频域处理的基础[15],能够对图像灰度范围进行调整,从而消除图像上照明不均匀的问题,增强图像暗区域细节,使增强后的图像更符合人的视觉习惯。
夜间有雾图像f(x,y)可以表示为入射分量i(x,y)与反射分量r(x,y)乘积:
f(x,y)=i(x,y)·r(x,y)
(1)
式中:入射分量i(x,y)属于光照条件下的低频成分[16];反射分量r(x,y)属于展示图像细节等特性的高频成分。处理光照不均匀的多光源的彩色夜晚图像,就需要尽量增加图像的低频分量,同时适当增强图像的高频分量。
由于式(1)是由两个函数乘积构成,故不能直接用Fourier变换对i(x,y)和r(x,y)进行操作。对式(1)两边分别同时取对数,得:
lnf(x,y)=lni(x,y)+lnr(x,y)
(2)
再对式(2)进行Fourier变换,得到频域表达式:
F(u,v)=I(x,y)+R(x,y)
(3)
式中:I(x,y)和R(x,y)分别是lni(x,y)和lnr(x,y)的Fourier变换结果。用传递函数H(u,v)对式(3)的F(u,v)进行处理,可得:
H(u,v)F(u,v)=I(x,y)F(u,v)+R(x,y)F(u,v)
(4)
滤波处理后,对式(4)进行傅里叶逆变换回到空间域,即得:
FH(u,v)=IH(x,y)+RH(x,y)
(5)
最后,对式(5)两边同时取指数,得到同态滤波后的图像:
g(x,y)=eFH(u,v)=eIH(x,y)eRH(x,y)
(6)
同态滤波的过程如图1所示。
图1 同态滤波器增强过程
从以上推导过程可以看出,能否达到理想的滤波效果,关键在于选择合适的滤波函数H(u,v)。
频域内的同态滤波处理,常用的传递函数为高斯型高通滤波函数[17],优化后的表达式如下:
(7)
式中:γH表示高频增益;γL表示低频增益;θ为锐化系数,用来改变传递函数斜面的倾斜程度;D0表示截止频率;D(u,v)表示频率(u,v)到滤波器(u0,v0)中心的距离。表达式如下:
(8)
高通滤波器通过抑制低频分量,并保留高频分量对图像进行锐化处理。但由于夜晚光源较多且光照不均匀,经过Fourier变换的频率谱图像亮点较多,实际图像已经表现很尖锐。故为了抑制夜晚图像中的高频部分,适当增加低频成分,本文的传递函数H(u,v)采用高斯低通滤波函数,优化后的表达式如下:
(9)
Retinex理论是由Edwin.H.Land基于颜色恒常性理论提出的,认为一幅给定的夜晚雾天图像S(x,y)可视为入射光分量L(x,y)和反射光分量R(x,y)的乘积[18]:
S(x,y)=L(x,y)·R(x,y)
(10)
式中:R(x,y)表示物体的反射性质,即所要复原的图像;L(x,y)表示入射光图像,决定了图像像素能达到的动态范围,应尽量消除入射光的影响。
将式(10)等号两边转换到空间进行计算,得到:
logR(x,y)=logS(x,y)-log(S(x,y)×G(x,y))
(11)
式中:G(x,y)为高斯函数。
(12)
式中:λ是一个尺度因子,它的值必须满足以下条件:
(13)
式中:φ表示高斯环绕尺度,其作用是控制领域范围。φ值越小,高斯模板的半径越小,计算的中心像素受周围像素的作用越大,增强后的图像对比度越明显,细节也更突出,但颜色失真也越严重;φ值越大,增强后的图像颜色保真效果越好,但是图像显得越模糊,去雾效果也随之下降。
考虑到夜晚图像存在或明或暗的部分,为了提升图像的对比度,获得更多的图像细节,本文采用限制对比度自适应直方图均衡的方法。相比自适应直方图均衡化(AHE),CLAHE在AHE的基础上,对每个子块直方图进行了限制,因此CLAHE能解决AHE算法中滑动模板带来的窗口之间灰度不平滑问题[19]。该方法首先将图像分为若干重叠的子区域,对每个区域进行对比度限幅,将超出限幅的部分均匀分布到直方图的其他部分,如图2所示。然后对每个子区域进行直方图均衡,再对每个像素使用插值的方法消除分块带来的块边缘过渡不平衡的问题。最终实现对比度受限自适应直方图均衡增强。本文采用MATLAB自带的限制对比度自适应直方图均衡算法。
图2 对比度受限直方图均衡
虽然人在各种环境下都能准确判断出白色物体,但相机成像的图片,在不同色温的光线下,图像就会出现颜色偏差,与人眼看到的颜色不一致,因此夜晚图像普遍存在色偏。为进一步改善夜晚图像去雾效果,增强人眼的视觉效果,本文采用白平衡算法对去雾后的图像进行颜色校正。
白平衡是一种以人眼看到的白色为标准[20],使人眼看到的白色物体在照片中也呈现白色。白平衡算法以灰度世界假设[21]为基础,假设认为在有足够颜色变化的图中,它的RGB分量的平均值会趋近相等,如下:
Raver=Gaver=Baver
(14)
式中:Raver、Gaver、Baver分别表示三个颜色通道的均值。
再计算各个通道的增益,即:
(15)
(16)
最后根据Von Kries对角模型,求得各个颜色通道的像素值,即:
Rnew=R×KRGnew=R×KGBnew=R×KB
(17)
计算的结果中可能会出现溢出的情况,即像素值大于255,本文将大于255的像素直接设置为255。
实验在MATLAB 2017b下进行算法编程,PC处理器为2.6 GHz Intel(R)Core(TM)i5-4210M,内存为4 GB。本文的算法流程如图3所示。为了展示各步骤结果,从图虫网上收集了一幅夜间雾天图像(661像素×1 200像素),各步骤结果如图4所示。结果显示本文算法能有效去除夜晚的雾气,提升图像对比度,展示更多的细节信息。
图3 夜间图像去雾算法流程图
(a)夜间有雾原始原图
为了验证本文算法结果,收集了文献[11]中的实验图片,以Pavilion、Street和Trains为实验对象,并与传统的Retinex算法、He等[7]的方法及Li等[12]的方法进行对比。各算法去雾效果图如图5所示。可以看出,传统的Retinex算法没能有效改善夜晚有雾的图像视觉效果;He等[7]的方法因为是假设在白天光照均匀条件下进行的,没有考虑夜晚图像的成像特点,所以去雾效果不明显;Li等[12]的方法对夜晚去雾取得了较好的效果,但由于也是基于暗通道先验基础,结果图中天空区域出现块效应现象,且色偏严重。相比之下,本文的算法考虑了夜晚光照不均匀、对比度低、色偏严重的特点,有针对地对问题进行处理,改善了视觉效果,有效地完成了对夜晚有雾图像的处理。
(a)夜间有雾图像
为进一步验证本文算法的增强效果,采用平均梯度A、信息熵H、对比度C和算法运行时间T等客观指标对去雾后的图像进行质量评价,各算法的性能指标统计结果如表1所示。
表1 算法性能指标统计
图像的平均梯度A能反映图像对微小细节反差表达的能力。平均梯度越大,表明影像越清晰,反差表达能力越好。其公式如下:
(18)
式中:Ji,j为第i行、第j列的像素值;c与r为图像的行数和列数。
图像的信息熵H是表示图像细节方面的指标,信息熵值越大,图像细节越多,计算公式如下:
(19)
式中:pi表示像素i出现的概率。
利用文献[2]的方法计算图像中的对比度C,C值越大,对比度值越大,图像细节越清晰。计算公式如下:
(20)
式中:w、h分别表示图像的宽和高;L(x)表示像素点x处的亮度。
从表1可以看出,四种算法中,本文算法在各个指标中都取得理想的结果。尤其是在实验图片Trains的处理结果中,对图像去雾的各个指标都取得最好效果。虽然传统Retinex 算法和He等的方法的运行时间比较短,但是这两种算法都没能对夜晚有雾图像进行有效的处理;对于Pavilion图,Li等的方法在性能指标中占有一定优势,但算法运行时间远超过本文算法的运行时间。综上所述,本文算法复原的图像在各项指标中总体呈现最优。
本文针对夜晚有雾图像的特点,以提高图像对比度,改善视觉效果为目的,提出了一种基于非物理模型的夜间图像去雾算法。实验结果表明,在平均梯度、信息熵、对比度以及算法运行时间等指标下,本文算法处理的结果总体优于Retinex算法、He等方法、Li等方法,处理后的图像具有更高的细节清晰度。需要指出的是,本文没有从夜晚图像成像的原理进行去雾,而是根据人眼视觉要求,利用数学的方法提升图像的视觉效果。