基于B-样条曲线暗通道的图像去雾算法

2023-01-09 14:28温立民巨永锋王会峰
计算机工程 2022年11期
关键词:透射率光晕样条

温立民,巨永锋,王会峰,徐 娟

(1.长安大学 电控学院,西安 710064;2.长安大学 电工电子实验教学中心,西安 710064)

0 概述

随着计算机视觉技术的发展及其在交通、军事、安全监控等领域的广泛应用,图像去雾已成为机器视觉领域的重要研究方向和研究热点,吸引众多学者从事相关研究。

目前图像去雾领域主要有基于图像纹理的去雾和基于模型的去雾[1-2]2 个研究方向,有学者将深度学习应用于图像去雾,取得了较好的效果。基于纹理去雾的方法采用模板滤波、小波变换等传统技术实现图像对比度和色彩饱和度增强,文献[3]采用非自适应均值滤波的方法实现图像去雾,文献[4]结合多尺度分析与图像融合实现图像去雾。由于该类方法本质上是增强图像本身的对比度,因此总体去雾效果不及模型去雾和基于深度学习的去雾方法。基于深度学习的去雾方法是利用深度学习技术计算对比度,或使用图像转换达到去雾目的。文献[5]采用循环一致对抗网络的方法实现图像去雾,该方法通过两组镜像的生成器和鉴别器实现原雾图到还原图像的转换,但需要大量学习样本,并且转换后的图像因存在颜色迁移易出现色彩失真。文献[6]在卷积神经网络的基础上结合残差注意力方法,将有雾图像经上下采样后,以损失函数作为收敛判据实现去雾,尽管取得了不错的效果,但由于存在去雾不完全和伪影现象,以及算法效率较低,导致应用受限。

模型去雾是建立在大气散射模型的基础上,通过研究大气粒子对光的散射作用而建立的图像退化模型,目的是实现图像去雾。目前常用的去雾模型由SCHECHNER 和NAYAR[7-8]提出,但基于该模型的去雾算法由于存在病态求解问题而需要改进,如HE 等[9]提出基于暗原色先验假设(Dark Channel Prior,DCP)的算法(简称HE 算法),较好地解决了这一病态求解问题,并取得了良好的去雾效果,也因此在模型去雾领域具有举足轻重的地位,受到各方学者的认可[10-11]。HE 算法是以三通道最小值透射率假设为基础,以世间万物皆有阴影为前提,这一前提在大多数情况下是正确的,对于均匀背景亮度的场合具有良好的适应性,但对于高亮度背景或大面积天空光场景将会失效,还原图像会存在光晕(Halo)现象[12-13]。目前有学者针对HE 算法的不足提出了不同的解决方案,如文献[14]采用远景和近景融合暗通道去雾算法,该算法通过分别计算远、近景的暗通道值,以远景信息替代背景进行补偿,取得了一定的效果,但因无法有效区分背景与实景信息而使用受限。文献[15]采用视频技术结合暗通道理论实现图像去雾,但该方法采用多图像技术解决模型去雾中的病态求解问题,虽然取得了较好的效果,但在实现上存在较大的障碍。

本文提出基于B-样条曲线拟合并修正透射率直方图包络以去除Halo 效应的算法。通过搜索透射率灰度统计直方图的波峰波谷,确定样条曲线的区间边界点,并将区间边界点作为初始条件计算三次样条曲线,拟合低灰度包络。为提高补偿精度,从两个维度上对大津法(Otsu)进行改进,实现透射率图分割,并确定修正区域。在分析halo 效应成因的基础上,采用γ 函数对低灰度包络透射率直方图进行修正,平滑透射率图,从而去除Halo 效应。

1 基于暗原色模型去雾

1.1 模型去雾原理

文献[7]提出的大气散射模型如图1 所示。

图1 大气散射模型Fig.1 Atmospheric scattering model

该模型的数学表达式[16-17]如式(1)所示:

