一种基于深度学习的雾天能见度估计方法和系统

文档序号:26837011发布日期:2021-10-07 09:20阅读:420来源:国知局
一种基于深度学习的雾天能见度估计方法和系统

本发明属于计算机视觉技术领域,特别是涉及一种基于深度学习的雾天能见度估计方法和系统。

背景技术

能见度,是指一个视力正常的人,能将目标物从背景中识别出来的最大距离。能见度主要受到目标物体与其背景的亮度差异、大气透明度两个因素的影响。其中,大气透明度与天气有很大的关系,雨、雾、雪、沙、霾等天气都会使大气透明度受到影响,从而使能见度下降。因此,在一般情况下,能见度主要取决于天气情况。

在能见度的测量上,传统方法是通过仪器测量消光系数,从而推算出能见度。但这些传统方法的局限性也非常明显:大气透射仪是通过测量两点之间的气柱透射率来推算能见度,而在雨、雾等低能见度天气下,这种方法会存在较大的误差;激光能见度自动测量仪通过测量大气消光系数计算能见度,虽然这种方法比较准确,但其仪器存在造价昂贵、操作复杂、难以推广等缺点。

随着计算机学科的发展,一些基于数字图像处理技术和数据驱动的方法也应运而生。但目前的非深度学习方法对于一张图像只能估计出一个能见度值,这对于不均匀天气条件下的能见度估计问题来说过于粗糙,并且精度不足。而在计算机视觉领域,得益于深度神经网络理的发展和计算能力的提高,基于深度学习的方法进行能见度估计成为了研究的一个方向,然而深度学习方法由于其解释性较差而饱受诟病。



技术实现要素:

针对上述问题,本发明的目的是提供一种基于深度学习的雾天能见度估计方法和系统,只需要输入一张图像,即可输出像素级别的能见度,从而解决了传统方法对于测量仪器和测量条件的依赖问题,并且由于是像素级别的能见度,因此也解决了计算机领域非深度学习方法的能见度估计过于粗糙的问题。此外,该方法捕捉到了雾成像模型和Koschmieder定律之间的内在联系,并结合这两者进行能见度估计,从而有效解决了深度学习方法可解释性不足的问题。

为实现上述目的,本发明采取以下技术方案:

本发明的第一个方面,是提供一种基于深度学习的雾天能见度估计方法,其包括以下步骤:

1)将带雾图像输入预先构建的透射率估计神经网络进行透射率估计,得到带雾图像的透射率图;

2)利用估计得到的透射率图和雾成像模型对带雾图像进行处理,恢复得到去雾后的图像;

3)将去雾后的图像输入预先构建的深度估计神经网络进行深度估计,得到深度图;

4)通过深度图和透射率图,计算得到消光系数图;

5)通过消光系数图,利用Koschmieder定律计算得到能见度图。

进一步,所述步骤1)中,将带雾图像输入预先构建的透射率估计神经网络进行透射率估计,得到透射率图的方法,包括以下步骤:

1.1)构建并初始化透射率估计神经网络;

1.2)载入预训练好的透射率估计神经网络的网络参数,并将其设置为测试模式;

1.3)根据透射率估计神经网络的要求对输入的带雾图像进行预处理;

1.4)将预处理后的带雾图像输入透射率估计神经网络,得到透射率图。

进一步,所述步骤2)中,通过透射率图和带雾图,恢复出去雾后的图像的方法,包括以下步骤:

2.1)根据输入的带雾图像,计算得到大气光成分A;

2.2)将带雾图像、步骤1)得到的透射率图像以及大气光成分A代入雾成像模型,得到去雾后的图像。

进一步,所述步骤2.1)中,根据输入的带雾图像,计算得到大气光成分A的方法,包括以下步骤:

2.1.1)对输入的带雾图像的每个像素在RGB三个通道上求最小值;

2.1.2)对步骤2.1.1)中得到的最小值图进行最小值滤波,得到暗通道图;

2.1.3)对步骤2.1.2)中得到的暗通道图,按照亮度的大小取前0.1%的像素,找到这些像素在输入的带雾图像中对应的像素值,取它们的均值作为大气光成分A。

进一步,所述步骤3)中,将去雾后的图像输入预先构建的深度估计神经网络进行深度估计,得到深度图的方法,包括以下步骤:

3.1)构建并初始化深度估计神经网络;

3.2)载入预训练好的深度估计神经网络的网络参数,并将其设置为测试模式;

