本发明涉及即时定位与地图重建技术,尤其涉及一种单目稠密即时定位与地图重建方法。
背景技术:
即时的定位与地图重建技术(slam)能够预测传感器或者机器人的姿态并且能实时的重建出周围环境的地图,该技术在机器人和增强现实领域有着广泛的应用。然而,针对室内场景的单目实时稠密地图重建依然是个挑战性很大的问题。现有的单目slam系统,要么使用关键点得到一个稀疏的地图,要么使用高梯度点得到一个半稠密的地图,对于关键点或者高梯度点可以使用三角测量的方法获取深度。对于大块的纹理不丰富的区域很难找到匹配点,很难准确预测这些区域的深度。因此利用单目摄像头构建一个实时的稠密slam系统非常困难。目前,最好的单目视觉稠密slam系统是dpptam,该系统利用平面模型对大块的纹理不丰富区域建模,用区域内少量有深度的点来恢复出整个平面区域所有点的深度。该系统存在以下几个主要问题:
1.时间较慢:所使用的检测平面区域的算法比较慢,而且对每一个平面区域都去重建,需要大量时间;
2.效率不高:把每个平面重建出来之后,会通过过滤条件把很多重建结果舍弃掉,导致效率不高;
3.重建精度不高:平面检测算法存在噪声,造成有些区域内可能含有不止一个平面,如果把这些区域按照只有一个平面去重建,带来很大的重建误差。
技术实现要素:
有鉴于此,本发明提出了一种时间快、效率高、精度高、地图的完整度高的单目稠密即时定位与地图重建方法。
本发明的技术方案是这样实现的:本发明提供了一种单目稠密即时定位与地图重建方法,包括以下步骤,
s1,获取图片流,通过视觉追踪,优化得到每一帧图片对应的相机姿态;
s2,半稠密地图重建,预测高梯度点的深度,得到关键帧和半稠密点;
s3,稠密地图重建,利用平面模型去拟合大块的纹理不丰富区域,用区域内少量有深度的点来恢复出整个平面区域所有点的深度。
在以上技术方案的基础上,优选的,所述步骤s3包括,
s3-a,对于每个关键帧,提取最大稳定颜色区域,作为候选的平面区域;
s3-b,对于关键帧1的一个候选的平面区域a,将a内有深度的点,通过相机位姿投影到另一个关键帧2,如果有足够多的投影点落在了关键帧2中某个候选的平面区域b内,我们进行反向投影,将b中有深度的点投影到关键帧1中,如果有足够多的点也落在了a内部,认为关键帧1中的a和关键帧2中的b匹配,如果双向匹配过程中的任何一次匹配不成功,舍弃该候选的平面区域a;
s3-c,对于候选的平面区域中有深度的点,随机的选取其中不共线的三个点求取一个平面模型,计算符合该平面模型的内点数量,不断的进行这一过程,找到内点数量最多的那个平面模型,记录该平面模型,同时将内点从所有3d点集中移出,如果剩下的3d点的数量多于原来3d点总数量的10%,继续上述过程,最后得到1个或者多个平面模型以及每个平面模型对应的3d点;接着通过比较每个2d像素点在每个平面模型上的ncc响应以及进行平面交线划分的方式将最大稳定颜色区域内的2d像素点分别对应到不同的平面模型上;
s3-d,同一个候选的平面区域会出现在多个关键帧中,对于关键帧1中的最大稳定颜色区域a以及关键帧2中的候选的平面区域b,这两个区域会重建出两个结果,如果a中有90%的3d点经过位姿变换后都能落到b重建的平面上,我们就把这两个平面模型融合为一个新的模型;如果某个匹配的候选的平面区域重建的结果不符合该模型,则将这个不符合该模型的重建结果舍弃。
在以上技术方案的基础上,优选的,所述步骤s1中,通过最小化高梯度点的光度误差,优化得到每一帧图片对应的相机姿态。
在以上技术方案的基础上,优选的,所述步骤s2中使用立体视觉中的三角测量法来预测高梯度点的深度。
本发明的单目稠密即时定位与地图重建方法相对于现有技术具有以下有益效果:
(1)使用更快速,鲁棒性更好的平面区域检测算法,而且在重建之前先找到稳定性好,可信度高的平面区域,接着进行重建,将时间大大降低;
(2)重建之前先找到稳定性好,可信度高的平面区域,只重建这些区域,在接下来的过滤过程中只有很少一部分重建结果会被舍弃,大大提高重建效率;
(3)由于平面区域检测算法存在噪声,我们使用多平面分割的方法来重建平面区域;
(4)本发明的单目稠密即时定位与地图重建方法能够在不使用gpu的情况下实时的运行;在tum数据集上,我们的稠密重建的算法运行时间只需要dpptam的35%左右,而且在地图的精度和完整率方面,我们的算法要比dpptam的高。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明单目稠密即时定位与地图重建方法流程图。
具体实施方式
下面将结合本发明实施方式中的附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
如图1所示,本发明的单目稠密即时定位与地图重建方法,包括以下步骤:
s1,视觉追踪。获取图片流,通过视觉追踪,优化得到每一帧图片对应的相机姿态。具体的,通过最小化高梯度点的光度误差,优化得到每一帧图片对应的相机姿态。
s2,半稠密地图重建。预测高梯度点的深度,得到关键帧和半稠密点。具体的,使用立体视觉中的三角测量法来预测高梯度点的深度。
s3,稠密地图重建。利用平面模型去拟合大块的纹理不丰富区域,用区域内少量有深度的点来恢复出整个平面区域所有点的深度。
稠密地图重建是本发明的关键步骤,具体的,其包括以下步骤,
s3-a,准平面区域提取。对于每个关键帧,提取最大稳定颜色区域,作为候选的平面区域;
s3-b,平面区域的匹配。每个候选的平面区域内都存在少量的有深度信息的点,这些点来自于半稠密重建线程。对于关键帧1的一个候选的平面区域a,将a内有深度的点,通过相机位姿投影到另一个关键帧2,如果有足够多的投影点落在了关键帧2中某个候选的平面区域b内,我们进行反向投影,将b中有深度的点投影到关键帧1中,如果有足够多的点也落在了a内部,认为关键帧1中的a和关键帧2中的b匹配,如果双向匹配过程中的任何一次匹配不成功,舍弃该候选的平面区域a;
s3-c,多平面分割。然而由于候选的平面区域分割及匹配过程中存在噪声,得到的准平面区域中有一些可能是由多个平面组成的,因此我们进行多平面的分割。对于候选的平面区域中有深度的点,随机的选取其中不共线的三个点求取一个平面模型,计算符合该平面模型的内点数量,不断的进行这一过程,找到内点数量最多的那个平面模型,记录该平面模型,同时将内点从所有3d点集中移出,如果剩下的3d点的数量多于原来3d点总数量的10%,继续上述过程,最后得到1个或者多个平面模型以及每个平面模型对应的3d点;接着通过比较每个2d像素点在每个平面模型上的ncc响应以及进行平面交线划分的方式将最大稳定颜色区域内的2d像素点分别对应到不同的平面模型上;
s3-d,错误平面的过滤及多平面的融合。同一个候选的平面区域会出现在多个关键帧中,对于关键帧1中的最大稳定颜色区域a以及关键帧2中的候选的平面区域b,这两个区域会重建出两个结果,如果a中有90%的3d点经过位姿变换后都能落到b重建的平面上,我们就把这两个平面模型融合为一个新的模型;如果某个匹配的候选的平面区域重建的结果不符合该模型,则将这个不符合该模型的重建结果舍弃。
以上所述仅为本发明的较佳实施方式而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。