一种基于Kinect的视觉SLAM方法与流程

文档序号:16742996发布日期:2019-01-28 13:11阅读:320来源:国知局
一种基于Kinect的视觉SLAM方法与流程

本发明涉及计算机视觉技术领域,具体涉及一种基于kinect的视觉slam方法。



背景技术:

增强现实的主要技术之一slam(simultaneouslocalizationandmapping),即时定位与地图构建技术。slam方法通过物体自身传感器获取到的信息,在运动过程中,计算自己的位置,同时对周围的环境地图进行构建。传统的视觉slam方法计算过程分为三个阶段,前端视觉里程计、后端优化、回环检测。其中,前端视觉里程计增量式地计算摄像头的位置与两个时刻间的相对运动(相对运动估计)。后端则是通过与前几帧做比较,不断修正视觉里程计环节中的累积误差。回环检测则是通过判断是否出现回环,即摄像头是否已检测过该位置,来修正机器人的位置与姿态。

尺度不变特征变换算法sift(scaleinvariantfeaturetransform),是一种检测图像局部特征的算法,通过尺度空间找出一幅图中的极值点,以及与极值点有关的极值范围和特征方向,最终得以提取到位置、尺度和旋转不变的特征点并进行图像特征点匹配。

g2o(generalizedgraphoptimizer)即通用图优化求解器,是近年来很流行的一个图优化求解软件包。g2o的内核里带有各种各样的求解器,而它的顶点、边的类型则多种多样。只要一个优化问题能够表达成图,那么通过自定义顶点和边,就可以用g2o去求解它。

prewitt算子是一种滤波算子,对图像中的每个点进行卷积运算,取最大值作为输出,结果是一幅轮廓幅度的图像。

在用增强现实技术进行装备维修的实际研究中,有两个问题:一是三维场景建模速度慢;二是当维修员将视线移开已建模场景再将移动视线回到原位置会出现虚拟信息漂移的现象。这是因为在把增强现实技术用于装备维修时所用的头戴设备硬件资源受限,计算能力不足,因此不能满足实时性。另一方面,相比于移动机器人领域,在增强现实技术领域中,使用的摄像头运动更加快速,自由度变得更加多样。所面对的真实环境中纹理更加复杂,对光照条件更加苛刻。

传统的视觉slam中,在视觉里程计环节所提取图像的特征算法为sift算法,得到的特征描述符为128维,在特征匹配时的距离为欧式距离,从而匹配时间很长,实时性很差。在回环检测中,如果是随机对前面的关键帧进行相似性检测,则实时性提高,但回环检测的鲁棒性不高。如果对所有的关键帧都进行相似性检测,则回环检测的鲁棒性提高,但实时性差。

在获取到每两帧之间的运动估计后,将运行中所获取到的图像两两进行匹配得到运动估计之后把点云图拼接起来,得到最后摄像机的运动轨迹和最终的场景点云图。但是在视觉里程计环节中误差累积,随着运动的累计,这个误差会越来越大,从而造成严重的漂移。



技术实现要素:

(一)要解决的技术问题

本发明要解决的技术问题是:针对增强现实用于装备维修时所需要的实时性和回环检测需求,如何解决增强现实领域地图构建,尺度漂移问题。

(二)技术方案

为了解决上述技术问题,本发明提供了一种基于kinect的视觉slam方法,包括以下步骤:

在利用摄像机kinect同时获取物体的彩色图像和深度图像后,执行如下步骤:

步骤一,基于pca-sift和线性距离组合的视觉里程计环节

在视觉里程计环节采用pca-sift算法,且在特征匹配时用街区距离和棋盘距离的线性组合代替欧式距离,以实时得到关键帧的特征点,进行匹配;

步骤二、利用图优化方法减小步骤一的视觉里程计环节中累计的误差;

步骤三、基于步骤一的结果,首先提取关键帧的轮廓进行轮廓匹配缩减所需要进行相似性检测的关键帧数量,然后利用词袋模型进行二次回环回环检测。

优选地,步骤一分为以下四个阶段:

