水下视觉SLAM,即是在水下场景中,通过对所采集的图像进行特征匹配与追踪,完成对相机的轨迹定位与对周围环境的构建[1],在无人勘测、自由巡航等领域有巨大的应用潜力。
水下环境与陆地环境之间存在巨大差异。首先,在水下尤其是深水中,主要依赖人工光源照明,而且水对光的吸收与散射作用[2]导致照明范围有限且清晰度不足,水下图像特征提取困难,特征匹配度不高。此外,潜水器在近底作业或观察时,本体或推进器的扰动会将海底的沉积物扬起,如图 1(a)所示,此为水下扬尘现象。这些被扬起的沉积物与背景环境亮度色彩差距明显,因此会被误选取为高质量的特征点参与匹配,大量无效的特征点会对轨迹的求解与定位产生较大影响,极易出现跟踪匹配目标丢失的问题。由于以上问题的存在,水下图像并不能直接应用于视觉SLAM中,需要对图像进行预处理,使得其在以ORB-SLAM[3-4]为代表的各类开源视觉SLAM框架[5-6]中具有良好的表现。
为解决上述问题,应对水下图像进行两方面处理,分别为对水下扬起沉积物的过滤以及对有效特征的增强。目前缺乏有关对沉积物或杂质的特征分析以及其对图像所造成干扰的研究,而有关水下图像增强的算法研究较多,可以分为传统算法、去雾增强算法以及基于深度学习的算法3大类。
这3类算法中,传统方法包括滤波[7]、直方图均衡化[8]以及独立成分分析[9-11]等,这些方法简单易用,但缺乏足够的灵活性来应对水下的复杂情况;去雾增强算法包括暗通道去雾[12]和Retinex去雾[13]等,它们通过建立光照模型[2]并提取图像本身的反射光成分来实现图像增强,这种算法的图像复原能力很强,但应用在水下时需要用深度信息计算光的衰减[2],在仅有灰度图的情况下对深度的估算具有较大的误差,增强效果有限;同时,基于深度学习的图像增强算法,例如用卷积神经网络增强DSLR(数码单反)图像的算法[14]和WESPE(weakly supervised photo enhancer)[15]等,无论在视觉效果或是图像评价指标上均表现出色,但其需要大量的数据集来训练生成式对抗网络,而且泛化能力不足,不能适应数据集外多样的环境。
本文工作可以分为两大部分:首先,为消除扬起沉积物对特征提取与匹配的干扰,通过分析沉积物的特征,设计一种半均值滤波算法,避免了视觉SLAM系统出现跟踪定位失败的情况;其次,为解决照明范围限制和清晰度不足的问题,在已有研究的基础上,利用深海同一地形环境特征的相似性建立并求解光照模型,设计一种光照均衡化算法,用于对水下图像进行特征增强。
2 半均值滤波算法(Semi-mean filter algorithm) 2.1 图像沉积物杂质的特征图 1为水下机器人在海底作业时拍摄的图像,图 1(a)展示了水中由于潜水器运动或螺旋桨扰动而扬起的沉积物(黄色的杂质)对图像的干扰,图 1(b)则为无沉积物干扰时的图像。
如图 1(a)所示,大量水下沉积物杂质弥散在空间中,它们具有如下特征:
1) 粒度极小,一般在10个像素的范围内;
2) 与背景像素灰度值对比度极高,亮度差异很大;
3) 位置分散,不会显著影响背景图像的特征分布。
基于以上分析,半均值滤波算法在尽可能不影响原有的地形相关特征的基础上,滤掉被扬起的沉积物杂质,以提高特征点提取的有效性。
2.2 半均值滤波模型图 2为滤波示意图,整个矩形框表示图片,矩形内部的方形表示宽度为
$ \begin{align} \mathit{\boldsymbol{I}}_{i, j}^{\text{out}} =\mathit{\boldsymbol{F}}_{\mathit{\boldsymbol{I}}} (\mathit{\boldsymbol{I}}_{i, j}^{\text{in}}) \end{align} $ | (1) |
其中
下面将详细阐述式(1)中函数
(1) 检测。设整张图片的像素灰度均值为
$ \begin{align*} | \bar e_{i, j} -\bar p |<\tau \end{align*} $ |
其中
$ \begin{align*} | p_{i, j} -\bar e_{i, j} |>\theta \end{align*} $ |
其中
(2) 滤波。操作的具体顺序如图 3所示。边缘像素点设为0号位不变,中间的像素点依次按照从外到内、从角到边的顺序检测并更新(图中序号的顺序)。更新的规则为:如果当前像素点和与其相邻的更新过的像素点的灰度均值差小于滤波阈值
由于滤波过程中采用外侧已检测的相邻像素点而不是所有相邻像素点的灰度均值更新当前像素点,因此本算法被命名为半均值滤波算法。
2.3 算法运行条件算法运行时窗口的长、宽一般取图像尺度的1%~2%,如果设计得太大则会滤掉原始的背景特征,如果太小则会无法成功过滤杂质。环境阈值
本算法适用于对杂质特征明显、背景特征风格统一的图像的处理,因此并不仅限于对扬起沉积物的过滤,但同时可能会破坏色彩过丰富的特征。
2.4 图像处理效果本节对算法进行初步测试,测试图像大小为
图 4(a)为有杂质的海底图像,图 4(b)是经过半均值滤波算法处理后的输出图像。图中,半均值滤波算法能够有效地去除图像中被扬起的沉积物杂质,并保留了环境本身的特征,取得了良好的效果。靠近图像右边缘的杂质未被去除,这主要是由于其尺度较大,因此被算法认定为有效特征而保留下来。
图 5为图 4除杂质前后图像的ORB特征提取情况。图中仅展示前500个特征点(绿色标记)。原图的特征点大量分布于杂质与背景的边缘,而除杂质后图像的特征点则有效提取到背景位置,因此可以证明半均值滤波算法对特征筛选的有效性。
直方图均衡化算法[8]被较多应用于图像的预处理,其将整张图的初始像素灰度值分布通过非线性变换映射为均匀分布,从而达到图像增强的目的。然而,该算法对亮度或光照分布不均匀的图片,只会使亮处更亮,暗处更暗,不能很好地起到特征增强的作用。而深水图像由于人工光源照明范围的限制,其环境就是处于这种亮度差异极大的状态。
图 6(a)为原始图像,中心区域亮度大且清晰,边缘区域亮度低且模糊,图 6(b)为将该图作直方图均衡化的效果,虽然均衡化后图像整体亮度差异变大,但局部区域的对比度并没有有效增强,因此需要解决光照不均衡的问题。
图 6(a)中,中间区域明亮且清晰,是由于景物反射光成分占比较大;而边缘灰暗且模糊,则是由于光照范围的不足使得反射光占比降低,散射光占比提升。
为还原环境的本身特征使其不受光照范围与强度的影响,建立图 7的光照模型[2],图像可被看作是景物反射光和水中散射光的叠加,满足
$ \begin{align} p_{i, j} =q_{i, j} \omega +a_{i, j} ({1-\omega}) \end{align} $ | (2) |
其中
$ \begin{align} p_{i, j} =\left[q_{i, j} \omega_{i, j} +a_{i, j} \left(1-\omega_{i, j}\right)\right]\alpha_{i, j} \end{align} $ | (3) |
其中
图 8所示为海山地形的2张图片,以坐标点
因此可以假定:若光照条件相同且充足,海底相同地形的不同区域,像素灰度值的分布近似相同。本文将该规律称为同一地形光照分布的不变性。
基于同一地形环境特征的相似性,可以间接地近似求解光照模型中的范围衰减系数
假设以像素点
$ \begin{align*} \mu_{i, j} & =\sum\limits_{m=-9}^{10} \sum\limits_{n=-9}^{10} p_{i+m, j+n} /400 \\ \sigma_{i, j}^{2} & =\sum\limits_{m=-9}^{10} \sum\limits_{n=-9}^{10} (p_{i+m, j+n} -\mu_{i, j})^{2}/399 \end{align*} $ |
选取各窗口覆盖范围内像素点的灰度均值的最大值
$ \begin{align} \alpha_{i, j} =\mu_{i.j} /\mu_{\max} \end{align} $ | (4) |
由于窗口
$ \begin{align*} \sigma_{i, j}^{2} & =\sum\limits_{m=-9}^{10} \sum\limits_{n=-9}^{10} (p_{i+m, j+n} -\mu_{i, j})^{2}/399 \\ & =\sum\limits_{m=-9}^{10} \sum\limits_{n=-9}^{10} \big[q_{i+m, j+n} \omega_{i, j} +a_{i+m, j+n} (1-\omega_{i, j}) \\ &\quad -\bar q_{i, j} \omega_{i, j} -\bar a_{i, j} (1-\omega_{i, j})\big]^{2}\alpha_{i, j}^{2} /399 \\ & =\omega_{i, j}^{2} \alpha_{i, j}^{2} \sum\limits_{m=-9}^{10} \sum\limits_{n=-9}^{10} (q_{i+m, j+n} -\bar q_{i, j})^{2}/399 \\ & =\omega_{i, j}^{2} \alpha_{i, j}^{2} \sigma_{q\_i, j}^{2} \end{align*} $ |
其中
$ \begin{align*} \sigma_{\alpha \_{\max}} =\max \frac{\sigma_{i, j} \mu_{\max}} {\mu_{i, j}} \end{align*} $ |
并认为在该位置散射光比重近似为0,即
$ \begin{align*} \sigma_{q\_i, j}^{2} =\sigma_{\alpha \_{\max}}^{2} \end{align*} $ |
可解得反射光权重
$ \begin{align} \omega_{i, j} =\frac{\sigma_{i, j}} {\alpha_{i, j} \sigma_{\alpha \_{\max}}} =\frac{\sigma_{i, j} \mu_{\max}} {\mu_{i.j} \sigma_{\alpha \_{\max}}} \end{align} $ | (5) |
最后求解散射光
$ \begin{align*} q_{^{_{i, j\_{\min}}}}^{I} =0 \end{align*} $ |
因此,有
$ \begin{align*} p_{i, j\_{\min}}^{I} & =q_{i, j\_{\min}}^{I} \omega_{i, j} \alpha_{i, j} +a_{i, j} (1-\omega_{i, j} )\alpha_{i, j} \\ & =a_{i, j} (1-\omega_{i, j})\alpha_{i, j} \end{align*} $ |
其中
$ \begin{align} a_{i, j} =\frac{p_{i, j\_{\min}}^{I}} {(1-\omega_{i, j})\alpha_{i, j}} \end{align} $ | (6) |
衰减系数
$ \begin{align*} q_{i, j} =(p_{i, j} -p_{i, j\_{\min}}^{I})\frac{\sigma_{\alpha \_{\max}}} {\sigma_{i, j}} \end{align*} $ |
对每个像素点进行上述计算后,即能还原光照均匀、充足条件下的像素分布
图 10为光照均衡化增强算法的总体结构流程。
图 11所示为将图像转化为灰度图后进行图像增强的结果。图 11(a)为原始灰度图,图 11(b)为用光照均衡化算法还原的图像,图 11(c)为将图 11(b)再进行直方图均衡化的效果。由图可知,还原后的图像整体亮度分布更加均衡,而将还原后的图像进行直方图均衡化处理,则能在全局范围内将图像的对比度有效增强。
本算法预先确定的窗口大小一般取图像尺度的5%。图像大小为
本节对真实的水下视频数据集先后进行图像半均值滤波和光照均衡化处理,分别利用处理后的数据集与原始数据集运行ORB-SLAM3算法[3],并比较运行结果。两种算法的具体运行流程如图 12所示。
从图像增强效果以及视觉SLAM运行效果两方面评估算法的有效性。
4.1.1 图像增强效果衡量图像的增强效果主要集中于三方面:首先,衡量图像的清晰度与对比度是否有明显提升,一般采用平均梯度(MG)评估;其次,检测增强后的图像是否尽可能保留了原始图像的信息,一般采用结构相似性(SSIM)和峰值信噪比(PSNR)计算图像的结构相似性;最后,通过观察处理前后的图像,直观分析增强效果。
1) 平均梯度[16]用来衡量图像的对比度,平均梯度越大则对比度越大。
$ \begin{align*} l_{\rm MG} =\frac{\sum\limits_{i=1}^{H-1} \sum\limits_{j=1}^{W-1} \sqrt{(p_{i, j} -p_{i+1.j})^{2}+(p_{i, j} -p_{i, j-1})^{2}}} {\sqrt{2}(H-1)(W-1)} \end{align*} $ |
其中
2) 结构相似性[17-18]用来评估处理后图像与原始图像之间像素的相关性。
$ \begin{align*} l_\text{SSIM} (x, y)=\frac{(2\mu_{x} \mu_{y} +C_{1})(2\sigma_{xy} +C_{2})}{(\mu_{x}^{2} +\mu_{y}^{2} +C_{1})(\sigma_{x}^{2} +\sigma_{y}^{2} +C_{2})} \end{align*} $ |
其中
3) 峰值信噪比[19]可以反映被处理后的图像与原始图像之间的相似程度,和SSIM功能类似。
$ \begin{align*} l_\text{PSNR} =10\lg \frac{(2^{\varepsilon} -1)^{2}}{l_\text{MSE}} \end{align*} $ |
其中
图像增强算法对视觉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)算法进行效果对比。
实验环境如表 3所示。
1) 对海山区的原始灰度图作半均值滤波处理,处理前后的指标如表 4所示,效果如图 13所示。
2) 对海山区滤波后图像、落石区和结核区原灰度图作光照均衡化增强处理,结果见表 5~7,效果图见图 14~16。
如图 12、14~16所示,半均值滤波算法对海山区图像中被扬起的沉积物有很好的消除作用。同时,相比于直方图均衡化算法、暗通道去雾算法和Cho算法,海山区、落石区和结核区图像在增强后全局亮度更加均衡,对比度更清晰。
分析表 5~7的图像指标可以发现,半均值滤波算法的SSIM和PSNR指标都比较大,表明滤波后的图像在消除了沉积物杂质干扰的前提下,较好地保留了原始图像的环境特征。同时,光照均衡化算法的SSIM和PSNR指标偏低,这是由于其改变了原始图像的光照状态和局部像素分布,因此相对降低了与原始图像的相似性,其处理的图像的MG指标显著大于原始图像以及对比算法处理的图像,表明了光照均衡化算法对提升对比度与清晰度的有效性。
对比实验结果发现,MG最大的地形为海山区,其次为结核区,最后为落石区,这在一定程度上反映了不同地形特征提取难度的差别。
4.4 SLAM运行结果 4.4.1 视觉SLAM运行结果表 8~10为视觉SLAM算法在各个数据集上的运行结果。海山区使用无处理图像运行时出现了特征点跟踪丢失的问题,地图不完整,因此海山区的比较基准采用半均值滤波后的数据集,其余地形仍然采用无处理图像的数据集。
视觉SLAM算法的运行结果表明,本文所设计的光照均衡化算法能提取更多的特征点,提升比例约为200%,除此之外,本文算法的地图点数量相比于原图提升也在200% 左右。综上,本文的光照均衡化增强算法在SLAM系统下的运行效果远优于原图与对比算法。
图 17为ORB-SLAM算法生成的点云地图。海山区地图点最密集,落石区地图点主要集中在落石与沉积物的边缘,而结核区的特征点分散在整个地图区域内。结合图像处理结果可知,图像平均特征点提取数量与图像的MG成正相关关系,也可证明MG用于衡量图像增强效果的有效性。
综上所述,半均值滤波算法能够在有效去除图像中杂质的同时保留原始图像的结构特征;光照均衡化增强算法能够大幅度提高图像的清晰度,由此提高ORB-SLAM算法提取到的特征点数量与最终的建图点数量。
5 结论(Conclusion)提出了用于水下视觉SLAM图像处理的半均值滤波与光照均衡化算法,用于解决水下光照不均匀、有扬起沉积物干扰以及特征不明显的问题。通过实验发现,本算法能够有效防止图像杂质干扰导致的SLAM轨迹跟踪丢失问题,同时显著提高检测特征点的数量,提高地图匹配点个数,使视觉SLAM系统在水下的表现更稳定有效。
[1] |
Sun C Z, Zhang B, Wang J K, et al. A review of visual SLAM based on unmanned systems[C]//2nd International Conference on Artificial Intelligence and Education. Piscataway, USA: IEEE, 2021: 226-234.
|
[2] |
Cho Y, Kim A. Visibility enhancement for underwater visual SLAM based on underwater light scattering model[C]//IEEE International Conference on Robotics and Automation. Piscataway, USA: IEEE, 2017: 710-717
|
[3] |
Campos C, Elvira R, Rodríguez J J G, et al. ORB-SLAM3: An accurate open-source library for visual, visual-inertial, and multimap SLAM[J]. IEEE Transactions on Robotics, 2021, 37(6): 1874-1890. DOI:10.1109/TRO.2021.3075644 |
[4] |
Mur-Artal R, Montiel J M M, Tardos J D. ORB-SLAM: A versatile and accurate monocular SLAM system[J]. IEEE Transactions on Robotics, 2015, 31(5): 1147-1163. DOI:10.1109/TRO.2015.2463671 |
[5] |
Eade E, Drummond T. Scalable monocular SLAM[C]//IEEE Computer Society Conference on Computer Vision and Pattern Recognition. Piscataway, USA: IEEE, 2006: 469-476.
|
[6] |
Sumikura S, Shibuya M, Sakurada K. OpenVSLAM: A versatile visual SLAM framework[C]//27th ACM International Conference on Multimedia. New York, USA: ACM, 2019: 2292-2295.
|
[7] |
Kurama V, Sridevi T. Image filter selection, denoising and enhancement based on statistical attributes of pixel array[M]. Smart Computing Paradigms: New Progresses and Challenges, Vol. 766. Singapore: Springer, 2019: 245-257.
|
[8] |
Kim Y T. Contrast enhancement using brightness preserving bi-histogram equalization[J]. IEEE Transactions on Consumer Electronics, 1997, 43(1): 1-8. DOI:10.1109/30.580378 |
[9] |
Ephraim Y, Malah D. Speech enhancement using a minimum-mean square error short-time spectral amplitude estimator[J]. IEEE Transactions on Acoustics, Speech and Signal Processing, 1984, 32(6): 1109-1121. DOI:10.1109/TASSP.1984.1164453 |
[10] |
Haritopoulos M, Yin H, Allinson N M. Image denoising using self-organizing map-based nonlinear independent component analysis[J]. Neural Networks, 2002, 15(8-9): 1085-1098. DOI:10.1016/S0893-6080(02)00081-3 |
[11] |
孔祥尉, 杨进华, 周彪, 等. 基于运动场分离水下图像增强处理方法研究[J]. 长春理工大学学报(自然科学版), 2014(1): 61-64. Kong X W, Yang J H, Zhou B, et al. Underwater images enhancement method based on motion field separation[J]. Journal of Changchun University of Science and Technology (Natural Science Edition), 2014(1): 61-64. |
[12] |
He K M, Jian S, Tang X O. Single image haze removal using dark channel prior[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2011, 33(12): 2341-2353. DOI:10.1109/TPAMI.2010.168 |
[13] |
Fu X Y, Zhuang P X, Huang Y, et al. A retinex-based enhancing approach for single underwater image[C]//IEEE International Conference on Image Processing. Piscataway, USA: IEEE, 2014: 4572-4576.
|
[14] |
Ignatov A, Kobyshev N, Timofte R, et al. DSLR-quality photos on mobile devices with deep convolutional networks[C]//IEEE International Conference on Computer Vision. Piscataway, USA: IEEE, 2017: 3297-3305.
|
[15] |
Ignatov A, Kobyshev N, Timofte R, et al.WESPE: Weakly supervised photo enhancer for digital cameras[DB/OL]. (2018-03-03) [2021-09-01]. https://arxiv.org/abs/1709.01118v2.
|
[16] |
郭威, 张有波, 周悦, 等. 应用于水下机器人的快速深海图像复原算法[J]. 光学学报, 2022, 42(4): 53-67. Guo W, Zhang Y B, Zhou Y, et al. Rapid deep-sea image restoration algorithm applied to unmanned underwater vehicles[J]. Acta Optica Sinica, 2022, 42(4): 53-67. |
[17] |
Nidhyananthan S, Sindhuja R. A novel DWT based techniques for underwater image enhancement[J]. International Journal of Engineering Research in Electronics and Communication Engineering, 2017, 4(12): 109-115. |
[18] |
Wang Z, Bovik A C, Sheikh H R, et al. Image quality assessment: From error visibility to structural similarity[J]. IEEE Transactions on Image Processing, 2004, 13(4): 600-612. DOI:10.1109/TIP.2003.819861 |
[19] |
Moghimi M K, Mohanna F. Real-time underwater image resolution enhancement using super-resolution with deep convolutional neural networks[J]. Journal of Real-Time Image Processing, 2021, 18: 1653-1667. DOI:10.1007/s11554-020-01024-4 |