一种基于双目摄像头的视觉建图和定位方法转让专利

申请号 : CN202210690011.1

文献号 : CN115049731B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 孙杰余佳骏

申请人 : 感知信息科技(浙江)有限责任公司

摘要 :

本发明提出了一种基于双目摄像头的视觉建图和定位方法,涉及计算机技术领域。该方法包括:获取双目摄像头采集的双目图像帧序列,对双目图像帧序列中的所有图像帧依次进行预处理和特征提取,得到各个图像帧的局部特征点、局部描述子和全局描述子。对左帧图像和右帧图像的局部特征点进行匹配,得到图像特征点匹配结果。将所有左帧图像划分成多个第一锚点组,并搜索回环。对双目摄像头的图像帧序列构建点云地图。导出构建完成的双目地图,以供单目相机定位。该方法结合深度学习领域知识,以及视觉地图的构建方法和表达形式,利用双目摄像头构建全局一致地图,生成双目地图后,则可使用单目相机进行实时的相机定位。

权利要求 :

1.一种基于双目摄像头的视觉建图方法,其特征在于,包括如下步骤:获取双目摄像头采集的双目图像帧序列,对所述双目图像帧序列中的所有图像帧依次进行预处理和特征提取,得到各个图像帧的局部特征点、局部描述子和全局描述子,其中,所述双目图像帧序列中任一图像帧包括左帧图像和右帧图像;

按照预设特征匹配方法对所述左帧图像和所述右帧图像的局部特征点进行匹配,得到图像特征点匹配结果;

按照预设划分方法,将所有左帧图像划分成多个第一锚点组,并按照预设回环搜索方法搜索回环,得到任一第一锚点组对应的回环信息;

根据所述图像特征点匹配结果、所有回环信息,以及各个图像帧的局部特征点、局部描述子和全局描述子,对双目图像帧序列构建点云地图,以构建双目地图;

所述按照预设划分方法,将所有左帧图像划分成多个第一锚点组的步骤包括:将所有左帧图像按时间序列每预设数量帧分为初步锚点组

并将任一初步锚点组中的序列中间帧作为锚点帧,将该初

步锚点组中的非锚点帧作为普通帧,其中, 为第i组锚点帧序号,N为预设数量, 为第i组i普通帧序号集合,Th为第i组搜索阈值;

遍历所有初步锚点组,对相邻两个初步锚点组的锚点帧的局部特征点使用SuperGlue网络进行匹配得到第一匹配点数,若所述第一匹配点数未超过第一阈值,则时间较早的初步锚点组独立为第一锚点组,若所述第一匹配点数超过第一阈值,则将两个初步锚点组合并为一组得到第二锚点组,取所述第二锚点组中的序列中间帧作为新的锚点帧;

重复上述步骤,直至构造完成所有第一锚点组。

2.根据权利要求1所述的基于双目摄像头的视觉建图方法,其特征在于,所述获取双目摄像头采集的双目图像帧序列,对所述双目图像帧序列中的所有图像帧依次进行预处理和特征提取,得到各个图像帧的局部特征点、局部描述子和全局描述子的步骤包括:对所述双目图像帧序列中的所有图像帧使用YOLOv5模型进行图像分割处理后,检测出动态对象和静态对象的像素区域,并根据所述动态对象和所述静态对象构建每个图像帧的图像掩码,其中,所述静态对象在图像掩码中置1,所述动态对象在图像掩码中置0;

将每个图像帧的原始图像和对应的图像掩码相乘,得到新的图像帧;

对所述新的图像帧使用SuperPoint网络提取局部特征点和局部描述子,并使用NetVLAD网络提取全局描述子;

将各个图像帧的局部特征点、局部描述子和全局描述子保存至初始化文件中。

3.根据权利要求1所述的基于双目摄像头的视觉建图方法,其特征在于,所述按照预设特征匹配方法对所述左帧图像和所述右帧图像的局部特征点进行匹配,得到图像特征点匹配结果的步骤包括:对同一时刻的左帧图像和右帧图像的局部特征点使用SuperGlue网络进行匹配,对两个相邻左帧图像的局部特征点使用SuperGlue网络进行匹配,得到图像特征点匹配结果;

将所述图像特征点匹配结果保存至初始化文件中。

4.根据权利要求1所述的基于双目摄像头的视觉建图方法,其特征在于,所述按照预设回环搜索方法搜索回环,得到任一第一锚点组对应的回环信息的步骤包括:针对第i组第一锚点组,根据该第一锚点组中所有图像帧的局部描述子和全局描述子,确定该第一锚点组的检索阈值;

遍历第1组至第i‑2组的第一锚点组,通过所述检索阈值筛选和SuperGlue网络匹配筛选,搜索第二锚点帧构成回环的帧,并记录回环信息和匹配情况;