其中:P0(λ)为还原图像;P(d,λ)为采集雾图;A∞(λ)为天空光;t(x)为透射率。理论上式(1)是个病态求解问题[18-19],为解决该问题,HE 等[9]提出暗通道先验理论,认为图像R、G、B 三通道像素值至少有1 个近似于0 或等于0,但对于高背景亮度的天空光图像,其最小值非但不等于0,而且远高于0,导致该先验应用失效,还原图像出现光晕效应。

1.2 B-样条曲线拟合

由于高亮度背景或大面积天空光场景还原图像存在Halo 效应,因此需要对透射率灰度直方图进行修正。目前对于直方图修正的方法有很多(如均衡化等),但这些方法不适合本文的修正,因为不同的图像需要修正的灰度级和包络不同,有的需要增强,有的需要抑制,需要根据不同的处理目标而定。为取得更好的修正效果,本文采用三次B-样条曲线的方法拟合灰度包络。三次B-样条曲线的基本原理是将区间[U0,Ui]分为若干个子区间[x0,x1],[x1,x2],…,[xi-1,xi],各区间边界点的值为yi,三次样条插值的表达式[20-21]如下:

其中:Mi、Mi+1为三次样条系数;hi=。将Ⅰ型边界点(xi,yi)条件及其一阶导数和二阶导数代入式(2),可求得系数Mi和Mi+1,进而可以确定相应的三次样条函数[22]。

1.3 改进的二维大津分割法

为取得更好的修正效果,首先需将修正的目标从雾图中分割开来,因此本文采用大津(Otsu)法[23]实现图像分割,其流程如图2 所示。Otsu 法是一种基于最大类间方差的分割方法,由于其良好的分割效果而被广泛应用于灰度图像分割。传统的大津分割法是一维分割,而图像为二维,因此分割结果存在噪声(如图2(c)所示),分割边缘有许多噪声点,这些噪声点的存在会影响还原结果。因此,本文对大津分割法做了改进,即沿横向和纵向分别做分割运算,通过改进边缘噪声点,提高算法的抗噪性能。然而在实际中会有比高背景像素值还高的非背景信息存在,如图2(c)中的汽车车灯所示,这类目标经分割后容易被误分割为背景。为解决这一问题,首先需要做腐蚀运算,然后进行连通运算以去除类似干扰(如图2(d)所示)。

图2 大津法的流程Fig.2 Procedure of Otsu method

2 暗通道还原Halo 效应问题提出

暗通道先验虽然解决了模型去雾病态求解的问题,但在处理高背景亮度或大面积天空光雾图时,还原的图像会出现Halo 现象(如图3 所示),其中图3(a)为高亮背景原雾图,图3(e)为大面积天空光原雾图。图3(b)、图3(f)为对应的经暗通道算法处理后出现光晕的还原结果(光晕现象如图中黑圈所示),其原因是暗通道先验认为在图像R、G、B 三通道上存在最小值0,而实际上在该区域其值不仅不为0,而且远高于0,正是这种误差的存在导致在透射率图上出现暗影,如图3(c)和图3(g)中黑圈所示,通常在该透射率区域像素值较低,经过暗通道处理后亮度较高,从而导致光晕现象。光晕在直方图中表现为存在较低的灰度值(如图3(d)、图3(h)所示),可以通过修正直方图低值区域的方法去除光晕。目前已有对直方图修正的方法,如直方图均衡化等,但这类方法不适合本文,因为本文透射率图修正需要将低值区的灰度向高值区迁移并修正幅值,所以本文采用B-样条曲线拟合与gamma 修正的方法去除光晕。

图3 暗原色去雾正常与失效案例Fig.3 Normal and failure cases of dark primary color defogging

3 B-样条透射率修正算法

灰度直方图形态多样,而B-样条曲线可以通过不同的阶数和控制节点拟合出形态各异的曲线,因此本文采用B-样条曲线对灰度直方图进行拟合。对于B-样条曲线而言,不同的阶数、不同的控制节点产生的样条曲线各不相同,由于本文只对直方图的低值区进行修正,所以修正的范围为直方图第1 个波峰区,如图3(d)、图3(h)所示。

