基于天空分割的去雾算法在目标检测中的应用

2020-03-11 12:51朱晓霞施智平邵振洲任长娥
计算机应用与软件 2020年2期
关键词:图像天空算法

朱晓霞 施智平 邵振洲 关 永 任长娥

1(首都师范大学信息工程学院电子系统可靠性技术北京市重点实验室 北京 100048)2(首都师范大学成像技术北京市高精尖创新中心 北京 100048)3(首都师范大学信息工程学院轻型工业机器人与安全验证北京市重点实验室 北京 100048)4(首都师范大学电子系统可靠性与数理交叉国际科技合作基地 北京 100048)

0 引 言

随着自动驾驶技术的普及,技术的安全性以及对复杂场景的处理能力成为了自动驾驶领域研究的重点和难点。自动驾驶场景中待处理的图像均采集于室外,因此目标检测的效果容易受周围环境诸如雾霾、雨雪等恶劣天气的影响。因此,需要通过去雾等预处理方式进行图像优化,以降低由于可见度低等因素造成的不良影响。

目前,根据是否需要物理模型[1-2]进行建模,可将去雾算法分为两类,第一类是基于图像修复的去雾算法,该类算法根据雾霾环境下图像退化的原理建立一个逆向的图像参数求解模型,以此来获取去雾后的修复图像。基于清晰图像的局部对比度高于雾霾图像的假设,Tan[3]提出了一个利用马尔科夫随机场最大化图像局部对比度的去雾算法,虽然可以达到不错的效果,但是生成的清晰图像饱和度过高。Fattal[4]采用独立成分分析(ICA)去除颜色图像的雾霾,但是该方法非常耗时且不能处理灰度雾霾图像以及高浓度的雾。He等[5]发现暗通道先验理论,即在大多数非天空的图像中至少有一个颜色通道包含一些强度非常低和接近于零的像素。基于该先验知识,他们估计出雾霾的浓度并且通过大气散射模型恢复出清晰图像,该方法虽然在大多数场景下适用,但是无法处理天空图像且计算量大。为了提高效率,文献[6-8]分别采用标准中值滤波、引导联合双边滤波以及导向滤波取代耗时的软抠图技术。Huang等[9]通过能见度恢复来提升雾霾图像恢复效果。这些方法都是通过图像修复来进行雾霾图像的优化,目的是获取具有高可见度且清晰自然的彩色图像。但是,当图像中出现大量的天空区域时,经该类算法处理后的图像会出现严重的“Halo”[5]现象或颜色失真情况。第二类是基于图像增强的去雾算法[10-11],该类算法通过强度变换[12]、同态滤波[13]、高增益滤波[14]、小波变换[15]等方法增强图像对比度来获得清晰图像。经典的CLAHE[16]算法通过直方图均衡化来增强图像。基于颜色恒定的Retinex理论的图像除雾方法单尺度Retinex(SSR)方法[17]、多尺度Retinex(MSR)算法[18]以及彩色恢复算法的多尺度Retinex(MSRCR)算法[19]通过同时实现动态范围压缩、颜色恒常和颜色/亮度转换等来获得清晰图像。该类算法不考虑模糊条件下的物理成像模型,而是利用各种图像增强方法来提高雾霾图像的对比度和可见度,以此来优化图像。