第一阶段:提取关键帧的sift特征

首先,构建一个尺度空间;然后利用高斯差分算子dog计算出关键点;之后求出关键点的主方向;最后生成关键点描述子,作为关键帧的sift特征,这个描述子是128维的,关键帧相当于角度转过一定角度或者平移超过一定距离的帧,所述关键点描述子为sift描述符;

第二阶段:结合主成分分析法得到关键帧的pca-sift特征

首先输入待匹配图像的所有sift描述符,假设有m个特征点,其特征向量xi的维数是128维的,i=1,2,3,…,128,构造一个样本矩阵x,其中xij表示第j个特征点的第i维特征向量的值,0<j≤m;

然后计算上述样本矩阵x的协方差矩阵,得到一个128*128的协方差矩阵z,计算过程如下:先对xi求平均,得到再对每一个xi,计算xi-xav,这样得到的矩阵记为c=xi-xav;得到协方差矩阵z=c*ct

之后计算这个协方差矩阵z的特征值与对应的特征向量,求出128个特征值和对应的特征向量,然后按照特征值从大到小的顺序排列,取出前t’个较大的特征值对应的特征向量,把其构建成一个128*t’的矩阵,记为s;

最后把sift描述符投影到子空间中,从而得到pca-sift描述符,作为pca-sift特征;用样本矩阵x乘以特征矩阵s,得到一个m*t’大小的矩阵,将原有的128维sift特征降维成t’维向量;

第三阶段:用街区距离和棋盘距离的线性组合代替欧氏距离进行对两幅关键帧中的sift特征匹配,找到两幅关键帧中的匹配特征点

欧式距离为:

街区距离d1和棋盘距离d∞的定义为:

然后用街区距离d1和棋盘距离d∞的线性组合α(d1(x,y)+d∞(x,y))代替欧氏距离,街区距离和棋盘距离的加减运算;

第四阶段:用ransac算法消除误匹配

首先对匹配点进行初步筛选,筛选标准是对当前所有匹配点的匹配距离进行排列,找出最小的匹配距离,其他匹配距离如果超过最小匹配距离的4倍,表明这两个点的匹配度相对于其他剩下的点相对较差,则过滤掉这些点,然后采取ransac算法对匹配的特征点进行一致性检测。

优选地,t’取20以内的整数。

优选地,第四阶段中,n为偶数时,n为奇数时,

优选地,步骤二具体为:

第一步,构建一个求解器globaloptimizer,并写明其使用的算法;

然后,在求解器内添加点和边:在所构建的图里,点是关键帧时相机的位姿,边则是相机运动间的变换矩阵,也即这两个点的变换,并在程序运行过程中不断作帧间检测;

最后,通过选择一些优化参数完成优化并存储优化结果,优化完毕后读取每个节点的估计值,得到优化后的运动轨迹,其中,选择不同的迭代策略得到对应的优化参数。

优选地,求解器globaloptimizer使用的算法为lm算法。

优选地,所述迭代策略为gauss-newton法或levenberg-marquardt。

优选地,步骤三具体包括:

第一阶段:轮廓匹配进行初步筛选

首先通过遍历深度图中每个像素,获得深度值和物体标记,提取处在一定范围内的深度图像,从而提取图像前端区域,然后利用prewitt算子对kinect提取的彩色图像和深度图像进行轮廓提取,并进行优化,最后利用轮廓的hu矩进行轮廓的匹配;

第二阶段:利用词袋模型进行回环检测

首先利用pca-sift算法从包括原图像以及利用轮廓匹配筛选得到的图像中提取视觉词汇向量,这些向量代表的是图像中局部不变的特征点;然后将所有特征点向量集合到一块,利用k-means算法合并词义相近的视觉词汇,构造一个包含k个视觉单词的视觉表;之后统计视觉表中每个视觉单词在图像中出现的次数,从而将每一副图像表示成为一个k维数值的向量;最后利用这个k维数值的向量去求当前图像与其他图像的相关性,得到相关性系数,如果这个系数超过预设的阈值,那么认为发生了回环,则去优化运动估计,得到优化后的运动估计;若没有超过阈值,表示没有发生回环现象,则不做处理。