B-样条曲线拟合的是暗通道先验的透射率灰度直方图,欲实现光晕消除,需要对灰度直方图包络进行修正,因此本文采用B-样条+γ 修正算法修正透射率图,以实现光晕去除,B-样条透射率修正的流程如图4 所示(彩色效果见《计算机工程》官网HTML 版本),算法流程如下:

1)计算雾图暗原色透射率t(x),如图4(b)所示,图4(a)为原雾图。

2)计算透射率图的统计直方图并拟合包络。修正的关键是要建立对应区域的包络,本文采用B-样条拟合的方法实现曲线包络的绘制。B-样条曲线包络拟合算法如下:

(1)确定直方图中拟合灰度区的范围,在此范围内建立子区间。对于背景高亮或大面积的天空光透射率直方图,通常在低灰度区存在一个波峰,因此本文将拟合范围选在该波峰范围内。

(2)选取B-样条控制点。对于B-样条拟合曲线而言,控制点的选取至关重要,选取不好则拟合的修正曲线偏差较大,导致修正效果不理想。因此控制点选择应在直方图第一波峰两侧。首先遍历整个直方图找到第1 个波峰和波谷的位置,将此区间分为4 个子区间,区间节点如图4(f)红点所示,区间节点从左到右顺次记为[x0,x1,x2,x3,x4],则4 个区间对应的就是式(2)样条函数基的区间。将各点灰度带入样条插值函数,计算多项式系数Mi,Mi+1,例如对于图4(b)透射率的三次样条曲线拟合系数为,则拟合的三次样条曲线为:

图4(b)经拟合后所确定的灰度包络如图4(c)红色虚线所示。由于在[x0,x1]区间内的基函数为三次方函数,其图像为下凹曲线,致使在此区间上的灰度得到抑制。

(3)采用gamma(γ)函数对所得的灰度包络进行修正[24-25],根据不同的包络选取适当的γ 进行修正,修正公式如下:

其中:c为幅度比例系数,本文取c=1;f为样条曲线;γ为修正指数,其值取1~5 之间(如图4(e)所示),具体选多少需要根据不同的雾图而定。就图4(b)而言,经实验测试,γ取2.5,修正后的灰度包络曲线如图4(c)黄线所示。图4(d)为修正后的透射率图,红色椭圆区域为高亮度区域,相比于图4(b)中相应区域,其灰度有所降低,实现了对指定区域的灰度修正。

(4)基于Otsu 法分割透射率图。对透射率分割是为了定位补偿的高亮度或大面积天空光区域,虽然经过步骤(3)实现了灰度修正,但对于高亮区域或大面积天空光区域外的像素点则无需修正,因此需要将待处理区域与其他区域分割开来,本文采用Otsu 法实现分割。经过Otsu法分割后的结果如图4(g)所示。由图4(g)可知,分割后为二值图像,在目标区域像素值为0,其余为1,因此可以根据这个特点,遍历整个透射率图,区分高背景区和非高背景区,以限定只在高背景区域进行修正,非高背景区不做修正。

图4 B-样条透射率修正的流程Fig.4 Procedure of B-spline transmittance correction

4 实验结果与分析

4.1 实验条件

本文实验的仿真平台为CPU Intel 酷睿i7,内存16 GB,显卡64 位,操作系统Microsoft Windows10,测试软件为Matlab 2016。本文选取的测试样本并非标准图像,而是随机获取的图像样本,包含各种场景不同浓度雾图像,图像大小从200×300 像素到1 024×768 像素不等。

4.2 对比实验

为测试算法的有效性,本文采用具有典型高亮背景雾图作为测试对象,如图5 所示(彩色效果见《计算机工程》官网HTML 版),本文将图5 第1 行称为林间小路雾图,第2 行称为城市浓雾图。由图5(b)可知,由于HE 算法的透射率存在大面积的低灰度区(如椭圆所示),导致还原结果出现Halo 效应(如图5(e)所示)。经本文B-样条曲线修正后,透射率图如图5(d)所示,还原图像如图5(f)所示,通过比较图5(e)和图5(f)可知,背景高亮区域和大面积天空光的Halo 现象都能得到有效缓解甚至消除,表明本文算法可以改善HE 算法产生的Halo 效应。