近年来,随着深度学习的发展,基于卷积神经网络的去雾算法如DehazeNet[20]、MSCNN[21]、AOD-Net[22]、GFN[23]、DCP[24]以及GCAN-Net[25]等采用深度学习去雾的方法也受到了关注,基于深度学习的方法直接回归出传输值或最终的清晰图像。DehazeNet提出一种端到端的网络结构从雾霾图像来估计中间传输图。MSCNN进一步提出了一种多尺度卷积神经网络,该网络首先采用一个粗尺寸传输网络来学习输入图像和传输图像之间的映射,并在其后通过一个优化尺寸网络进一步调整传输值来获得清晰图像。AOD-Net提出一种轻量级的网络结构,通过将传输值和大气光值进行重新表述来预测最终的清晰图像。GFN通过从输入图像生成三种不同的图像并且和原输入图像进行融合获取清晰图像。DCP将大气成像物理模型合并到网络结构设计并且用两个子网络分别回归出传输值和大气光值。GCAN-Net提出一种门控上下文信息聚合网络来获取更好的雾霾图像特征,以此来恢复清晰图像。但是由于待处理图像雾霾种类比较复杂,且基于深度学习的算法严重依赖于数据集,其生成的模型不具有宽适性,也即只对与训练数据集相同的雾霾图像有好的去雾效果,并且现存的雾霾数据集多为人工合成数据集,其真实性和多样性亦存在问题。因此,该类算法目前只能应用在雾霾类型已知的特定场景,如服从小波变换的雾霾环境,此外,该类算法目前不够成熟,在实际应用中受限。

从雾霾环境下目标检测的任务出发,现有去雾算法主要存在以下三个不足之处:

(1) 缺少对输入图像的判断:目前,在实际应用中,大多数算法忽略对输入图像雾霾信息的判断,直接将去雾技术应用在没有雾霾的环境中,由于过度的处理,导致图像降质甚至失真。

(2) 忽略天空区域对参数估计造成的影响:由于天空区域呈现大区域的白色区域,其特征非常接近于雾特征,严重影响参数估计。

(3) 与高层视觉任务缺少联系:现存图像质量评测方法包括全参考[26]、半参考[27]和无参考方法[28]。前两种方法需要提供对应的清晰图像,而在现实任务中并不能提供对应的清晰图像供评测。无参考方法也只能从图像自身的特征来进行判断,这些特征不够全面,其视觉差异往往太细微,无法分辨。一般的图像恢复和增强,作为低层次视觉任务的一部分,通常被认为是中高层视觉任务的预处理步骤。众所周知,高层次的计算机视觉任务,如目标检测和识别,在出现各种退化的情况下,其性能会恶化,并在很大程度上受到图像恢复和增强质量的影响。

针对上述问题,本文提出了一种基于天空分割的自适应去雾算法,旨在验证本文提出的去雾算法的有效性和提升雾霾环境下道路目标检测的精度。该算法主要包括以下三个工作:

首先,进行雾场景判断,提出一种RGB通道相关性和亮度饱和度比值联合的雾场景判断方法,根据雾霾图像的各颜色通道之间的关系以及像素特点判断输入场景是否有雾。

其次,进行自适应去雾操作,提出一种综合的自适应去雾模型,根据天空区域平滑和零像素区域集中的特征采用图像通道技术进行区域分割,并基于大气散射模型分别对图像的天空和非天空区域使用不同的参数估计方法进行去雾操作并融合。

最后,进行道路目标检测,验证本文提出的去雾算法效果以及对高层视觉任务的提升效果,采用基于Darknet网络的深度目标检测算法进行图像中的道路目标检测,并结合无参考图像质量评测方法和目标检测结果进行效果评定。

本文的算法框架如图1所示。

图1 算法流程图

由于去雾算法对场景有不同的适用性,因此,在雾霾环境的道路驾驶情况中最主要的目的是提高场景图像范围内的清晰度。故而参数值估计得越准确,去雾效果越好,目标检测效果也越好。

实验结果显示,本文提出的结合雾检测和天空分割的自适应去雾算法在特定的道路目标检测任务中取得了很好的效果,极大地提高了雾霾环境中道路目标检测的精度,改善了汽车在道路上对天气环境的感知能力,进而保证了自动驾驶技术的稳定性、准确性和时效性。

1 雾场景判断

1.1 消失点估计

自动驾驶环境中驾驶员的关注视野主要集中在部分重点区域,实际场景中一般为道路尽头或正前方区域。因此需要重点关注驾驶员视野区域的环境状况。消失点估计和检测区域的选定是检测输入图像雾霾状况的前提。本文通过估计道路消失点来确定需要检测的重点关注区域,再对该重点区域进行雾霾检测。场景中消失点的检测通常采用基于全局透视结构匹配的先验消失点估计方法[29]、基于边缘信息的方法以及基于纹理信息[30-33]的方法。

