APP下载

低光照条件下的鲁棒视觉惯性SLAM算法*

2022-06-29王兴奔徐永贵张传玺

组合机床与自动化加工技术 2022年6期
关键词:角点图像增强亮度

高 扬,王兴奔,徐永贵,张传玺

(长安大学汽车学院,西安 710054)

0 引言

同步定位与地图构建(simultaneous localization and mapping,SLAM)技术在移动机器人,自动驾驶,AR/VR等领域有着广泛应用[1-3]。单目相机无法直接获得深度信息,估计出的尺度具有不确定性,而惯性测量单元(inertial measurement unit,IMU)可以部分提供真实尺度信息,且不需要依赖外部信息即可计算自身相对运动,与单目视觉SLAM具有很强的互补性,因此VI-SLAM技术被广泛研究,各种算法层出不穷。

MOURIKIS等[4]提出了一种基于滤波的VI-SLAM算法,在扩展卡尔曼滤波框架下融合视觉和IMU信息,使用IMU信息作为预测步骤,视觉信息作为更新步骤。BLOESCH等[5]提出了基于直接扩展卡尔曼滤波的方法,使用路标点的光度误差作为观测对滤波器进行更新。LEUTENEGGER等[6]提出了一种基于关键帧的非线性优化VI-SLAM算法,将视觉重投影误差和IMU误差项进行联合优化,求解出运动位姿。MUR-ARTAL等[7]提出了一个完整的VI-SLAM,包含回环检测、地图重用等功能,对IMU进行预积分,使IMU的积分结果不依赖于上一帧相机位姿。QIN等[8]提出了一种基于非线性优化的紧耦合VI-SLAM算法,前端采用光流跟踪,同时对特征点逆深度,惯性测量单元状态量及偏置进行估计,求解出运动位姿。

然而,低光照条件下的鲁棒视觉SLAM研究目前仍进展缓慢。HUANG等[9]以ORB-SLAM2[10]为框架,在跟踪线程之前添加了一个图像预处理步骤,以减少低光照环境的影响,同时提取ORB特征点和Brisk特征点,提高了系统鲁棒性。WANG等[11]在RGB-D SLAM算法的基础上,增加了一种改进的Gamma自适应校正算法,根据图像的平均灰度值,对Gamma值进行调整,实现自适应校正。FANG等[12]提出了一种融合直方图均衡化和ORB特征提取的算法,该算法在低对比度图像的场景下具有较强的鲁棒性。HAO等[13]采用Gamma校正和直方图均衡化对图像进行增强,并建立了视觉和IMU信息紧耦合的非线性优化模型,以获得更精确、鲁棒的位姿估计。

虽然上述低光照条件下的视觉SLAM算法对图像进行了预处理,但这些预处理较为简单,在过暗环境下的效果不佳,同时上述算法没有考虑环境光照变化的影响。因此,本文提出了一种改进的VI-SLAM算法,在VINS-Mono框架基础上,新增图像增强模块,对低光照图像启用图像增强算法。同时,提出一种自适应阈值FAST角点提取算法,并采用改进的RANSAC算法对误匹配点进行剔除,进而增强系统前端的鲁棒性。

1 图像增强算法

VI-SLAM在弱光尤其是暗光条件下,很难提取到足够数量的角点进行视觉跟踪,从而导致轨迹漂移甚至跟踪失败。本文提出一种新的图像增强算法,以提高低光照环境下角点提取数量,算法流程如图1所示。

图1 图像增强算法

该图像增强算法首先将输入图像从RGB颜色空间转换到HSV颜色空间,使颜色信息与亮度信息分离,在增强过程中只对亮度分量V进行处理,色调分量H和饱和度分量S则保持不变,减少计算量的同时避免了图像失真。对亮度分量V,采用多尺度Retinex(multi-scale retinex,MSR)[14]算法进行处理,在提高对比度的同时保留更多细节信息。为了更好地对亮度分量V进行增强,本文分别采用自适应Gamma校正和CLAHE方法对MSR处理后的亮度分量V进行处理,并利用基于图像平均灰度和熵值的融合策略进行加权融合。最后将未处理的色调分量H,饱和度分量S和处理后的亮度分量V进行融合,并转换回RGB颜色空间。针对图像增强过程中产生的噪声,采用中值滤波方法去除噪声,得到最终的增强图像。经实验验证,该算法可有效提高低光照图像的亮度和对比度,从而提高后续角点提取的成功率。

1.1 图像亮度判断算法

为避免将正常光照下图像过度增强,同时减少VI-SLAM算法计算量,本文提出一种图像亮度判断算法,对每一帧图像进行亮度判断,将图像区分为低亮度,正常亮度和高亮度三类,仅对低光照图像进行图像增强预处理。