3.3)对去雾后的图像按要求进行预处理;

3.4)将预处理后的去雾后的图像输入深度估计神经网络进行深度估计,得到深度图。

进一步,所述步骤4)中,通过深度图和透射率图,计算得到消光系数图的方法为:

首先,根据透射率图和深度图,计算得到各个像素对应的消光系数,计算公式为:

t(x)=e-β(x)d(x)其中,t(x)为透射率图在一个像素点的透射率;β(x)为各个像素对应的消光系数;d(x)为深度图在一个像素的深度;

其次,根据各个像素对应的消光系数β(x),得到消光系数图。

进一步,所述步骤5)中,通过消光系数图,利用Koschmieder定律计算得到能见度图的方法,包括:

首先,根据消光系数图以及Koschmieder定律,计算得到各个像素点的能见度,计算公式为:

其中,V(x)为一个像素点的能见度;ε为眼睛对比阈值;β(x)为消光系数图在一个像素点的消光系数;

其次,根据各个像素点的能见度V(x),得到能见度图。

本发明的第二个方面,是提供一种基于深度学习的雾天能见度估计系统,其包括:

透射率图确定模块,用于将带雾图像输入预先构建的透射率估计神经网络进行透射率估计,得到透射率图;

去雾后图像确定模块,用于利用估计得到的透射率图和雾成像模型,恢复得到去雾后的图像;

深度图确定模块,用于将去雾后的图像输入预先构建的深度估计神经网络进行深度估计,得到深度图;

消光系数图确定模块,用于通过深度图和透射率图,计算得到消光系数图;

能见度图确定模块,用于通过消光系数图,利用Koschmieder定律计算得到能见度图。

进一步,所述透射率图确定模块包括:

透射率估计神经网络构建模块,用于构建并初始化透射率估计神经网络;

第一网络参数加载模块,用于载入预训练好的透射率估计神经网络的网络参数,并将其设置为测试模式;

第一预处理模块,用于对输入的带雾图像按要求进行预处理;

透射率估计模块,用于将预处理后的带雾图像输入透射率估计神经网络进行透射率估计,得到透射率图。

进一步,所述深度图确定模块包括:

深度估计神经网络构建模块,用于构建并初始化深度估计神经网络;

第二网络参数加载模块,用于载入预训练好的深度估计神经网络的网络参数,并将其设置为测试模式;

第二预处理模块,用于对去雾后的图像按要求进行预处理;

深度估计模块,用于将预处理后的去雾后的图像输入深度估计神经网络进行深度估计,得到深度图。

本发明由于采取以上技术方案,其具有以下优点:

1、本发明通过对雾成像模型和Koschmieder定律之间的内在联系进行分析,并结合这两者进行能见度估计,因此本发明的可解释性较好;

2、本发明不仅适用于雾天,也适用于其他成像模型与雾天相同的天气状况;

3、与传统的计算机视觉领域的方法不同,本发明能得到像素级别的能见度估计,而传统方法只能得到图片级别的能见度估计,因此本发明对于不均匀的雾气也能较好地进行估计,鲁棒性较强,具有更细腻的颗粒度;

4、本发明具有模块化、低耦合的特点,因此随着科学技术的发展,本发明的框架中的模块可以替换为效果更好的方法,从而提高总的估计效果。

因此,本发明可以广泛应用于雾天等恶劣天气下的能见度估计领域。

附图说明

图1是本发明基于深度学习的雾天能见度估计方法流程图;

图2是本发明使用透射率估计神经网络对带雾图像进行透射率估计的流程图;

图4是本发明中对大气光成分进行求解的流程图;

图3是本发明中将去雾后的图像输入深度估计神经网络进行估计,得到其深度图的流程图;

图5是本发明实施例中构建的DehazeNet的网络结构示意图;

图6是本发明实施例中构建的DORN(Deep Ordinal Regression Network)的网络结构示意图。

具体实施方式

下面结合附图和实施例对本发明进行详细的描述。

本发明基于雾成像模型、Koschmieder定律以及目前图像去雾、深度估计领域的相关工作,提出了一种基于深度学习的雾天能见度估计方法,下面是本发明的理论基础——Koschmieder定律和雾成像模型的简要介绍:

Koschmieder定律是确定能见度的基础。当人眼沿水平方向面向地坪天空目测远处地面目标时,由于太阳直射光、天空、云层及地面漫散射的影响,大气中的气溶胶粒子发生吸收散射效应,因此观察者感受到大气中好像有着一层遮幕,降低了目标物与背景的直接对比,从而减少了观察者能看到目标物的距离。视觉对比度C随距离d的变换规律,即Koschmieder定律,表示如下:

其中,C为视觉对比度,也叫视反差,是目标物和背景之间的相对亮度差;β是消光系数,是表征任意情况下大气透明度的一个特征量;d是观测员距离目标物的距离;Iobject和Ibackground则分别是目标物和背景的亮度。

如果目标物恰好可以看到,就意味着视觉对比度C达到眼睛对比阀值ε,正常人的眼睛对比阈值为ε=0.02或ε=0.05。此时观测员距离目标物的距离d即表示能见度V,则上式(1)可以表示为:

ε=e-βV (2)

即:

此外,在计算机视觉和计算机图形学中,下述方程所描述的雾成像模型被广泛使用:

I(x)=J(x)t(x)+A(1-t(x)) (4)

t(x)=e-β(x)d(x) (5)

其中,I(x)为待去雾图像在一个像素点的值;J(x)为去雾后图像在一个像素点的值;A为大气光成分,对于一张图像而言是常数;t(x)为图像在一个像素点的透射率;β(x)为消光系数,其大小反映雾浓度,一般在雾浓度均匀时可以认为对一张特定的图像而言为常数,而在不均匀时则指的是图像中一个像素点的消光系数;d(x)为图像在一个像素点上目标物相对拍摄源的实际物理距离。

经上述理论分析可知,只要通过雾成像模型计算得到消光系数,即可利用Koschmieder定律计算得到能见度。如图1所示,本发明提出了一种基于深度学习的雾天能见度估计方法,其包括以下步骤:

1)将带雾图像输入预先构建的透射率估计神经网络进行透射率估计,得到带雾图像的透射率图;

2)利用估计得到的透射率图和雾成像模型对带雾图像进行处理,恢复得到去雾后的图像;

3)将去雾后的图像输入预先构建的深度估计神经网络进行深度估计,得到其深度图;

4)通过得到的深度图和透射率图,计算消光系数图;

5)通过消光系数图,利用Koschmieder定律计算得到能见度图。

如图2所示,上述步骤1)中,将带雾图像输入预先构建的透射率估计神经网络进行透射率估计,得到带雾图像的透射率图的方法,包括以下步骤:

1.1)构建并初始化透射率估计神经网络,该神经网络可以采用DehazeNet、DCPDN(Densely Connected Pyramid Dehazing Network)等;

1.2)载入预训练好的透射率估计神经网络的网络参数,并将其设置为测试模式;

1.3)根据透射率估计神经网络的要求对输入的带雾图像进行预处理,如裁剪、缩放、对均值和方差进行标准化等;

1.4)将预处理后的带雾图像输入透射率估计神经网络,得到带雾图像的透射率图。

上述步骤2)中,得到去雾后的图像的方法,包括以下步骤:

2.1)基于带雾图像计算得到大气光成分A;

2.2)将带雾图像、步骤1)得到的透射率图像以及大气光成分A代入雾成像模型(即公式(4))中,得到去雾后的图像。

如图3所示,上述步骤2.1)中,求大气光成分A的算法也有很多,目前使用得较多的是采用从暗通道图中按照亮度的大小取前0.1%的像素作为A的方法,包括以下步骤:

2.1.1)对带雾图像的每个像素在RGB三个通道上求最小值;

2.1.2)对得到的最小值图进行最小值滤波,得到暗通道图;

2.1.3)对得到的暗通道图,按照亮度的大小取前0.1%的像素,找到这些像素在输入图像中对应的像素值,取它们的均值作为大气光成分A。

如图4所示,上述步骤3)中,构建深度估计神经网络,对深度估计神经网络的网络参数进行初始化,并使用深度估计神经网络进行透射率估计的方法,包括以下步骤:

3.1)构建并初始化深度估计神经网络,如FCRN(Fully Convolutional Residual Networks)、DORN(Deep Ordinal Regression Network)等;

3.2)载入预训练好的深度估计神经网络参数,并将其设置为测试模式;

3.3)按照深度估计申请网络的要求对去雾后的图像进行预处理,如裁剪、缩放、对均值和方差进行标准化等;

3.4)将预处理后的去雾后的图像输入深度估计神经网络,得到深度估计图。

