一种街景场景下基于全局图像条纹码的回环检测方法与流程

文档序号:16432310发布日期:2018-12-28 20:14阅读:217来源:国知局
一种街景场景下基于全局图像条纹码的回环检测方法与流程

本发明涉及图像处理方法,尤其涉及一种街景场景下基于全局图像条纹码的回环检测方法。

背景技术

即时定位与地图构建(slam)是解决移动机器人在未知非结构化环境中自主导航与控制的关键,一个完整的slam系统包括传感器数据处理、位姿估计、构建地图、回环检测四个部分。其中回环检测机制是解决移动机器人的闭环重定位,提高slam系统鲁棒性的重要环节。已有的像素级别slam定位方法除非借助于特征点,否则无法进行回环检测的操作,词袋模型就是一种典型的使用特征点的回环检测的方法。但在基于直接法的slam系统中使用特征点就违背了使用直接法的本意,效率大大降低。机器学习算法进行回环检测不用提取特征点但需要提前训练,消耗时间过长且效果不稳定。因此对于速度快又高效的回环检测的算法的需求就日益凸显。



技术实现要素:

发明目的:针对现有技术存在的问题,本发明的目的在于提供一种基于全局图像条纹码进行回环检测的方法,以实现在基于像素的slam方法中直接而高效地进行回环检测,有效提高slam系统的全局一致性且保持系统较高的实时性。

技术方案:一种街景场景下基于全局图像条纹码的回环检测方法,包括如下步骤:

(1)对已有地图的所有图像帧进行编码,并将编码存储在分层数据结构中;

(2)对新采集到的关键帧也进行二进制编码,与已有的二进制描述码进行对比,获取hamming距离最小的前k张图片;

(3)将k张图片与新采集的图像关键帧一起进行特征点提取比对操作,比对两个图像间的特征相似度,得到分值最高的图,以此获知此时机器人的位置。

所述步骤(1)中,具体包括如下内容:

(1.1)对图像进行x和y方向的梯度计算,得到灰度图像:

(1.1.1)将rgb彩色图像转化为灰度图:

grey=0.299×r+0.587×g+0.115×b

根据上式,依次读取每个像素点的r、g、b值,进行计算灰度值,将灰度值赋值给新图像的相应位置,所有像素点遍历一遍完成转换;

(1.1.2)采用索贝尔算子进行图像梯度计算,索贝尔卷积因子为:

该算子包含两组3×3的矩阵,分别为横向矩阵及纵向矩阵;将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值;以i代表原始图像,gx及gy分别代表经横向及纵向边缘检测的图像灰度值,其公式如下:

gx=[f(x+1,y-1)+2×f(x+1,y)+f(x+1,y+1)]-[f(x-1,y-1)+2×f(x-1,y)+f(x-1,y+1)]

gy=[f(x-1,y-1)+2f(x,y-1)+f(x+1,y-1)]-[f(x-1,y+1)+2×f(x,y+1)+f(x+1,y+1)]

其中,f(x,y)表示图像(x,y)像素点的灰度值,图像的每一个像素的横向及纵向灰度值通过以下公式结合,来计算该点灰度的大小:

|g|=|gx|+|gy|;

(1.2)设定阈值t1,若像素点的灰度值大于该阈值则该像素点置1;设定阈值t2,将w个像素宽的图像竖组合在一起,形成一个group,在每一个group中维护一个w*h的窗口,其中,w表示窗口宽度,h表示窗口长度,竖直移动窗口,计算窗口中每个竖直像素列中连续的“1”的个数,当连续的“1”的个数超过t2,则将该竖直像素列置1;设置阈值t3,针对宽为w的滑动窗口图像竖,计算竖直像素列的“1”的个数,若超过t3,则整个group置1;遍历所有group,最终形成了128bits的图像描述码;根据图像的大小调节w的大小,使得描述码为128bits,默认情况下t2为20,t3为1,t1是图像灰度值中值;

(1.3)采用kd树分割128维数据空间的数据结构便于快速索引:

(1.3.1)输入:128维空间数据集t={x1,x2,…,xi…,xn},其中xi={xi(1),xi(2),…xi(128)},i=1….n;