首先将输入图像img平均分成9个子块,对每一块单独计算平均灰度值,然后按照平均灰度值大小进行排序,子块img[0]平均灰度值最小,子块img[8]平均灰度值最大。按照图2所示流程进行亮度判断。

图2 图像亮度判断流程

图中,imgL=(img[0]+img[1]+img[2])/3,imgM=(img[3]+img[4]+img[5])/3,imgR=(img[6]+img[7]+img[8])/3,t1、t2、t3分别表示灰度判断阈值。

1.2 MSR图像增强算法

本文采用基于Retinex的MSR算法对V分量进行处理,以同时满足图像的细节增强和颜色保真。根据Retinex模型[15],原始图像I(x,y)可分解为反射分量R(x,y)和照度分量L(x,y),如式(1)所示。

I(x,y)=R(x,y)×L(x,y)

(1)

由于反射分量R(x,y)反映了图像真实的细节,而照度分量L(x,y)变化缓慢,因此可以对原图像估计其照度分量L(x,y),由式(1)求出反射分量R(x,y),作为增强后的图像。

单尺度Retinex(single-scale retinex,SSR)算法[16]以Retinex模型为基础,采用高斯函数为卷积核对原始图像进行卷积运算,平滑后可估计得到照度分量L(x,y),即:

L(x,y)=I(x,y)*F(x,y)

(2)

(3)

将式(1)转换到对数域并将式(2)、式(3)代入,则有:

lnR(x,y)=ln[I(x,y)/L(x,y)]=lnI(x,y)-ln[I(x,y)*F(x,y)]

(4)

用式(4)的结果进行指数运算,即可得到物体的反射分量R(x,y)。

MSR算法基于SSR算法进行改进,采用多个尺度进行照度分量L(x,y)估计,可表示为:

(5)

式中,Wn为各个尺度的权重值,一般情况取1/3;Fn(x,y)为第n个尺度下的高斯环绕函数;N为尺度个数,通常为3个跨越大、中、小的尺度。

1.3 自适应Gamma校正

采用Retinex理论估计照度分量,是基于照度分量L(x,y)变化缓慢的先验假设,本身具有一定误差。因此,该方法所求的反射分量与理想的增强图像并不完全一致,需对照度分量进行进一步处理。本文提出一种自适应Gamma校正方法,可以根据图像亮度自动调整校正因子,从而实现不同亮度图像的自适应亮度校正,提高了算法在复杂光照变化下的鲁棒性。

传统的Gamma校正函数为:

(6)

式中,G(x,y)为矫正后的图像;S(x,y)为输入的图像;γ为矫正因子。当γ>1时,可以降低像素点的亮度值,当γ<1时,能够增加像素点的亮度值。

使用传统Gamma校正对低光照图像进行增强时,γ值一般按经验选取固定值,因此难以适应环境变化较为剧烈的复杂场景。本文γ值的选取根据输入图像的平均灰度值而定,如式(7)所示。

(7)

式中,m代表输入图像的平均灰度值。经多次实验,α1、β1分别取0.01,0.2,α2、β2分别取0.06,9。

由式(7)可知,当输入图像为低亮度图像时,γ取值小于1,图像平均灰度值m越低时,γ取值越小,输入图像的对比度和亮度的增强效果越明显。当输入图像为正常亮度图像时,γ值为1,不进行Gamma校正。当输入图像为高亮度图像时,γ取值大于1,图像平均灰度值m越高时,γ取值越大,从而降低输入图像的对比度和亮度。进而实现根据图像的平均灰度值自适应进行Gamma校正,相比于固定γ值,可以取得更好的图像处理效果。

1.4 基于图像平均灰度值和熵值的加权融合

经MSR算法和自适应Gamma校正处理后可以显著提高输入图像的亮度,增强图像低光照区域的细节信息,但同时易产生图像泛白和对比度低的问题。因此本文采用CLAHE算法提高MSR处理后图像的对比度,并将处理结果与自适应Gamma校正后的图像进行加权融合,以减少上述问题的影响。加权融合公式如式(8)所示。

g(x,y)=ug1(x,y)+vg2(x,y)

(8)

式中,g1(x,y)和g2(x,y)分别为自适应Gamma校正和CLAHE的处理结果;g(x,y)为融合后的图像;u、v为加权融合系数,定义为:

(9)

v=1-u

(10)

式中,m1和m2分别代表自适应Gamma校正和CLAHE处理后图像的平均灰度值;q1和q2分别表示自适应Gamma校正和CLAHE处理后图像的熵值,图像熵值代表了图像信息量的多少。