将所有第一锚点组的信息和所述回环信息保存至回环文件内。

5.根据权利要求4所述的基于双目摄像头的视觉建图方法,其特征在于,所述针对第i组第一锚点组,根据该第一锚点组中所有图像帧的局部描述子和全局描述子,确定该第一锚点组的检索阈值的步骤包括:计算该第一锚点组中普通帧图像全局描述子到锚点帧图像全局描述子的第一距离,并取所有第一距离中的最大距离作为该第一锚点组检索阈值。

6.根据权利要求1所述的基于双目摄像头的视觉建图方法,其特征在于,根据所述图像特征点匹配结果、所有回环信息,以及各个图像帧的局部特征点、局部描述子和全局描述子,对双目图像帧序列构建点云地图,以构建双目地图的步骤包括:将初始左帧位姿设为单位阵,计算初始左右两帧的相对位姿,以此作为双目左右帧的相对位姿,同时恢复初始左右两帧的SuperPoint特征点的三维空间位置,双目建图初始化完成;

读取下一帧对象,将局部三维地图点重投影至该帧对象内左右两帧进行特征点匹配得到重投影匹配点,根据PnP和双帧相对位姿关系,确定该帧对象左帧位姿,根据所述重投影匹配点,统计该帧对象的共视帧关系,若重投影匹配点数量低于第二阈值,则将该帧对象设为关键帧对象,并根据该帧对象左右帧匹配关系和左帧位姿计算新的三维地图点,依次针对后续帧对象执行上述步骤,直至双目地图构建完成;

根据回环信息和地图共视帧信息,剔除假阳性回环,并对双目地图进行优化;

导出构建完成的双目地图,所述双目地图包括关键帧SuperPoint特征点信息、关键帧位姿、地图点位置信息、所有关键帧和地图点的连接关系信息、所有锚点组信息。

7.一种基于双目摄像头的定位方法,其特征在于,包括如下步骤:

获取双目摄像头采集的双目图像帧序列,对所述双目图像帧序列中的所有图像帧依次进行预处理和特征提取,得到各个图像帧的局部特征点、局部描述子和全局描述子,其中,所述双目图像帧序列中任一图像帧包括左帧图像和右帧图像;

按照预设特征匹配方法对所述左帧图像和所述右帧图像的局部特征点进行匹配,得到图像特征点匹配结果;

按照预设划分方法,将所有左帧图像划分成多个第一锚点组,并按照预设回环搜索方法搜索回环,得到任一第一锚点组对应的回环信息;

根据所述图像特征点匹配结果、所有回环信息,以及各个图像帧的局部特征点、局部描述子和全局描述子,对双目图像帧序列构建点云地图,以构建双目地图;

导出构建完成的双目地图,以供单目相机定位;

所述导出构建完成的点云地图,以供单目相机定位的步骤包括:

读取解析双目地图信息、待定位的相机内参、待定位单目图像帧;

对所述待定位单目图像帧提取基于SuperPoint网络的特征点和对应的局部描述子,以及基于NetVLAD网络的全局描述子;

依次计算待定位单目图像帧全局描述子与各个第一锚点组的锚点帧全局描述子的第二距离,若所述第二距离低于对应锚点组的检索阈值,则在该锚点组普通帧内利用全局描述子距离获取最相似的普通帧,并与该普通帧进行特征匹配得到第二匹配点数,若所述第二匹配点数高于第三阈值,则记录该普通帧;

将检索到的普通帧位姿设为待定位单目图像帧的初始位姿,根据匹配情况和地图点帧连接关系,获取地图点与该单目图像帧的匹配关系,并计算该单目图像帧的位姿;

动态加载该单目图像帧的位姿附近地图点信息,以供下一帧重投影匹配和定位。

8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1‑6中任一项所述的方法。

说明书 :

一种基于双目摄像头的视觉建图和定位方法

技术领域

[0001] 本发明涉及计算机技术领域,具体而言,涉及一种基于双目摄像头的视觉建图和定位方法。

背景技术

[0002] SLAM(Simultaneous Localization and Mapping)即同步定位与地图构建,其原理是:当机器人处于一个未知的环境中,通过自身的传感器获取运动状态和周围环境信息,实时重建周围环境的三围结构并同时对机器人自身进行定位。在视觉SLAM中,便是通过相机来实现同步定位和地图重建。
[0003] 大多数视觉SLAM系统侧重点关注于在线的定位估计,不具备在全局坐标系下的定位功能,且大多数SLAM系统的输出不包含视觉地图的表示形式。传统方法的定位基于词袋模型和传统特征点匹配,其适应环境能力有限,定位成功率不高。

发明内容