由于对图像直接进行消失点估计受道路、人行道等较暗光纤影响较大,而纹理是图像的一种非局部性质,受光照和颜色变换的影响较小,故而本文采用基于纹理特征的方法来估算消失点。

道路路面破损、阴影、光线暗淡等原因使得单幅图像的直接消失点估计存在噪声,为了减少这些噪声的影响,需提供可靠的消失点估计方法来确定检测区域。本文使用Gabor小波计算纹理方向,这种方法的关键特性包括显著的纹理方向以及基于纹理方向的消失点投票和软投票机制。图2是消失点检测的算法步骤。

图2 消失点检测流程

如图3所示,通过分析每个像素的局部纹理方向,计算每个像素的局部最大值响应,选择产生最强响应的方向作为主导纹理方向[34]。然后,通过预先定义的软投票机制[35]投票得到候选消失点。最后,利用峰值识别,将获得最多票数的点视为消失点。

(a) 输入图像 (b) 纹理方向

(c) 投票结果 (d) 消失点图3 清晰图像消失点检测效果

1.2 雾场景判断方法

确定消失点后,进一步选取消失点附近的感兴趣区域ROI进行雾场景检测,这里设置ROI区域为消失点附近的矩形区域(VP,width/2,height/3)。通常情况下,雾霾图像的RGB通道值总是很大且在消失点周围的区域包含大量的零饱和度像素,除此之外该ROI的HSV色彩模型图像中,亮度V和饱和度S的比值也非常大。这里借鉴Alami等[36]的研究成果,采用下式计算RGB通道之间的相关性以及V和S的比值:

(1)

(2)

式中:ROIG代表ROI中绿色通道的像素,cov是方差,σROI是ROI区域图像的导数。ROI区域像素的亮度和饱和度可以通过下式求得:

V(x)=maxRGB(x)

(3)

(4)

本文在数据集FRIDA[37]和FRIDA2[38]中进行测试,对320张FRIDA和FRIDA2中采集到的有雾图像进行计算,准确率达到了98%。FRIDA2图像数据集是根据Koschmieder雾霾图像成像原理公式,通过调节参数像素位置权重参数k和距离参数Ls分别在合成图像上添加五种类型的雾,本文以同一幅背景不同雾类型的图080系列为例,其中:Lima是原始合成无雾图像,U080是均匀分布的雾图像,即k和Ls均为常量,K080是Ls为常量、k为变量的非均匀雾图像,L080是k为常量、Ls为变量的非均匀的雾图像,M080是参数k和Ls均为变量设置的非均匀雾图像。图4是五种类型雾霾图像通道相关性结果。

图4 FRIDA2中五种类型雾霾图像通道相关性结果

从图4可以看出,大多数雾霾图像的通道相关性均大致落在0.96至0.98之间,本文通过大量实验将通道相关性阈值设为0.96和0.98。

本文采用文献[39]中提到的方法来确定R的值,这里设置为3.5,故雾场景可通过图5流程进行判定。

图5 雾判断流程

2 区域自适应去雾算法

2.1 天空区域识别与分割

根据Koschmieder[40-41]定律,本文在Mccartney提出的大气散射模型[42]基础上建立图像受到雾气干扰时的退化模型。根据文献[5]的理论,上述模型可以简化表示为:

Ic(x)=Jc(x)·t(x)+Ac(1-t(x))c∈{R,G,B}

(5)

式中:x代表像素的坐标,Ic(x)和Jc(x)分别代表输入的雾图像和期望得到的无雾图像,Ac为大气光值,t(x)(0≤t(x)≤1)为传输值,表示物体反射光穿过介质的能力。若透射图t(x)和大气光值Ac已知,可以通过下式复原出无雾图像Jc(x):

(6)

式中:ε是常量,为了防止分母为0,一般将其设置为0.000 1,指数δ是微调去雾效果的参数。

