吴思齐,刘 飞,白 羽,马运涛,王 斐,郭梓钰
(1.北京建筑大学理学院,北京 102616; 2.北京建筑大学测绘与城市空间信息学院,北京 102616;3.东方通用航空摄影有限公司,山西 太原 030031)
近年来,视觉同时定位和地图构建(simultaneous localization and mapping, SLAM)伴随计算机视觉的快速发展受到了广泛关注,同时单目视觉传感器相比于昂贵的激光传感器,更易受到自动驾驶、移动机器人、无人机等领域的青睐[1-2],因此Mono-SLAM技术被广泛研究,各种算法层出不穷。文献[3]提出基于比较像素亮度等信息的直接视觉里程计方法,但在复杂光照变化场景下稳定性较差。文献[4]提出改进收敛半径优化匹配算法对抗室外光照,文献[5]采用对光照变化较为稳健的ORB特征点法对相机定位。但在实际户外复杂多变的光照场景中,相机捕获的图片常常会被噪声污染,使得上述方法失效。特别是亮度较高的条状眩光被误匹配为特征点,而图片其他纹理明显区域由于相机感光度设定使得对比度下降,导致特征点提取失败,进一步造成视觉SLAM系统稳定性降低、轨迹跟踪丢失率过高等问题,甚至导致整个视觉SLAM系统宕机。
因此,为解决现有视觉SLAM算法在户外眩光场景下稳定性较差的问题,本文提出一种改进的视觉ORB-SLAM2算法,以提升室外复杂光照场景下的SLAM跟踪稳健性,并通过户外试验验证该算法的有效性。
本文提出的改进ORB-SLAM2算法框架如图1所示。在原有视觉ORB-SLAM2框架基础上,增加图片眩光处理模块,并利用滑窗思想判断已去除眩光图片的亮度;对低亮度图像通过限制对比图自适应直方图均衡化(CLAHE)处理,提高纹理变化明显区域特征点的提取数量,降低轨迹跟踪丢失率,以增强室外眩光场景SLAM系统的稳健性。
图1 改进ORB-SLAM2算法流程
1.1.1 眩光成因
如图2所示,在一张无眩光污染的图片中,每个像素点在传感器上的信息是由光源发射的所有光线经相机镜头折射并全部汇聚到该点形成的。但在实际户外场景中,相机镜头常常因受到污染或内部元件损坏等因素的影响,少量入射光线在镜头内部发生折射和反射,导致图片受到眩光的污染。
图2 眩光成像模型
1.1.2 眩光去除模型
现有防治或减少眩光影响的方法大体分为3类: ①通过物理方法在相机镜头涂抹防反射材料[6]或在镜头表明增加玻璃透镜防止镜头污染。前者只能减少特定波长光线造成的眩光影响,且价格高昂不宜普及;后者会使入射光线在玻璃透镜表明发生反射与折射的可能性增加,更加不利于眩光的防治。 ②通过传统图像处理的方法识别图像明亮区域[7-9]再应用二进制掩码加以去除。此方法检测眩光类型有限,同时会将图像本身明亮区域误当作眩光区域去除,造成图片信息缺失。 ③通过神经网络深度学习方式去除图片眩光。计算机视觉技术的发展推动了图像处理技术的进步,如采取半监督等方式去除图片反射[10-12]、利用Gan网络对图像去雨[13-14],但图像去除眩光算法进展缓慢,主要原因是成对的眩光图片数据集较难收集。2021年文献[15]在实验室人工合成5000张眩光图片,利用U-Net网络训练实现单张图片的眩光去除。本文利用此方法处理定位相机捕获的图片,以减少眩光对图片信息的干扰。
U-Net网络框架如图3所示。其中,网络输入端、输出端分别是3通道受到眩光污染及已去除眩光的RGB图像;该网络左侧(虚线)为特征提取网络,由4个block组成,每个block包含2次卷积和1次最大池化降采样操作,可充分提取图片特征;网络右侧为特征融合网络,同样由4个block组成,每个block包含2次卷积和1次插值上采样操作,用于恢复图片尺寸。由于受眩光污染的图像往往同时包含眩光和光源,为避免网络将光源本身作为眩光去除,对网络输出结果添加mask,将光源区域像素值调整为真实值,则该部分损失值为0。该网络损失定义为
图3 U-Net网络框架
(1)
(2)
为避免因产生眩光使图片纹理变化明显区域较暗,造成特征点提取不足的问题,本文对已去除眩光图像采用CLAHE方法进行处理。CLAHE对图像低亮度区域有较好提升对比度的效果,但对亮度正常或高亮度图像使用CLAHE方法往往会放大图像噪声,对ORB特征点提取造成干扰。因此,本文设计一种图像亮度判断算法,仅对低亮度图像采用CLAHE处理,算法流程如图4所示。
图4 图像亮度判断及增强算法流程
将输入的第i帧图像分成9块,计算每个子块的平均灰度并排序为img[k],k=1,2,…,9,图中
(3)
(4)
t1、t2表示灰度判定阈值,本文根据经验值分别设定为30、90。为避免光照复杂变化造成亮度判定结果不稳定,本文设计一种滑窗增加此算法的稳健性,窗口大小等同于定位相机每秒传输图像帧数(FPS),对于当前第i帧图像,其亮度imgMidi判断值用Min(imgMid_windos_FPSi)的数值代替。其中,imgMid_windos_FPSi表示第i帧图像至第i+FPS帧图像相应灰度值室的窗口列表。
分别使用文献[5]发布的25 000余张无眩光污染图像和VGG-19预训练模型合成训练数据和提取图像特征,眩光图在使用在光学实验室发布[15]基础上,增加眩光图像[16],共计10 001张,可有效去除多种类型眩光,U-Net网络使用NVIDIA GeForce RTX 3070显卡训练。
本文使用Intel RealSense D435i相机采集室外图像,RGB图像分辨率设定为640×480像素,相机FPS设定为30。为体现本文算法对室外眩光场景的稳健性,采集包含强眩光干扰且眩光分布在试验路线起始段、结束段等多种数据集。截取视频序列如图5所示。其中,11021数据集在试验路线起始段受眩光干扰,11010数据集在试验路线结束段受眩光干扰,10250数据集因光线较强造成图像纹理变化明显区域对比度过低。
图5 连续5帧眩光序列
在图像眩光去除方面,试验结果如图6所示,场景1、场景2受眩光干扰,经U-Net网络可有效去除图片眩光,场景3未受眩光污染经该网络处理仍可保持原始信息,对该网络输出结果经本文亮度判断算法及CLAHE增强处理,低亮度图像图片质量得到较大提升。
对改进的SLAM系统进行户外试验,模拟数据选取10250序列数据集,基于Ubuntu18.04操作系统,部分试验结果如图7所示。在试验中,该序列数据集第1008帧在原始SLAM系统中提取大量错误眩光特征点,并随着相机继续运动特征点提取数量不足造成图像轨迹跟踪失败,SLAM系统无法继续运行。经本文算法改进后,该帧图像眩光部分得到有效去除,纹理变化明显区域的特征点提取数量显著增加,该数据集可在SLAM系统中持续建图直至视频结束,验证本文改进的ORB-SLAM2系统对室外眩光场景有更好的稳健性。
图7 试验结果对比
在关闭回环检测模块的条件下分别测试在试验路线起始段受炫光干扰的11010数据集(逆时针行进)及在试验路线结束段受炫光干扰的11021数据集(顺时针行进),试验结果如图8所示,结果显示,采用本文改进的ORB-SLAM2算法,相机在绕行试验路线1周后均可回到起点,而原始ORB-SLAM2系统在两条轨迹上都出现较严重的轨迹漂移,且轨迹首尾端存在较大间隙,误差较大,进一步验证本文改进的SLAM算法在室外眩光场景下的稳健性较高。
图8 运行轨迹对比
针对传统视觉SLAM系统在室外眩光环境下稳定性较差的问题,本文提出了一种可用于户外含有眩光干扰的改进视觉SLAM算法。首先对视觉相机捕获的图像经U-Net网络检测并去除眩光,减少眩光对特征点提取的干扰,对无眩光干扰的图像仍可保持原始图片信息输出;然后经图像亮度判断算法判断去除眩光干扰的图像,对低亮度图像进行限制对比度直方图均衡化处理,提高图像纹理变化明显区域对比度,增加相应区域特征点提取数量。在实际户外场景下的试验表明,本文算法可有效增加在复杂眩光场景下SLAM系统的定位精度和稳健性。