[0004] 本发明的目的在于提供一种基于双目摄像头的视觉建图和定位方法,用以改善现有技术中不具备在全局坐标系下的定位功能,且SLAM系统的输出不包含视觉地图的表示形式的问题。
[0005] 本发明的实施例是这样实现的:
[0006] 第一方面,本申请实施例提供一种基于双目摄像头的视觉建图方法,其包括如下步骤:
[0007] 获取双目摄像头采集的双目图像帧序列,对双目图像帧序列中的所有图像帧依次进行预处理和特征提取,得到各个图像帧的局部特征点、局部描述子和全局描述子,其中,双目图像帧序列中任一图像帧包括左帧图像和右帧图像;
[0008] 按照预设特征匹配方法对左帧图像和右帧图像的局部特征点进行匹配,得到图像特征点匹配结果;
[0009] 按照预设划分方法,将所有左帧图像划分成多个第一锚点组,并按照预设回环搜索方法搜索回环,得到任一第一锚点组对应的回环信息;
[0010] 根据图像特征点匹配结果、所有回环信息,以及各个图像帧的局部特征点、局部描述子和全局描述子,对双目图像帧序列构建点云地图,以构建双目地图。
[0011] 在本发明的一些实施例中,上述获取双目摄像头采集的双目图像帧序列,对双目图像帧序列中的所有图像帧依次进行预处理和特征提取,得到各个图像帧的局部特征点、局部描述子和全局描述子的步骤包括:
[0012] 对双目图像帧序列中的所有图像帧使用YOLOv5模型进行图像分割处理后,检测出动态对象和静态对象的像素区域,并根据动态对象和静态对象构建每个图像帧的图像掩码,其中,静态对象在图像掩码中置1,动态对象在图像掩码中置0;
[0013] 将每个图像帧的原始图像和对应的图像掩码相乘,得到新的图像帧;
[0014] 对新的图像帧使用SuperPoint网络提取局部特征点和局部描述子,并使用NetVLAD网络提取全局描述子;
[0015] 将各个图像帧的局部特征点、局部描述子和全局描述子保存至初始化文件中。
[0016] 在本发明的一些实施例中,上述按照预设特征匹配方法对左帧图像和右帧图像的局部特征点进行匹配,得到图像特征点匹配结果的步骤包括:
[0017] 对同一时刻的左帧图像和右帧图像的局部特征点使用SuperGlue网络进行匹配,对两个相邻左帧图像的局部特征点使用SuperGlue网络进行匹配,得到图像特征点匹配结果;
[0018] 将图像特征点匹配结果保存至初始化文件中。
[0019] 在本发明的一些实施例中,上述按照预设划分方法,将所有左帧图像划分成多个第一锚点组的步骤包括:
[0020] 将 所 有 左帧 图 像 按 时 间 序 列 每 预 设数 量 帧 分 为 初 步 锚 点组并将任一初步锚点组中的序列中间帧作为锚点帧,将该初步锚点组中的非锚点帧作为普通帧,其中, 为第i组锚点帧序号,N为预设数量, 为第ii
组普通帧序号集合,Th为第i组搜索阈值;
[0021] 遍历所有初步锚点组,对相邻两个初步锚点组的锚点帧的局部特征点使用SuperGlue网络进行匹配得到第一匹配点数,若第一匹配点数未超过第一阈值,则时间较早的初步锚点组独立为第一锚点组,若第一匹配点数超过第一阈值,则将两个初步锚点组合并为一组得到第二锚点组,取第二锚点组中的序列中间帧作为新的锚点帧;
[0022] 重复上述步骤,直至构造完成所有第一锚点组。
[0023] 在本发明的一些实施例中,上述按照预设回环搜索方法搜索回环,得到任一第一锚点组对应的回环信息的步骤包括:
[0024] 针对第i组第一锚点组,根据该第一锚点组中所有图像帧的局部描述子和全局描述子,确定该第一锚点组的检索阈值;
[0025] 遍历第1组至第i‑2组的第一锚点组,通过检索阈值筛选和SuperGlue网络匹配筛选,搜索第二锚点帧构成回环的帧,并记录回环信息和匹配情况;
[0026] 将所有第一锚点组的信息和回环信息保存至回环文件内。
[0027] 在本发明的一些实施例中,上述针对第i组第一锚点组,根据该第一锚点组中所有图像帧的局部描述子和全局描述子,确定该第一锚点组的检索阈值的步骤包括:
[0028] 计算该第一锚点组中普通帧图像全局描述子到锚点帧图像全局描述子的第一距离,并取所有第一距离中的最大距离作为该第一锚点组检索阈值。
[0029] 在本发明的一些实施例中,上述根据图像特征点匹配结果、所有回环信息,以及各个图像帧的局部特征点、局部描述子和全局描述子,对双目图像帧序列构建点云地图,以构建双目地图的步骤包括:
[0030] 将初始左帧位姿设为单位阵,计算初始左右两帧的相对位姿,以此作为双目左右帧的相对位姿,同时恢复初始左右两帧的SuperPoint特征点的三维空间位置,双目建图初始化完成;
[0031] 读取下一帧对象,将局部三维地图点重投影至该帧对象内左右两帧进行特征点匹配得到重投影匹配点,根据PnP和双帧相对位姿关系,确定该帧对象左帧位姿,根据重投影匹配点,统计该帧对象的共视帧关系,若重投影匹配点数量低于第二阈值,则将该帧对象设为关键帧对象,并根据该帧对象左右帧匹配关系和左帧位姿计算新的三维地图点,依次针对后续帧对象执行上述步骤,直至双目地图构建完成;
[0032] 根据回环信息和地图共视帧信息,剔除假阳性回环,并对双目地图进行优化;
[0033] 导出构建完成的双目地图,双目地图包括关键帧SuperPoint特征点信息、关键帧位姿、地图点位置信息、所有关键帧和地图点的连接关系信息、所有锚点组信息。
[0034] 第二方面,本申请实施例提供一种基于双目摄像头的定位方法,其包括如下步骤:
[0035] 获取双目摄像头采集的双目图像帧序列,对双目图像帧序列中的所有图像帧依次进行预处理和特征提取,得到各个图像帧的局部特征点、局部描述子和全局描述子,其中,双目图像帧序列中任一图像帧包括左帧图像和右帧图像;
[0036] 按照预设特征匹配方法对左帧图像和右帧图像的局部特征点进行匹配,得到图像特征点匹配结果;
[0037] 按照预设划分方法,将所有左帧图像划分成多个第一锚点组,并按照预设回环搜索方法搜索回环,得到任一第一锚点组对应的回环信息;
[0038] 根据图像特征点匹配结果、所有回环信息,以及各个图像帧的局部特征点、局部描述子和全局描述子,对双目图像帧序列构建点云地图,以构建双目地图;
[0039] 导出构建完成的双目地图,以供单目相机定位。
[0040] 在本发明的一些实施例中,上述导出构建完成的点云地图,以供单目相机定位的步骤包括:
[0041] 读取解析双目地图信息、待定位的相机内参、待定位单目图像帧;
[0042] 对待定位单目图像帧提取基于SuperPoint网络的特征点和对应的局部描述子,以及基于NetVLAD网络的全局描述子;
[0043] 依次计算待定位单目图像帧全局描述子与各个第一锚点组的锚点帧全局描述子的第二距离,若第二距离低于对应锚点组的检索阈值,则在该锚点组普通帧内利用全局描述子距离获取最相似的普通帧,并与该普通帧进行特征匹配得到第二匹配点数,若第二匹配点数高于第三阈值,则记录该普通帧;
[0044] 将检索到的普通帧位姿设为待定位单目图像帧的初始位姿,根据匹配情况和地图点帧连接关系,获取地图点与该单目图像帧的匹配关系,并计算该单目图像帧的位姿;
[0045] 动态加载该单目图像帧的位姿附近地图点信息,以供下一帧重投影匹配和定位。
[0046] 第三方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面中任一项的方法。
[0047] 相对于现有技术,本发明的实施例至少具有如下优点或有益效果:
[0048] 本发明提供一种基于双目摄像头的视觉建图和定位方法,其包括如下步骤:获取双目摄像头采集的双目图像帧序列,对双目图像帧序列中的所有图像帧依次进行预处理和特征提取,得到各个图像帧的局部特征点、局部描述子和全局描述子,其中,双目图像帧序列中任一图像帧包括左帧图像和右帧图像。按照预设特征匹配方法对左右两帧图像以及相邻左帧图像的局部特征点进行匹配,以完成对双目图像帧序列中所有图像帧的特征匹配,并记录图像特征点匹配情况,即图像特征点匹配结果。按照预设划分方法,将所有左帧图像划分成多个第一锚点组,并按照预设回环搜索方法搜索回环,得到任一第一锚点组对应的回环信息。然后根据图像特征点匹配结果、所有回环信息,以及各个图像帧的局部特征点、局部描述子和全局描述子,对双目图像帧序列构建点云地图,以构建双目地图。本方法结合深度学习领域知识,以及视觉地图的构建方法和表达形式,利用双目摄像头构建全局一致地图,生成双目地图后,则可使用单目相机进行实时的相机定位,也就具备了在全局坐标系下的定位功能。通过该方法构建双目地图,其适应环境能力强,且利用单目相机在构建完成的双目地图上进行实时定位,其定位成功率也较高。