通过基于图像平均灰度值和熵值的加权融合方法,将自适应Gamma校正和CLAHE分别处理后的图像进行加权融合,在提高图像的局部对比度的同时也改善了亮度不均的问题。

2 改进的VI-SLAM算法

本文针对低光照环境下角点提取困难,误匹配点较多的问题,对VINS-Mono算法进行改进。添加图像预处理模块,提高图像亮度和对比度,采用FAST角点提取算法取代原来的Shi-Tomasi角点[17]提取算法,以提高角点提取速度,根据图像亮度值调整角点提取阈值,以提高角点提取数量。采用改进的RANSAC算法进行误匹配点剔除,提高角点匹配的正确性。

改进后的VI-SLAM算法主要分为初始化,图像预处理,角点提取与跟踪,位姿优化,回环检测5部分,算法框架如图3所示。

图3 改进的VI-SLAM算法框架

初始化主要提供一个良好的相机位姿,并对真实尺度,重力和陀螺仪偏置进行估计。图像预处理首先对输入图像进行亮度判断,然后对低亮度图像进行图像增强处理。角点提取与跟踪部分采用自适应阈值FAST角点提取算法对图像进行角点提取,并通过光流法跟踪角点在下一帧的位置,获得匹配点对,最后采用改进的RANSAC算法对误匹配点进行剔除。位姿优化将视觉信息与IMU信息进行联合非线性优化,回环检测部分负责系统重定位,在检测到回环时消除累积误差。

2.1 自适应阈值FAST角点提取算法

本文提出一种自适应阈值FAST角点提取算法,可根据图像的灰度值自动确定当前图像FAST角点提取阈值,从而提高角点提取的数量和成功率。

FAST角点提取算法主要对像素p周围灰度值进行检测,若灰度值变化明显则认为该像素p是一个角点,检测流程如下:

(1)计算像素p处灰度值Ip;

(2)选取检测圆(p为圆心,半径为3)上的16个像素点作为检测点,如图4所示,其灰度值用Ipi表示,i∈[1,16];

图4 FAST角点

本文提出的自适应阈值FAST角点提取算法首先计算输入图像的平均灰度值,从而确定FAST角点提取阈值。

(11)

图像较暗被判定为低亮度图像时,为防止图像平均灰度值过小,导致提取的FAST角点质量差,FAST角点提取阈值th取经验值7和m/3的最大值。

2.2 改进的RANSAC

角点提取与跟踪模块采用自适应阈值FAST角点提取算法对输入图像进行角点提取,通过LK光流跟踪算法获得上一帧角点在当前帧的位置。由于LK光流跟踪算法假设前后两帧光度不变,且运动变化不大,因此当图像噪声过大时易产生误匹配点。RANSAC可以对两帧匹配点进行随机抽样,从而求出包含最多正确匹配点的模型。然而该方法没有考虑匹配点的质量,简单对两帧所有匹配点迭代求解,存在迭代时间长、求解成功率低等缺点。

本文对RANSAC算法进行改进,首先计算所有匹配角点的BRIEF描述子,BRIEF是一种二进制描述子,通过计算角点周围的像素信息对该角点进行描述,然后计算描述子之间的汉明距离,该距离与角点之间的相似程度成正比。在汉明距离小于阈值的匹配点对中进行RANSAC算法,从而提高模型估计成功率,减少迭代时间。改进之后的角点提取与跟踪模块框架如图5所示。

图5 改进的角点提取与跟踪模块

3 实验验证

为验证算法的有效性,本文设计了三组实验。其中第一组实验使用New Tsukuba Stereo Dataset[18]合成数据集测试图像增强算法效果,第二组实验使用EuRoC飞行数据集[19]测试VI-SLAM定位精度,第三组实验在低光照环境中进行了实际场景下的对比实验。本文的实验环境为Lenovo G410笔记本电脑,CPU酷睿i3-4000M,主频2.40 GHz,8 GB运行内存,以Ubuntu16.04为实验平台。

3.1 角点提取实验

为验证提出的图像增强算法对提高角点提取数量的有效性,将本文提出的图像增强算法分别与常用的ALM[20],LIME[21],Gamma校正,CLAHE,SSR,MSR算法进行了对比实验。实验基于New Tsukuba Stereo数据集中的Lamps序列进行。Lamps序列包含1800张低光照图像,具有良好的代表性。选取Lamps序列中的序号从01111至01120的连续10帧图像进行实验。首先采用不同图像增强算法对上述10帧图像进行增强处理。然后分别对上述采用不同算法增强后的10帧图像进行角点提取实验,统计其角点提取数目。同时计算第01112至01120帧图像相对于前一帧的角点匹配成功率以及经RANSAC处理后的角点匹配成功率,对上述10帧实验图像的实验结果求平均值,结果如表1所示。图6展示了对序号为01111的经不同图像增强算法处理后的图像进行角点提取实验的结果。

