一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种地图构建方法、装置及设备与流程

2022-03-16 05:10:43 来源:中国专利 TAG:


1.本技术涉及计算机视觉领域,尤其涉及一种地图构建方法、装置及设备。


背景技术:

2.gps(global positioning system,全球定位系统)是一种以人造地球卫星为基础的高精度无线电导航定位系统,gps在全球任何地方以及近地空间均能够提供准确的地理位置、车行速度及精确的时间信息。北斗卫星导航系统由空间段、地面段和用户段三部分组成,可在全球范围内全天候、全天时为用户提供高精度、高可靠定位、导航、授时服务,具备区域导航、定位和授时能力。
3.由于终端设备具有gps或北斗卫星导航系统,因此,在需要对终端设备进行定位时,可以采用gps或北斗卫星导航系统对终端设备进行定位。在室外环境下,由于gps信号或北斗信号比较好,可以采用gps或北斗卫星导航系统对终端设备进行准确定位。但是,在室内环境下,由于gps信号或者北斗信号比较差,导致gps或北斗卫星导航系统无法对终端设备进行准确定位。比如说,在煤炭、电力、石化等能源行业,对于定位的需求越来越多,这些定位需求一般是在室内环境,由于信号遮挡等问题,导致无法对终端设备进行准确定位。


技术实现要素:

4.本技术提供一种地图构建方法,所述方法包括:
5.获取目标场景的全景图像,基于所述全景图像生成第一虚拟相机对应的第一小孔图像;其中,所述第一虚拟相机的位置是视球面坐标系的球心位置,所述第一虚拟相机的初始姿态是以所述球心位置为中心的任一姿态;
6.确定第二虚拟相机的目标姿态与所述初始姿态之间的旋转矩阵,并基于所述旋转矩阵确定所述目标姿态与所述初始姿态之间的外参矩阵;其中,所述第二虚拟相机的位置是所述视球面坐标系的球心位置,所述目标姿态是对所述初始姿态绕所述视球面坐标系的坐标轴进行旋转得到;
7.基于所述旋转矩阵确定第二虚拟相机对应的第二小孔图像,从第一小孔图像和第二小孔图像中选取目标场景的实际位置对应的二维特征点,并基于所述二维特征点和所述外参矩阵确定所述实际位置对应的三维地图点;
8.基于目标场景的多个三维地图点构建所述目标场景的三维视觉地图。
9.本技术提供一种地图构建装置,所述装置包括:
10.获取模块,用于获取目标场景的全景图像;
11.生成模块,用于基于所述全景图像生成第一虚拟相机对应的第一小孔图像;其中,所述第一虚拟相机的位置是视球面坐标系的球心位置,所述第一虚拟相机的初始姿态是以所述球心位置为中心的任一姿态;
12.确定模块,用于确定第二虚拟相机的目标姿态与所述初始姿态之间的旋转矩阵,并基于所述旋转矩阵确定所述目标姿态与所述初始姿态之间的外参矩阵;其中,所述第二
虚拟相机的位置是所述视球面坐标系的球心位置,所述目标姿态是对所述初始姿态绕所述视球面坐标系的坐标轴进行旋转得到;
13.所述生成模块,还用于基于所述旋转矩阵确定所述第二虚拟相机对应的第二小孔图像;所述确定模块,还用于从所述第一小孔图像和所述第二小孔图像中选取所述目标场景的实际位置对应的二维特征点,并基于所述二维特征点和所述外参矩阵确定所述实际位置对应的三维地图点;以及,基于所述目标场景的多个三维地图点构建所述目标场景的三维视觉地图。
14.本技术提供一种地图构建设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现本技术实施例的地图构建方法。
15.由以上技术方案可见,本技术实施例中,可以构建目标场景的三维视觉地图,基于三维视觉地图对目标场景的终端设备进行全局定位,对终端设备进行准确定位,目标场景可以是室内环境,实现基于视觉的室内定位功能,能够应用在煤炭、电力、石化等能源行业,实现人员(如工人、巡检人员等)的室内定位,快速获知人员位置信息,保障人员安全,实现人员高效管理。可以采用目标场景的全景图像构建三维视觉地图,全景图像具有较大视场角,避免对目标场景的反复数据采集,提升数据采集效率。在确定三维地图点时,可以使用虚拟相机的投影方式得到小孔图像,并添加虚拟相机的位姿约束,采用虚拟相机绑定优化的策略确定三维地图点,提升建图鲁棒性、建图效率和建图精度。
附图说明
16.图1是本技术一种实施方式中的地图构建方法的流程示意图;
17.图2是本技术中的基于全景图像的场景重建与定位方式的示意图;
18.图3是本技术一种实施方式中的将全景图像展开为小孔图像的示意图;
19.图4a是视球面图像的经纬度坐标与全景图像的直角坐标的示意图;
20.图4b是第一小孔图像的直角坐标与视球面图像的经纬度坐标的示意图;
21.图4c是小孔图像的坐标与视球面的坐标之间的示意图;
22.图5是本技术一种实施方式中的地图构建装置的结构示意图。
具体实施方式
23.在本技术实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本技术。本技术和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
24.应当理解,尽管在本技术实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
25.本技术实施例中提出一种地图构建方法,该方法用于构建目标场景的三维视觉地
图,继而使用三维视觉地图对目标场景的终端设备进行全局定位,也就是说,终端设备在目标场景的移动过程中,使用该三维视觉地图对终端设备进行全局定位。参见图1所示,为地图构建方法的流程示意图,该方法可以包括:
26.步骤101、获取目标场景的全景图像,基于该全景图像生成第一虚拟相机对应的第一小孔图像。示例性的,第一虚拟相机的位置是视球面坐标系的球心位置,第一虚拟相机的初始姿态是以该球心位置为中心的任一姿态。
27.示例性的,基于该全景图像生成第一虚拟相机对应的第一小孔图像,可以包括但不限于:基于该全景图像生成该视球面坐标系对应的视球面图像,并基于该视球面图像生成第一虚拟相机对应的第一小孔图像。
28.其中,基于该全景图像生成该视球面坐标系对应的视球面图像,可以包括但不限于:基于该全景图像的宽度和高度,确定该视球面图像中的经纬度坐标与该全景图像中的直角坐标之间的映射关系;针对该视球面图像中的每个经纬度坐标,可以基于该映射关系从该全景图像中确定与该经纬度坐标对应的直角坐标,并基于该直角坐标的像素值确定该经纬度坐标的像素值。在此基础上,可以基于视球面图像中的每个经纬度坐标的像素值生成该视球面图像。
29.其中,基于该视球面图像生成第一虚拟相机对应的第一小孔图像,可以包括但不限于:基于该第一小孔图像的宽度和高度确定该第一小孔图像的中心点坐标,基于该中心点坐标和目标距离确定该第一小孔图像中的直角坐标与该视球面图像中的经纬度坐标之间的映射关系,该目标距离是该第一小孔图像的中心点与视球面坐标系的球心位置之间的距离。针对该第一小孔图像中的每个直角坐标,基于该映射关系从该视球面图像中确定与该直角坐标对应的经纬度坐标,并基于该经纬度坐标的像素值确定该直角坐标的像素值。在此基础上,可以基于第一小孔图像中的每个直角坐标的像素值生成该第一小孔图像。
30.步骤102、确定第二虚拟相机的目标姿态与第一虚拟相机的初始姿态之间的旋转矩阵,并基于该旋转矩阵确定出该目标姿态与该初始姿态之间的外参矩阵;示例性的,第二虚拟相机的位置可以是该视球面坐标系的球心位置,且该目标姿态是对该初始姿态绕视球面坐标系的坐标轴进行旋转得到。
31.示例性的,确定第二虚拟相机的目标姿态与第一虚拟相机的初始姿态之间的旋转矩阵,可以包括但不限于:确定目标姿态与初始姿态之间的在第一坐标轴方向的第一旋转角度,基于第一旋转角度确定第一坐标轴方向的第一子旋转矩阵;确定目标姿态与初始姿态之间的在第二坐标轴方向的第二旋转角度,基于第二旋转角度确定第二坐标轴方向的第二子旋转矩阵;确定目标姿态与初始姿态之间的在第三坐标轴方向的第三旋转角度,基于第三旋转角度确定第三坐标轴方向的第三子旋转矩阵。在此基础上,基于第一子旋转矩阵、第二子旋转矩阵和第三子旋转矩阵确定目标姿态与初始姿态之间的旋转矩阵。
32.在一种可能的实施方式中,基于该旋转矩阵确定出该目标姿态与该初始姿态之间的外参矩阵,可以包括但不限于:确定第一虚拟相机与第二虚拟相机之间的平移矩阵,并基于该旋转矩阵和该平移矩阵确定该外参矩阵。
33.步骤103、基于旋转矩阵确定第二虚拟相机对应的第二小孔图像,并从第一小孔图像和第二小孔图像中选取目标场景的实际位置对应的二维特征点,并基于二维特征点和外参矩阵确定该实际位置对应的三维地图点。
34.在一种可能的实施方式中,基于二维特征点和外参矩阵确定该实际位置对应的三维地图点,可以包括但不限于:确定已配置的损失函数的目标损失值;基于该目标损失值和该实际位置对应的二维特征点,确定虚拟相机的坐标系与小孔图像的坐标系之间的投影函数值;以及,基于该外参矩阵和该投影函数值确定该实际位置对应的三维地图点,即作为三维视觉地图中的三维地图点。
35.步骤104、基于目标场景的多个三维地图点构建目标场景的三维视觉地图。
36.示例性的,该三维视觉地图可以包括但不限于:样本图像对应的样本全局描述子、样本图像对应的三维地图点和三维地图点对应的样本局部描述子;其中,样本图像是从第一小孔图像和第二小孔图像中选取的小孔图像。
37.在一种可能的实施方式中,步骤104之后,在终端设备的全局定位过程中,获取终端设备在目标场景中的目标图像;基于目标图像与三维视觉地图对应的多帧样本图像之间的相似度,从多帧样本图像中选取出候选样本图像;从目标图像中获取多个特征点;针对每个特征点,从候选样本图像对应的三维地图点中确定出与该特征点对应的目标三维地图点;基于多个特征点和多个特征点对应的目标三维地图点,确定目标图像对应的三维视觉地图中的全局定位位姿。
38.其中,基于目标图像与三维视觉地图对应的多帧样本图像之间的相似度,从多帧样本图像中选取出候选样本图像,可以包括但不限于:确定目标图像对应的待测全局描述子,确定待测全局描述子与三维视觉地图对应的每帧样本图像对应的样本全局描述子之间的距离。基于待测全局描述子与每个样本全局描述子之间的距离,从多帧样本图像中选取出候选样本图像;其中,待测全局描述子与候选样本图像对应的样本全局描述子之间的距离为最小距离;或,待测全局描述子与候选样本图像对应的样本全局描述子之间的距离小于距离阈值。
39.其中,从候选样本图像对应的三维地图点中确定出与该特征点对应的目标三维地图点,可以包括但不限于:确定该特征点对应的待测局部描述子,该待测局部描述子可以用于表示该特征点所处图像块的特征向量,且该图像块可以位于该目标图像中;确定该待测局部描述子与该候选样本图像对应的每个三维地图点对应的样本局部描述子之间的距离;在此基础上,基于该待测局部描述子与每个样本局部描述子之间的距离,从该候选样本图像对应的三维地图点中选取目标三维地图点;其中,该待测局部描述子与该目标三维地图点对应的样本局部描述子之间的距离可以为最小距离,且该最小距离小于距离阈值。
40.其中,确定目标图像对应的待测全局描述子,可以包括但不限于:基于已训练的字典模型确定目标图像对应的词袋向量,并将词袋向量确定为待测全局描述子;或者,将目标图像输入给已训练的深度学习模型,得到目标图像对应的目标向量,并将该目标向量确定为待测全局描述子。当然,上述只是确定待测全局描述子的两个示例,对此待测全局描述子的确定方式不做限制。
41.由以上技术方案可见,本技术实施例中,可以构建目标场景的三维视觉地图,基于三维视觉地图对目标场景的终端设备进行全局定位,对终端设备进行准确定位,目标场景可以是室内环境,实现基于视觉的室内定位功能,能够应用在煤炭、电力、石化等能源行业,实现人员(如工人、巡检人员等)的室内定位,快速获知人员位置信息,保障人员安全,实现人员高效管理。可以采用目标场景的全景图像构建三维视觉地图,全景图像具有较大视场
角,避免对目标场景的反复数据采集,提升数据采集效率。在确定三维地图点时,可以使用虚拟相机的投影方式得到小孔图像,并添加虚拟相机的位姿约束,采用虚拟相机绑定优化的策略确定三维地图点,提升建图鲁棒性、建图效率和建图精度。
42.以下结合具体实施例,对本技术实施例的地图构建方法进行说明。
43.用于实现定位功能的数据源可以包括gps、激光雷达、毫米波雷达和视觉传感器(如摄像机)等,可以采用上述数据源实现定位功能。gps容易受到卫星状况、天气状况、数据传输状况影响,在室内环境下无法使用。激光雷达和毫米波雷达具有运算量小,提供深度信息,不受光照影响等优点,但是,激光雷达和毫米波雷达的信息稀疏,价格昂贵,还不具备广泛使用的可能。相比较而言,视觉传感器提供的视觉信息,虽然受到光照、天气影响,但视觉传感器的成本低、体积小、易安装、内容丰富,在地图定位方面具有很大的应用前景。
44.为了采用视觉传感器实现定位功能,通常需要构建高精度的三维视觉地图,三维视觉地图是对环境先验知识的感知,可以基于三维视觉地图进行全局定位,得到终端设备在三维视觉地图中的全局定位位姿,从而实现定位功能。
45.在构建三维视觉地图时,通常采用单目相机采集目标场景的图像,基于这些图像,可以通过sfm(structure from motion,运动恢复结构)算法进行三维重建,得到三维视觉地图。但是,单目相机的视场角比较窄,导致场景的覆盖度不足,需要反复采集目标场景的图像才能够进行重建,建图效率比较低。
46.针对上述问题,本技术实施例提出一种基于全景图像的场景重建与定位方式,可以使用全景相机采集全景图像,基于全景图像进行三维重建,得到三维视觉地图,三维重建是指通过sfm算法将物理世界场景构建成三维点云的过程。由于全景相机具有非常大的视场角,可以避免反复采集目标场景的图像,提升数据采集效率,可以解决单目相机视场角小带来的问题,三维视觉地图的质量明显高于单目相机的建图效果,建图效率比较高,提升建图的精度与鲁棒性。
47.参见图2所示,为基于全景图像的场景重建与定位方式的示意图,可以包括离线建图过程和在线定位过程。针对离线建图过程,可以采集目标场景(即需要构建三维视觉地图的场景)的全景图像,将全景图像展开为小孔图像,基于小孔图像和固连约束(即外参矩阵),进行多相机绑定的sfm重建,得到三维视觉地图,并存储三维视觉地图对应的地图信息。针对在线定位过程,可以采集目标场景的目标图像,基于目标场景的三维视觉地图对目标图像进行姿态解算,得到目标图像对应的三维视觉地图中的全局定位位姿,完成定位过程。
48.一、可以采集目标场景的全景图像,将全景图像展开为至少两个小孔图像,参见图3所示,为将全景图像展开为小孔图像的示意图,该过程包括:
49.步骤301、获取目标场景的全景图像。比如说,可以获取目标场景的全景视频,可以将该全景视频转换成多帧全景图像,对此过程不做限制。
50.步骤302、基于全景图像生成视球面坐标系对应的视球面图像。
51.示例性的,假设视球面图像与全景图像的映射关系为经纬映射,则视球面图像的经纬度坐标与全景图像的直角坐标(x,y)的关系参见公式(1)所示:
52.53.在公式(1)中,λ和分别表示视球面图像(即视球面坐标系下的图像)的经度坐标和纬度坐标,x和y分别表示全景图像的水平坐标和竖直坐标。
54.参见图4a所示,为视球面图像的经纬度坐标与全景图像的直角坐标的关系示意图,左侧为视球面图像的示意图,右侧为全景图像的示意图。在视球面图像中,经度坐标的取值范围是λ∈[0,2π],纬度坐标的取值范围是在全景图像中,全景图像的宽高比为w:h=2:1,全景图像中心位置是原点(0,0)。
[0055]
继续参见图4a所示,视球面图像中的经纬度坐标与全景图像中的直角坐标(u
p
,v
p
)之间的映射关系,可以参见公式(2)所示。
[0056][0057]
从公式(2)可以看出,基于全景图像的宽度w和全景图像的高度h,可以确定视球面图像中的经纬度坐标与全景图像中的直角坐标之间的映射关系。显然,针对视球面图像中的每个经纬度坐标,如可以基于该映射关系从全景图像中确定与经纬度坐标对应的直角坐标(u
p
,v
p
),并基于直角坐标(u
p
,v
p
)的像素值确定经纬度坐标的像素值,即直角坐标(u
p
,v
p
)的像素值作为经纬度坐标的像素值。在此基础上,可以将视球面图像中的每个经纬度坐标的像素值组成视球面图像,至此,可以得到一个视球面图像。
[0058]
综上所述,可以得到视球面坐标系下的视球面图像,该视球面坐标系可以是一个球面坐标系,对此视球面坐标系不做限制,而该视球面坐标系下的图像就是视球面图像,该视球面图像与全景图像的关系参见图4a所示。
[0059]
步骤303、基于视球面图像生成第一虚拟相机对应的第一小孔图像。视球面图像是在视球面坐标系下的图像,第一虚拟相机的位置是视球面坐标系的球心位置,第一虚拟相机的初始姿态是以该球心位置为中心的任一姿态。
[0060]
示例性的,可以将视球面图像展开成多个视点下的小孔图像,每个小孔图像对应一个虚拟相机,虚拟相机在真实场景中并不存在,是在视球面坐标系的球心位置虚拟出的相机,即虚拟相机的位置与视球面坐标系的球心位置重合。
[0061]
视球面坐标系可以是三维坐标系,即存在x轴、y轴和z轴,对于每个虚拟相机来说,该虚拟相机的姿态可以是以该球心位置为中心的任一姿态。比如说,虚拟相机对应三个方向的姿态,第一方向的姿态与视球面坐标系的x轴重合(即绕x轴旋转0度),第二方向的姿态与视球面坐标系的y轴重合(即绕y轴旋转0度),第三方向的姿态与视球面坐标系的z轴重合(即绕z轴旋转0度)。又例如,虚拟相机对应的第一方向的姿态绕x轴旋转60度,第二方向的姿态与y轴重合,第三方向的姿态与z轴重合。又例如,虚拟相机对应的第一方向的姿态绕x轴旋转120度,第二方向的姿态绕y轴旋转60度,第三方向的姿态与z轴重合,以此类推。综上所述,虚拟相机的姿态可以绕视球面坐标系的坐标轴(如x轴、y轴和z轴)进行旋转得到,对此旋转角度不做限制。
[0062]
示例性的,可以将任一姿态的虚拟相机称为第一虚拟相机,且将第一虚拟相机的姿态称为初始姿态,显然,第一虚拟相机的位置是视球面坐标系的球心位置,且第一虚拟相机的初始姿态是以该球心位置为中心的任一姿态。
[0063]
本实施例中,以初始姿态的第一方向与视球面坐标系的x轴重合,初始姿态的第二方向与视球面坐标系的y轴重合,初始姿态的第三方向与视球面坐标系的z轴重合为例,当然,上述只是初始姿态的示例,对此不做限制。
[0064]
参见图4b所示,为第一小孔图像(即第一虚拟相机对应的小孔图像)的直角坐标与视球面图像的经纬度坐标的关系示意图,左侧为视球面图像的示意图,右侧为第一小孔图像的示意图,视球面图像可以是单位球面的图像。
[0065]
参见图4b所示,在视球面坐标系的球心位置虚拟出一个小孔相机,即第一虚拟相机,而第一虚拟相机对应的图像是视平面下的第一小孔图像。假设第一小孔图像的宽度为w,第一小孔图像的高度为h,则第一小孔图像的中心点坐标为(u0,v0)=(w/2,h/2)。假设第一小孔图像上点q的直角坐标为(uq,vq),点q与视球面坐标系的球心位置o的连线交视球面于点qs,视球面坐标系的球心位置o与第一小孔图像的中心点之间的距离为d。基于此,第一小孔图像上点q的直角坐标转换成以单位球心为原点的三维直角坐标时,可以参见公式(3)所示:
[0066][0067]
从图4b可以看出,点qs与点q的三维坐标之间成一定比例,该比例是基于三角形的相似性原理得出,且该比例的关系可以参见公式(4)所示:
[0068][0069]
由于oqs=1,因此,点qs的坐标可以参见公式(5)所示:
[0070][0071]
实际应用中,视球面的点坐标还可以使用经纬度表示,参见公式(6)所示:
[0072][0073]
结合公式(3)、公式(5)和公式(6),就可以得到第一小孔图像的直角坐标与视球面
图像的经纬度坐标的关系,参见公式(7)所示,为该关系的示例。
[0074][0075]
在公式(7)中,λ和分别表示视球面图像的经度坐标和纬度坐标,u0=w/2,v0=h/2,w表示第一小孔图像的宽度,h表示第一小孔图像的高度,w和h均为已知值。d表示视球面坐标系的球心位置o与第一小孔图像的中心点之间的距离,是已知值,可以根据经验配置,也可以采用某算法计算得到d的取值,对此不做限制。基于上述公式(7),就可以对第一小孔图像上的直角坐标与视球面图像的经纬度坐标进行投影,即视球面图像到第一小孔图像的转换。
[0076]
综上所述,基于第一小孔图像的宽度w和高度h,可以确定第一小孔图像的中心点坐标(u0,v0)=(w/2,h/2),基于该中心点坐标和目标距离d就可以确定第一小孔图像中的直角坐标(u,v)与视球面图像中的经纬度坐标之间的映射关系,该映射关系可以参见公式(7)所示。显然,针对第一小孔图像中的每个直角坐标,可以基于该映射关系从视球面图像中确定与该直角坐标对应的经纬度坐标,并基于该经纬度坐标的像素值确定该直角坐标的像素值,即该经纬度坐标的像素值作为该直角坐标的像素值。在此基础上,可以将第一小孔图像中的每个直角坐标的像素值组成第一小孔图像,至此,得到一个第一小孔图像。
[0077]
在一种可能的实施方式中,在得到目标场景的全景图像之后,也可以直接将全景图像转换为第一虚拟相机对应的第一小孔图像,而不再将全景图像转换为视球面坐标系对应的视球面图像,基于视球面图像生成第一小孔图像。比如说,可以得到第一小孔图像的直角坐标与全景图像的直角坐标的关系,参见公式(8)所示,公式(8)的推到过程参见公式(2)、公式(3)、公式(5)和公式(6),公式(8)中各字母的含义参见上述公式,在此不再赘述。
[0078][0079]
从公式(8)可以看出,针对第一小孔图像中的每个直角坐标(u,v),可以基于该映射关系从全景图像中确定与该直角坐标(u,v)对应的直角坐标(u
p
,v
p
),并基于该直角坐标(u
p
,v
p
)的像素值确定该直角坐标(u,v)的像素值,即该直角坐标(u
p
,v
p
)的像素值作为该直角坐标(u,v)的像素值。在此基础上,可以将第一小孔图像中的每个直角坐标的像素值组成第一小孔图像,至此得到第一小孔图像。
[0080]
步骤304、确定第二虚拟相机的目标姿态与第一虚拟相机的初始姿态之间的旋转
矩阵,示例性的,该第二虚拟相机的位置可以是该视球面坐标系的球心位置,且该目标姿态是对该初始姿态绕视球面坐标系的坐标轴进行旋转得到。
[0081]
示例性的,可以将视球面图像展开成多个视点下的小孔图像,每个小孔图像对应一个虚拟相机,虚拟相机是在视球面坐标系的球心位置虚拟的相机,即虚拟相机的位置与视球面坐标系的球心位置重合。虚拟相机的姿态可以绕视球面坐标系的坐标轴(如x轴、y轴和z轴)旋转得到,对此旋转角度不做限制。
[0082]
在已知第一虚拟相机的初始姿态的基础上,第二虚拟相机的目标姿态是对初始姿态绕视球面坐标系的坐标轴进行旋转得到,比如说,目标姿态的第一方向是对初始姿态绕x轴旋转60度得到,目标姿态的第二方向是对初始姿态绕y轴旋转60度得到,目标姿态的第三方向是对初始姿态绕z轴旋转0度得到。假设初始姿态的第一方向与x轴重合,初始姿态的第二方向与y轴重合,初始姿态的第三方向与z轴重合,那么,目标姿态的第一方向绕x轴旋转60度,目标姿态的第二方向绕y轴旋转60度,目标姿态的第三方向与z轴重合。又例如,目标姿态的第一方向是对初始姿态绕x轴旋转120度得到,目标姿态的第二方向是对初始姿态绕y轴旋转90度得到,目标姿态的第三方向是对初始姿态绕z轴旋转0度得到,以此类推,对此目标姿态与初始姿态的旋转关系不做限制。
[0083]
综上所述,基于第二虚拟相机的目标姿态与第一虚拟相机的初始姿态,可以确定目标姿态与初始姿态之间的在第一坐标轴方向的第一旋转角度,如对初始姿态绕x轴的旋转角度,第一旋转角度记为a
x
,可以确定目标姿态与初始姿态之间的在第二坐标轴方向的第二旋转角度,即对初始姿态绕y轴的旋转角度,第二旋转角度记为ay,可以确定目标姿态与初始姿态之间的在第三坐标轴方向的第三旋转角度,即对初始姿态绕z轴的旋转角度,第三旋转角度记为az。
[0084]
基于第一旋转角度a
x
、第二旋转角度ay和第三旋转角度az,就可以确定第二虚拟相机的目标姿态与第一虚拟相机的初始姿态之间的旋转矩阵,例如,基于第一旋转角度a
x
确定第一坐标轴方向的第一子旋转矩阵r
x
,基于第二旋转角度ay确定第二坐标轴方向的第二子旋转矩阵ry,基于第三旋转角度az确定第三坐标轴方向的第三子旋转矩阵rz。然后,基于第一子旋转矩阵r
x
、第二子旋转矩阵ry和第三子旋转矩阵rz就可以确定目标姿态与初始姿态之间的旋转矩阵。
[0085]
由于绕z轴方向旋转不符合拍摄习惯,即对初始姿态绕z轴的旋转角度通常为0度,第三子旋转矩阵rz通常为1,对此第三子旋转矩阵rz不做限制,以基于第一子旋转矩阵r
x
和第二子旋转矩阵ry确定旋转矩阵为例进行说明。
[0086]
参见公式(9)所示,为基于第一旋转角度a
x
确定第一子旋转矩阵r
x
,参见公式(10)所示,为基于第二旋转角度ay确定第二子旋转矩阵ry,基于第一子旋转矩阵r
x
和第二子旋转矩阵ry就可以得到旋转矩阵r,参见公式(11)所示。
[0087]
[0088][0089]
r=r
yrx
ꢀꢀꢀꢀꢀꢀꢀ
公式(11)
[0090]
综上所述,基于第二虚拟相机的目标姿态与第一虚拟相机的初始姿态之间的第一旋转角度a
x
和第二旋转角度ay,就可以确定出第一子旋转矩阵r
x
和第二子旋转矩阵ry,继而得到目标姿态与初始姿态之间的旋转矩阵r。
[0091]
示例性的,第二虚拟相机的数量可以为至少一个,针对每个第二虚拟相机,可以获知该第二虚拟相机对应的目标姿态,继而得到该第二虚拟相机的目标姿态与第一虚拟相机的初始姿态之间的旋转矩阵r。比如说,参见图4c所示,为小孔图像的坐标与视球面的坐标之间的关系示意图,在视球面坐标系的球心位置绕y轴等角度间距虚拟出6个小孔相机视点,第二旋转角度ay的集合为{0、1/3*π、2/3*π、π、4/3*π、5/3*π},第一旋转角度a
x
为0。在此基础上,可以得到6个虚拟相机,第一个虚拟相机的第一旋转角度a
x
为0,第二旋转角度ay为0,这个虚拟相机也就是第一虚拟相机。第二个虚拟相机的第一旋转角度a
x
为0,第二旋转角度ay为1/3*π,这个虚拟相机记为第二虚拟相机1,基于公式(9)-公式(11)确定第二虚拟相机1的目标姿态与第一虚拟相机的初始姿态之间的旋转矩阵r。以此类推,第六个虚拟相机的第一旋转角度a
x
为0,第二旋转角度ay为5/3*π,这个虚拟相机记为第二虚拟相机5,基于公式(9)-公式(11)确定第二虚拟相机5的目标姿态与第一虚拟相机的初始姿态之间的旋转矩阵r。
[0092]
综上所述,当存在多个第二虚拟相机时,不同第二虚拟相机的目标姿态可以不同,且可以确定出每个第二虚拟相机对应的旋转矩阵r。
[0093]
步骤305、基于第二虚拟相机的目标姿态与第一虚拟相机的初始姿态之间的旋转矩阵,确定出该目标姿态与该初始姿态之间的外参矩阵。示例性的,可以确定第一虚拟相机与第二虚拟相机之间的平移矩阵,然后,可以基于该旋转矩阵和该平移矩阵确定出该目标姿态与该初始姿态之间的外参矩阵。
[0094]
示例性的,由于第二虚拟相机与第一虚拟相机之间是固连且同光心的,即第二虚拟相机的位置是视球面坐标系的球心位置,且第一虚拟相机的位置也是视球面坐标系的球心位置,因此,第一虚拟相机与第二虚拟相机之间的平移矩阵可以是即第一虚拟相机与第二虚拟相机的位置之间没有发生平移。
[0095]
示例性的,在得到旋转矩阵和平移矩阵之后,就可以基于该旋转矩阵和该平移矩阵得到外参矩阵,参见公式(12)所示,为确定外参矩阵的示例。
[0096][0097]
在公式(12)中,c0表示第一虚拟相机(也即参考相机),ci表示第i个第二虚拟相机,表示第i个第二虚拟相机与第一虚拟相机之间的旋转矩阵,参见公式(9)-公式(11)所
示,表示第i个第二虚拟相机与第一虚拟相机之间的平移矩阵,即表示第i个第二虚拟相机与第一虚拟相机之间的平移矩阵,即表示第i个第二虚拟相机与第一虚拟相机之间的外参矩阵,该外参矩阵会用在后续的多相机绑定优化过程,参见后续实施例。
[0098]
综上所述,当存在多个第二虚拟相机时,可以确定每个第二虚拟相机与第一虚拟相机之间的外参矩阵,该外参矩阵可以包括旋转矩阵和平移矩阵。
[0099]
步骤306、基于第二虚拟相机的目标姿态与第一虚拟相机的初始姿态之间的旋转矩阵,确定该第二虚拟相机对应的第二小孔图像。比如说,基于该旋转矩阵和第一小孔图像确定第二小孔图像,或者,基于该旋转矩阵和视球面图像确定第二小孔图像。当然,上述方式只是示例,本实施例对此不做限制。
[0100]
例如,参见图4b所示,基于第二虚拟相机的目标姿态与第一虚拟相机的初始姿态之间的旋转矩阵r,可以对视球面图像上的点qs进行旋转,得到旋转后的点qs',而旋转后的点qs'与旋转前的点qs的关系,可以参见公式(13)所示:
[0101][0102]
显然,视球面图像上的点qs对应的是第一小孔图像上的点q,而视球面图像上的点qs'对应的是第二小孔图像上的点q’,基于此,第二小孔图像上的点q’与第一小孔图像上的点q的关系,可以参见公式(14)所示:
[0103][0104]
综上可以看出,基于旋转矩阵r,可以确定第一小孔图像上的坐标与第二小孔图像上的坐标之间的映射关系,该映射关系可以参见公式(14)所示,基于该映射关系,就可以将第一小孔图像转换为第二小孔图像,在此不再赘述。
[0105]
在另一种可能的实施方式中,还可以将公式(13)带入公式(6)和公式(7)中,得到视球面图像上的坐标与第二小孔图像上的坐标之间的映射关系,基于该映射关系,就可以将视球面图像转换为第二小孔图像,在此不再赘述。
[0106]
示例性的,在生成小孔图像(如第一小孔图像或者第二小孔图像)的像素时,还可以进行插值计算,比如说,全景图像的坐标可以为浮点值,可以采用双线性插值方式进行插值计算,得到小孔图像的像素,对此过程不做限制。
[0107]
综上所述,可以得到第一小孔图像和第二小孔图像、虚拟相机之间的外参矩阵。例如,假设存在第一虚拟相机、第二虚拟相机1和第二虚拟相机2,则得到第一虚拟相机对应的第一小孔图像、第二虚拟相机1对应的第二小孔图像1、第二虚拟相机2对应的第二小孔图像2,并得到第二虚拟相机1与第一虚拟相机之间的外参矩阵11、第二虚拟相机2与第一虚拟相机之间的外参矩阵21。
[0108]
二、多相机绑定建图,比如说,基于第一小孔图像、第二小孔图像和固连约束(即外参矩阵),进行多相机绑定的sfm重建,得到三维视觉地图。
[0109]
示例性的,针对第一小孔图像和第二小孔图像(第一小孔图像的数量为一个,第二小孔图像的数量为至少一个),可以从第一小孔图像和第二小孔图像中选取目标场景的实际位置对应的二维特征点(在实际应用中,可以获取不同时刻的多帧全景图像,每帧全景图像均对应第一小孔图像和第二小孔图像,可以从这些第一小孔图像和第二小孔图像中选取该实际位置对应的多个二维特征点,即这些二维特征点是不同时刻的所有小孔图像中的特征点)。比如说,针对目标场景的某个实际位置(即实际物理位置),可以从第一小孔图像中选取与该实际位置对应的二维特征点,并从第二小孔图像中选取与该实际位置对应的二维特征点,即得到多个二维特征点。基于这些二维特征点和外参矩阵就可以确定该实际位置对应的三维地图点。比如说,确定已配置的损失函数的目标损失值;基于该目标损失值和该实际位置对应的二维特征点,确定虚拟相机的坐标系与小孔图像的坐标系之间的投影函数值;基于该外参矩阵和该投影函数值确定该实际位置对应的三维地图点,即作为三维视觉地图中的三维地图点。
[0110]
比如说,在多相机绑定的sfm重建过程中,考虑到相机间的固连约束(即一个组内相机具有外参矩阵的约束),可以将虚拟相机之间的固连约束(即外参矩阵)加入优化,相机捆绑优化主要是对重建过程添加相机间刚体连接约束进行捆绑优化,对于每个相机固连组集合,由具有相同相机固连约束的若干个快照构成,每个快照是由同一时刻,相机组上每个相机拍摄的图像构成,组内相机之间的外参就是上述实施例的该固连约束会加入到后续的重建过程。
[0111]
示例性的,一个固连组的重投影误差可以表示为公式(15)所示:
[0112][0113]
在公式(15)中,sk表示一个固连组,假设存在5个第二虚拟相机,则sk就表示这5个第二虚拟相机组成的固连组,i的取值范围是1-5,即c1表示第一个第二虚拟相机,c2表示第一个第二虚拟相机,以此类推。j表示二维特征点,即实际位置对应的二维特征点(从所有小孔图像中确定的二维特征点),当j为1时,表示实际位置对应的第一个二维特征点,当j为2时,表示实际位置对应的第二个二维特征点,以此类推。ρj表示第j个二维特征点的核函数,用于抑制较大的外点误差。xj表示第j个二维特征点,即第j个二维特征点在小孔图像中的2d点坐标。π表示虚拟相机的坐标系与小孔图像的坐标系之间的投影函数,即从相机系到图像系的投影函数。表示固连组内的外参矩阵,c0表示第一虚拟相机,ci表示第i个第二虚拟相机,即表示第i个第二虚拟相机与第一虚拟相机之间的外参矩阵,当i为1时,表示第1个第二虚拟相机与第一虚拟相机之间的外参矩阵,当i为2时,表示第2个第二虚拟相机与第一虚拟相机之间的外参矩阵,以此类推,上述外参矩阵均是已得到的外参矩阵。t
wc
表示固连组内参考相机,通常是第0号相机的位姿矩阵,即第一虚拟相机的位姿矩阵。xk表示实际位置对应的三维地图点,即需要得到的三维地图点,表示场景的3d点。对于固连组内的任意相机而言,均可以通过t
wc
和得到,即
[0114]
在公式(15)中,需要优化的参数包括参考相机的位姿矩阵(即第一虚拟相机的位
姿矩阵t
wc
)和三维地图点xk,而外参矩阵和特征点xj为已知,因此,在多相机绑定的sfm重建过程中,可以对上述损失函数进行最小化,如通过lm(levenberg arquardt)算法对上述损失函数进行最小化,最终得到参考相机的位姿矩阵t
wc
和三维地图点xk,也就是说,能够得到实际位置对应的三维地图点xk。
[0115]
综上所述,可以将重投影误差的函数(公式(15)所示)作为已配置的损失函数,通过lm算法对上述损失函数进行最小化,将最小化后的数值作为该损失函数的目标损失值。从公式(15)可以看出,基于该目标损失值和实际位置对应的二维特征点xj,可以确定虚拟相机的坐标系与小孔图像的坐标系之间的投影函数值,即然后,基于外参矩阵和投影函数值就可以推导出参考相机的位姿矩阵t
wc
和三维地图点xk,也就是说,能够得到实际位置对应的三维地图点xk,即作为三维视觉地图中的三维地图点。
[0116]
针对目标场景的多个实际位置来说,可以采用上述方式得到每个实际位置对应的三维地图点,从而基于目标场景的多个三维地图点构建目标场景的三维视觉地图,也就是说,三维视觉地图可以包括目标场景的多个三维地图点。
[0117]
三、存储三维视觉地图对应的地图信息,比如说,在视觉特征数据库中存储三维视觉地图对应的地图信息。示例性的,该三维视觉地图对应的地图信息可以包括但不限于:样本图像对应的样本全局描述子、样本图像对应的三维地图点和三维地图点对应的样本局部描述子,样本图像是从第一小孔图像和第二小孔图像中选取的小孔图像,比如说,将所有小孔图像均作为样本图像,或者,从所有小孔图像中选取部分小孔图像作为样本图像,对此不做限制。
[0118]
在得到目标场景的三维视觉地图之后,该三维视觉地图可以包括如下信息:
[0119]
样本图像位姿:样本图像是构建三维视觉地图时的图像,即上述第一小孔图像和第二小孔图像等,即可以基于样本图像构建三维视觉地图,样本图像的位姿矩阵(可以简称为样本图像位姿)可以被存储到三维视觉地图中,也就是说,三维视觉地图可以包括样本图像位姿。参见上述实施例,样本图像位姿可以是样本图像对应的第一小孔图像对应的参考相机的位姿矩阵t
wc