当输入图像中包含天空区域时会严重影响参数的估计,一般情况下,道路图像中的平坦天空区域由于其传输值非常小而会发生强烈的对比增强。因此,在天空区域会经常出现彩色失真或噪声增强。

为了防止这种现象,每个图像被划分为天空区域和非天空区域,并且分别应用两种不同的去雾技术。在白天的道路图像中,天空区域通常是非常明亮或蓝色的。通过比较B通道的值和一个RGB颜色空间上特设的阈值θB,进行基于像素的天空区域的检测,公式如下:

(7)

Inonsky(x)=Ic(x)-Isky(x)

(8)

式中:Isky(x)、Inonsky(x)、Ic(x)和IB(x)分别表示天空区域,非天空区域,输入原图像和输入B通道图像。经过多次实验,本文将θB设为150。另一方面,道路图像中的天空区域一般位于消失点之上。利用这一特性,可以检测到天空区域。

2.2 区域自适应去雾算法

不同于Shwartz等[43]直接将检测区域中最大的亮度值作为大气光值的方法,本文根据输入的图像是否包含天空区域,将图像分为天空和非天空区域,重新估计天空和非天空区域的参数值。

对于大气光值,本文为输入图像的天空和非天空区域设置不同的大气光值,针对天空区域,将天空区域前0.1%大的亮度均值设置为A,针对非天空区域,寻找暗通道图像中前0.1%像素的最大值并在原图Ic(x)中设置相应的像素为A。

对于传输值,根据天空识别和暗通道原则,本文根据下式设置t(x)的值:

(9)

式中:α是一个和距离非常相关的微调参数。根据Jeong等[39]的理论,α可以根据下式计算:

(10)

式中:λ是最大偏移常量,σt是控制传输值偏移控制的方差,本文中的λ和σt分别设置为0.1和20,最终通过式(5)分别对天空和非天空区域进行处理得到Jsky(x)和Jnonsky(x),并通过alpha融合技术融合天空和非天空区域并进行平滑处理,公式如下:

Jx=Ibinary(x)·Jsky(x)+(1-Ibinary(x))·Jnonsky(x)

(11)

式中:Ibinary(x)为天空的二值映射图。

3 实验结果及分析

为了评估基于天空分割的自适应去雾算法在目标检测中的优化效果,本文进行了四组实验。

第一组实验主要验证本算法采用的基于纹理的消失点检测方法在不同类型雾场景中具有通适性;第二组实验验证了本文提出的雾场景判断方法所得的结果与数据库图像标注一致;第三组实验通过主观方法和图像质量评测指标对比本文算法与其他算法在包含天空区域和不包含天空区域图像的去雾效果,呈现去雾效果;第四组实验选取第三组实验中去雾效果最好的两个算法和本文提出的去雾算法结果进行目标检测效果对比,分别从检测到的道路目标总数、剔除误检和漏检后的目标总数以及检测到每一类的置信度这三个方面进行结果评测。

实验环境如表1所示。

表1 实验软硬件和语言环境

3.1 雾霾检测实验

一幅清晰的图像经过去雾后可能导致图像失真,并对目标检测的效果起到负面作用,因此需要首先进行环境判断,由于缺少可以量化的不同浓度雾霾的图像数据,这里采用人造数据集FRIDA2。图6是对输入图像中道路尽头即消失点周围区域的检测结果,第一行代表五种不同雾图像的消失点检测结果和检测区域,第二行是对应第一行检测区域和消失点的放大显示,第三行是对应输入图像的纹理,第四行是基于纹理的消失点投票结果,表2是对应图6雾检测结果。

(a) LIma (b) U080 (c) K080 (d) L080 (e) M080图6 不同类型雾霾图像中消失点及区域选定结果

表2 雾检测结果

ImgLImaU080K080L080M080R2.711 924.938 330.277 320.540 724.000 2Corr0.954 70.979 80.981 10.972 70.975 0IsFogNYYYY