表1 角点提取与跟踪对比

(a) 原始图像 (b) ALM (c) LIME (d) Gamma校正

由图6和表1可知,原始图片提取角点数量很少,无法满足VI-SLAM要求。采用ALM和Gamma校正算法处理后的图像,角点提取数量虽有所增加,仍难以满足要求,LIME和CLAHE算法对图像增强效果不明显,提取的角点分布不均匀,SSR和MSR算法引入了过多噪声点,导致RANSAC去除误匹配点后匹配成功率低。本文提出的图像增强算法可有效提高角点提取的数量,在光流跟踪以及RANSAC去除误匹配点后,仍拥有较高的匹配成功率,同时算法的实时性较好,处理一帧分辨率为640×480的灰度图,用时仅为20 ms,可以满足SLAM实时性的要求。

3.2 轨迹定位精度对比实验

为验证本文算法在低光照场景下的定位精度,本文使用EuRoC数据集的MH_04_difficult,MH_05_difficult,V1_03_difficult,V2_03_difficult四个运动序列数据进行了测试。这些数据中包含有大量低光照以及快速运动的图像,如图7所示。实验中使用本文算法与VINS-Mono算法进行了对比,对比结果如表2所示。

(a) MH_04_difficult序列中的低光照图像 (b) V1_03_difficult序列中的低光照图像

表2 改进前后算法误差对比 (m)

由表2可知,本文提出的改进算法在4个测试序列上的轨迹跟踪误差均小于VINS-Mono,均方根误差平均降低了23.98%,证明了算法的有效性和鲁棒性。

图8是本文算法与VINS-Mono算法的轨迹对比图,图中GroundTruth为EuRoC数据集提供的真实运动轨迹,difference为两条轨迹的差异,代表误差大小。由图8可知,本文提出的改进算法的运行轨迹更接近真实轨迹,误差更小。

(a) VINS-Mono (b) 本文算法

3.3 实际场景试验

为验证算法的有效性,在实际场景下进行实验验证。实验平台为搭载小觅相机的先锋移动机器人,如图9所示。为方便算法对比,保证两种算法运行轨迹相同,本文采取在真实场景录制数据集的方式进行实验对比。

图9 先锋机器人实验平台

实验环境为仅依靠路灯照明的夜晚场景,采集的夜晚真实图像如图10所示,使用先锋机器人搭载小觅相机绕行笔者所在办公楼一周后回到出发地,总长约420 m,在卫星地图上的轨迹示意图如图11所示。

图10 夜晚真实场景图像 图11 运行轨迹示意图

图12为在关闭回环检测模块的条件下,改进前后算法在同一真实数据集运行后计算得出的轨迹,可以看到,采用本文算法的运动轨迹在绕行一周后基本回到起点,而VINS-Mono算法的运动轨迹则存在较严重的轨迹漂移,终点与起点之间存在较大距离。可见本文算法提高了低光照条件下VI-SLAM的精度和鲁棒性。

图12 运行轨迹对比图

4 结束语

本文提出了一种改进的低光照条件下的VI-SLAM算法,以提高低光照场景下的定位精度。针对低光照场景下VI-SLAM角点提取与跟踪困难的问题,提出了一种图像增强算法,对输入图像进行预处理,对判定为低亮度的图像进行图像增强,从而提高输入图像的对比度和亮度。提出一种自适应阈值FAST角点提取算法,保证低亮度图像能够提取足够数量的角点进行跟踪,同时对RANSAC算法进行改进,只在汉明距离小于阈值的匹配点对中进行迭代。在公开数据集和实际场景下的实验结果表明本文算法提高了VI-SLAM算法在低光照条件下的定位精度和鲁棒性。

猜你喜欢

角点图像增强亮度
通过图像增强与改进Faster-RCNN网络的重叠鱼群尾数检测
用于遥感影像亮度均衡的亮度补偿方法
一种基于轻量级深度网络的无参考光学遥感图像增强算法
多支撑区域模式化融合角点检测算法仿真
图像增强技术在超跨声叶栅纹影试验中的应用
远不止DCI色域,轻量级机身中更蕴含强悍的亮度表现 光峰(Appptronics)C800
角点检测技术综述①
基于灰度差预处理的改进Harris角点检测算法
亮度调色多面手
基于FAST角点检测算法上对Y型与X型角点的检测