掌桥专利:专业的专利平台
掌桥专利
首页

体素地图构建方法及装置、计算机可读介质和电子设备

文献发布时间:2023-06-19 11:19:16


体素地图构建方法及装置、计算机可读介质和电子设备

技术领域

本公开涉及三维地图技术领域,具体涉及一种体素地图构建方法、体素地图构建装置、计算机可读介质和电子设备。

背景技术

伴随着人们生活水平的不断提高,增强现实技术(Augmented Reality,AR)越来越得到人们的广泛关注。其中AR地图导航是指根据采集的场景图像构建虚拟的三维地图,并基于构建的三维地图实现视觉定位的技术。

相关的视觉定位,AR导航等技术中,一般是通过现实场景对应的三维点云地图与拍摄到的定位图像之间的匹配关系实现导航定位的,但是,三维点云地图中仅包含三维点的坐标信息,由于三维点云地图的分布和存储结构无规律性,为了获得二维图像特征点和地图三维点之间的匹配关系,通常需要进行非常耗时的搜索和大量的匹配过程,从而影响定位精度和效率。

发明内容

本公开的目的在于提供一种体素地图构建方法、体素地图构建装置、计算机可读介质和电子设备,进而至少在一定程度上克服相关技术方案中定位精度较差、定位效率较低的问题。

根据本公开的第一方面,提供一种体素地图构建方法,包括:

获取目标场景的建图图像;

对所述建图图像进行地图重建得到所述目标场景的三维点云地图,所述三维点云地图包括三维点以及所述三维点的关联相机坐标;

基于所述三维点与所述关联相机坐标之间的关联关系,确定所述三维点云地图中各所述三维点的观测约束信息;

将所述三维点云地图以及所述观测约束信息以体素关系树的形式进行存储,得到所述目标场景的体素网格地图。

根据本公开的第二方面,提供一种体素地图构建装置,包括:

建图图像获取模块,用于获取目标场景的建图图像;

点云地图重建模块,用于对所述建图图像进行地图重建得到所述目标场景的三维点云地图,所述三维点云地图包括三维点以及所述三维点的关联相机坐标;

观测约束信息确定模块,用于基于所述三维点与所述关联相机坐标之间的关联关系,确定所述三维点云地图中各所述三维点的观测约束信息;

体素网格地图构建单元,用于将所述三维点云地图以及所述观测约束信息以体素关系树的形式进行存储,得到所述目标场景的体素网格地图。

根据本公开的第三方面,提供一种计算机可读介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述的方法。

根据本公开的第四方面,提供一种电子设备,其特征在于,包括:

处理器;以及

存储器,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现上述的方法。

本公开的一种实施例所提供的体素地图构建方法,对目标场景对应的建图图像进行地图重建得到目标场景对应的三维点云地图,基于三维点云地图中三维点与各关联相机坐标之间的关联关系,确定三维点云地图中所有三维点对应的观测约束信息,将三维点云地图以及观测约束信息以体素关系树的形式进行存储,得到目标场景对应的体素网格地图。一方面,通过将三维点云地图以及观测约束信息以体素关系树的形式进行存储,在实现导航定位时,能够根据以体素关系树存储体素网格地图快速匹配对应的三维点,有效提升定位的效率;另一方面,在将三维点云地图存储为体素关系树的同时,也将三维点对应的观测约束信息进行存储,在实现导航定位时,结合观测约束信息快速筛选三维点,进一步提升定位的效率,同时保证定位的准确度;再一方面,通过体素关系树的形式存储地图信息,节省存储空间,减少计算资源的消耗。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1示出了可以应用本公开实施例的一种示例性系统架构的示意图;

图2示出了可以应用本公开实施例的一种电子设备的示意图;

图3示意性示出本公开示例性实施例中一种体素地图构建方法的流程图;

图4示意性示出本公开示例性实施例中一种重建三维点云地图的流程图;

图5示意性示出本公开示例性实施例中一种确定三维点对应观测约束信息的流程图;

图6示意性示出本公开示例性实施例中一种观测约束信息的原理示意图;

图7示意性示出本公开示例性实施例中一种构建体素网格地图的流程图;

图8示意性示出本公开示例性实施例中一种融合三维点的流程图;

图9示意性示出本公开示例性实施例中一种八叉树结构的体素网格地图的原理示意图;

