发明内容
本发明提供一种基于语义分割技术的机器人SLAM方法,以解决现有技术中存在的上述技术问题。
为解决上述技术问题,本发明提供一种基于语义分割技术的机器人SLAM方法,包括:
步骤1:获取机器人运动过程中拍摄的图像数据,该图像数据为单目摄像机拍摄的视频序列;
步骤2:对图像数据进行语义分割处理,从而区分得到图像中的平面区域和非平面区域,检测非平面区域中的特征点;
步骤3:构建所述特征点和平面区域的外观描述方式,从而建立特征点和平面区域在不同图像帧之间的匹配对应关系;
步骤4:根据上述对应关系,构建一个似然函数;
步骤5:最小化所述似然函数得到混合三维地图和相机运动参数。
作为优选,所述步骤2中:采用深度学习中的SegNet来实现对图像数据的语义分割,利用SIFT算法检测非平面区域中的特征点。
作为优选,所述步骤3中:采用SIFT特征描述算法作为特征点的外观描述矢量。
作为优选,利用K-d树算法匹配外观描述矢量得到不同图像中特征点之间的对应关系。
作为优选,所述步骤3中:采用颜色直方图和纹理特征作为平面区域的描述方式,其中,所述颜色直方图通过将图像中平面区域内所有像素转换到HSV色彩空间后构建H和S通道的二维直方图实现,纹理特征通过计算区域内像素的Laws纹理能量描述特征矢量表示;最后将颜色直方图构成的矢量和纹理特征矢量组合在一起构成平面区域的外观描述矢量。
作为优选,通过对语义分割结果进行特征计算和边缘统计得到平面区域的外观描述方式,通过特征矢量最近邻匹配结合极线约束来获得平面区域在不同图像帧之间的匹配对应关系。
作为优选,所述步骤4包括:通过因子图表达步骤3中的对应关系,根据所述因子图构建相应的似然函数。
作为优选,所述步骤5包括:对所述似然函数取负对数得到代价函数,对所述代价函数进行模拟退火结合梯度下降策略实现最小化,进而获得相机位置姿态参数、三维空间点以及平面参数信息。
作为优选,所述因子图还同时表达:三维空间中的特征点和平面区域之间的相互作用关系与在二维的图像中的相互作用关系一致。
作为优选,所述步骤5中:混合三维地图通过三维空间的点以及平面来表示,其中,三维空间的平面包含语义信息。
与现有技术相比,本发明的基于语义分割技术的机器人SLAM方法,利用语义分割技术对图像中平面区域和非平面区域进行区分,并检测非平面区域的特征点,当图像中难以提取特征点或特征点较少时,能够通过平面区域匹配提升定位和场景重建的稳定性;构建得到的三维混合地图中包含部分语义信息,如地面、墙面等,这类信息有助于其他模块的处理,如机器人可通行区域分析、行人检测等。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。需说明的是,本发明附图均采用简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
如图1所示,本发明提供一种基于语义分割技术的机器人SLAM方法,通过对单目摄像机拍摄的视频序列进行处理,来获得相机运动参数并同时构建环境混合三维地图。其具体包括以下:
步骤1:获取机器人运动过程中拍摄的图像数据,该图像数据为单目摄像机拍摄的视频序列。
步骤2:采用深度学习中的SegNet(语义分割算法)对图像数据进行语义分割处理,从而区分得到图像中的平面区域和非平面区域,利用SIFT(尺度不变特征转换)算法检测非平面区域中的特征点。
步骤3:构建所述特征点和平面区域的外观描述方式,从而建立特征点和平面区域在不同图像帧之间的匹配对应关系。具体地,采用SIFT特征描述算法作为特征点的外观描述矢量。采用颜色直方图和纹理特征作为平面区域的描述方式,其中,所述颜色直方图通过将图像中平面区域内所有像素转换到HSV色彩空间后构建H和S通道的二维直方图实现,纹理特征通过计算区域内像素的Laws纹理能量描述特征矢量表示;最后将颜色直方图构成的矢量和纹理特征矢量组合在一起构成平面区域的外观描述矢量。进一步的,利用K-d树(k-维树)算法匹配外观描述矢量得到不同图像中特征点之间的对应关系;通过对语义分割结果进行特征计算和边缘统计得到平面区域的外观描述方式,通过特征矢量最近邻匹配结合极线约束来获得平面区域在不同图像帧之间的匹配对应关系。
步骤4:根据上述对应关系,构建一个似然函数;具体地,通过因子图表达步骤3中的对应关系,根据所述因子图构建相应的似然函数。其中,所述因子图还同时表达:三维空间中的特征点和平面区域之间的相互作用关系与在二维的图像中的相互作用关系一致。
步骤5:最小化所述似然函数得到混合三维地图和相机运动参数。对所述似然函数取负对数得到代价函数,对所述代价函数进行模拟退火结合梯度下降策略实现最小化,进而获得相机位置姿态参数、三维空间点以及平面参数信息。
作为优选,所述步骤5中:混合三维地图通过三维空间的点以及平面来表示,其中,三维空间的平面包含语义信息。
继续参照图1,下面举例具体说明本发明的SLAM方法的操作步骤:
首先,步骤1:获取机器人运动过程中拍摄的图像数据。
所述图像数据为单目摄像机拍摄的视频序列,即为一组机器人在运动过程中拍摄的图像数据集合I={I1,...,Ik,...,IN},其中Ik是第k幅输入图像。
进一步的,所述步骤1还包括获取拍摄过程中的相机参数,该相机参数包括:已知相机内参数信息矩阵集合K和未知的相机外参数信息集合C,其中,K={Kk}为拍摄第k幅输入图像Ik时摄像机的内参数,C={Ck},Ck={Rk,Tk}为拍摄第k幅输入图像Ik时摄像机相对位姿参数。
接着,执行步骤2和3:采用深度学习中的SegNet对图像数据进行语义分割处理,选择符合平面语义信息的区域如地面和房屋外墙立面,进行图像帧间匹配,得到平面区域,平面区域以外的其他区域作为非平面区域,利用SIFT算法检测非平面区域中的特征点。接着,构建所述特征点和平面区域的外观描述方式,从而建立特征点和平面区域在不同图像帧之间的匹配对应关系。
具体地,对于平面区域:令图像中的平面区域所对应的三维空间平面集合为B={Br},其中每个三维空间平面Br的表达方式为Br=(Xr,Yr,Zr,nr,sr,cr)。(Xr,Yr,Zr)为三维空间平面的中心坐标;nr为三维空间平面的法向量;sr为三维空间平面的面积;cr为三维空间平面的语义类别。其中,B是未知的待估计参数。
本发明还定义三维空间平面和二维图像中平面的映射关系集合
表示第l个三维空间平面在第k幅图像中对应的平面,其表示为
其中,L为对应二维图像中的平面在图像中的轮廓坐标序列;d表示该二维平面的外观描述矢量。
定义集合B与集合b之间的对应关系集合g,g={g
r},其中g
r={l
1,l
2,...}表示三维空间平面B
r分别和
等对应。其中,集合b可以通过对语义分割结果进行特征计算和边缘统计得到,集合g可以通过特征矢量最近邻匹配结合极线约束来获得。
对于特征点:定义地图中所有三维特征点坐标的集合Q,Q={Qs},地图中第s个三维特征点Qs的表示方式为Qs=(Xs,Ys,Zs),从而描述了特征点在世界坐标系下的三维坐标,本实施例中,集合Q是未知的待估计参数。
进一步的,定义三维特征点和二维图像点之间的映射关系集合
表示第i个三维特征点在第k幅图像中的观测值,其表示为
其中(x,y)表示第i个三维特征点在第k幅图像中的投影二维图像坐标;d表示该二维图像特征点的外观描述矢量。
进一步的,定义集合Q与集合q之间的对应关系集合u={u
s},其中u
s={i
1,i
2,...}表示三维点Q
s分别和
等对应。本发明中,图像中非平面区域的特征点利用SIFT算法检测得到,外观描述矢量d同样利用SIFT算法获得。不同图像中的特征点之间的对应关系通过利用K-d树算法匹配不同特征点的外观描述矢量来得到,从而可以获得集合q和集合u。
接着,执行步骤4,根据上述对应关系,构建一个似然函数。
需要说明的是,本发明中蕴含两个原理:其中一个原理为上述的对应关系,也即是说:三维空间中的特征点和平面区域与它们在图像中的投影点或投影区域对应;第二个原理为:三维空间中的特征点和平面区域之间的相互作用关系与在二维的图像中的相互作用关系一致,其中,二维的图像中特征点和平面区域的相互作用关系为通过机器学习习得的结果。将上述两个原理转化为如图2所示的因子图,图中,
和
反映了上述的第一个原理;
反映了上述的第二个原理。
根据所述因子图构建如下的似然函数,以求解所需变量:
接着执行步骤5,由于上式中包含乘积项,难以直接进行优化,因此本发明在实际操作过程中对该似然函数取负对数得到如下代价函数:
其中,
表示场景(也即是三维空间)中特征点的似然函数,其可以通过重建特征点在各图像中的投影与检测到的特征点的空间临近关系来描述;
表示场景中平面区域的似然函数,也就是反映了B
r和图像中平面区域的观测量的一致程度;
表示当图像中特征点和平面区域接触相关时,三维空间中对应的特征点和平面区域的距离应当非常接近。
具体地,为了获得
的表达式,首先根据步骤2和3中获得的特征点、特征点的外观描述矢量d以及不同图像中特征点之间的对应关系,从而可以获得集合q和集合u。在此基础上,本发明采用三角化方法获得初始的特征点坐标Q
s。从而有:
其中,N
c是相机图像数,σ
q为二维图像中投影测量误差的方差,
是将Q
s通过投影变换,变换到第k帧图像中的位置坐标。
为了获得
的表达式,首先需要对三维空间平面集合B
r进行初始化:为此先获取集合B与集合b之间的对应关系集合g,在此基础上,对于三维空间平面区域的中心坐标(X
r,Y
r,Z
r),通过对与该三维空间平面对应的二维图像中平面的中心点进行三角化实现初始化。对于三维空间平面的法向量n
r,通过训练一个随机森林判别器,利用该随机森林判别器在平面区域内提取特征,将每幅图像中的平面分为水平、前向和侧向几类,从而得到平面区域在每幅图像中的法向量
最后结合对应关系集合g,通过下式计算法向量初始值:
对于三维空间平面区域的面积,首先根据(X
r,Y
r,Z
r)和C
k计算平面和相机之间的距离
然后根据n
r和C
k计算平面法向量和相机视线之间的夹角
最后计算第r个三维空间平面区域在第k幅图像投影区域的面积
则三维空间平面区域的初始面积的计算方式如下:
对于平面的语义类别cr,则直接利用SegNet的输出进行初始化,并记录其相应的置信度P(cr=c)。
其中,
衡量了类别相关的平面区域的外观矢量参数在不同图像中的一致性,其表达式如下:
其中N
sc是语义类别的种数,
是第r个三维空间平面区域在第k幅图像中投影区域的外观描述特征矢量,可以通过对平面区域内提取色彩及纹理特征来得到。
是均值为μ、方差为Σ的高斯分布。Pr(c
r=l)和Σ
sc可以通过在训练样本中进行统计得到。
衡量了如下两种相似性:(1)三维空间中平面区域投影到各个图像中的面积和从图像中获取的平面区域的实际面积相似;(2)三维空间平面法向量映射到各个图像中与各个图像内根据平面区域估计得到平面法向量相似。因此,其表达式如下:
其中,
是将三维空间平面区域投影到第k幅图像平面上的面积;
是将三维空间平面法向量映射到第k幅图像中的法向量。
为了获得
的表达式,则首先计算特征点和平面区域接触候选集合{Q
s,B
r}。该集合的构造方法如下:统计当Q
s对应的图像点
在B
r对应的图像区域
内部的次数,当该次数大于预先设定的阈值时,将Q
s,B
r设为该集合的元素。从而
的表达式如下:
其中,ds,r为点Qs到平面Br之间的距离。
如此,便明确了代价函数即式(1)中各项的含义。最后,对代价函数进行模拟退火结合梯度下降策略,从而实现最小化,获得最终所需的结果,其主要步骤如下:
步骤100:初始化相机外参数信息集合C,并且令C0=C。此步骤相机外参数信息初始化可以通过传统的基于两相邻图像帧匹配特征点后计算本质矩阵E并对其进行SVD(奇异值)分解得到。并且按上述方法得到初始化的Q0=Q和B0=B。
步骤200:将下述步骤迭代运行M次。其中M为预先设定好的值,取决于结果要求精度和硬件的运算性能。当精度要求高或硬件的运算能力强时,可以适当增加M值,一般可取M=50。假设当前为第i次迭代。
步骤201:对相机外参数信息集合C进行扰动,即C′i=Ci-1+C',其中C'为高斯分布的高维矢量。
步骤202:固定C′i,对式(1)-log(ψ(Q,B,C|I))分别对Q,B求偏导数,以Qi-1,Bi-1为初始值,通过梯度下降法最小化-log(ψ(Q,B,C|I)),得到优化后的Qi和Bi。
步骤203:固定Qi和Bi,对式(1)-log(ψ(Q,B,C|I))求相对C求偏导数,以Ci'为初始值,通过梯度下降法最小化-log(ψ(Q,B,C|I)),得到优化后的Ci。
步骤204:计算p=(-log(ψ(Qi,Bi,Ci|I)))/(-log(ψ(Qi-1,Bi-1,Ci-1|I))),如果p<1,则以概率1-p接受此次结果,否则令:Ci=Ci-1,Qi=Qi-1,Bi=Bi-1,返回步骤200进行下次迭代。
显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。