作者:胡瀚文, 王猛, 程卫平, 刘宗霖, 陈苗苗
来源:机器人
编辑:东岸因为@一点人工一点智能
原文:水下视觉SLAM的图像滤波除尘与特征增强算法
摘要:将视觉SLAM(同步定位与地图创建)方法应用于水下环境时,扬起的沉积物会导致SLAM特征点提取与追踪困难,而且人工光源的光照不均匀还会引起特征点分布不均与数量较少。针对这些问题,设计了一种水下图像半均值滤波除尘与光照均衡化特征增强算法;根据水中杂质的像素特征,按照“检测-滤波”的顺序采取从外至内的半均值滤波过程消除扬起的沉积物在图像内造成的干扰;同时,通过统计光照均匀、充足区域内的像素分布,得到同一地形下不同位置处的环境特征相似的规律,并将其用于求解水下光照模型,将图像还原为光照均衡的状态,以此来增强图像的特征,进而实现更多有效特征点的提取。最后,利用该滤波与增强算法对多种海底地形数据集进行处理,并在ORB-SLAM3算法下测试运行。结果表明,滤波与增强后的数据集能够将特征点提取数量和构建地图的点云数量平均提高200%。综上,图像滤波除尘与特征增强算法能够有效提高视觉SLAM算法的运行效果与稳定性。
01 引言
水下视觉SLAM,即是在水下场景中,通过对所采集的图像进行特征匹配与追踪,完成对相机的轨迹定位与对周围环境的构建[1],在无人勘测、自由巡航等领域有巨大的应用潜力。
水下环境与陆地环境之间存在巨大差异。首先,在水下尤其是深水中,主要依赖人工光源照明,而且水对光的吸收与散射作用[2]导致照明范围有限且清晰度不足,水下图像特征提取困难,特征匹配度不高。此外,潜水器在近底作业或观察时,本体或推进器的扰动会将海底的沉积物扬起,如图 1(a)所示,此为水下扬尘现象。这些被扬起的沉积物与背景环境亮度色彩差距明显,因此会被误选取为高质量的特征点参与匹配,大量无效的特征点会对轨迹的求解与定位产生较大影响,极易出现跟踪匹配目标丢失的问题。由于以上问题的存在,水下图像并不能直接应用于视觉SLAM中,需要对图像进行预处理,使得其在以ORB-SLAM[3-4]为代表的各类开源视觉SLAM框架[5-6]中具有良好的表现。
图 1 海山区有、无沉积物干扰条件下的彩色对比图
为解决上述问题,应对水下图像进行两方面处理,分别为对水下扬起沉积物的过滤以及对有效特征的增强。目前缺乏有关对沉积物或杂质的特征分析以及其对图像所造成干扰的研究,而有关水下图像增强的算法研究较多,可以分为传统算法、去雾增强算法以及基于深度学习的算法3大类。
这3类算法中,传统方法包括滤波[7]、直方图均衡化[8]以及独立成分分析[9-11]等,这些方法简单易用,但缺乏足够的灵活性来应对水下的复杂情况;去雾增强算法包括暗通道去雾[12]和Retinex去雾[13]等,它们通过建立光照模型[2]并提取图像本身的反射光成分来实现图像增强,这种算法的图像复原能力很强,但应用在水下时需要用深度信息计算光的衰减[2],在仅有灰度图的情况下对深度的估算具有较大的误差,增强效果有限;同时,基于深度学习的图像增强算法,例如用卷积神经网络增强DSLR(数码单反)图像的算法[14]和WESPE(weakly supervised photo enhancer)[15]等,无论在视觉效果或是图像评价指标上均表现出色,但其需要大量的数据集来训练生成式对抗网络,而且泛化能力不足,不能适应数据集外多样的环境。
本文工作可以分为两大部分:首先,为消除扬起沉积物对特征提取与匹配的干扰,通过分析沉积物的特征,设计一种半均值滤波算法,避免了视觉SLAM系统出现跟踪定位失败的情况;其次,为解决照明范围限制和清晰度不足的问题,在已有研究的基础上,利用深海同一地形环境特征的相似性建立并求解光照模型,设计一种光照均衡化算法,用于对水下图像进行特征增强。
02 半均值滤波算法
2.1 图像沉积物杂质的特征
图 1为水下机器人在海底作业时拍摄的图像,图 1(a)展示了水中由于潜水器运动或螺旋桨扰动而扬起的沉积物(黄色的杂质)对图像的干扰,图 1(b)则为无沉积物干扰时的图像。
如图 1(a)所示,大量水下沉积物杂质弥散在空间中,它们具有如下特征:
1) 粒度极小,一般在10个像素的范围内;
2) 与背景像素灰度值对比度极高,亮度差异很大;
3) 位置分散,不会显著影响背景图像的特征分布。
基于以上分析,半均值滤波算法在尽可能不影响原有的地形相关特征的基础上,滤掉被扬起的沉积物杂质,以提高特征点提取的有效性。
图 2为滤波示意图,整个矩形框表示图片,矩形内部的方形表示宽度为
(w)、高度为(h)的滤波窗口(I);(p_{i,j})表示以图片左上角为坐标原点,按照图中坐标轴所示方向建立的坐标系下第(i)行第(j)列的像素灰度值;而(I_{i,j})则表示以第(i)行(j)列像素点为中心的滤波窗口。针对像素点(P_{i,j})位置的滤波过程记作
图 2 半均值滤波示意图
其中(I^{in}_{i,j})和(I^{out}_{i,j})分别表示窗口(I_{i,j})覆盖的位置在滤波前后所有像素构成的像素矩阵,(F_i(・))为滤波函数。
下面将详细阐述式(1)中函数(F_i(・))的运行过程,分为检测与滤波两部分。
(1) 检测。设整张图片的像素灰度均值为
(bar{p}),如果窗口(I^{in}_{i,j})的所有边缘像素点(如图 3中的0号位)的灰度均值(bar{e}_{i,j})与(bar{p})接近,即
图 3 w=7 、h=7 条件下的半均值滤波过程
其中(τ)为环境阈值,则认为该窗口边缘像素点处于图像的背景环境中。而后,比较窗口中心像素灰度值(P_{i,j})与边缘像素灰度均值(bar{e} _{i,j}),若满足
其中(θ)为杂质阈值,则依据2.1节第2) 个特性,认为
(P_{i,j})为杂质像素点,要进行滤波。依据小概率事件的判别阈值,(θ)取图像像素灰度值标准差的3倍。
(2) 滤波。操作的具体顺序如图 3所示。边缘像素点设为0号位不变,中间的像素点依次按照从外到内、从角到边的顺序检测并更新(图中序号的顺序)。更新的规则为:如果当前像素点和与其相邻的更新过的像素点的灰度均值差小于滤波阈值
(r),则不更新当前像素点,以此保护原始特征的完整性;否则,以相邻的更新过的像素的灰度均值作为新的像素灰度值。在图 3中,绿色箭头表示用所有指向该像素点的相邻像素点的灰度均值评估是否更新该像素点。例如,图中2个0号位像素指向1号位像素,如果这2个0号位像素的灰度均值与1号位的像素灰度值差距小于(r),则不更新1号位像素灰度值,否则将其更新为2个0号位像素的灰度均值。而后按照从两端到中间的顺序依次更新各个边像素,以此类推从外至内逐层检测更新,直到最终处理中心点(P_{i,j})(6号位),遍历了窗口所有像素后结束,最后输出更新后的像素矩阵至
(I^{out} _{i,j})。
由于滤波过程中采用外侧已检测的相邻像素点而不是所有相邻像素点的灰度均值更新当前像素点,因此本算法被命名为半均值滤波算法。
2.3 算法运行条件
算法运行时窗口的长、宽一般取图像尺度的1%~2%,如果设计得太大则会滤掉原始的背景特征,如果太小则会无法成功过滤杂质。环境阈值(τ)取20,滤波阈值(r)取20。对环境阈值(τ)的选取主要基于无沉积物干扰的场景中像素的方差,对滤波阈值(r)的选取基于SLAM算法中提取ORB特征点时的阈值[4]。
本算法适用于对杂质特征明显、背景特征风格统一的图像的处理,因此并不仅限于对扬起沉积物的过滤,但同时可能会破坏色彩过丰富的特征。
2.4 图像处理效果
本节对算法进行初步测试,测试图像大小为450×700,窗口长、宽被设置为w=7和h=7。
图 4(a)为有杂质的海底图像,图 4(b)是经过半均值滤波算法处理后的输出图像。图中,半均值滤波算法能够有效地去除图像中被扬起的沉积物杂质,并保留了环境本身的特征,取得了良好的效果。靠近图像右边缘的杂质未被去除,这主要是由于其尺度较大,因此被算法认定为有效特征而保留下来。
图 4 半均值滤波算法的运行效果对比
图5为图4除杂质前后图像的ORB特征提取情况。图中仅展示前500个特征点(绿色标记)。原图的特征点大量分布于杂质与背景的边缘,而除杂质后图像的特征点则有效提取到背景位置,因此可以证明半均值滤波算法对特征筛选的有效性。
图 5 对图 4图像提取ORB特征的结果对比
03 光照均衡化算法
3.1 光照模型分析
直方图均衡化算法[8]被较多应用于图像的预处理,其将整张图的初始像素灰度值分布通过非线性变换映射为均匀分布,从而达到图像增强的目的。然而,该算法对亮度或光照分布不均匀的图片,只会使亮处更亮,暗处更暗,不能很好地起到特征增强的作用。而深水图像由于人工光源照明范围的限制,其环境就是处于这种亮度差异极大的状态。
图 6(a)为原始图像,中心区域亮度大且清晰,边缘区域亮度低且模糊,图 6(b)为将该图作直方图均衡化的效果,虽然均衡化后图像整体亮度差异变大,但局部区域的对比度并没有有效增强,因此需要解决光照不均衡的问题。
图 6 直方图均衡化效果对比图
3.1.1 深海光照模型图 6(a)中,中间区域明亮且清晰,是由于景物反射光成分占比较大;而边缘灰暗且模糊,则是由于光照范围的不足使得反射光占比降低,散射光占比提升。
为还原环境的本身特征使其不受光照范围与强度的影响,建立图 7的光照模型[2],图像可被看作是景物反射光和水中散射光的叠加,满足
图 7 水下光照模型
其中(P_{i,j})表示图像在((i,j))位置的光强,也是图像在该位置的灰度值,(q_{i,j})为该位置反射光光强,(a_{i,j})为散射光光强,(w)为成分权重。上述公式主要应用于光照分布较为均匀的水下场景[2, 12],但由于人工光源照射范围的限制导致不同位置的光照强度不同,因此在式(2) 的基础上引入光照范围衰减系数(α),满足
其中(α_{i,j})表示位置((i,j))的衰减系数,
(q_{i,j})表示该位置在光照充足、均匀条件下的反射光强。光照均衡化算法,即是将本来由于光照范围限制导致不同位置处亮度与对比度不均匀的图像,通过求解式(3) 光照模型,还原为光照充足且均匀的情况下图像的状态,以此增强图像并解决像素分布不均导致的直方图均衡化效果欠佳的问题。
3.1.2 光照分布不变性
图 8所示为海山地形的2张图片,以坐标点(250,350) 为中心,截取150×200大小的窗口,保证区域处于光照最充足的地方,计算图中白色矩形区域内像素的分布情况。图 9为2个窗口的像素分布直方图,表 1为二者的均值和标准差,二者的分布极为相似。
图 8 海山区不同位置的两张图片
图 9 图 8两张图片选中区域的像素分布直方图
表 1 图 8两张图片选中区域的像素灰度均值与方差
因此可以假定:若光照条件相同且充足,海底相同地形的不同区域,像素灰度值的分布近似相同。本文将该规律称为同一地形光照分布的不变性。
基于同一地形环境特征的相似性,可以间接地近似求解光照模型中的范围衰减系数(α)与权重(w),进而还原光照匀、充足时的光强(q),算法见3.2节。
3.2 光照均衡化模型
假设以像素点(P_{i,j})为中心、尺寸为20×20的窗口
(I_{i,j})所覆盖像素的灰度均值为(μ_{i,j}),标准差为(σ_{i,j});
选取各窗口覆盖范围内像素点的灰度均值的最大值(μ_{max})作为基准亮度,并认为该位置的范围衰减系数
(α)为1。基于3.1.2节光照分布的不变性可知,在光照充足的情况下,每一个窗口的像素分布的均值和标准差应当大致相同。通过各个窗口(μ_{i,j})的差别可以得到不同位置的光照衰减系数:
由于窗口(I_{i,j})的范围较小,因此可以近似认为(I_{i,j})范围内散射光光强(a)不变,即在窗口内任意位置,散射光强均为常数,故方差(σ^2_{i,j})满足
其中(σ^2_{qi,j})表示反射光在窗口(I_{i,j})
内分布的方差,(bar{q}_{i,j})为反射光在该窗口内的均值。寻找所有窗口中在去除衰减系数影响后标准差(σ_{i,j}/α_{i,j})的最大值,记为(σ_{αmaxx}),满足
并认为在该位置散射光比重近似为0,即ω=1,同时基于3.1.2节标准差不变的假设
可解得反射光权重(w_{i,j})满足
最后求解散射光(a)。依据暗通道理论[11],在没有自然光干扰的时候,每个窗口(I_{i,j})中反射光像素灰度值
(q)的最小值接近0,即令
因此,有
其中(P^i_{i,j_min})表示窗口(I_{i,j})中图像光强的最小值,故
衰减系数(α_{i,j})和比例系数(w_{i,j})依据式(4)(5) 求得,因此可得到
(a_{i,j`})。最后根据式(3)~(6) 可求得
对每个像素点进行上述计算后,即能还原光照均匀、充足条件下的像素分布(q),实现特征的增强。随后,对还原的图像再进行直方图均衡化,便能充分避免光照不均匀导致的对比度增强不足的问题。
图10为光照均衡化增强算法的总体结构流程。
图 10 光照均衡化增强算法结构图
3.3 图像增强效果
图 11所示为将图像转化为灰度图后进行图像增强的结果。图 11(a)为原始灰度图,图 11(b)为用光照均衡化算法还原的图像,图 11(c)为将图 11(b)再进行直方图均衡化的效果。由图可知,还原后的图像整体亮度分布更加均衡,而将还原后的图像进行直方图均衡化处理,则能在全局范围内将图像的对比度有效增强。
图 11 光照均衡化增强算法效果
本算法预先确定的窗口大小一般取图像尺度的5%。图像大小为400×750,故窗口长、宽均为20。光照均衡化算法主要用于处理灰度图,对大多光照分布不均匀且背景特征较为统一的图片均具有较好的还原增强效果。
04 实验
本节对真实的水下视频数据集先后进行图像半均值滤波和光照均衡化处理,分别利用处理后的数据集与原始数据集运行ORB-SLAM3算法[3],并比较运行结果。两种算法的具体运行流程如图 12所示。
图12 图像预处理算法总流程图
4.1 实验评估指标
从图像增强效果以及视觉SLAM运行效果两方面评估算法的有效性。
4.1.1 图像增强效果
衡量图像的增强效果主要集中于三方面:首先,衡量图像的清晰度与对比度是否有明显提升,一般采用平均梯度(MG)评估;其次,检测增强后的图像是否尽可能保留了原始图像的信息,一般采用结构相似性(SSIM)和峰值信噪比(PSNR)计算图像的结构相似性;最后,通过观察处理前后的图像,直观分析增强效果。
1) 平均梯度[16]用来衡量图像的对比度,平均梯度越大则对比度越大。
其中(P_{i,j})表示((i,j))位置的像素灰度值,图像大小为(H×W)。
2) 结构相似性[17-18]用来评估处理后图像与原始图像之间像素的相关性。
其中(μ_{x})和(μ_{y})为2幅图像的灰度均值,
(σ_{X})和(σ_{y})为标准差,而(σ_{}xy)是2幅图像的灰度协方差,(C_{1})和(C_{2})为常量。
3) 峰值信噪比[19]可以反映被处理后的图像与原始图像之间的相似程度,和SSIM功能类似。
其中(L_{MSE})为处理前后两张图片的均方误差,(ε)
为二进制下的像素位数,取8。
4.1.2 视觉SLAM运行效果
图像增强算法对视觉SLAM系统的作用表现为能够更方便地提取到更多的有效特征。本文通过比较特征点平均数量来衡量特征提取的难度,采用最终建图点的数量评估有效特征的提升情况。
1) 图像特征点的平均提取数量。实验中取消ORB-SLAM3算法对于特征点提取数量的上限限制,统计每一帧图像的ORB特征点数量并计算各个数据集下所有图像特征点数量的平均值。
2) 地图点构建数量。在各数据集下运行ORB-SLAM3算法,统计每次运行结束后构建的点云图中地图点的数量。
4.2 实验设计
4.2.1 实验数据集
如表 2所示,实验使用海山区、落石区和结核区3种地形下ROV(遥控潜水器)作业的拍摄视频,帧率为30帧/秒,视频各截取1000个连续帧形成图像数据集,对海山区进行半均值滤波(SMF)处理,对结核区和落石区以及海山区滤波后的图像进行光照均衡化(IE)处理,并与直方图均衡化(HE)算法[8]、DCP(dark channel prior)去雾算法[12]和Cho[2]的水下可视性增强(underwater visibility enhancement)算法进行效果对比。
表 2 实验数据集信息
4.2.2 实验环境
实验环境如表 3所示。
表 3 实验环境
4.3 实验结果
4.3.1 图像处理结果
1) 对海山区的原始灰度图作半均值滤波处理,处理前后的指标如表 4所示,效果如图 13所示。
表 4 海山区图像半均值滤波结果
图 13 海山区图像半均值滤波处理效果
2) 对海山区滤波后图像、落石区和结核区原灰度图作光照均衡化增强处理,结果见表 5~7,效果图见图 14~16。
表 5 海山区图像指标
表 6 落石区图像指标
表 7 结核区图像指标
图 14 海山区图像预处理效果及对比
图 15 落石区图像预处理效果及对比
图 16 结核区图像预处理效果及对比
4.3.2 图像处理结果分析
如图 12、14~16所示,半均值滤波算法对海山区图像中被扬起的沉积物有很好的消除作用。同时,相比于直方图均衡化算法、暗通道去雾算法和Cho算法,海山区、落石区和结核区图像在增强后全局亮度更加均衡,对比度更清晰。
分析表 5~7的图像指标可以发现,半均值滤波算法的SSIM和PSNR指标都比较大,表明滤波后的图像在消除了沉积物杂质干扰的前提下,较好地保留了原始图像的环境特征。同时,光照均衡化算法的SSIM和PSNR指标偏低,这是由于其改变了原始图像的光照状态和局部像素分布,因此相对降低了与原始图像的相似性,其处理的图像的MG指标显著大于原始图像以及对比算法处理的图像,表明了光照均衡化算法对提升对比度与清晰度的有效性。
对比实验结果发现,MG最大的地形为海山区,其次为结核区,最后为落石区,这在一定程度上反映了不同地形特征提取难度的差别。
4.4 SLAM运行结果
4.4.1 视觉SLAM运行结果
表 8~10为视觉SLAM算法在各个数据集上的运行结果。海山区使用无处理图像运行时出现了特征点跟踪丢失的问题,地图不完整,因此海山区的比较基准采用半均值滤波后的数据集,其余地形仍然采用无处理图像的数据集。
表 8 海山区视觉SLAM运行结果
表 9 落石区视觉SLAM运行结果
表 10 结核区视觉SLAM运行结果
4.4.2 SLAM运行结果分析
视觉SLAM算法的运行结果表明,本文所设计的光照均衡化算法能提取更多的特征点,提升比例约为200%,除此之外,本文算法的地图点数量相比于原图提升也在200% 左右。综上,本文的光照均衡化增强算法在SLAM系统下的运行效果远优于原图与对比算法。
图 17为ORB-SLAM算法生成的点云地图。海山区地图点最密集,落石区地图点主要集中在落石与沉积物的边缘,而结核区的特征点分散在整个地图区域内。结合图像处理结果可知,图像平均特征点提取数量与图像的MG成正相关关系,也可证明MG用于衡量图像增强效果的有效性。
图 17 ORB-SLAM算法点云图
综上所述,半均值滤波算法能够在有效去除图像中杂质的同时保留原始图像的结构特征;光照均衡化增强算法能够大幅度提高图像的清晰度,由此提高ORB-SLAM算法提取到的特征点数量与最终的建图点数量。
05 结论
提出了用于水下视觉SLAM图像处理的半均值滤波与光照均衡化算法,用于解决水下光照不均匀、有扬起沉积物干扰以及特征不明显的问题。通过实验发现,本算法能够有效防止图像杂质干扰导致的SLAM轨迹跟踪丢失问题,同时显著提高检测特征点的数量,提高地图匹配点个数,使视觉SLAM系统在水下的表现更稳定有效。
1. 45个自动驾驶开源数据集总结
2. 书籍推荐-《大规模SLAM技术》
3. 书籍推荐-《ROS2机器人编程简明教程》
4. 基于多传感器融合的定位和建图系统
5. 最新|3D SLAM关于z轴精度的优化思路整理
6. 书籍推荐-《自主移动机器人与多机器人系统:运动规划、通信和集群》
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net