观察图6实验结果发现,无论在清晰图像还是不同程度的雾霾图像中,基于纹理的消失点检测方法均可以很快检测并输出准确的消失点的位置坐标,即图中矩形框所在位置。表2是根据雾判断流程计算出的五种不同类型图像的区域亮度与饱和度比值R和通道相关性Corr,IsFog代表图像是否为雾霾图像的判定结果,其中Y代表判定为雾霾图像,N判定为无雾图像,由于Lima的R<3且Corr<0.96,因此判定为清晰图像,其他四类同理,且结果和数据库结果保持一致。

3.2 去雾效果对比实验

天空区域是影响雾霾图像恢复的另一重要因素,为了消除天空区域带来的影响,本文对雾霾检测的结果图像进行区域分割,并进行去雾效果对比。由于目前存在很多基于图像增强、基于物理模型恢复以及基于深度学习的方法变体,且多数图像评测结果均是在包含成对清晰和雾霾图像的合成数据集上采用全参考方法进行评测,不同浓度的雾霾图像经过不同方法变体的处理的效果不一定一致。即在薄雾图像上处理效果最好的去雾方法在浓雾图像去雾效果中表现并不一定最好,并且在全参考图像质量评测中效果最好的方法在无参考图像质量评测中也不一定表现一致。故这里选取两个最具代表性的图像增强去雾方法CLAHE[16]和MSRCR[19],两个经典的基于物理恢复模型方法即文献[5]和文献[8]的方法以及基于深度学习的方法DehazeNet[20]进行对比实验。

图7和图8分别是不包含天空区域的图像和包含天空区域的图像对比结果。通过对比可以看出,当输入图像不含天空区域时,各种算法的去雾结果均可以达到较好的结果,但在包含天空区域的图像中,文献[5]的方法相比其他方法存在“Halo”现象。CLAHE算法不能增强非均匀雾状图像,这也说明了简单的CLAHE算法不能解决深度不连续问题。文献[8]的方法无法提升浓雾图像的质量。MSRCR有一定程度的图像色彩失真。由于深度学习技术在去雾领域的运用不够成熟,以及缺少丰富的雾霾环境下的道路场景数据集,DehazeNet几乎没有表现出很好的优化效果。综合来看,从主观角度出发,本文算法所呈现的结果既没有色彩失真,也没出现“Halo”现象,效果相对较好。

(a) 原始图像 (b) 天空二值图

(c) 暗通道先验算法 (d) CLAHE算法

(e) 文献[8]算法 (f) MSRCR算法

(g) DehazeNet算法 (h) 本文算法图7 不包含天空区域图像去雾结果对比

(a) 原始图像 (b) 天空二值图

(c) 暗通道先验算法 (d) CLAHE算法

(e) 文献[8]算法 (f) MSRCR算法

(g) DehazeNet算法 (h) 本文算法图8 包含天空区域图像去雾结果对比

3.3 图像质量评测实验

目前存在三种不同的图像质量评价方法:全参考图像质量评估法、部分参考图像质量评估和无参考图像质量评估。全参考和部分参考图像质量评估需要一个清晰的图像对应的雾图像作为参考,这很难满足实际应用。因此,在图像除雾领域,无参考指标被广泛应用。

表3 图8对应的图像质量评估结果

从表3可以看出,MSRCR算法有3个参数值最优、2个参数值次优的结果,在质量评测中表现最好;文献[8]算法有2个参数值最优、1个参数值次优的结果,在质量评测中表现次之。但是评测方法的结果并不总是和主观评价相一致,在所有条件下都具有很好性能的去雾算法是不存在的。因此,很难确定哪一种算法是最佳的除雾算法,只有特定任务中去雾效果才可以根据其在具体任务的结果进行有效评测。

3.4 目标检测实验和效果验证