(1.3.2)构造根节点:根结点对应于包含t的128维空间的超矩形区域;选择x(1)为坐标轴,以t中所有实例的x(1)坐标的中位数为切分点,将根结点对应的超矩形区域切分为两个子区域;切分由通过切分点并与坐标轴x(1)垂直的超平面实现;由根结点生成深度为1的左、右子结点:左子结点对应坐标x(1)小于切分点的子区域,右子结点对应于坐标x(1)大于切分点的子区域;将落在切分超平面上的实例点保存在根结点;

(1.3.3)重复:对深度为j的结点选择x(i)为切分的坐标轴,i=j%128+1,以该结点的区域中所有实例的x(i)坐标的中位数为切分点,将该结点对应的超矩形区域切分为两个子区域;切分由通过切分点并与坐标轴x(i)垂直的超平面实现;由该结点生成深度为j+1的左、右子结点:左子结点对应坐标x(i)小于切分点的子区域,右子结点对应坐标x(i)大于切分点的子区域;将落在切分超平面上的实例点保存在该结点。

所述步骤(2)中,具体包括如下内容:

利用mih方法进行快速检索;在建立索引时将长度为128维的二进制码划分为8个连续不重合的子串,每个子串的长度为16,然后为每个子串建立一个哈希表;在查询时,按照同样的方式把待查询二进制码划分为8个子串,然后在相应的哈希表中进行查找以返回候选结果,最后根据候选结果和查询之间的hamming距离对候选结果排序,并得到最近邻,hamming距离计算方法为:

d(x,y)=∑(x[i]⊕y[i])。

所述步骤(3)中,具体包括如下内容:

(3.1)选用sift算法对图像进行特征检测与匹配:

(3.1.1)构建尺度空间,模拟图像数据的多尺度特征;

一幅二维图像的尺度空间定义为:

l(x,y,s)=g(x,y,s)*i(x,y)

其中,g(x,y,s)是尺度可变高斯函数

利用不同尺度的高斯差分核与图像卷积生成:

d(x,y,s)=l(x,y,ks)-l(x,y,s)

l(x,y,s)定义的是二维图像的尺度空间,x,y是空间坐标,s大小决定图像的平滑程度,g(x,y,s)是尺度可变高斯函数;

(3.1.2)寻找尺度空间的极值点,每一个采样点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共9×2+8=26个点比较,以确保在尺度空间和二维图像空间都检测到极值点;一个图像点点如果在dog尺度空间本层以及上下两层的9×2+8=26个领域中是最大或最小值时,则认为该点是图像在该尺度下的一个候选关键点。

(3.1.3)对尺度空间d(x,y,s)进行二次泰勒展开,再利用二次泰勒展开式进行最小二乘拟合;然后通过计算拟合曲面的极值来进一步确定图像特征点的尺度和图像特征点的位置;确定了每幅图中的特征点后,为每个特征点计算一个方向,依照这个方向做进一步的计算,利用关键点邻域像素的梯度方向分布特性为每个关键点指定方向参数,使算子具备旋转不变性;

θ(x,y)=atan2((l(x,y+1)-l(x,y-1))/l(x+1,y)-l(x-1,y)))

m(x,y)和θ(x,y)为(x,y)处梯度的模值和方向公式;其中l所用的尺度为每个关键点各自所在的尺度;至此,图像的关键点已经检测完毕,每一个关键点有三个信息:位置,所处尺度和方向,由此确定一个sift特征区域;

(3.1.4)生成关键点描述子;将坐标轴旋转为关键点的方向,以确保旋转不变性,以关键点为中心取8×8的窗口,然后在每4×4的小块上计算各方向的梯度方向直方图,绘制每个梯度方向的累加值,即可形成一个种子点。一个关键点由2×2共4个种子点组成,每个种子点有8个方向向量信息。计算关键点周围的16*16的窗口中每一个像素的梯度,而且使用高斯下降函数降低远离中心的权重。这样就可以对每个特征形成一个4*4*8=128维的描述子,每一维都可以表示4*4个格子中尺度和方向。

(3.2)根据sift进行图像匹配;当两幅图像的描述子生成后,下一步采用关键点特征向量的欧氏距离来作为两幅图像中关键点的相似性判定度量;取其中一幅图像中的某个关键点,并找出其与另一幅图像中欧氏距离最近的前两个关键点,在两个关键点中,如果最近的距离除以欠近的距离少于两个距离的比例阈值,则接受这一对匹配点,最后选取匹配点数最多的图像即可作为参考图像;所述比例阈值取值为0.4~0.6,优选为0.5。