图5 本文算法与HE 算法的结果对比Fig.5 Results comparison between algorithm in this papper and HE algorithm

4.3 γ 曲线修正

为验证γ 修正系数对去雾效果的影响,本文选取不同γ 值对HE 算法透射率图进行修正,结果如图6所示。本文分别选取γ=[1,1.5,2.5,3]作为测试系数,修正后的透射率为图6(b),图6(c)为HE 算法去雾图像,图6(d)、图6(e)、图6(f)分别为γ=1.5、2.5、3修正后的还原图像。

图6 γ 系数对透射率修正的影响Fig.6 Influence of γ coefficient on transmission correction

由图6 可知,当γ<1 时,还原后图像不仅没有得到改善,对比度还会下降,因此本文只选择γ>1 的修正系数。由图6(d)、图6(e)、图6(f)可知,当γ=1.5,2.5,3 时,还原图像相对于HE 算法都有所改善,但当γ=1.5 时仍有光晕效应存在,当γ=2.5 时,还原图像的对比度和色彩饱和度均为最佳,天空光处的太阳和云彩被分割开来(如图6(e)所示),而HE 算法由于光晕的存在致使天空光区域高亮且连成一片(如图6(c)所示)。当γ=3 时,还原图像整体偏暗,因此针对本样本,γ=2.5 是最优值。当然针对不同的样本,最优值不同,需要根据具体情况而定。

4.4 雾图像还原测试

为对比本文算法与HE 算法的还原效果,本文采用随机采集雾图进行对比测试,结果如图7 所示(彩色效果见《计算机工程》官网HTML 版))。

图7 本文算法与HE 算法的还原效果对比Fig.7 Comparison of restoration effect between algorithm in this paper and HE algorithm

图7(a)为汽车图,图7(b)为荷花图,图7(c)为栈桥图,图7(d)为公路图。图7 第1 行为原雾图(从左到右按浓度由低到高排列),图7 第2 行为HE 算法结果,图7 第3 行为本文算法结果。从HE 算法的去雾结果可知,4 种雾图均有不同程度的光晕现象,不同的是荷花图是由于局部的高亮,而汽车、栈桥和公路图是由于大面积的天空光,由于光晕的存在导致去雾图色彩失真。从本文算法的去雾结果可以看出,HE 算法相应位置处的光晕现象得到有效缓解。但从图7 的改善效果看,对于大面积天空光引起的光晕改善效果优于高亮背景,这点从图7(a)、图7(c)、图7(d)中可以看出,无论从色彩饱和度上,还是从面积上相较于荷花图的改善效果都较为明显。

4.5 图像去雾效果的客观评价

本文以信息熵、局部对比度、峰值信噪比(Peak Signal to Noise Ratio,PSNR)、结构相似度(Structural Similarity Index,SSIM)和平均梯度为指标与其他算法(HE、文献[4]、文献[5]、文献[6]、文献[14]等算法)进行横向对比,测试样本为图7 的汽车、荷花、栈桥、公路图,其对应的测试数据如表1 所示。

表1 不同算法的客观评价指标对比Table 1 Comparison of objective evaluation indicators of different algorithms