[0120]
样本全局描述子:针对每帧样本图像,该样本图像可以对应图像全局描述子,将该图像全局描述子记为样本全局描述子,样本全局描述子是用高维向量来表示该样本图像,样本全局描述子用于区分不同样本图像的图像特征。
[0121]
其中,针对每帧样本图像,可以基于已训练的字典模型确定该样本图像对应的词袋向量,并将该词袋向量确定为该样本图像对应的样本全局描述子。比如说,视觉词袋(bag of words)方法是一种用于确定全局描述子的方式,在视觉词袋方法中,可以构建词袋向量,该词袋向量是一种用于图像相似检测的向量表示方法,可以将该词袋向量作为样本图像对应的样本全局描述子。
[0122]
在视觉词袋方法中,需要预先训练一个“字典”,也可以称为字典模型,一般是利用大量图像中的特征点描述子进行聚类,训练得到一个分类树,每一类分类树可以代表一种视觉“单词”,而这些视觉“单词”就组成字典模型。
[0123]
针对样本图像来说,可以将该样本图像中的所有特征点描述子进行“单词”分类,并统计所有单词的出现频率,这样,字典中每个单词的频率可构成一个向量,该向量即为该样本图像对应的词袋向量,该词袋向量可以用于衡量两幅图像的相似程度,将该词袋向量作为该样本图像对应的样本全局描述子。
[0124]
其中,针对每帧样本图像,可以将该样本图像输入给已训练的深度学习模型,得到该样本图像对应的目标向量,并将该目标向量确定为该样本图像对应的样本全局描述子。比如说,深度学习方法是一种用于确定全局描述子的方式,在深度学习方法中,可以通过深度学习模型对样本图像进行多层卷积,并最终得到一个高维的目标向量,将该目标向量作为样本图像对应的样本全局描述子。
[0125]
在深度学习方法中,需要预先训练深度学习模型,如cnn(convolutional neural networks,卷积神经网络)模型等,一般是利用大量图像训练得到深度学习模型,对此深度学习模型的训练方式不做限制。针对样本图像来说,可以将该样本图像输入给深度学习模型,由深度学习模型对该样本图像进行处理,得到一个高维的目标向量,将该目标向量作为该样本图像对应的样本全局描述子。
[0126]
样本图像的特征点对应的样本局部描述子:针对样本图像来说,可以包括多个特征点,特征点是该样本图像中具有特异性的像素点位置,该特征点可以对应一个图像局部描述子,将该图像局部描述子记为样本局部描述子,样本局部描述子是用一个向量来描述特征点(即像素点位置)附近范围内的图像块的特征,该向量也可以称为特征点的描述子。综上所述,样本局部描述子是用于表示特征点所处图像块的特征向量,且该图像块可以位于该样本图像中。针对样本图像的每个特征点,该特征点对应三维视觉地图中的三维地图点,即可以将该特征点对应的样本局部描述子称为该三维地图点对应的样本局部描述子。
[0127]
其中,可以采用orb(oriented fast and rotated brief,定向快速旋转)、sift(scale-invariant feature transform,尺度不变特征变换)、surf(speeded up robust features,加速稳健特征)等算法,从样本图像中提取特征点,并确定特征点对应的样本局部描述子。也可以采用深度学习算法(如superpoint,delf,d2-net等),从样本图像中提取特征点,并确定特征点对应的样本局部描述子,对此不做限制,只要能够得到特征点,并确定样本局部描述子即可。
[0128]
三维地图点的地图点信息:地图点信息可以包括但不限于:三维地图点的3d空间位置、所有被观测的样本图像以及对应的2d特征点的编号。
[0129]
四、在线定位过程。比如说,可以采集目标场景的目标图像,基于目标场景的三维视觉地图对目标图像进行姿态解算,得到目标图像对应的三维视觉地图中的全局定位位姿,完成定位过程。比如说,当需要基于三维视觉地图对终端设备进行全局定位时,终端设备可以从服务器下载三维视觉地图,在终端设备在目标场景的移动过程中,就可以基于三维视觉地图对终端设备进行定位。目标场景可以是室内环境,即,终端设备在室内环境移动时,可以确定终端设备在三维视觉地图中的全局定位位姿,当然,目标场景也可以是室外环境等,对此目标场景不做限制。在上述实施例中,位姿(如全局定位位姿等)可以是位置与姿态,一般用旋转矩阵和平移向量表示,对此不做限制。
[0130]
终端设备可以包括视觉传感器,如摄像机等,视觉传感器用于在终端设备的移动过程中,采集目标场景的目标图像(即移动过程中的实时图像)。
[0131]
其中,终端设备可以为可穿戴设备(如视频安全帽、智能手表、智能眼镜等),且视觉传感器部署在可穿戴设备上;或者,终端设备为记录仪(如由工作人员在执行工作时随身携带,具有集实时视音频采集、照相、录音、对讲、定位等功能于一体的设备),且视觉传感器部署在记录仪上;或者,终端设备为摄像机(如分体式摄像机等),且视觉传感器部署在摄像机上。或者,终端设备为机器人,且视觉传感器部署在机器人上。或者,终端设备为自动驾驶车辆,且视觉传感器部署在自动驾驶车辆上。当然,上述只是几个示例,对此不做限制,如还可以为智能手机等,只要终端设备部署视觉传感器即可。
[0132]
示例性的,基于目标场景的三维视觉地图,在得到目标图像后,可以从目标场景的三维视觉地图中确定出与目标图像对应的目标三维地图点,并基于目标三维地图点确定终端设备在三维视觉地图中的全局定位位姿。
[0133]
示例性的,基于目标场景的三维视觉地图,在一种可能的实施方式中,可以采用如下步骤确定终端设备在该三维视觉地图中的全局定位位姿:
[0134]
步骤s11、在终端设备的全局定位过程中,获取终端设备在目标场景中的目标图像,如通过视觉传感器采集目标场景中的目标图像,即实时视频图像。
[0135]
步骤s12、确定目标图像对应的待测全局描述子。
[0136]
示例性的,该目标图像可以对应图像全局描述子,可以将该图像全局描述子记为待测全局描述子,待测全局描述子是用高维向量来表示该目标图像,待测全局描述子用于区分不同目标图像的图像特征。比如说,基于已训练的字典模型确定目标图像对应的词袋向量,将该词袋向量确定为目标图像对应的待测全局描述子。或者,将目标图像输入给已训练的深度学习模型,得到目标图像对应的目标向量,将该目标向量确定为目标图像对应的待测全局描述子。
[0137]
综上所述,可以基于视觉词袋方法或者深度学习方法确定目标图像对应的待测全局描述子,确定方式参见样本全局描述子的确定方式,在此不再赘述。
[0138]
步骤s13、确定待测全局描述子(即目标图像对应的待测全局描述子)与三维视觉地图对应的每帧样本图像对应的样本全局描述子之间的距离。
[0139]
参见上述实施例,三维视觉地图可以包括每帧样本图像对应的样本全局描述子,因此,可以确定该待测全局描述子与每帧样本图像对应的样本全局描述子之间的距离,如欧式距离,即计算两个特征向量之间的欧式距离。
[0140]
步骤s14、基于该待测全局描述子与每个样本全局描述子之间的距离,从三维视觉地图对应的多帧样本图像中选取出候选样本图像;其中,该待测全局描述子与候选样本图像对应的样本全局描述子之间的距离为最小距离;或,该待测全局描述子与候选样本图像对应的样本全局描述子之间的距离小于距离阈值。
[0141]
比如说,假设三维视觉地图对应样本图像1、样本图像2和样本图像3,则可以计算该待测全局描述子与样本图像1对应的样本全局描述子之间的距离1,并计算该待测全局描述子与样本图像2对应的样本全局描述子之间的距离2,并计算该待测全局描述子与样本图像3对应的样本全局描述子之间的距离3。
[0142]
在一种可能的实施方式中,若距离1是最小距离,则将样本图像1选取为候选样本图像。或者,若距离1小于距离阈值(可以根据经验进行配置),且距离2小于距离阈值,但是距离3不小于距离阈值,则将样本图像1和样本图像2均选取为候选样本图像。或者,若距离1
是最小距离,且距离1小于距离阈值,则将样本图像1选取为候选样本图像,但是,若距离1是最小距离,且距离1不小于距离阈值,则无法选取出候选样本图像,即全局定位失败。
[0143]
综上所述,可以从三维视觉地图对应的多帧样本图像中选取候选样本图像。
[0144]
步骤s15、从目标图像中获取多个特征点。示例性的,针对每个特征点,可以确定该特征点对应的待测局部描述子,该待测局部描述子可以用于表示该特征点所处图像块的特征向量,且该图像块可以位于该目标图像中。
[0145]
比如说,目标图像可以包括多个特征点,特征点可以是目标图像中具有特异性的像素点位置,该特征点可以对应一个图像局部描述子,将该图像局部描述子记为待测局部描述子,待测局部描述子是用一个向量来描述特征点(即像素点位置)附近范围内的图像块的特征,该向量也可以称为特征点的描述子。综上所述,待测局部描述子是用于表示特征点所处图像块的特征向量。
[0146]
其中,可以采用orb、sift、surf等算法,从目标图像中提取特征点,并确定特征点对应的待测局部描述子。也可以采用深度学习算法(如superpoint,delf,d2-net等),从目标图像中提取特征点,并确定特征点对应的待测局部描述子,对此不做限制,只要能够得到特征点,并确定待测局部描述子即可。
[0147]
步骤s16、针对目标图像对应的每个特征点,确定该特征点对应的待测局部描述子与该候选样本图像对应的每个三维地图点对应的样本局部描述子之间的距离,如欧式距离,即,计算两个特征向量之间的欧式距离。
[0148]
参见上述实施例,针对每帧样本图像,三维视觉地图包括该样本图像对应的每个三维地图点对应的样本局部描述子,在得到候选样本图像后,可以从三维视觉地图中获取候选样本图像对应的每个三维地图点对应的样本局部描述子。
[0149]
在得到目标图像对应的每个特征点后,确定该特征点对应的待测局部描述子与候选样本图像对应的每个三维地图点对应的样本局部描述子之间的距离。
[0150]
步骤s17、针对每个特征点,基于该特征点对应的待测局部描述子与候选样本图像对应的每个三维地图点对应的样本局部描述子之间的距离,从候选样本图像对应的三维地图点中选取目标三维地图点;待测局部描述子与目标三维地图点对应的样本局部描述子之间的距离为最小距离,且最小距离小于距离阈值。
[0151]
比如说,假设候选样本图像对应三维地图点1、三维地图点2和三维地图点3,则可以计算待测局部描述子与三维地图点1对应的样本局部描述子之间的距离1,计算该待测局部描述子与三维地图点2对应的样本局部描述子之间的距离2,计算该待测局部描述子与三维地图点3对应的样本局部描述子之间的距离3。
[0152]
在一种可能的实施方式中,若距离1是最小距离,则将三维地图点1选取为目标三维地图点。或者,若距离1小于距离阈值,且距离2小于距离阈值,但是距离3不小于距离阈值,则可以将三维地图点1和三维地图点2均选取为目标三维地图点。或者,若距离1是最小距离,且距离1小于距离阈值,则可以将三维地图点1选取为目标地图点,但是,若距离1是最小距离,且距离1不小于距离阈值,则无法选取出目标三维地图点,即全局定位失败。
[0153]
针对目标图像的每个特征点,从目标图像对应的候选样本图像中选取与该特征点对应的目标三维地图点,得到特征点与目标三维地图点的匹配关系。
[0154]
步骤s18、基于目标图像对应的多个特征点和多个特征点对应的目标三维地图点,
确定该目标图像对应的三维视觉地图中的全局定位位姿。
[0155]
比如说,目标图像的特征点1对应三维地图点1,目标图像的特征点2对应三维地图点2,以此类推,从而得到多个匹配关系对,每个匹配关系对包括二维特征点和三维地图点,该二维特征点表示目标图像中的二维位置,该三维地图点表示三维视觉地图中的三维位置,即匹配关系对包括二维位置到三维位置的映射关系,即目标图像中的二维位置到三维视觉地图中的三维位置的映射关系。
[0156]
若多个匹配关系对的总数量未达到数量要求,则表示无法基于多个匹配关系对确定出目标图像对应的三维视觉地图中的全局定位位姿。若多个匹配关系对的总数量达到数量要求(即总数量达到预设数量值),则表示能够基于多个匹配关系对确定出目标图像对应的三维视觉地图中的全局定位位姿,即,可以基于多个匹配关系对确定出目标图像对应的三维视觉地图中的全局定位位姿。
[0157]
比如说,可以采用pnp(perspective npoint,n点透视)算法计算出目标图像在三维视觉地图中的全局定位位姿,对此计算方式不做限制。例如,pnp算法的输入数据是多个匹配关系对,针对每个匹配关系对,该匹配关系对包括目标图像中的二维位置和三维视觉地图中的三维位置,基于多个匹配关系对,就可以采用pnp算法计算出目标图像在三维视觉地图中的位姿,即全局定位位姿。
[0158]
在一种可能的实施方式中,在得到多个匹配关系对之后,还可以从多个匹配关系对中查找到有效的匹配关系对。基于这些有效的匹配关系对,则可以采用pnp算法计算出该目标图像在三维视觉地图中的全局定位位姿。比如说,可以采用ransac(random sample consensus,随机样本一致性)检测算法,从所有匹配关系对中找到有效的匹配关系对,对此过程不做限制。
[0159]
综上所述,可以确定终端设备在三维视觉地图中的全局定位位姿。
[0160]
由以上技术方案可见,本技术实施例中,可以构建目标场景的三维视觉地图,基于三维视觉地图对目标场景的终端设备进行全局定位,对终端设备进行准确定位。可以采用目标场景的全景图像构建三维视觉地图,全景图像具有较大视场角,避免对目标场景的反复数据采集,提升数据采集效率。在确定三维地图点时,可以使用虚拟相机的投影方式得到小孔图像,并添加虚拟相机的位姿约束,采用虚拟相机绑定优化的策略确定三维地图点,提升建图鲁棒性、建图效率和建图精度。通过使用全景相机实现sfm重建过程,能够提升建图的精度与鲁棒性,通过加入多相机绑定优化策略约束虚拟相机之间的固连关系,可提升建图精度。根据球面投影关系得到彼此固连的n个虚拟相机,将该固连约束加入了重建过程,该约束可提高多相机注册精度,降低错误注册的比例。另外,虚拟小孔相机固连约束绑定优化的思路可以拓展到硬件固连的多相机系统中,算法具有通用性,仅需要修改相机固连外参即可,对此不再赘述。
[0161]
基于与上述方法同样的申请构思,本技术实施例中提出了一种地图构建装置,参见图5所示,为所述地图构建装置的结构图,所述装置可以包括:
[0162]
获取模块51,用于获取目标场景的全景图像;
[0163]
生成模块52,用于基于所述全景图像生成第一虚拟相机对应的第一小孔图像;其中,所述第一虚拟相机的位置是视球面坐标系的球心位置,所述第一虚拟相机的初始姿态是以所述球心位置为中心的任一姿态;
[0164]
确定模块53,用于确定第二虚拟相机的目标姿态与所述初始姿态之间的旋转矩阵,并基于所述旋转矩阵确定所述目标姿态与所述初始姿态之间的外参矩阵;其中,所述第二虚拟相机的位置是所述视球面坐标系的球心位置,所述目标姿态是对所述初始姿态绕所述视球面坐标系的坐标轴进行旋转得到;
[0165]
所述生成模块52,还用于基于所述旋转矩阵确定所述第二虚拟相机对应的第二小孔图像;所述确定模块53,还用于从所述第一小孔图像和所述第二小孔图像中选取所述目标场景的实际位置对应的二维特征点,并基于所述二维特征点和所述外参矩阵确定所述实际位置对应的三维地图点;以及,基于所述目标场景的多个三维地图点构建所述目标场景的三维视觉地图。
[0166]
示例性的,所述生成模块52基于所述全景图像生成第一虚拟相机对应的第一小孔图像时具体用于:基于所述全景图像生成所述视球面坐标系对应的视球面图像;基于所述视球面图像生成所述第一虚拟相机对应的第一小孔图像。
[0167]
示例性的,所述生成模块52基于所述全景图像生成所述视球面坐标系对应的视球面图像时具体用于:基于所述全景图像的宽度和高度,确定所述视球面图像中的经纬度坐标与所述全景图像中的直角坐标之间的映射关系;针对所述视球面图像中的每个经纬度坐标,基于所述映射关系从所述全景图像中确定与该经纬度坐标对应的直角坐标,并基于该直角坐标的像素值确定该经纬度坐标的像素值;基于视球面图像中的每个经纬度坐标的像素值生成所述视球面图像。
[0168]
示例性的,所述生成模块52基于视球面图像生成所述第一虚拟相机对应的第一小孔图像时具体用于:基于第一小孔图像的宽度和高度确定第一小孔图像的中心点坐标,基于所述中心点坐标和目标距离确定所述第一小孔图像中的直角坐标与所述视球面图像中的经纬度坐标之间的映射关系,所述目标距离是所述第一小孔图像的中心点与所述视球面坐标系的球心位置之间的距离;针对第一小孔图像中的每个直角坐标,基于所述映射关系从所述视球面图像中确定与该直角坐标对应的经纬度坐标,基于该经纬度坐标的像素值确定该直角坐标的像素值;基于第一小孔图像中的每个直角坐标的像素值生成所述第一小孔图像。
[0169]
示例性的,所述确定模块53确定第二虚拟相机的目标姿态与初始姿态之间的旋转矩阵时具体用于:确定所述目标姿态与所述初始姿态之间的在第一坐标轴方向的第一旋转角度,基于第一旋转角度确定第一坐标轴方向的第一子旋转矩阵;确定所述目标姿态与所述初始姿态之间的在第二坐标轴方向的第二旋转角度,基于第二旋转角度确定第二坐标轴方向的第二子旋转矩阵;确定所述目标姿态与所述初始姿态之间的在第三坐标轴方向的第三旋转角度,基于第三旋转角度确定第三坐标轴方向的第三子旋转矩阵;基于第一子旋转矩阵、第二子旋转矩阵和第三子旋转矩阵确定所述目标姿态与所述初始姿态之间的旋转矩阵。
[0170]
示例性的,所述确定模块53基于所述旋转矩阵确定所述目标姿态与所述初始姿态之间的外参矩阵时具体用于:确定所述第一虚拟相机与所述第二虚拟相机之间的平移矩阵;基于所述旋转矩阵和所述平移矩阵确定所述外参矩阵。
[0171]
示例性的,所述确定模块53基于所述二维特征点和所述外参矩阵确定所述实际位置对应的三维地图点时具体用于:确定已配置的损失函数的目标损失值;基于所述目标损
失值和所述实际位置对应的所述二维特征点,确定虚拟相机的坐标系与小孔图像的坐标系之间的投影函数值;基于所述外参矩阵和所述投影函数值确定所述实际位置对应的三维地图点。
[0172]
示例性的,三维视觉地图包括样本图像对应的样本全局描述子、所述样本图像对应的三维地图点和所述三维地图点对应的样本局部描述子;所述样本图像是从第一小孔图像和第二小孔图像中选取的小孔图像;所述装置还包括定位模块,用于在终端设备的全局定位过程中,获取终端设备在目标场景中的目标图像;基于所述目标图像与三维视觉地图对应的多帧样本图像之间的相似度,从所述多帧样本图像中选取出候选样本图像;从所述目标图像中获取多个特征点;针对每个特征点,从所述候选样本图像对应的三维地图点中确定出与该特征点对应的目标三维地图点;基于所述多个特征点和所述多个特征点对应的目标三维地图点,确定所述目标图像对应的所述三维视觉地图中的全局定位位姿。
[0173]
示例性的,所述定位模块基于所述目标图像与所述三维视觉地图对应的多帧样本图像之间的相似度,从所述多帧样本图像中选取出候选样本图像时具体用于:确定所述目标图像对应的待测全局描述子,确定所述待测全局描述子与所述三维视觉地图对应的每帧样本图像对应的样本全局描述子之间的距离;基于所述待测全局描述子与每个样本全局描述子之间的距离,从所述多帧样本图像中选取出候选样本图像;其中,所述待测全局描述子与所述候选样本图像对应的样本全局描述子之间的距离为最小距离;或者,所述待测全局描述子与所述候选样本图像对应的样本全局描述子之间的距离小于距离阈值。
[0174]
示例性的,所述定位模块从所述候选样本图像对应的三维地图点中确定出与该特征点对应的目标三维地图点时具体用于:确定该特征点对应的待测局部描述子,所述待测局部描述子用于表示该特征点所处图像块的特征向量,且所述图像块位于所述目标图像中;确定所述待测局部描述子与所述候选样本图像对应的每个三维地图点对应的样本局部描述子之间的距离;基于所述待测局部描述子与每个样本局部描述子之间的距离,从所述候选样本图像对应的三维地图点中选取目标三维地图点;其中,所述待测局部描述子与所述目标三维地图点对应的样本局部描述子之间的距离为最小距离,所述最小距离小于距离阈值。
[0175]
基于与上述方法同样的申请构思,本技术实施例中提出一种地图构建设备,所述地图构建设备可以包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现本技术上述示例公开的地图构建方法。
[0176]
基于与上述方法同样的申请构思,本技术实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本技术上述示例公开的地图构建方法。
[0177]
其中,上述机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radom access memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
[0178]
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,
或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
[0179]
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本技术时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0180]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0181]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0182]
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0183]
以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献