有益效果:本发明和现有技术相比,显著进步在于:本发明在进行回环检测时,只需要对图像进行简单的编码,利用已有的算法对编码进行匹配即能完成目的,可操作性高。而且不需要借助图像的特征点以及提前进行提前训练,大大减小了计算量和工作强度,提高了工作效率。本方法利用关键帧描述码进行回环检测得到匹配对,与传统方法相比,解决了不能进行回环检测、工作强度大、效率低等问题,为回环检测提供了极大的便利。

附图说明

图1为本发明具体实施例的编码流程图;

图2为本发明的方法流程图。

具体实施方式

以下结合附图和具体实施例对本发明中的关键技术和具体实现方法进行详细说明。

如图1、图2所示,本发明的一种街景条件下基于图像全局描述码的回环检测算法,核心思想为:对已有的图像帧以及新进入的图像关键帧进行二进制编码,以海明距离为参考计算关键帧的k近邻,再利用sift算法对前k张图片与原图进行特征点提取比对操作比对两个图像间的特征相似度。得到分值最高的图。下面对本发明的各个步骤进行详细的说明。

步骤一、对已有地图的所有图像帧进行编码操作,并将编码存储在分层数据结构中以便快速索引。具体包括:

1.1、对图像进行x和y方向的梯度计算,得到灰度图像。

(1)将rgb彩色图像转化为灰度图。

grey=0.299×r+0.587×g+0.115×b

根据这个公式,依次读取每个像素点的r、g、b值,进行计算灰度值(转化为整型数),将灰度值赋值给新图像的相应位置,所有像素点遍历一遍完成转换;

(2)采用索贝尔算子进行图像梯度计算,索贝尔卷积因子为:

该算子包含两组3×3的矩阵,分别为横向及纵向矩阵。将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。以i代表原始图像,gx及gy分别代表经横向及纵向边缘检测的图像灰度值,其公式如下:

gx=[f(x+1,y-1)+2×f(x+1,y)+f(x+1,y+1)]-[f(x-1,y-1)+2×f(x-1,y)+f(x-1,y+1)]

gy=[f(x-1,y-1)+2f(x,y-1)+f(x+1,y-1)]-[f(x-1,y+1)+2×f(x,y+1)+f(x+1,y+1)]

其中,f(x,y)表示图像(x,y)点的灰度值。

图像的每一个像素的横向及纵向灰度值通过以下公式结合,来计算该点灰度的大小:

|g|=|gx|+|gy|;

1.2、设定阈值t1,若像素点的灰度值大于该阈值则该像素点置1。设定阈值t2,将w个像素宽的图像竖组合在一起,形成一个group,在每一个group中维护一个w*h的窗口(一张1280*960图片,默认参数设置w为10,h为30),竖直移动窗口,计算窗口中每个竖直像素列中连续的“1”的个数,当连续的“1”的个数超过t2,则将该竖直像素列置1。设置阈值t3,针对宽为w的滑动窗口图像竖,计算竖直像素列的“1”的个数,若超过t3,则整个group置1。遍历所有group,最终形成了128bits的图像描述码。根据图像的大小调节w的大小,使得描述码为128bits,默认情况下t2为20,t3为1,t1是图像灰度值中值;

1.3、采用kd树分割128维数据空间的数据结构便于快速索引。

(1)输入:128维空间数据集t={x1,x2,….xn},其中xi={xi(1),xi(2),…xi(128)},i=1,….n;

(2)构造根节点:根结点对应于包含t的128维空间的超矩形区域。选择x(1)为坐标轴,以t中所有实例的x(1)坐标的中位数为切分点,将根结点对应的超矩形区域切分为两个子区域。切分由通过切分点并与坐标轴x(1)垂直的超平面实现。由根结点生成深度为1的左、右子结点:左子结点对应坐标x(1)小于切分点的子区域,右子结点对应于坐标x(1)大于切分点的子区域。将落在切分超平面上的实例点保存在根结点;