(三)有益效果

本发明针对传统视觉slam实时性不高的缺点,提出了提高视觉slam实时性的方法,本发明将sift算法与主成分分析方法结合为pca-sift算法,对提取的特征降到小于20维。并对特征匹配中的距离判断进行简化,减少运算量。另一方面,利用kinect能够同时获取物体的彩色图像和深度图像的优势,对场景提取轮廓并优化。之后利用场景的轮廓去完成两件事:一是关键帧的提取,二是在回环检测中先进行轮廓粗匹配以减少词袋模型中用于聚类的特征描述子的数量。采用本发明基于kinect的视觉slam方法,在视觉里程计环节通过结合主成分分析法将传统的sift算法降维得到pca-sift算法,并将匹配时的所用的欧式距离改为街区距离和棋盘距离的线性组合,提高了整体视觉slam的实时性。进一步,在回环检测中,首先提取关键帧的轮廓进行轮廓匹配缩减所需要进行相似性检测的关键帧数量,然后利用词袋模型进行二次回环精确回环检测,提高了回环检测的鲁棒性。

附图说明

图1是基于kinect的视觉slam方法基本流程图;

图2是本发明的方法中ransac算法的流程图。

具体实施方式

为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

本发明提供的一种基于kinect的视觉slam的基本流程图如图1所示,分视觉里程计环节、图优化环节和回环检测环节三个环节。具体过程为,在利用摄像机kinect同时获取物体的彩色图像和深度图像后,执行如下步骤如下:

步骤一,基于pca-sift和线性距离组合的视觉里程计环节

在视觉里程计环节采用pca-sift算法,且在特征匹配时用街区距离和棋盘距离的线性组合代替欧式距离,以实时得到关键帧的特征点,快速匹配。主要分为以下四个阶段:

第一阶段:提取关键帧的sift特征

首先,构建一个尺度空间;然后利用高斯差分算子dog计算出关键点;之后求出关键点的主方向;最后生成关键点描述子,作为关键帧的sift特征,这个描述子是128维的。关键帧相当于角度转过一定角度或者平移超过一定距离的帧。所述关键点描述子为sift描述符;

第二阶段:结合主成分分析法得到关键帧的pca-sift特征

首先输入待匹配图像的所有sift描述符,假设有m个特征点,其特征向量xi(i=1,2,3,…,128)的维数是128维的。构造一个样本矩阵x,其中xij表示第j(0<j≤m)个特征点的第i维特征向量的值。

然后计算上述样本矩阵x的协方差矩阵,得到一个128*128的协方差矩阵z。计算过程如下:先对xi求平均,得到再对每一个xi,计算xi-xav,这样得到的矩阵记为c=xi-xav;得到协方差矩阵z=c*ct

之后计算这个协方差矩阵z的特征值与对应的特征向量,理论上会求出128个特征值和对应的特征向量。然后按照特征值从大到小的顺序排列,取出前t’个较大的特征值对应的特征向量,把其构建成一个128*t’的矩阵,记为s。

最后把sift描述符投影到子空间中,从而得到pca-sift描述符,作为pca-sift特征。用样本矩阵x乘以上述特征矩阵s,得到一个m*t’大小的矩阵,将原有的128维sift特征降维成t’维向量,t’取20以内的整数。

第三阶段:用街区距离和棋盘距离的线性组合代替欧氏距离进行对两幅关键帧中的sift特征(描述符)匹配,找到两幅关键帧中的匹配特征点

为了使得在匹配时的速度更快,复杂度更小,匹配过程中使用街区距离和棋盘距离。

欧式距离为:

街区距离d1和棋盘距离d∞的定义为:

然后用两者的线性组合α(d1(x,y)+d∞(x,y))代替欧氏距离,街区距离和棋盘距离的加减运算,相对于欧式距离计算过程中的平方与开方运算快得多。