图10示意性示出本公开示例性实施例中一种基于体素网格地图进行定位的流程图;

图11示意性示出本公开示例性实施例中一种确定定位图像的初始位姿的流程图;

图12示意性示出本公开示例性实施例中一种筛选可视三维点的流程图;

图13示意性示出本公开示例性实施例中体素地图构建装置的组成示意图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。

此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

图1示出了可以应用本公开实施例的一种体素地图构建方法及装置的示例性应用环境的系统架构的示意图。

如图1所示,系统架构100可以包括终端设备101、102、103中的一个或多个,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。终端设备101、102、103可以是各种具有图像处理功能的电子设备,包括但不限于台式计算机、便携式计算机、智能手机和平板电脑等等。应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。比如服务器105可以是多个服务器组成的服务器集群等。

本公开实施例所提供的体素地图构建方法一般由终端设备101、102、103中执行,相应地,体素地图构建装置一般设置于终端设备101、102、103中。但本领域技术人员容易理解的是,本公开实施例所提供的体素地图构建方法也可以由服务器105执行,相应的,体素地图构建装置也可以设置于服务器105中,本示例性实施例中对此不做特殊限定。举例而言,在一种示例性实施例中,可以是用户通过终端设备101、102、103采集的目标场景对应的建图图像,然后将建图图像上传至服务器105,服务器通过本公开实施例所提供的体素地图构建方法生成体素网格地图后,将体素网格地图传输给终端设备101、102、103等。

本公开的示例性实施方式提供一种用于实现体素地图构建方法的电子设备,其可以是图1中的终端设备101、102、103或服务器105。该电子设备至少包括处理器和存储器,存储器用于存储处理器的可执行指令,处理器配置为经由执行可执行指令来执行体素地图构建方法。

下面以图2中的移动终端200为例,对电子设备的构造进行示例性说明。本领域技术人员应当理解,除了特别用于移动目的的部件之外,图2中的构造也能够应用于固定类型的设备。在另一些实施方式中,移动终端200可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件、软件或软件和硬件的组合实现。各部件间的接口连接关系只是示意性示出,并不构成对移动终端200的结构限定。在另一些实施方式中,移动终端200也可以采用与图2不同的接口连接方式,或多种接口连接方式的组合。

如图2所示,移动终端200具体可以包括:处理器210、内部存储器221、外部存储器接口222、通用串行总线(Universal Serial Bus,USB)接口230、充电管理模块240、电源管理模块241、电池242、天线1、天线2、移动通信模块250、无线通信模块260、音频模块270、扬声器271、受话器272、麦克风273、耳机接口274、传感器模块280、显示屏290、摄像模组291、指示器292、马达293、按键294以及用户标识模块(subscriber identification module,SIM)卡接口295等。其中传感器模块280可以包括深度传感器2801、压力传感器2802、陀螺仪传感器2803等。

