一种在视觉SLAM前端去除动态特征点的方法

文档序号:30267141发布日期:2022-06-02 04:50阅读:639来源:国知局
一种在视觉SLAM前端去除动态特征点的方法
一种在视觉slam前端去除动态特征点的方法
技术领域
1.本发明涉及一种在视觉slam前端去除动态特征点的方法,属于计算机视觉与深度学习技术领域。


背景技术:

2.同时定位与建图技术(simultaneous localization and mapping,slam)是指机器人在没有任何先验知识的情况下,凭借自身携带的环境感知传感器完成对周围未知环境地图的构建。使用视觉传感器完成地图构建的技术称为视觉slam,因视觉传感器价格低,采集环境信息丰富,可实现自主定位于导航功能,使得其在相关领域备受关注,成为目前slam技术领域的研究热点。因此也涌现出一批诸如orb-slam,rgbd-slam,openvslam等优秀的开源视觉slam算法。
3.传统的视觉slam算法大都基于静态环境假设,在实际环境中,往往因为环境中存在不断运动的物体如人或其他动物的走动,车辆的移动等,使得机器人位姿估计出现较大偏差,从而导致定位失败。针对上述传统视觉slam算法在实际动态环境中存在的不足,本发明提出一种面向动态环境,在视觉slam前端去除动态特征点的方法。使用去除动态特征点之后剩余特征点进行位姿估计,可以大大提高视觉slam系统在动态环境中的定位精度,以及它的鲁棒性和稳定性。


技术实现要素:

4.本发明所要解决的技术问题是,提供一种在视觉slam前端去除动态特征点的方法,此方法应用在视觉slam系统中,可有效去除动态物体对位姿估计的影响,提高视觉slam在动态环境中的精确性和稳定性。
5.为解决上述技术问题,本发明采用的技术方案为:
6.一种在视觉slam前端去除动态特征点的方法,包括如下步骤:
7.step1:使用深度相机获取彩色和深度图像,对采集到的rgb图像均匀化提取orb特征点,并使用目标检测算法获取边界框检测结果;
8.step2:将边界框检测结果分类,分为动态物体和静态物体并对其建立集合,筛选出仅存在于动态物体检测框内的特征点并剔除;
9.step3:计算剩余特征点相邻帧间场景流,根据场景流计算结果筛选出剩余动态特征点并剔除;
10.step4:利用剩下的静态特征点进行特征匹配,得到最佳匹配特征点并进行相机位姿估计,得到准确的相机运动结果,从而实现准确的面向动态场景下的视觉slam。
11.step1中,均匀化提取orb特征点的方法如下:首先构建图像金字塔模型,即对原始的rgb图像用高斯卷积核进行高斯模糊处理,然后对其进行降采样,依次将原始的rgb图像分成若干个层,在各个层上进行fast角点的提取,然后计算图像金字塔每层需要提取的特征点数量n
α
,公式如下:
[0012][0013]
式(1)中,n代表设置的各层的总特征点数量,α代表当前层数,s代表图像金字塔各层的图像的缩放因子,l代表图像金字塔总层数,其次对构建的图像金字塔每一层都均匀的划分出30
×
30像素的格子,单独对每个格子提取fast角点,如果有格子提取不到fast角点则降低fast阈值,从而保证一些纹理较弱的区域也可以提取到fast角点;最后对于提取到的大量fast角点,使用基于四叉树的方法,均匀的选取n
α
个fast角点。
[0014]
step1中,目标检测算法包括以下内容:当获取到深度相机采集到的rgb图像后,使用yolov5网络模型对输入的rbg图像进行目标检测,在yolov5网络模型中新增focus结构对rbg图像进行切片操作,输入一个3
×
608
×
608像素的rbg图像,经过切片操作后,变成12
×
304
×
304像素的特征图,最后使用32个卷积核进行一次卷积,变成32
×
304
×
304像素的特征图;yolov5网络模型在backbone和neck中使用了两种不同的csp;在backbone中,使用带有残差结构的csp1_x,在neck中使用csp2_x,将yolov5网络模型的主干网络的输出分成了两个分支,后将其concat,使yolov5网络对输入图像的特征(包括边界,纹理等)的融合能力得到加强,使其输出带有边界框检测结果的边界框位置以及顶点坐标,以便于后续对提取的特征点进行分类。
[0015]
在backbone中,使用带有残差结构的csp1_x,因为backbone网络较深,残差结构的加入使得层和层之间进行反向传播时,梯度值得到增强,有效防止网络加深时所引起的梯度消失,得到的特征粒度更细;在neck中使用csp2_x,相对于单纯的cbl将主干网络的输出分成了两个分支,后将其concat,使网络对特征的融合能力得到加强,保留了更丰富的特征信息。将yolov5模型移植到嵌入式设备,使其输出带有检测结果的边界框位置以及顶点坐标,以便于后续对提取的特征点进行分类。
[0016]
step2中,剔除动态特征点的方法如下:
[0017]
将边界框检测结果按照动态物体和静态物体分类,假设输入yolov5网络模型的第n帧rgb图像的动态物体像素点集合为:静态物体像素点集合为其中为第n帧图像中的动态物体检测框,即边界框内的第i个像素点,为第n帧图像中的静态物体检测框内的第j个像素点;第n帧图像中提取到的特征点(即使用特征提取方法之后提取到的具有明显特征的像素点)集合为其中为第n帧图像中的第k个特征点;若且则判断该特征点为动态特征点并从集合中删除。
[0018]
step3中,剩余特征点相邻帧间场景流的计算方法如下:
[0019]
对相邻两帧(普通帧)图像,根据step1方法提取出特征点,并进行特征匹配,记录匹配成功的特征点并标记该特征点在前后两帧图像中的位置;
[0020]
根据匹配的前后两帧rgb图像中特征点位置,在depth图中找到同一特征点的深度值,记当前帧特征点三维坐标为(xc,yc,zc),与之匹配的前一帧图像特征点三维坐标为(x
p
,y
p
,z
p
),则特征点在当前帧与上一帧的三维位置变化即场景流为:
[0021][0022]
step3中,根据场景流计算结果筛选出剩余动态特征点并剔除的方法如下:
[0023]
依据上述计算得到的匹配成功的特征点对场景流计算其模值c和角度θ,利用高斯混合模型的方法得到各特征点的高斯值g
p
,将高斯值g
p
大于一定阈值go的特征点记为动态特征点,计入集合df={p|g
p
>g0},p代表g
p
>go的特征点,go计算公式如下:
[0024][0025]
式(3)中:n为特征点个数;hk为使用加权平均法对每一个特征点构造的评价指标,计算公式为:
[0026][0027]
式(4)中:ck为第k个特征点对应的场景流模值,θk为第k个特征点对应的场景流角度,
[0028]
根据上述内容,可得特征点p的状态为:
[0029][0030]
即对于特征点p,若其高斯值g
p
>go,则判断其为动态特征点,计入集合df={p|g
p
>g0}并剔除,反之则为静态特征点计入集合sf={p|g
p
<g0}。
[0031]
step4中,特征匹配与位姿估计的方法如下:基于上述提取到的静态特征点,对相邻关键帧间特征点做特征匹配;在特征匹配中,使用ransac算法对错误数据进行过滤;ransac算法中评估的模型就是帧间的位姿估计,在位姿估计求解时,通过不断地将错误匹配设置为局外点,配合位姿求解算法,得到最优的位姿估计。
[0032]
关键帧是经过筛选之后的、代表其附近帧的特殊帧,可以减少信息冗余度。
[0033]
此关键帧内的特征点包含了其附近帧超过75%的特征点。附近帧为关键帧附近的帧。
[0034]
动态物体包括人、猫、狗。
[0035]
本发明具有以下有益效果:
[0036]
(1)本发明将yolov5目标检测算法融入到视觉slam前端,检测场景中动态目标并剔除动态特征点,相对于现有主流的使用像素级语义分割方法如ds-slam、dyna-slam,速度方面得到了大幅提升;
[0037]
(2)在提取动态特征点方面,将目标检测得到的动态特征点与静态特征点取差集,然后再利用计算特征点场景流的方式进一步提取特征点。此方法不仅能够精确地提取到场景中的动态特征点还能够更好的保留住较多的高质量静态特征点用于位姿估计;
[0038]
(3)相对于传统视觉slam,本发明中所述的方法更适用于实际的场景,在动态场景
下定位精度得到大幅提升。
[0039]
本发明提供了一种将基于深度学习的目标检测算法用于视觉slam前端去除动态特征点的方法,属于计算机视觉技术领域。该方法主要是通过将yolov5目标检测算法与传统视觉slam前端相结合,通过深度相机采集环境图像信息,对采集到的rgb图像进行orb特征提取的同时,对其进行目标检测,对检测出的物体分为动态物体和静态物体两类,筛选并剔除仅存在于动态物体框内的特征点。之后,计算相邻两帧之间匹配对的场景流模值,建立高斯混合模型,进一步分离场景中动态物体和静态物体,剔除剩余的动态特征点。剩余的静态特征点用于特征匹配并估计相机位姿。利用本方法在orbslam2前端进行测试,大大提升了其在动态环境中的定位精度,且能够满足实时性要求。
附图说明
[0040]
图1为本发明在视觉slam前端去除动态特征点方法的流程图;
[0041]
图2为本发明剔除动态特征点实例图;
[0042]
图3为fr3_walking_xyz序列下本发明实例定位效果与orb-slam2的定位效果对比图,其中,图(a)为本发明定位效果图,图(b)为orb-slam2的定位效果图;
[0043]
图4为fr1_xyz序列下本发明实例定位效果与orb-slam2的定位效果对比图,其中,图(c)为本发明定位效果图,图(d)为orb-slam2的定位效果图。
具体实施方式
[0044]
下面结合附图对本发明作更进一步的说明。
[0045]
如图1所示,一种在视觉slam前端去除动态特征点的方法,
[0046]
step1:使用rgb-d相机采集图像,对采集到的rgb图像均匀化地提取orb特征点并同时使用目标检测算法获取边界框检测结果,具体过程如下:
[0047]
构建图像金字塔,保证orb特征点尺度不变性。计算金字塔每层需要提取的特征点数量n
α
,公式如下:
[0048][0049]
其中n代表设置的总特征点数量,α代表当前层数,s代表缩放因子,l代表金字塔总层数。对构建的图像金字塔每一层都均匀的划分出30*30pixels的小格子,单独对每个格子提取fast角点,如果有格子提取不到角点则降低fast阈值,这样可以保证一些纹理较弱的区域也可以提取到fast角点。根据oriented fast计算出的角度,选取最优的256个点对,并把这256个点对的坐标旋转之后,再取灰度,增加brief描述子的旋转不变性。最后对于提取到的大量fast角点,使用基于四叉树的方法,均匀的选取n
α
个角点。
[0050]
当获取到深度相机采集到的图像数据后,使用yolov5网络模型对输入的rbg图像进行目标检测。在yolov5中新增了focus结构对图片进行切片操作,输入一个3
×
608
×
608的图片,经过切片操作后,变成12
×
304
×
304的特征图,最后使用32个卷积核进行一次卷积,变成32
×
304
×
304的特征图。yolov5在backbone和neck中使用了两种不同的csp;在backbone中,使用带有残差结构的csp1_x,因为backbone网络较深,残差结构的加入使得层和层之间进行反向传播时,梯度值得到增强,有效防止网络加深时所引起的梯度消失,得到
的特征粒度更细;在neck中使用csp2_x,相对于单纯的cbl将主干网络的输出分成了两个分支,后将其concat,使网络对特征的融合能力得到加强,保留了更丰富的特征信息。将yolov5模型移植到嵌入式设备,使其输出带有检测结果的边界框位置以及顶点坐标,以便于后续对提取的特征点进行分类。
[0051]
step2:将目标检测结果分类,分为动态物体和静态物体并对其建立集合,筛选出仅存在于动态物体检测框内的特征点并剔除,具体过程如下:
[0052]
根据coco数据集标注方式,将目标检测结果中的people,cat,dog这三类结果归为动态物体,其余结果作为静态物体。假设输入的第n帧图像的动态物体像素点集合为:静态物体像素点集合为其中为第n帧图像中的动态物体检测框内的第i个像素点,为第n帧图像中的精态物体检测框内的第j个像素点。第n帧图像中提取到的特征点集合为其中为第n帧图像中的第k个特征点。若且则判断该特征点为动态特征点并从集合中删除。
[0053]
step3:计算剩余特征点相邻帧间场景流,根据场景流计算结果帅选出剩余动态特征点并剔除,具体过程如下:
[0054]
对相邻两帧图像,根据step1方法提取出特征点,并进行特征匹配,记录匹配成功的特征点并标记该特征点在前后两帧图像中的位置。
[0055]
根据匹配的前后两帧rgb图像中特征点位置,在depth图中找到同一特征点的深度值,记当前帧特征点三维坐标为(xc,yc,zc),与之匹配的前一帧特征点三维坐标为(x
p
,y
p
,z
p
),则特征点在当前帧与上一帧的三维位置变化即场景流为:
[0056][0057]
依据上述计算得到的特征点对场景流计算其模值c和角度θ,利用高斯混合模型的方法得到各特征点的高斯值g
p
,将高斯值大于一定阈值的特征点记为动态特征点,计入集合df={p|g
p
>g0},其中g0表示阈值,计算公式如下:
[0058][0059]
式中:n为特征点个数;hk为使用加权平均法对每一个特征点构造的评价指标,计算公式为:
[0060][0061]
式中:ck为第k个特征点对应的场景流模值,θk为第k个特征点对应的场景流角度。
[0062]
根据上述内容,可得特征点p的状态为:
[0063]
[0064]
即对于特征点p,若其高斯值g
p
>g0,则判断其为动态特征点,计入集合df={p|g
p
>g0}并剔除,反之则为静态特征点计入集合sf={p|g
p
<g0}。
[0065]
step4:利用剩下的静态特征点进行特征匹配,得到最佳匹配特征点并进行相机位姿估计,得到准确的相机运动结果,从而实现准确的面向动态场景下的视觉slam,具体过程如下:
[0066]
基于上述提取到的静态特征点,对相邻关键帧间特征点做特征匹配。在特征匹配中,存在一定的相似的特征点,极易产生误匹配,为了很好的去除误匹配,使用ransac算法对错误数据进行过滤。ransac算法中需要评估的模型就是帧间的位姿估计。在位姿估计求解时,通过不断地将错误匹配设置为局外点,配合位姿求解算法,得到最优的位姿估计,从而得到准确的相机运动结果,实现准确的面向动态场景下的视觉slam。
[0067]
基于上述实施步骤,以tum数据集作为具体实施例(如附图2所示)给予说明:
[0068]
step1:当获取到rgb-d相机采集到的rgb图像后,对其均匀化的提取orb特征点并使用yolov5目标检测算法检测图中动态目标。视觉slam系统中加载的yolov5目标检测模型是基于ms coco数据集训练,该目标检测器可以快速准确的检测到80个类别,并且可以实时获取到高质量的检测结果。在实施例中将people这一类别设为动态目标,其他为静态目标,剔除动态目标框内特征点如附图2所示。
[0069]
step2:对于未去除掉的动态特征点,如附图2中方框内的特征点,通过剩余特征点对场景流计算其模值c和角度θ,利用高斯混合模型的方法得到各特征点的高斯值g
p
,将高斯值大于一定阈值的特征点记为动态特征点并剔除。
[0070]
step3:基于上述提取到的静态特征点,对相邻关键帧间特征点做特征匹配。在特征匹配中,存在一定的相似的特征点,极易产生误匹配,为了很好的去除误匹配,使用ransac算法对错误数据进行过滤。ransac算法中需要评估的模型就是帧间的位姿估计。在位姿估计求解时,通过不断地将错误匹配设置为局外点,配合位姿求解算法,得到最优的位姿估计,从而得到准确的相机运动结果,实现准确的面向动态场景下的视觉slam。
[0071]
在本实施例中,使用绝对轨迹误差(absolute trajectory error,ate)作为视觉slam定位精度的评价指标。绝对轨迹误差指的是估计得到的相机轨迹与真实轨迹值之间的均方根误差值,将数据集的真值序列记为g_1,g_2

g_n∈se(3),算法对相机轨迹预测值序列记为p_1,p_2

p_n∈se(3),序列长度记为n,计算公式为:
[0072][0073]
将本发明方法与现有的主流视觉slam算法orb-slam2在tum fr3_walking_xyz和fr3_xyz数据集序列下做对比,如图3和图4所示。其中fr3_walking_xyz是rgb-d相机录制的动态场景序列,fr3_xyz是rgb-d录制的静态场景序列。对比结果如附图3和附图4所示,表1为量化的对比结果。通过量化的对比结果表明,改进后的算法在动态环境中具有很好的适应性,相较于orb_slam2算法定位精度有了明显的大幅度提升,而在静态环境中,改进后的算法与orb_slam2表现几乎没有差别。
[0074]
表1绝对轨迹误差对比结果
[0075][0076]
应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
[0077]
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
[0078]
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1