图8 为表1 数据的可视化结果,从图8(a)可知,原雾图的信息熵都较低,且信息熵按汽车、荷花、栈桥、公路顺序依次减小,经过文献[4]、HE、文献[14]、文献[5]、文献[6]和本文6 种算法处理后,其信息熵都有所增加,但增加的幅度不同。文献[4]算法的增强幅度最小,由于该算法属于纹理去雾范畴,因此文献[4]信息熵要低于HE 算法,但整体上这两种算法的图像还原效果远不及文献[14]、文献[5]、文献[6]和本文算法。文献[14]算法为HE 算法的改进,效果相对于HE 算法有所提高,然而文献[14]与文献[5]、文献[6]及本文算法相比要略逊一筹,文献[5]、文献[6]和本文算法的信息熵要高于文献[14]算法,说明经本文算法处理后,本文信息熵不仅远高于传统的HE 算法,而且优于HE 算法改进的文献[14]算法。文献[5]、文献[6]是基于深度学习的去雾算法,由图8 可知,在信息熵上其值与本文算法相差不大,甚至在某些指标上还稍优于本文算法,如栈桥、公路图的信息熵等,但文献[5]、文献[6]算法在效率上却远不及本文算法。

图8 不同算法的客观评价结果可视化对比Fig.8 Visual comparison of objective evaluation results of different algorithms

对比度表征图像灰度的反差,PSNR 为峰值信噪比,平均梯度是对边缘信息或高频分量的一种表征,从图8(b)、图8(d)、图8(e)可知,经6 种去雾算法处理后,图像的对比度、PSNR 和平均梯度均有所提高,但处理的效果大致分为2 个层次,文献[4]、HE 和文献[14]算法为稍逊的层次,文献[5]、文献[6]与本文算法为较好的层次。由表1 的各指标数据可知,文献[5]和文献[6]算法除在个别指标上(如荷花图的对比度和PSNR 值,栈桥的对比度等值)稍好外,其余均是本文算法占优,因此综合而言本文算法的整体指标要好于文献[5]和文献[6]算法。

SSIM 是一个有别于对比度、信息熵等参数的指标,其衡量的是2 幅图像的结构相似程度,其值越小表示相似度越小。本文将测试结果与原雾图进行相似度计算,结果发现除了在荷花图上本文算法比文献[6]算法略高外,其余都是最低,表明经本文算法还原后的图像与原图相似度最低,这从另一个角度说明本文算法的去雾效果较好。

综上可知,本文算法相对于HE 等现有算法在信息熵、对比度、PSNR 和平均梯度上都有所提高,SSIM 有所降低,其中信息熵和对比度相比HE 算法最大可分别提高9.9%和10.1%。

4.6 算法并行度评测

为测试算法的执行效率,将本文算法与现有去雾效果较好的文献[4]、文献[5]、文献[6]、文献[14]算法及HE 算法相比较,对比样本为图7 的4 幅雾图(大小为M×N),比较环节为算法的关键步骤,如表2所示。

表2 算法并行度评测结果Table 2 Algorithm parallelism evaluation results

由表2 可知,虽然文献[5]和文献[6]算法在处理效果上与本文算法相近,但在关键步骤的并行度计算上与本文算法相差甚远,文献[5]、HE 和文献[6]算法的运算阶均为M×N,而本文算法的运算阶是M或N阶。尽管在并行度计算上,文献[4]、文献[14]与本文算法同样为M或N阶,但前两者在图像还原效果上不及本文算法。综上所述,无论是从还原效果还是并行度上比较,本文算法的综合性能均优于其他去雾算法。

5 结束语

本文提出基于B-样条曲线加γ修正透射率去除Halo 效应的算法,以透射率直方图统计为基础,通过改进的大津分割法提取补偿区域,引入B-样条曲线拟合低灰度包络,并采用γ修正灰度包络,平滑透射率图,进而去除光晕效应。实验结果表明,相较于HE 等去雾算法,本文算法的执行效率和去雾效果均有大幅提高。下一步将采用神经网络技术进行适量的样本训练,通过梯度下降方法计算损失函数,实现γ的自适应取值,以适应不同场景下的透射率修正。

猜你喜欢
透射率光晕样条
噪声对相干衍射成像重构物体图像的影响
对流-扩散方程数值解的四次B样条方法
三次样条和二次删除相辅助的WASD神经网络与日本人口预测
图像去雾中的大气光强度自适应恢复算法研究
圣诞节的灯光
电流变液光学性能的研究
基于节点最优分布B样条的火箭弹开舱点时间估算方法
用B—样条函数进行近似和建模
凝固的光