附图说明

[0049] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0050] 图1为本发明实施例提供的一种基于双目摄像头的视觉建图方法的流程图;
[0051] 图2为本发明实施例提供的一种双目建图和单目视觉定位的流程图;
[0052] 图3为本发明实施例提供的一种构造锚点组和回环搜索流程图;
[0053] 图4为本发明实施例提供的一种构造锚点组的详细流程图;
[0054] 图5为本发明实施例提供的一种搜索回环的详细流程图;
[0055] 图6为本发明实施例提供的一种双目建图的流程图;
[0056] 图7为本发明实施例提供的一种地图信息结构图;
[0057] 图8为本发明实施例提供的一种单目视觉定位的流程图;
[0058] 图9为本发明实施例提供的一种基于双目摄像头的定位方法的流程图;
[0059] 图10为本发明实施例提供的一种电子设备的示意性结构框图。
[0060] 图标:101‑存储器;102‑处理器;103‑通信接口。

具体实施方式

[0061] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
[0062] 因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0063] 应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0064] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,若出现术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,若出现由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0065] 在本申请的描述中,需要说明的是,若出现术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该申请产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
[0066] 在本申请的描述中,还需要说明的是,除非另有明确的规定和限定,若出现术语“设置”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
[0067] 下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的各个实施例及实施例中的各个特征可以相互组合。
[0068] 实施例
[0069] 请参照图1和图2,图1所示为本发明实施例提供的一种基于双目摄像头的视觉建图方法的流程图,图2所示为本发明实施例提供的一种双目建图和单目视觉定位的流程图。本申请实施例提供一种基于双目摄像头的视觉建图方法,其包括如下步骤:
[0070] S110:获取双目摄像头采集的双目图像帧序列,对双目图像帧序列中的所有图像帧依次进行预处理和特征提取,得到各个图像帧的局部特征点、局部描述子和全局描述子,其中,双目图像帧序列中任一图像帧包括左帧图像和右帧图像;
[0071] 具体的,将双目摄像头安装在车顶,驾驶车辆通过双目摄像头采集视频数据,将采集到的双目视频按每秒十帧截取图像至文件夹内。依次读取文件夹内双目图像,得到双目摄像头采集的双目图像帧序列F: 其中,Fl为左帧图像序列,Fr为右帧图像序列,fl1、fl2、fl3、fli分别为第一个左帧图像、第二个左帧图像、第三个左帧图像及第i个左帧图像,fr1、fr2、fr3、fri分别为第一个右帧图像、第二个右帧图像、第三个右帧图像及第i个右帧图像。对F中的所有图像帧使用Yolov5模型进行图像分割处理,检测出车辆行人框,并剔除动态物体框内的特征点。并对F中的所有图像帧分别提取SuperPoint特征点p(局部特征点)和对应局部描述子v,NetVLAD全局描述子g。
[0072] S120:按照预设特征匹配方法对左帧图像和右帧图像的局部特征点进行匹配,得到图像特征点匹配结果;
[0073] 具体的,在剔除动态物体框内点后,按照预设特征匹配方法对左右两帧图像以及相邻左帧图像的局部特征点进行匹配,以完成对双目图像帧序列中所有图像帧的特征匹配,并记录图像特征点匹配情况,即图像特征点匹配结果。
[0074] S130:按照预设划分方法,将所有左帧图像划分成多个第一锚点组,并按照预设回环搜索方法搜索回环,得到任一第一锚点组对应的回环信息;
[0075] 具体的,按照预设划分方法,划分得到的多个第一锚点组中,将两个相邻第一锚点组的图像帧的SuperPoint特征点及其局部描述子用SuperGlue进行特征匹配得到匹配点数不会超过100。然后按照预设回环搜索方法搜索回环,遍历所有第一锚点组,对于第i组,遍历第1组至第i‑2组,通过检索阈值筛选和SuperGlue网络匹配筛选,搜索可能的锚点帧构成回环的帧,并记录回环和匹配情况,得到第i组对应的回环信息,则通过步骤S130可以得到每个第一锚点组的回环情况。
[0076] S140:根据图像特征点匹配结果、所有回环信息,以及各个图像帧的局部特征点、局部描述子和全局描述子,对双目图像帧序列构建点云地图,以构建双目地图。
[0077] 上述实现过程中,本方法结合深度学习领域知识,以及视觉地图的构建方法和表达形式,利用双目摄像头构建全局一致地图,生成双目地图后,则可使用单目相机进行实时的相机定位,也就具备了在全局坐标系下的定位功能。通过该方法构建双目地图,其适应环境能力强,且利用单目相机在构建完成的双目地图上进行实时定位,其定位成功率也较高。
[0078] 其中,将本方法构建的双目地图,经过基于双目摄像头的定位方法复用,可以让车辆在点云地图坐标系下实时计算自身位姿。
[0079] 在本实施例的一些实施方式中,上述获取双目摄像头采集的双目图像帧序列,对双目图像帧序列中的所有图像帧依次进行预处理和特征提取,得到各个图像帧的局部特征点、局部描述子和全局描述子的步骤包括:
[0080] 对双目图像帧序列中的所有图像帧使用YOLOv5模型进行图像分割处理后,检测出动态对象和静态对象的像素区域,并根据动态对象和静态对象构建每个图像帧的图像掩码,其中,静态对象在图像掩码中置1,动态对象在图像掩码中置0;
[0081] 具体的,对F中的所有图像帧使用YOLOv5模型进行图像分割处理,检测出机动车、非机动车、行人等动态对象的像素区域,其他比如路面、建筑物、树木等视为静态对象,构建每帧图像的图像掩码,图像掩码大小与原始图像大小一致。
[0082] 将每个图像帧的原始图像和对应的图像掩码相乘,得到新的图像帧;
[0083] 对新的图像帧使用SuperPoint网络提取局部特征点和局部描述子,并使用NetVLAD网络提取全局描述子;
[0084] 将各个图像帧的局部特征点、局部描述子和全局描述子保存至初始化文件中。从而实现了对双目图像帧序列中的所有图像帧依次进行预处理和特征提取,并记录特征提取情况的目的。
[0085] 在本实施例的一些实施方式中,上述按照预设特征匹配方法对左帧图像和右帧图像的局部特征点进行匹配,得到图像特征点匹配结果的步骤包括:
[0086] 对同一时刻的左帧图像和右帧图像的局部特征点使用SuperGlue网络进行匹配,对两个相邻左帧图像的局部特征点使用SuperGlue网络进行匹配,得到图像特征点匹配结果;
[0087] 将图像特征点匹配结果保存至初始化文件中。从而实现对双目图像帧序列中所有图像帧进行特征匹配,并记录图像特征点匹配情况的目的。
[0088] 在本实施例的一些实施方式中,上述按照预设划分方法,将所有左帧图像划分成多个第一锚点组的步骤包括:
[0089] 将 所 有 左帧 图 像 按 时 间 序 列 每 预 设数 量 帧 分 为 初 步 锚 点组并将任一初步锚点组中的序列中间帧作为锚点帧,将该初步锚点组中的非锚点帧作为普通帧,其中, 为第i组锚点帧序号,N为预设数量, 为第ii
组普通帧序号集合,Th为第i组搜索阈值;
[0090] 其中,预设数量可以为20。
[0091] 遍历所有初步锚点组,对相邻两个初步锚点组的锚点帧的局部特征点使用SuperGlue网络进行匹配得到第一匹配点数,若第一匹配点数未超过第一阈值,则时间较早的初步锚点组独立为第一锚点组,若第一匹配点数超过第一阈值,则将两个初步锚点组合并为一组得到第二锚点组,取第二锚点组中的序列中间帧作为新的锚点帧;
[0092] 其中,第一阈值可以为100。
[0093] 重复上述步骤,直至构造完成所有第一锚点组。
[0094] 示例性的,请参照4,图4所示为本发明实施例提供的一种构造锚点组的详细流程图。将所有左帧图像按时间序列每20帧分为初步锚点组 并将任一初步锚点组中的序列中间帧(第10帧)作为锚点帧,将该初步锚点组中的非锚点帧作i
为普通帧,其中, 为第i组锚点帧序号,N为预设数量, 为第i组普通帧序号集合,Th 为第i组搜索阈值。遍历所有初步锚点组,对于第i组和第i+1组,对帧序号为 和 的SuperPoint特征点及其局部描述子用SuperGlue进行特征匹配。若匹配点数超过100,则将第i组合并至第i+1组,将 和 合并为新的 并取合并后的组中间帧为新的锚点帧
若匹配点数未超过100,则第i组独立成最终锚点组。继续对第i+1组和第i+2组进行如上操作。直到所有最终锚点组被构造完成,得到所有最终锚点组即第一锚点组。
[0095] 在本实施例的一些实施方式中,上述按照预设回环搜索方法搜索回环,得到任一第一锚点组对应的回环信息的步骤包括:
[0096] 针对第i组第一锚点组,根据该第一锚点组中所有图像帧的局部描述子和全局描述子,确定该第一锚点组的检索阈值;
[0097] 遍历第1组至第i‑2组的第一锚点组,通过检索阈值筛选和SuperGlue网络匹配筛选,搜索第二锚点帧构成回环的帧,并记录回环信息和匹配情况;
[0098] 将所有第一锚点组的信息和回环信息保存至回环文件内。
[0099] 具体的,请参照图3和图5,图3所示为本发明实施例提供的一种构造锚点组和回环搜索流程图,图5所示为本发明实施例提供的一种搜索回环的详细流程图。首先对所有最终锚点组进行遍历,对于第i组,记帧序号为 的全局描述子 帧序号集合为 的全局描述子集合 遍历 依次计算其与 的L2Norm距离,并取最大距离作为该组搜索阈值i
Th。然后搜索回环,并保存最终锚点组信息和回环信息。搜索回环的具体步骤如下:遍历所有最终锚点组集合 对于第i组,遍历最终锚点组集合
有第j组,记帧序号为 的全局描述子 帧序号为 的
j j
全局描述子 计算 和gk的L2Norm距离dj。若对Gi组内任一组其距离dj都大于Th ,则对j
第i+1组和Gi+1进行如上操作;若dj小于Th ,记帧序号集合为 的全局描述子集合 计算与 中L2Norm距离最小的帧序号 对第 帧和第 帧SuperPoint特征点及其描
述子用SuperGlue进行特征匹配,若匹配点数超过50,则记第 帧是第 帧的回环帧,并记录该匹配情况;否则对第i组和Gi内第j+1组进行如上操作。最后保存最终锚点组信息和所有回环信息至回环文件内。
[0100] 请参照图6和图7,图6所示为本发明实施例提供的一种双目建图的流程图,图7所示为本发明实施例提供的一种地图信息结构图。在本实施例的一些实施方式中,上述针对第i组第一锚点组,根据该第一锚点组中所有图像帧的局部描述子和全局描述子,确定该第一锚点组的检索阈值的步骤包括:
[0101] 计算该第一锚点组中普通帧图像全局描述子到锚点帧图像全局描述子的第一距离,并取所有第一距离中的最大距离作为该第一锚点组检索阈值。
[0102] 在本实施例的一些实施方式中,上述根据图像特征点匹配结果、所有回环信息,以及各个图像帧的局部特征点、局部描述子和全局描述子,对双目图像帧序列构建点云地图,以构建双目地图的步骤包括:
[0103] 将初始左帧位姿设为单位阵,计算初始左右两帧的相对位姿,以此作为双目左右帧的相对位姿,同时恢复初始左右两帧的SuperPoint特征点的三维空间位置,双目建图初始化完成;
[0104] 读取下一帧对象,将局部三维地图点重投影至该帧对象内左右两帧进行特征点匹配得到重投影匹配点,根据PnP和双帧相对位姿关系,确定该帧对象左帧位姿,根据重投影匹配点,统计该帧对象的共视帧关系,若重投影匹配点数量低于第二阈值,则将该帧对象设为关键帧对象,并根据该帧对象左右帧匹配关系和左帧位姿计算新的三维地图点,依次针对后续帧对象执行上述步骤,直至双目地图构建完成;
[0105] 根据回环信息和地图共视帧信息,剔除假阳性回环,并对双目地图进行优化;
[0106] 导出构建完成的双目地图,双目地图包括关键帧SuperPoint特征点信息、关键帧位姿、地图点位置信息、所有关键帧和地图点的连接关系信息、所有锚点组信息。
[0107] 上述实现过程中,构建双目地图的具体步骤如下:读取解析初始化文件和回环文件,构造帧对象。依次读取初始帧对象,直到帧对象内双帧匹配点数大于100。将初始左帧位姿设为单位阵,计算初始左右两帧的相对位姿,以此作为整个系统双目左右帧的相对位姿,同时恢复初始左右两帧的SuperPoint特征点的三维空间位置,双目建图初始化完成。读取下一帧对象,将局部三维地图点重投影至该帧对象内左右两帧进行特征点匹配,根据PnP和双帧相对位姿关系,估计该帧对象左帧位姿。根据重投影匹配点,统计该帧对象的共视帧关系。若重投影匹配点数低于第二阈值,将该帧对象设为关键帧对象,并根据该帧对象左右帧匹配关系和左帧位姿计算新的三维地图点。依次对后续帧对象执行上述步骤,直到地图构建完成。读取已经过视觉里程计处理的帧对象,若该帧在预处理时被判断有回环帧,进一步判断该帧与该回环帧是否为共视帧。若否,则暂停视觉里程计线程,根据回环文件内的特征匹配关系和回环帧的位姿,计算该帧的矫正位姿。统计回环帧到该帧的有效回环路径,对回环路径上的帧位姿通过位姿插值方式计算矫正位姿,并对回环路径进行位姿图优化。将回环路径上的地图点根据点帧相对位姿计算新的三维坐标,并对整条回环路径做全局BA优化。更新当前帧及其附近帧和回环帧及其附近帧的共视关系,开启视觉里程计线程,从而实现了剔除假阳性回环,并对双目地图进行优化的目的。最后将地图信息按图6导出成地图文件,其中地图点描述子每2000个点存储为1个文件,地图帧每1帧保存为1个文件。
[0108] 请参照图9,图9所示为本发明实施例提供的一种基于双目摄像头的定位方法的流程图。本申请实施例提供一种基于双目摄像头的定位方法,其包括如下步骤:
[0109] 获取双目摄像头采集的双目图像帧序列,对双目图像帧序列中的所有图像帧依次进行预处理和特征提取,得到各个图像帧的局部特征点、局部描述子和全局描述子,其中,双目图像帧序列中任一图像帧包括左帧图像和右帧图像;
[0110] 按照预设特征匹配方法对左帧图像和右帧图像的局部特征点进行匹配,得到图像特征点匹配结果;
[0111] 按照预设划分方法,将所有左帧图像划分成多个第一锚点组,并按照预设回环搜索方法搜索回环,得到任一第一锚点组对应的回环信息;
[0112] 根据图像特征点匹配结果、所有回环信息,以及各个图像帧的局部特征点、局部描述子和全局描述子,对双目图像帧序列构建点云地图,以构建双目地图;
[0113] 导出构建完成的双目地图,以供单目相机定位。
[0114] 具体的,导出地图点、地图帧、点帧连接关系、锚点组等信息作为可复用地图,进而读取到构建完成的双目地图,以提供给单目相机定位。
[0115] 请参照图8,图8所示为本发明实施例提供的一种单目视觉定位的流程图。在本实施例的一些实施方式中,上述导出构建完成的点云地图,以供单目相机定位的步骤包括:
[0116] 读取解析双目地图信息、待定位的相机内参、待定位单目图像帧;
[0117] 对待定位单目图像帧提取基于SuperPoint网络的特征点和对应的局部描述子,以及基于NetVLAD网络的全局描述子;
[0118] 依次计算待定位单目图像帧全局描述子与各个第一锚点组的锚点帧全局描述子的第二距离,若第二距离低于对应锚点组的检索阈值,则在该锚点组普通帧内利用全局描述子距离获取最相似的普通帧,并与该普通帧进行特征匹配得到第二匹配点数,若第二匹配点数高于第三阈值,则记录该普通帧;
[0119] 其中,第三阈值可以为50个。
[0120] 将检索到的普通帧位姿设为待定位单目图像帧的初始位姿,根据匹配情况和地图点帧连接关系,获取地图点与该单目图像帧的匹配关系,并计算该单目图像帧的位姿;
[0121] 动态加载该单目图像帧的位姿附近地图点信息,以供下一帧重投影匹配和定位。
[0122] 上述实现过程中,步骤S150的详细步骤如下:首先读取地图文件、单目相机内参和单目帧图像。系统处于全局定位状态,提取单目帧图像的SuperPoint特征点及其对应描述子、NetVLAD全局描述子。遍历所有定位组,计算锚点帧和单目帧全局描述子距离。若距离小于其定位组检索阈值,则在定位组普通帧集合内搜索全局描述子距离最小的候选帧,读取该候选帧的帧信息文件,并与单目帧进行特征匹配。若匹配点数多于50个,根据地图点帧关系和像素匹配关系获取该单目帧的地图点像素点匹配关系,计算该单目帧位姿,并预估下一帧位姿为该单目帧位姿,将系统置于局部地图追踪状态。若上述条件均不成立,则定位失败。若系统处于局部地图追踪状态,提取单目帧图像的SuperPoint特征点及其对应描述子,并将该帧位姿设置为预估位姿。将预先加载的局部地图点重投影至该单目帧进行特征匹配,若匹配点数大于20,则计算该帧位姿,根据运动状态模型预估下一帧位姿,并将系统依旧置于局部地图追踪状态;否则,将该帧位姿设置为预估位姿,并将系统设置为全局定位状态。若定位成功,则根据当前帧匹配到的地图点和地图点帧关系,动态加载下一帧可能匹配的所有局部地图点。
[0123] 请参照图10,图10为本申请实施例提供的电子设备的一种示意性结构框图。电子设备包括存储器101、处理器102和通信接口103,该存储器101、处理器102和通信接口103相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。存储器101可用于存储软件程序及模块,处理器102通过执行存储在存储器101内的软件程序及模块,从而执行各种功能应用以及数据处理。该通信接口103可用于与其他节点设备进行信令或数据的通信。
[0124] 其中,存储器101可以是但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read‑Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read‑Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read‑Only Memory,EEPROM)等。
[0125] 处理器102可以是一种集成电路芯片,具有信号处理能力。该处理器102可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0126] 可以理解,图10所示的结构仅为示意,电子设备还可包括比图10中所示更多或者更少的组件,或者具有与图10所示不同的配置。图10中所示的各组件可以采用硬件、软件或其组合实现。
[0127] 在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0128] 另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0129] 所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read‑OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0130] 以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
[0131] 对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其它的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。