其中,n为偶数时,n为奇数时,

第四阶段:用ransac算法消除误匹配

如图2所示,是用ransac算法消除误匹配的主要流程图。

为了消除这些误匹配项,首先对匹配点进行初步筛选,筛选标准是对当前所有匹配点的匹配距离进行排列,找出最小的匹配距离。其他匹配距离如果超过最小匹配距离的4倍,表明这两个点的匹配度相对于其他剩下的点相对较差,则过滤掉这些点。然后采取图2所示的ransac算法对匹配的特征点进行一致性检测。

步骤二,基于g2o的图优化

利用图优化方法减小步骤一的视觉里程计环节中累计的误差。基于g2o的图优化主要由以下步骤实现:

第一步,构建一个求解器:globaloptimizer,并写明其使用的算法,比如gauss-newton算法或lm算法。本发明选用lm算法。

然后,在求解器内添加点和边:在本发明中构建的图里,点是关键帧时相机的位姿,边则是相机运动间的变换矩阵,也即这两个点的变换。并在程序运行过程中不断作帧间检测。

最后,通过选择一些优化参数完成优化并存储优化结果。优化完毕后读取每个节点的估计值,得到优化后的运动轨迹。其中,选择不同的迭代策略得到对应的优化参数,所述迭代策略为gauss-newton(gn)法或levenberg-marquardt(lm)。

步骤三,基于轮廓匹配和词袋模型的回环检测

第一阶段:轮廓匹配进行初步筛选

首先通过遍历深度图中每个像素,获得深度值和物体标记,提取处在预设范围内的深度图像,从而提取图像前端区域。然后利用prewitt算子对kinect提取的彩色图像和深度图像进行轮廓提取,并进行优化。最后利用轮廓的hu矩(归一化中心矩阵的线性组合,代表图像某个特征)进行轮廓的匹配,从而减少回环检测中做相似性检测的关键帧个数。

第二阶段:利用词袋模型进行回环检测

首先利用pca-sift算法从包括原图像以及利用轮廓匹配筛选得到的图像中提取视觉词汇向量,这些向量代表的是图像中局部不变的特征点;然后将所有特征点向量集合到一块,利用k-means算法合并词义相近的视觉词汇,构造一个包含k个视觉单词的视觉表;之后统计视觉表中每个视觉单词在图像中出现的次数,从而将每一副图像表示成为一个k维数值的向量;最后利用这个k维数值的向量去求当前图像与其他图像的相关性,得到相关性系数,如果这个系数超过预设的阈值,那么认为发生了回环,则去优化运动估计(即优化所求出的相机运动的位移和角度),得到优化后的运动估计;若没有超过阈值,表示没有发生回环现象,则不做处理。

第三环节中,利用第一环节求出的关键帧的特征描述符,即对于每一个新检测到的关键帧,都通过与之前关键帧的特征描述符进行匹配,从而判断回环检测与否。

可以看出,本发明针对传统视觉slam实时性不高的缺点,提出了提高视觉slam实时性的方法:传统视觉里程计环节里特征匹配使用sift算法,特征取128维,本发明将sift算法与主成分分析方法结合为pca-sift算法,对提取的特征降到小于20维。并对特征匹配中的距离判断进行简化,减少运算量。另一方面,利用kinect能够同时获取物体的彩色图像和深度图像的优势,对场景提取轮廓并优化。之后利用场景的轮廓去完成两件事:一是关键帧的提取,二是在回环检测中先进行轮廓粗匹配以减少词袋模型中用于聚类的特征描述子的数量。

采用本发明基于kinect的视觉slam方法,在视觉里程计环节通过结合主成分分析法将传统的sift算法降维得到pca-sift算法,并将匹配时的所用的欧式距离改为街区距离和棋盘距离的线性组合,提高了整体视觉slam的实时性。在回环检测中,首先提取关键帧的轮廓进行轮廓匹配缩减所需要进行相似性检测的关键帧数量,然后利用词袋模型进行二次回环精确回环检测,提高了回环检测的鲁棒性。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1