处理器210可以包括一个或多个处理单元,例如:处理器210可以包括应用处理器(Application Processor,AP)、调制解调处理器、图形处理器(Graphics ProcessingUnit,GPU)、图像信号处理器(Image Signal Processor,ISP)、控制器、视频编解码器、数字信号处理器(Digital Signal Processor,DSP)、基带处理器和/或神经网络处理器(Neural-Network Processing Unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。

NPU为神经网络(Neural-Network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现移动终端200的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。

处理器210中设置有存储器。存储器可以存储用于实现六个模块化功能的指令:检测指令、连接指令、信息管理指令、分析指令、数据传输指令和通知指令,并由处理器210来控制执行。

充电管理模块240用于从充电器接收充电输入。电源管理模块241用于连接电池242、充电管理模块240与处理器210。电源管理模块241接收电池242和/或充电管理模块240的输入,为处理器210、内部存储器221、显示屏290、摄像模组291和无线通信模块260等供电。

移动终端200的无线通信功能可以通过天线1、天线2、移动通信模块250、无线通信模块260、调制解调处理器以及基带处理器等实现。其中,天线1和天线2用于发射和接收电磁波信号;移动通信模块250可以提供应用在移动终端200上的包括2G/3G/4G/5G等无线通信的解决方案;调制解调处理器可以包括调制器和解调器;无线通信模块260可以提供应用在移动终端200上的包括无线局域网(Wireless Local Area Networks,WLAN)(如无线保真(Wireless Fidelity,Wi-Fi)网络)、蓝牙(Bluetooth,BT)等无线通信的解决方案。在一些实施例中,移动终端200的天线1和移动通信模块250耦合,天线2和无线通信模块260耦合,使得移动终端200可以通过无线通信技术与网络以及其他设备通信。

移动终端200通过GPU、显示屏290及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏290和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器210可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。

移动终端200可以通过ISP、摄像模组291、视频编解码器、GPU、显示屏290及应用处理器等实现拍摄功能。其中,ISP用于处理摄像模组291反馈的数据;摄像模组291用于捕获静态图像或视频;数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号;视频编解码器用于对数字视频压缩或解压缩,移动终端200还可以支持一种或多种视频编解码器。

外部存储器接口222可以用于连接外部存储卡,例如Micro SD卡,实现扩展移动终端200的存储能力。外部存储卡通过外部存储器接口222与处理器210通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。

内部存储器221可以用于存储计算机可执行程序代码,可执行程序代码包括指令。内部存储器221可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储移动终端200使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器221可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(Universal Flash Storage,UFS)等。处理器210通过运行存储在内部存储器221的指令和/或存储在设置于处理器中的存储器的指令,执行移动终端200的各种功能应用以及数据处理。

移动终端200可以通过音频模块270、扬声器271、受话器272、麦克风273、耳机接口274及应用处理器等实现音频功能。例如音乐播放、录音等。

深度传感器2801用于获取景物的深度信息。在一些实施例中,深度传感器可以设置于摄像模组291。

压力传感器2802用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器2802可以设置于显示屏290。压力传感器2802的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。

陀螺仪传感器2803可以用于确定移动终端200的运动姿态。在一些实施方式中,可以通过陀螺仪传感器2803确定移动终端200围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器2803可以用于拍摄防抖、导航、体感游戏场景等。

此外,还可以根据实际需要在传感器模块280中设置其他功能的传感器,例如气压传感器、磁传感器、加速度传感器、距离传感器、接近光传感器、指纹传感器、温度传感器、触摸传感器、环境光传感器、骨传导传感器等。

移动终端200中还可包括其它提供辅助功能的设备。例如,按键294包括开机键,音量键等,用户可以通过按键输入,产生与移动终端200的用户设置以及功能控制有关的键信号输入。再如,指示器292、马达293、SIM卡接口295等。

一般情况下,为了减少搜索地图点的耗时和减小加载地图所占内存,常用的方法是将点云地图切片加载,根据定位图片与建图集图片之间的2D-2D匹配,获取粗定位结果,大致确定定位区域,然后加载对应区域的切片地图,对粗定位结果进行进一步调优。另外,在激光点云数据中,为了减少存储内存,会将点云地图以八叉树的形式进行存储。为了更加精准的筛查图像二维点和三维地图点的2D-3D匹配对,一些方法中会在地图点中增加语义信息,利用像素点和地图点的语义一致性,以减少误匹配的可能,提高定位精度。

一种技术方案中,提出了地图切片加载方法,通过提取关键帧抽象信息,对关键帧进行分组,分别生成子地图文件,然后通过定位图片的当前位姿,预测出子地图序号,在定位过程中,加载对应的子地图,从而提高视觉地图的可扩展性和空间效率。但是,这种技术方案中,利用地图切片加载以减少地图点搜索带来的耗时问题,会额外引入切片地图需反复加载带来的耗时问题,且根据关键帧进行地图切片,会存在一定的索引错误,从而造成最终的定位结果完全错误的风险。

另一种技术方案中,提出了一种基于机器视觉的室内定位与地图构建装置,地图构建部分依据半稠密直接算法提取具有一定梯度的像素点进行局部地图重建,最后将地图保存为八叉树地图的形式。但是,这种技术方案中,在地图点上增加语义信息,依旧需要将定位图片上二维特征点与一定范围内的所有三维点进行匹配,对获得的匹配结果进行语义一致性筛查,能够解决部分误匹配问题,但无法解决匹配数据量过大带来的计算负担。

再一种技术方案中,提出了一种基于稠密语义三维地图与混合特征的视觉定位方法,基于匹配关系估计初始位姿,投影所有可见的带语义的三维点到定位图像上,并统计三维点和定位图像上的二维投影点的语义标签一致性的得分,筛除错误匹配,提高正确匹配比重,获得最终定位结果。但是,现有的八叉树地图,通常用于存储,而没有充分利用树结构的特征,实现定位过程中地图区域的快速搜索过程。

下面对本公开示例性实施方式的体素地图构建方法和体素地图构建装置进行具体说明。

图3示出了本示例性实施方式中一种体素地图构建方法的流程,包括以下步骤S310至步骤S340:

在步骤S310中,获取目标场景的建图图像。

在一示例性实施例中,目标场景是指需要构建三维点云地图的场景,例如,目标场景可以是室内环境对应的场景,也可以是室外环境对应的场景,本示例实施例对此不做特殊限定。

建图图像是指通过建图设备采集的包含目标场景对应的视觉信息的图像,例如,建图图像可以是由针孔相机建图设备拍摄的普通图像,也可以是由全景相机建图设备拍摄的全景图像,当然,还可以是其他包含目标场景对应的视觉信息的图像,本示例实施例对此不做特殊限定。

在步骤S320中,对所述建图图像进行地图重建得到所述目标场景的三维点云地图,所述三维点云地图包括三维点以及所述三维点的关联相机坐标。

在一示例性实施例中,关联相机坐标可以是指三维点云地图中的能观察到三维点的所有相机对应的坐标,例如,相机坐标1处能够观察到三维点A,相机坐标2处能够观察到三维点A,相机坐标3处能够观察到三维点A,则三维点A对应的关联相机坐标为相机坐标1、相机坐标2和相机坐标3,当然,此处仅是示意性举例说明,本示例实施例对此不做特殊限定。

在步骤S330中,基于所述三维点与所述关联相机坐标之间的关联关系,确定所述三维点云地图中各所述三维点的观测约束信息。

在一示例性实施例中,三维点对应的观测约束信息是指描述了可以观察到该三维点的区域范围的信息,例如,三维点对应的观测约束信息可以是最大可视距离,也可以是法线方向,还可以是最大可视角度,当然,还可以是其他能够描述了可以观察到该三维点的区域范围的信息,本示例实施例对此不做特殊限定。

在步骤S340中,将所述三维点云地图以及所述观测约束信息以体素关系树的形式进行存储,得到所述目标场景的体素网格地图。

在一示例性实施例中,体素关系树可以是指用于将三维点云地图中的三维点以体素的形式存储的数据存储结构,例如,体素关系树可以是八叉树(Octree)数据结构,八叉树是一种用于描述三维空间的树状数据结构,八叉树的每个节点表示一个正方体的体积元素,每个节点有八个子节点,将八个子节点所表示的体积元素加在一起就等于父节点的体积;也可以是四面体格网(TEN),当然,还可以是其他三维体元模型或者结构,本示例实施例对此不做特殊限定。

下面对步骤S310至步骤S340进行详细说明。

在一示例性实施例中,可以通过以下步骤对建图图像进行重建得到三维点云地图,参考图4所示,具体可以包括:

步骤S410,提取所述建图图像对应的特征点,并基于所述特征点匹配所述建图图像之间的特征点对;

步骤S420,根据所述特征点对进行地图重建,得到所述目标场景的三维点云地图,并记录所述三维点云地图中的各所述三维点的关联相机坐标。

其中,特征点对是指将两张目标图像中的提取的特征点进行匹配得到的同名点,即特征点对可以是指两张目标图像上特征描述子最相近的特征点作为一个匹配对,可以认为特征点对是三维空间中同一个物点在不同位置和角度上的投影。

提取建图图像对应的特征点是指通过特征提取算法对建图图像中的感兴趣点进行检测识别的处理过程,例如,特征提取算法可以包括尺度不变特征变换特征提取算法(Scale-invariant feature transform,SIFT),加速稳健特征提取算法(Speeded UpRobust Features,SURF),快速特征提取算法(Oriented Fast and Rotated Brief,ORB)以及学习型的SuperPoint特征,R2D2特征等,本示例实施例对此不做特殊限定。提取建图图像中特征点的主要目的是获取建图图像中的感兴趣点,如建图图像中的角点、边界等梯度变化较大的像素点,而学习型的特征点还可以包含像素点的高层语义信息等,每个特征点都会有相应的特征描述子对其进行描述,例如,特征描述子可以包括但不限于Brief特征描述子、HOG特征描述子、SIFT特征描述子等,本示例实施例不以此为限。

特征点匹配是指将两张建图图像上的特征描述子最相似的特征点作为一个匹配点对,可以认为匹配的特征点对是三维空间中同一个物点在不同位置和角度上的投影,称之为同名点。在匹配策略上,针对视频流图像,可以采用序列化匹配加回环检测的方式找到可能存在匹配关系的图像对,然后针对这些图像对,计算所有特征点描述子之间的距离,距离小于某一阈值时,则认为是一对特征点对。

举例而言,在匹配过程中,图像匹配对可以用表示,该图像匹配对上的特征点对可以用表示。当采集到的建图图像,进行特征点提取和匹配后,就会生成一个匹配关系图,该匹配关系图记录了图像匹配对信息及特征点对信息。

可以根据匹配关系,进行稀疏点云地图的构建,可以采用任意SFM框架进行地图重建,当然,也可以采用任意鲁棒稳定的三维重建方法或者SLAM方案,本示例实施例对此不做特殊限定。在重建过程中,需要根据2D-2D匹配关系,生成3D-2D映射关系,具体流程如下:1、确定初始图像对,即;2、对初始图像对上的所有匹配点进行三角化,生成的每一个三维点都会对应两个二维点,这两个二维点分别来自图像imgId_i和图像imgId_j,可以表示为3DId-;3、重建下一帧图像imgId_k,此时分为两种情况,imgId_k上的特征点与已参与重建的imgId_i和imgId_j存在匹配关系,且该匹配对已生成三维点,则重新进行三角化,且更新该三维点对应的图像序列为3DId-。如果该特征点未和生成的三维点存在匹配关系,则直接三角化出新的三维点,并记录下关联关系;4、循环执行步骤3,直至所有的建图图像参与重建完成,此时每个三维点都会记录下参与重建的图像id,3DId-;5、返回点云地图以及三维点与相机之间的关联关系。

在一示例性实施例中,可以根据以下步骤确定三维点云地图中所有三维点对应的观测约束信息,参考图5所示,具体可以包括:

步骤S510,根据所述三维点与所述关联相机坐标之间的距离确定所述三维点的最大可视距离;

步骤S520,根据所述三维点与所述关联相机坐标之间的射线方向确定所述三维点的法线方向;

步骤S530,根据所述射线方向与所述法线方向之间的夹角确定所述三维点的最大可视角度;

步骤S540,将所述最大可视距离、所述法线方向和所述最大可视角度作为所述三维点的观测约束信息。

其中,最大可视距离是指该三维点到所有关联相机坐标之间距离的最大值,法线方向是指该三维点到所有关联相机坐标的射线方向的平均值,最大可视角度是指该三维点到所有关联相机坐标的射线方向与法线方向的夹角最大值的两倍。

图6示意性示出本公开示例性实施例中一种观测约束信息的原理示意图。

参考图6所示,具体可以通过关系式(1)、(2)、(3)表示三维点的观测约束信息,即最大可视距离、法线方向和最大可视角度:

L=max||X-C

其中,L,

在一示例性实施例中,可以根据目标场景的范围大小以及预设的定位精度确定体素关系树对应的深度信息以及体素边长。通常,目标场景的范围越小,分辨率越大,即体素网格的边长越小,因融合损失的信息越少,对定位精度的提升帮助越大;目标场景的范围越大,分辨率越小,即体素网格的边长越大,能够有效提升大场景下的定位效率。

在一示例性实施例中,可以通过图7中的步骤实现将三维点云地图以及观测约束信息以体素关系树的形式进行存储,参考图7所示,具体可以包括:

步骤S710,基于所述深度信息以及所述体素边长确定所述八叉树的叶子节点和根节点;

步骤S720,将所述三维点云地图中的所述三维点以及所述观测约束信息更新并融合到所述叶子节点以及所述根节点中,得到所述目标场景的体素网格地图。

其中,体素关系树可以是八叉树,由于八叉树的结构相对来说是固定的,因此可以基于深度信息以及体素边长预先确定八叉树的数据存储结构,进而将数据按照确定八叉树的数据存储结构进行存储。

在确定了八叉树的结构即确定叶子节点和根节点之后,将三维点云地图中的所有三维点以及各三维点对应的观测约束信息按照确定的体素边长以体素的形式更新并融合到叶子节点以及所述根节点中,得到目标场景对应的体素网格地图。

具体的,可以通过图8中的步骤实现三维点的融合,参考图8所示,具体可以包括:

步骤S810,确定所述三维点之间的距离数据;

步骤S820,将所述三维点云地图中所述距离数据小于所述体素边长的目标三维点,以及所述目标三维点的观测约束信息进行融合,作为一个体素信息,并存储到所述体素网格地图中。

其中,距离数据是指三维点云地图中的三维点之间的空间距离,可以通过各三维点对应的空间坐标计算三维点之间的距离数据。目标三维点可以是指距离数据小于体素边长的三维点,例如,三维点A和三维点B之间的距离数据为5mm,小于体素边长7mm,则可以认为三维点A和三维点B可以作为一个体素进行展示,因此,将三维点A和三维点B对应的观测约束信息进行融合,并作为一个体素信息存储到体素网格地图中,以便于减少体素网格地图中信息占用,降低定位时的数据计算量,进一步提升定位效率。

在一示例性实施例中,可以根据三维点对应的关联相机坐标的数量确定三维点对应的置信度数据,将置信度数据存储到体素网格地图中。置信度数据是指衡量三维点在三维点云地图中权重的数据,如果三维点对应的关联相机坐标的数量越多,则可以认为该三维点对于三维点云地图或者体素网格地图来说越重要,因此,可以分别计算每个三维点的置信度数据也存储在体素网格地图中,通过置信度数据进一步保证定位的效率以及定位的精确度。

图9示意性示出本公开示例性实施例中一种八叉树结构的体素网格地图的原理示意图。

参考图9所示,图像901展示了观测约束区域,图像902展示了观测约束信息的物理含义,由图像901和图像902可见,一个三维点的可视范围可以是一个圆锥形区域,如果没有观测约束信息的加入,一个三维点的可视范围可以是一个球形区域,可见,观测约束信息的加入,能够有效减小无用匹配的计算量,节省计算资源,提升计算效率。

举例而言,带有观测约束信息的三维点云地图体素化的步骤如下:1、确定体素网格地图中各体素的最大分辨率(即体素的最小边长)和八叉树的深度信息;2、以最大分辨率的叶子节点为基准进行建树,距离数据小于体素边长的三维点进行坐标融合、平均描述子融合以及观测约束信息的融合,观测约束信息可以包括最大可视距离,法线方向和最大可视角度;3、从叶子节点不断向根节点进行体素信息的更新与融合;4、根据点云重建过程中,记录的三维点的关联相机的数量,确定三维点的置信度数据,获得每个体素网格被占据的概率,在定位时,概率较小的体素网格,所占权重较小,其中置信度数据和关联相机的数量成正比;5、生成带有观测约束信息、平均描述子信息的体素网格地图。

在一示例性实施例中,可以通过图10中的步骤基于以体素关系树形式存储的体素网格地图进行定位,参考图10所示,具体可以包括:

步骤S1010,获取在所述目标场景中采集的定位图像,并确定所述定位图像在所述体素网格地图中的初始位姿;

步骤S1020,根据所述初始位姿从所述体素网格地图中筛选得到所述定位图像的可视三维点;

步骤S1030,通过所述可视三维点确定所述定位图像在所述体素网格地图中的精确位姿,以根据所述精确位姿实现在所述目标场景中的定位。

其中,定位图像可以是指从目标场景中采集的用于定位的图像,例如,定位图像可以是通过针孔相机定位设备采集的包含目标场景视觉信息的普通图像,也可以是通过全景相机定位设备采集的包含目标场景视觉信息的全景图像,当然,还可以是其他从目标场景中采集的用于定位的图像,本示例实施例对此不做特殊限定。初始位姿是指通过定位图像与体素网格地图对应的建图图像集进行粗匹配得到的相机位姿。

可视三维点是指通过初始位姿从体素网格地图筛选得到的、可视区域包含定位图像的初始位姿的三维点。利用以八叉树结构存储的体素网格地图,可以快速搜索到定位图像附近的节点信息,并将附近节点下的所有叶子节点直接返回,无需全地图遍历,即可得到定位图像在体素网格地图中的可视区域。然后,再利用定位图像的视场角FOV,筛除视场角以外的三维点。最后,利用每个三维点的观测约束信息,排查三维点的可视区域是否包含定位图像的初始位姿,若包含,则保留三维点,若不包含,则说明该三维点无法被该定位图像观察到,则进行删除,最终得到可视三维点。这样参与到3D-2D匹配的三维点将大大减少,提升定位的效率以及定位的精确度。最后,利用可视三维点对应的平均描述子信息,进行定位图像和可视三维点之间的2D-3D匹配,最终可以通过PnP求解出定位图像的精确位姿,进而通过该精确位姿实现定位图像在目标场景中的定位。

具体的,可以通过图11中的步骤实现定位图像的初始位姿的确定,参考图11所示,具体可以包括:

步骤S1110,获取在所述目标场景中采集的定位图像,并根据所述定位图像从所述体素网格地图对应的建图图像中匹配目标建图图像;

步骤S1120,基于所述目标建图图像以及所述体素网格地图,确定所述定位图像在所述体素网格地图中的初始位姿。

其中,通过定位图像在体素网格地图对应的建图图像集中的检索,找到与定位图像相似的建图图像,可以理解成,定位图像的位置极大可能在与其相似的建图图像附近,然后进行图像特征点之间的2D-2D匹配,再通过建图图像集中建图图像与体素网格地图之间的2D-3D映射关系,进行PnP求解,可以得到定位图像在体素网格地图中对应的初始位姿。

进一步的,可以通过图12中的步骤实现可视三维点的筛选,参考图12所示,具体可以包括:

步骤S1210,根据所述初始位姿在所述体素网格地图中确定节点信息,并根据所述节点信息得到所述定位图像在所述体素网格地图中的可视区域,所述可视区域包括多个三维点;

步骤S1220,获取所述定位图像对应的视场角对所述可视区域中的多个三维点进行筛选得到可视三维点。

其中,可视区域是指体素网格地图中定位图像附近的节点信息对应的所有叶子节点构成的区域,可以理解为,在该定位图像对应的初始位姿观察到的体素网格地图中的区域。视场角是指定位图像对应的初始位姿处定位相机的视野范围。通过定位图像的视场角,筛除视场角以外的三维点,有效减少参与到3D-2D匹配的三维点的数量,提升定位的效率以及定位的精确度。

在一示例性实施例中,可以获取可视三维点对应的观测约束信息,并根据观测约束信息对可视三维点进行过滤。利用每个三维点的观测约束信息,排查三维点的可视区域是否包含定位图像的初始位姿,若包含,则保留三维点,若不包含,则说明该三维点无法被该定位图像观察到,则进行删除,最终得到可视三维点,有效减少参与定位计算的三维点,提升定位效率。

综上所述,本示例性实施方式中,对目标场景对应的建图图像进行地图重建得到目标场景对应的三维点云地图,基于三维点云地图中三维点与各关联相机坐标之间的关联关系,确定三维点云地图中所有三维点对应的观测约束信息,将三维点云地图以及观测约束信息以体素关系树的形式进行存储,得到目标场景对应的体素网格地图。一方面,通过将三维点云地图以及观测约束信息以体素关系树的形式进行存储,在实现导航定位时,能够根据以体素关系树存储体素网格地图快速匹配对应的三维点,有效提升定位的效率;另一方面,在将三维点云地图存储为体素关系树的同时,也将三维点对应的观测约束信息进行存储,在实现导航定位时,结合观测约束信息快速筛选三维点,进一步提升定位的效率,同时保证定位的准确度;再一方面,通过体素关系树的形式存储地图信息,节省存储空间,减少计算资源的消耗。

本示例实施例中的八叉树体素网格地图可快速搜索到定位图像的可视区域,然后利用定位相机的视场角和各三维点对应的观测约束信息,进一步对粗定位返回的三维点进行筛选,提高了定位的效率,使实时高精定位在手机或者AR眼镜上的应用更加成熟。同时,本示例实施例中的体素地图构建方法,以树的结构进行存储,可节省存储空间和计算资源。在AR导航与视觉定位中可被广泛应用。

树结构存储体素地图,可根据树的节点信息,快速搜索到定位图片附近的地图点信息,无需遍历整张地图,节省存储空间的同时,提高搜索效率。观测约束信息的加入,进一步排除无关的三维点,提高匹配正确率,且大大降低匹配计算量,实现快速高精定位。

需要注意的是,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。

进一步的,参考图13所示,本示例的实施方式中还提供一种体素地图构建装置1300,可以包括建图图像获取模块1310、点云地图重建模块1320、观测约束信息确定模块1330和体素网格地图构建模块1340。其中:

建图图像获取模块1310用于获取目标场景的建图图像;

点云地图重建模块1320用于对所述建图图像进行地图重建得到所述目标场景的三维点云地图,所述三维点云地图包括三维点以及所述三维点的关联相机坐标;

观测约束信息确定模块1330用于基于所述三维点与所述关联相机坐标之间的关联关系,确定所述三维点云地图中各所述三维点对应的观测约束信息;

体素网格地图构建模块1340用于将所述三维点云地图以及所述观测约束信息以体素关系树的形式进行存储,得到所述目标场景的体素网格地图。

在一示例性实施例中,点云地图重建模块1320可以用于:

提取所述建图图像对应的特征点,并基于所述特征点匹配所述建图图像之间的特征点对;

根据所述特征点对进行地图重建,得到所述目标场景的三维点云地图,并记录所述三维点云地图中的各所述三维点对应的关联相机坐标。

在一示例性实施例中,观测约束信息确定模块1330可以用于:

根据所述三维点与所述关联相机坐标之间的距离确定所述三维点的最大可视距离;

根据所述三维点与所述关联相机坐标之间的射线方向确定所述三维点的法线方向;

根据所述射线方向与所述法线方向之间的夹角确定所述三维点的最大可视角度;

将所述最大可视距离、所述法线方向和所述最大可视角度作为所述三维点的观测约束信息。

在一示例性实施例中,体素网格地图构建模块1340可以用于:

根据所述目标场景的范围大小以及预设的定位精度确定所述体素关系树的深度信息以及体素边长。

在一示例性实施例中,体素关系树可以包括八叉树;体素网格地图构建模块1340还包括:

节点信息确定单元,用于基于所述深度信息以及所述体素边长确定所述八叉树的叶子节点和根节点;

节点更新单元,用于将所述三维点云地图中的所述三维点以及所述观测约束信息更新并融合到所述叶子节点以及所述根节点中,得到所述目标场景的体素网格地图。

在一示例性实施例中,节点更新单元还可以用于:

确定所述三维点之间的距离数据;

将所述三维点云地图中所述距离数据小于所述体素边长的目标三维点,以及所述目标三维点的观测约束信息进行融合,作为一个体素信息,并存储到所述体素网格地图中。

在一示例性实施例中,体素地图构建装置1300还包括:

置信度数据计算单元,用于根据所述三维点对应的关联相机坐标的数量确定所述三维点对应的置信度数据;

置信度数据存储单元,用于将所述置信度数据存储到所述体素网格地图中。

在一示例性实施例中,体素地图构建装置1300还包括:

初始位姿确定单元,用于获取在所述目标场景中采集的定位图像,并确定所述定位图像在所述体素网格地图中的初始位姿;

可视三维点筛选单元,用于根据所述初始位姿从所述体素网格地图中筛选得到所述定位图像的可视三维点;

精确位姿确定单元,用于通过所述可视三维点确定所述定位图像在所述体素网格地图中的精确位姿,以根据所述精确位姿实现在所述目标场景中的定位。

在一示例性实施例中,初始位姿确定单元可以用于:

获取在所述目标场景中采集的定位图像,并根据所述定位图像从所述体素网格地图对应的建图图像中匹配目标建图图像;

基于所述目标建图图像以及所述体素网格地图,确定所述定位图像在所述体素网格地图中的初始位姿。

在一示例性实施例中,可视三维点筛选单元可以用于:

根据所述初始位姿在所述体素网格地图中确定节点信息,并根据所述节点信息得到所述定位图像在所述体素网格地图中的可视区域,所述可视区域包括多个三维点;

获取所述定位图像对应的视场角对所述可视区域中的多个三维点进行筛选得到可视三维点。

在一示例性实施例中,体素地图构建装置1300还包括:

可视三维点过滤单元,用于获取所述可视三维点对应的观测约束信息,并根据所述观测约束信息对所述可视三维点进行过滤。

上述装置中各模块的具体细节在方法部分实施方式中已经详细说明,未披露的细节内容可以参见方法部分的实施方式内容,因而不再赘述。

所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。

本公开的示例性实施方式还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤,例如可以执行图3至图8中任意一个或多个步骤。

需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。

此外,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限。

相关技术
  • 体素地图构建方法及装置、计算机可读介质和电子设备
  • 地图构建方法及装置、计算机可读存储介质和电子设备
技术分类

06120112879307