本实验进一步说明不能只选取图像质量评测标准来进行去雾结果评价,而应该将其放到具体的应用场景中进行效果评估。本文基于Keras实现了最具实时性的目标检测算法YOLOV3[46],采用以残差连接[47]为主要结构的DarkNet网络进行底层边缘和纹理信息提取,用特征金字塔网络结构[48]从多尺度特征图上获取更加丰富的语义信息,最后,用全卷积神经网络分支来预测结果。实验采用已在ImageNet数据集预训练好的模型,再在KITTI[49]数据集上进行微调得到目标检测模型,其学习率初始化为0.001,动量设置为0.99。

实验针对采集到的20组雾霾图像进行相同的实验,这里选取一个包含天空区域和不包含天空区域的雾霾图像进行说明。图9和图10分别是选取不包含天空区域和包含天空区域的图像原图,质量评测结果最好的MSRCR和较好的文献[8]算法处理后的图像,以及本文提出的去雾算法处理后的图像在目标检测中的结果。其中:(a)是在原图上进行目标检测的结果图,(b)是文献[8]算法去雾后进行目标检测的结果图,(c)是MSRCR算法的结果图,(d)是本文算法的结果图。表4和表5分别是具体的检测结果。表中每个字段分别代表每个物体被检测为该类物体的分数,其中TotalNum代表算法检测到的总目标个数与检测到准确的目标个数,检测到的准确的目标数等于检测到总的目标数减去误检的个数。

(a) 原始图像 (b) 文献[8]算法

(c) MSRCR算法 (d) 本文算法图9 去雾结果图像在目标检测中的结果(不含天空)

(a) 原始图像 (b) 文献[8]算法

(c) MSRCR算法 (d) 本文算法图10 去雾结果图像在目标检测中的结果(包含天空)

表4 图9目标检测结果

Scoresmotorbikecarcarpersonpersontruck(a)0.65-0.980.620.91-(b)0.56-0.79-0.410.33(c)0.530.380.880.900.910.31(d)0.840.600.950.950.95-ScorescarcarbicyclepersontruckTotalNum(a)0.960.99---6(6)(b)0.690.98---6(4)(c)0.950.990.350.3810(6)(d)0.970.990.470.45-9(9)

表5 图10目标检测结果

本实验主要对比去雾算法处理后目标检测效果与原输入图像的目标检测效果,从图9和表4可看出:在图9(a)上可以检测到6个目标且均正确,文献[8]算法去雾后检测到的6个目标中有2个目标被误检,MSRCR检测到10个物体有4个误检,而本文算法检测出9个目标且无误检,相比原图检测出更多的目标,且置信度高于其他算法和原图检测的结果,即表中加粗部分。图10和表5有同样的效果。

分析上述目标检测结果发现,文献[8]算法去雾效果较好,但对比原图,其进行目标检测得到的目标数量更少,置信度更低;MSRCR算法检测到的目标虽然最多,但误检率较高;本文的算法能检测到更多的目标,且每个目标被准确检测到的置信度相对较高。

综上,图像质量评测好的去雾算法不一定对目标检测的任务有提升效果,本文提出的方法虽然在图像质量评测结果中表现并不是最好,但在具体的目标检测任务中表现最好,其在实际意义上对目标检测任务有很大的提升。

4 结 语

本文针对道路目标检测受雾霾环境影响严重的问题,提出了一种针对道路目标检测任务的去雾算法。该方法先判断输入图像是否是雾霾场景,并对判断后的图像进行天空和非天空区域的分割,且分别在各自区域运行相应的去雾算法以提升图像的质量,并结合目标检测算法验证去雾效果。在雾霾数据集上的实验显示,该算法能够对不同类型的雾霾场景进行精确的识别,并进行自适应去雾优化,能以较高的置信度识别出更多的道路目标,有效地提高雾霾环境下的道路目标检测准确度。该算法改善了雾霾场景中汽车对道路环境的处理能力,进而保证了自动驾驶技术准确性和稳定性,在自动驾驶领域具有广泛的应用场景。

猜你喜欢
图像天空算法
哪种算法简便
浅析p-V图像中的两个疑难问题
巧用图像中的点、线、面解题
天空之镜
Travellng thg World Full—time for Rree
算法框图的补全
算法初步知识盘点
一和one
天空之舞
天空之门