上述步骤4)中,根据步骤1)得到了透射率图,根据步骤3)得到了深度图,因此雾成像模型中的t(x)和d(x)已知,可以通过公式(5)计算得到各个像素对应的消光系数β(x),即得到消光系数图。

上述步骤5)中,由于根据步骤4)得到了消光系数图,因此Koschmieder定律中的消光系数β已知,取ε=0.02或ε=0.05,代入公式(3)可计算得到各个像素点的能见度V,即得到能见度图。

根据上述基于深度学习的雾天能见度估计方法,本发明还提供一种基于深度学习的雾天能见度估计系统,包括:透射率图确定模块,用于将带雾图像输入预先构建的透射率估计神经网络进行透射率估计,得到带雾图像的透射率图;去雾后图像确定模块,用于利用估计得到的透射率图和雾成像模型,恢复得到去雾后的图像;深度图确定模块,用于将去雾后的图像输入预先构建的深度估计神经网络进行深度估计,得到深度图;消光系数图确定模块,用于通过深度图和透射率图,计算得到消光系数图;能见度图确定模块,用于通过消光系数图,利用Koschmieder定律计算得到能见度图。

进一步,所述透射率图确定模块包括:透射率估计神经网络构建模块,用于构建并初始化透射率估计神经网络;第一网络参数加载模块,用于载入预训练好的透射率估计神经网络的网络参数,并将其设置为测试模式;第一预处理模块,用于对输入的带雾图像按要求进行预处理;透射率估计模块,用于将预处理后的带雾图像输入透射率估计神经网络进行透射率估计,得到透射率图。

进一步,所述深度图确定模块包括:深度估计神经网络构建模块,用于构建并初始化深度估计神经网络;第二网络参数加载模块,用于载入预训练好的深度估计神经网络的网络参数,并将其设置为测试模式;第二预处理模块,用于对去雾后的图像按要求进行预处理;深度估计模块,用于将预处理后的去雾后的图像输入深度估计神经网络进行深度估计,得到深度图。

实施例一:

本实施例是对某一道路上的雾天能见度估计,步骤如下:

1)对于输入的带雾图像,通过透射率估计神经网络估计透射率图。

如图5所示,选择DehazeNet作为透射率估计神经网络,使用Pytorch编程环境(1.6版本)搭建网络并初始化参数后,载入从因特网上下载的网络参数,将透射率估计神经网络设置为测试模式,对输入图像进行均值和方差标准化的预处理后,输入DehazeNet中,得到透射率图。

2)利用估计得到的透射率图和雾成像模型,恢复得到去雾后的图像。

具体的,包括以下步骤:

2.1)求大气光成分A;

2.1.1)对输入图像的每个像素在RGB三个通道上求最小值;

2.1.2)对步骤2.1.1)中得到的最小值图进行最小值滤波,滤波器大小选择为5*5,得到暗通道图;

2.1.3)对步骤2.1.2)中得到的暗通道图,按照亮度的大小取前0.1%的像素,找到这些像素在输入图像中对应的像素值,取它们的均值作为大气光成分A。

2.2)将t(x)、I(x)、A代入雾成像模型的公式,得到去雾后的图像。

3)将去雾后的图像输入深度估计神经网络估计深度图。

如图6所示,选择DORN(Deep Ordinal Regression Network)作为深度估计神经网络,使用Pytorch编程环境(1.6版本)搭建网络并初始化参数后,载入从因特网上下载的网络参数,将深度估计神经网络设置为测试模式,对输入图像进行均值和方差标准化的预处理后,输入DORN中,得到深度估计图。

4)通过深度图和透射率图,计算消光系数图。

根据步骤3)得到了深度图,因此雾成像模型中的t(x)和d(x)已知,可以通过雾成像模型的公式计算得到各个像素对应的消光系数β,即得到消光系数图。

5)通过消光系数图,利用Koschmieder定律计算出能见度图。

根据步骤4)得到了消光系数图,因此Koschmieder定律中的消光系数β已知,取ε=0.02,代入公式可计算得到各个像素点的能见度V,即得到能见度图。

以上给出一种具体的实施方式,但本发明不局限于所描述的实施方式。本发明的基本思路在于上述方案,对本领域普通技术人员而言,根据本发明的教导,设计出各种变形的模型、公式、参数并不需要花费创造性劳动。在不脱离本发明的原理和精神的情况下对实施方式进行的变化、修改、替换和变形仍落入本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1