(3)重复:对深度为j的结点选择x(i)为切分的坐标轴,i=j%128+1,以该结点的区域中所有实例的x(i)坐标的中位数为切分点,将该结点对应的超矩形区域切分为两个子区域。切分由通过切分点并与坐标轴x(i)垂直的超平面实现。由该结点生成深度为j+1的左、右子结点:左子结点对应坐标x(i)小于切分点的子区域,右子结点对应坐标x(i)大于切分点的子区域。将落在切分超平面上的实例点保存在该结点;

步骤二、对新采集到的关键帧也进行二进制编码,跟已有的二进制描述码进行对比,获取hamming距离最小的前3张图片。具体包括:

利用mih方法进行快速检索。在建立索引时将长度为128维的二进制码划分为8个连续不重合的子串,每个子串的长度为16,然后为每个子串建立一个哈希表.在查询时,按照同样的方式把待查询二进制码划分为8个子串,然后在相应的哈希表中进行查找以返回候选结果,最后根据候选结果和查询之间的hamming距离对候选结果排序,并得到最近邻,其中海明距离计算方法为:

d(x,y)=∑(x[i]⊕y[i]);

步骤三、根据步骤二获取的3张图片,将它们与新采集的图像关键帧一起进行特征点提取比对操作,比对两个图像间的特征相似度,得到分值最高的图,则获知此时机器人的位置。具体包括:

3.1、选用sift算法对图像进行特征检测与匹配,sift特征不止具有尺度不变性,即使改变旋转角度,图像亮度或拍摄视角,仍然能够得到好的检测效果。具体步骤如下:

(1)构建尺度空间,模拟图像数据的多尺度特征。一幅二维图像的尺度空

间定义为:

l(x,y,s)=g(x,y,s)*i(x,y)

其中,g(x,y,σ)是尺度可变高斯函数

为了有效的在尺度空间检测到稳定的关键点,提出了高斯差分尺度空间,利用不同尺度的高斯差分核与图像卷积生成:

d(x,y,s)=l(x,y,ks)-l(x,y,s)

对于一幅图像建立其在不同尺度的图像,也成为子八度(octave),这是为了scale-invariant,也就是在任何尺度都能够有对应的特征点,第一个子八度的scale为原图大小,后面每个octave为上一个octave降采样的结果,即原图的1/4(长宽分别减半),构成下一个子八度(高一层金字塔);

(2)寻找尺度空间的极值点,每一个采样点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。一个点如果在dog尺度空间本层以及上下两层的26个领域中是最大或最小值时,就认为该点是图像在该尺度下的一个特征点;

(3)对尺度空间d(x,y,s)进行二次泰勒展开,再利用二次泰勒展开式进行最小二乘拟合。然后通过计算拟合曲面的极值来进一步确定图像特征点的尺度和图像特征点的位置。确定了每幅图中的特征点后,,为每个特征点计算一个方向,依照这个方向做进一步的计算,利用关键点邻域像素的梯度方向分布特性为每个关键点指定方向参数,使算子具备旋转不变性。

θ(x,y)=atan2((l(x,y+1)-l(x,y-1))/l(x+1,y)-l(x-1,y)))

m(x,y)和θ(x,y)为(x,y)处梯度的模值和方向公式。其中l所用的尺度为每个关键点各自所在的尺度。至此,图像的关键点已经检测完毕,每一个关键点有三个信息:位置,所处尺度,方向,由此确定一个sift特征区域;

(4)生成关键点描述子。将坐标轴旋转为关键点的方向,以确保旋转不变性,以关键点为中心取8×8的窗口,然后在每4×4的小块上计算8个方向的梯度方向直方图,绘制每个梯度方向的累加值,即可形成一个种子点。一个关键点由2×2共4个种子点组成,每个种子点有8个方向向量信息。计算关键点周围的16*16的窗口中每一个像素的梯度,而且使用高斯下降函数降低远离中心的权重。这样就可以对每个特征形成一个4*4*8=128维的描述子,每一维都可以表示4*4个格子中尺度和方向(scale/orientation);

3.2、根据sift进行图像匹配。当两幅图像的描述子生成后,下一步采用关键点特征向量的欧氏距离来作为两幅图像中关键点的相似性判定度量。取图像1中的某个关键点,并找出其与图像2中欧氏距离最近的前两个关键点,在两个关键点中,如果最近的距离除以欠近的距离少于某个比例阈值,则接受这一对匹配点,阈值取值在0.4~0.6最佳,本实施例中取值为0.5。最后选取匹配点数最多的图像即可作为参考图像。

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