改进暗通道先验的海上图像去雾算法
2021-12-10李春艳田嘉禾
赵 红,李春艳,王 宁,田嘉禾,郭 晨
(1. 大连海事大学 船舶电气工程学院,辽宁 大连 116026;2. 哈尔滨工程大学 船舶工程学院,黑龙江 哈尔滨 150001)
0 引 言
近年来,无人船不仅在国防领域中起到不可忽视的作用,也广泛应用于海上搜救,水质监测等民用领域[1-2]。视觉系统具有定位精度高、使用灵活、硬件成本低等特点,可以作为无人船的环境感知和避障传感器,保证无人船安全航行[3]。但是相对于陆地来说,海上环境复杂多变,海雾天气更是常见天气,雾气中的悬浮粒子对光的吸收和散射作用,会导致无人船的视觉系统在采集图像数据和视频数据时,产生对比度降低、颜色失真以及模糊等现象。而退化后的图像会丢失目标物的特征信息,导致立体匹配时出现匹配对数降低或出现较多的误匹配点等问题,影响无人船系统对障碍物识别及距离判断的准确性,严重时可能会因距离判断失误而导致无人船碰撞、触礁等事故的发生,所以将图像去雾技术应用于无人船的视觉系统对提高目标定位的精度和安全航行系数是非常重要的[4]。
近年来常用的图像去雾算法主要有无模型的图像增强方法和基于物理模型的图像复原方法,无模型方法通常不考虑图像的退化机制而直接对图像的对比度或亮度进行调节,常用的方法有:Retinex算法、直方图均衡化(Histogram Equalization,HE)、对比度受限的自适应直方图均衡(Contrast Limited Adaptive histgram equalization,CLAHE)和小波变换[5]。这些方法虽然对图片有一定的增强作用,但是会造成图像失真并丢失部分图像细节,只能达到感知级别的图像增强效果[6]。基于物理模型的方法主要是利用图像退化模型,根据先验知识对得到的雾化图像进行反推,进而恢复无雾图像。此类方法通过图像散射模型分析图像降质的本质原因和降质过程中的丢失信息,利用图像信息和先验知识求取模型中各参数,最终建立合理的去雾算法,得到去雾图像。Tan等[7]利用无雾图像对比度高于有雾图像的先验信息,在不完全恢复场景原始透射率条件下,最大化局部信息对比度,得到去雾图像,该方法可以处理灰度和彩色图像,但是忽略了图像自身的颜色构造,导致去雾图像出现色彩严重失真的现象。Fattal等[8]假设介质的传导率和物体表面的光照是不相关的,利用图像邻域信息的马尔科夫性和局部最优的思想计算得到无雾图像。这种方法对先验信息的精度要求较高,不适用于模糊图像和灰度图像。He[9]通过统计大量无雾图提出的暗通道先验理论(Dark Channel Prior,DCP),即图像中任意一个区域内都至少有一个通道的像素值最小甚至趋于0,该算法基于大气散射物理模型从图像的退化原因进行反推,最终复原出陆地上效果最好的去雾图。但是图像中如果存在白色物体或区域时,会出现3个颜色通道的暗通道值均较高的现象,暗通道先验理论将会失效,由此估计出的大气散射模型中的参数会导致去雾图像出现色斑和光晕现象,丢失大量的图像信息。而海上图像含有大面积亮度较高的天空区域,此时DCP算法将不能直接用于海上图像去雾。此后的一些基于暗通道改进的算法[10]大都是通过弱化对天空区域的处理来达到改善天空区域的效果,但是这样的改进就会导致图像中跟天空区域连接的区域被弱化,丢失很多细节信息。
本文通过分析雾天的成因以及图像退化模型,针对海上图像特点以及暗通道算法处理海上图像时存在的不足,采用四分法对海上图像进行不断分割,并通过设计的评价函数确定每次分割后得到的优化大气光值的候选区域,且将达到预先设定阈值的候选区域作为最终感兴趣区域,同时将该区域内所有像素的亮度平均值作为大气光值A的优化值。针对暗通道模型估计出的透射率存在块效应的问题,采用导向滤波器对透射率进行细化,提高计算速度的同时能保持输出图像与输入图像的相似性和梯度信息,并在此基础上引入交替迭代思想,利用立体匹配和图像增强进行交替迭代对透射率进行优化,提高透射率的精度,达到提升去雾效果的目的。
1 暗通道先验算法
1.1 大气散射模型
McCartney提出的大气散射模型是最经典的雾天图像退化模型[11-12],该模型包含入射光衰减模型和大气光模型。其中入射光衰减模型描述了光从目标物到观测点之间的衰减过程;大气光模型描述了环境的悬浮粒子对观测点接收到的光强的影响。大气散射模型如下式:
其中:x表示图像中像素点的坐标;I(x)为摄像机拍摄到的有雾图像原图;J(x)是待恢复的无雾图像;A为全局大气光照强度;t(x)=e−βd(x),为透射率,表示在经过悬浮粒子衰减后大气光到达摄像机的部分,β表示大气散射系数,d(x)表示场景深度。
对式(1)进行变换后可得:
由上式可知,若能精确地求出大气光值A和 透射率t(x),即可根据有雾图像获取其对应的无雾图像J(x)。
1.2 暗通道先验
He等在大气散射模型的基础上,通过统计5 000多幅图像的特征,提出了暗通道先验算法。该理论假定在图像中绝大多数的目标区中会存在一些暗像素区域,这些区域中至少有一个颜色通道的像素值很小,甚至趋近于0。正常图像的暗通道图像接近纯黑,但有雾图像的暗通道图像颜色则呈现灰色,这就构成了暗通道去雾的理论基础。
暗通道可以表示为:
式中:Jdark表示像素值最小的通道并将其定义为暗通道;Ω(x)表示以像素值为中心的邻域区域。
假设在局部区域内t(x)为定值,对式(1)两边取两次最小值操作并结合式(3)可得:
对式(4)进行变换可得t(x)表达式为:
上式可粗略估算出暗通道先验算法的透射率。
然而在现实场景中,非常晴朗的天气中也会存在一层薄雾以增强图像的层次感。为了保持景深,在进行图像去雾时要保留一部分的雾,防止因雾全部移除而产生的噪声和颜色失真等现象。对有雾图像进行去雾操作时,预设一个雾气保留因子ω且ω<1,使图像能保留部分雾气以保留其层次感。最终的透射率求取公式如下式:
暗通道先验算法估计大气光值时,通常将图像中亮度最高点,也就是图像中像素值的最大值作为大气光值的近似估计。具体做法分为2步:
1)将暗通道图像中的亮度大小进行排序,将前0.1%的值取出;
2)将求取的亮度值对应原图的位置,在原含雾图像中找出这些位置的最高值将其作为大气光值。
根据大气物理模型以及上述得到的粗略的大气光值A以 及透射率t(x),就可以对有雾图像进行去雾处理。最终去雾图像的求取公式为:
式中,为了防止估计的透射率过小而造成最终复原图像严重失真,可设置透射率阈值t0,其值一般设为0.1。
2 本文算法
海上图像的特点为图像中有大面积的天空区域,而天空区域中的白光分量过多,易出现局部区域R,G,B三通道值均较高的现象,与暗通道先验假设某一区域内至少有一个颜色通道像素值趋近于0的理论基础相悖,故DCP算法不能直接用于含有大面积天空区域的图像去雾。
针对上述问题,本文提出改进大气光值A估 计法,优化其取值,通过构建评价函数并利用四分法得到候选区域,将该区域内的平均亮度作为大气光值的优化值;利用导向滤波[13-14,16]对透射率进行细化,解决暗通道模型估计出的透射率存在块效应的问题,提高计算速度的同时保持输出图像与输入图像的相似性和梯度信息,并引入立体匹配和图像增强交替迭代对透射率进行优化,提高透射率取值的准确性,提升算法的去雾效果。
2.1 大气光值优化
原始及许多改进暗通道去雾算法均选取图像中亮度最高的像素值作为大气光值的近似估计值。但选取单个点易受外界随机条件干扰,尤其是当图像中存在亮度较高的白色物体或区域时,通常就会导致大气光值的错误估计,影响图像去雾的效果,丢失更多图像信息。
本文采用四分法对目标图像进行分割并确定最终的候选区域,其主要思想是根据构建的评价函数对输入图像进行四等分,选择符合评价函数的区域并再次进行四等分,直至得到符合评价函数并满足区域阈值要求的候选区域。
本文将某一区域内的像素平均值与像素标准差sN之间的差值作为四分法分割的评价函数F(x),其中的标准差sN代表该区域的像素值变化程度。天空区域中亮度较高的点较为集中,该区域内像素均值最高、像素之间变化最小,所以在天空区域选取的大气光值最为接近大气光的实际值,因此利用上述方法获得的区域对大气光值进行估计是合理的。
其中,n为该区域内像素点个数,xi,i∈(1,n)是该区域中的像素点坐标。
每次四分均选取值F(x)最大的区域作为候选区域并进行进一步划分,再次计算各部分差值,重复上述操作,直到最终划分的区域小于预先设定的阈值区域。通过反复实验对比,将阈值最小值设定为8×8,最后选取差值最大的区域作为大气光值预估计的最终区域并将该区域的像素平均值作为大气光值的估计值。
式中,S(x)是该区域内所有像素值之和。
图1为四分法的过程及结果。首先对输入进行四等分,对符合判断标准的区域再次进行划分,最终得到F(x)值最大的区域作为感兴趣区域,如图1右上方黑色区域所示,进而得到优化的大气光值。
2.2 透射率优化
原始暗通道先验方法在求取透射率时,假设每个区域内的透射率是不变的,因此估计出的结果存在块效应,具有一定的偏差。He采用软抠图的方式对透射率结果进行优化,但是该方法速度慢且计算量较大。本文采用导向滤波对暗通道先验得到的透射率图进行优化,并将立体匹配和图像增强交替迭代的思想引入其中,即透射率t(x)与双目视觉定位的d(x)进行交替迭代以对两者不断优化,直到获得稳定的输出图像。
图1 四分法分割示意图Fig. 1 Schematic diagram of quadrant division.
导向滤波算法引入了局部线性模型,输出图像由输入图像和导向图共同决定,输出图像大体上与输入图像相似,但边缘纹理处与导向图相同,对图像边缘的处理效果更好,耗时更少,并且导向滤波还能更好保持图像的梯度信息。
引入的局部线性模型包括导向图I,输入图像p以及输出图像q:
其中:q为输出图像的像素值;I为输入图像的像素值;i和k是像素索引;系数ak和bk在窗口ωk中为恒定系数。对式(12)求导可得∇q=a∇I,所以导向滤波能保证输出图像q的边缘与导向图I的边缘相似。
为了最小化输出图像q与输入图像I的差值,引入代价函数:
其中,ε是一个正则化参数,令代价函数E(ak,bk)最小,即可得到ak和bk的表达式:
式中:µk和分别是导向图I在窗口ωk中的均值和方差;|ω|是窗口ωk中像素点的个数。得到ak和bk后即可计算出输出像素点qi。透射率优化前后对比如图2所示。
图2 透射率优化Fig. 2 Transmission map optimization.
将优化之后的大气光值A和透射率t(x)代入式(7)可得到无雾图像。
大气散射模型中,透射率t(x)的表达式为:
其中:β为大气散射系数;d(x)为景深。
而双目立体定位中,视差图与景深的关系为:
其中:b为双目摄像机的基线距离;f为摄像机的内参数;D为立体匹配得到的在像素x的视差。
考虑到复原之后的图像更加清晰、细节信息更加丰富,引入双目立体视觉和图像增强交替迭代的思想,其实现过程如下:
1)利用本文提出的去雾算法对有雾原图进行去雾;
2)对去雾之后的左右图像进行立体匹配操作,并根据式(17)获得图像的景深d(x);
3)将步骤2中得到的景深代入式(16)计算出新的透射率t(x),利用新的透射率再次对有雾原图进行去雾操作;
4)判断得到的去雾图像或距离信息是否达到稳定状态,若已达稳态,则执行步骤5,否则重复步骤1~步骤3;
5)输出达到稳态值的去雾图像。
3 实验验证
3.1 对比实验
图3为大连海事大学实习船“育鲲”号和“育鹏”号在雾中的图像,图4为局部细节放大展示图。从图3和图4可以看出,相比于Retinex,CLAHE,Fatal,He等算法,本文算法恢复出的无雾图像有效改善了图像中天空区域的光晕现象,并且恢复出的图像色彩更加真实,细节图更加清晰。
3.2 定量评价指标
为了直观反映算法的去雾效果,引入图像评价指标结构相似度(Structual Simmilarity,SSIM)、峰值信噪比(Peak Signal to Noise Ratio,PSNR)以及信息熵(Entropy)进行定量分析。结构相似度指标能够衡量图像的对比度、亮度以及结构信息,该值越大说明恢复效果越好;峰值信噪比能够衡量图像噪声水平和失真情况,该值越大说明去雾之后的图像与原图像越相似;信息熵能够衡量图像中平均信息的多少,熵值越大图像中的轮廓信息越清晰。表1为图3(a)中3张原图分别经过Retinex,CLAHE,Fattal,He以及本文算法计算得到的各图像评价指标值。由表1可知,本文去雾算法在各项图像评价指标中均表现上乘。
图3 图像复原结果对比(雾气保留因子ω=0.95)Fig. 3 Comparison of image restoration results(fog retention factor ω=0.95)
此外,立体匹配是无人船视觉系统利用双目摄像机实现目标定位和障碍物测距必不可少的一步,其主要原理是利用双目摄像机拍摄到的同一场景图像,经过摄像机标定、校正等一系列处理之后,在左右2幅图像中找到同一物体的同一点,从而计算出视差图,实现对物体的最终定位。立体匹配主要是利用图像中物体的纹理和色彩等特征进行左右图像的匹配,匹配点的个数以及匹配的准确度都会影响最终的定位精度,所以立体匹配可以作为图像质量的一个评价标准。其中特征点匹配是立体匹配的核心,ORB[17](Orientation by Intensity Centroid)特征点匹配算法具有良好的稳定性且计算速度极快,故本文采用ORB算法对成对图像进行匹配点检测并对总匹配对数以及优秀匹配对数进行统计,以评价去雾前后的图像质量。
图5为利用ORB特征匹配算法对双目摄像头拍摄到的左右图像进行特征点匹配的结果。表2列出了上述3图的总匹配对数和误差小于0.75的优秀匹配对数,并计算出了优秀匹配对数的占比。
综合上述实验结果可知,基于本文的海上图像去雾算法可以从一定程度上改善原始DCP算法存在的色斑和光晕现象,且得到的复原图像能够能复原出更多的图像细节,可给无人船视觉系统提供质量更高的海上图像。
表1 图像评价指标Tab. 1 Image evaluation index
图4 图像复原局部细节Fig. 4 Partial details of image restoration
图5 基于ORB算法的特征点匹配结果Fig. 5 Feature point matching results based on ORB algorithm
表2 ORB特征点匹配对数Tab. 2 Matching logarithm of ORB feature points
4 结 语
本文通过改进暗通道先验算法,对海上有雾图像进行增强,有效复原出较多的图像细节信息,使视觉系统更好发挥“眼睛”的作用,更有利于实现无人船精确避障以及目标物测距等后续工作。通过与现有的一些去雾算法进行的对比实验,验证了本文算法在海上图像去雾处理上的有效性和优越性。但是,一些实验也显示,当海上雾气浓度很高时,与其他去雾算法相比,基于本文算法的图像去雾优势则不够明显,尚需后续加以改善。