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

局部网格地图构建方法及装置、可读介质和电子设备

文献发布时间:2023-06-19 09:41:38


局部网格地图构建方法及装置、可读介质和电子设备

技术领域

本公开涉及增强现实技术领域,具体涉及一种局部网格地图构建方法、局部网格地图构建装置、计算机可读介质和电子设备。

背景技术

伴随着人们生活水平的不断提高,增强现实技术(Augmented Reality,AR)越来越受到人们的关注。增强现实是一种把虚拟世界和现实世界相融合的技术,该技术已广泛应用到教育、游戏、医疗、物联网、智能制造等多个领域。即时定位与地图构建技术(Simultaneous Localization And Mapping,SLAM)是实现增强现实的主要技术方案之一。

目前,相关的即时地图构建方案中,通过采集的图像帧生成稠密地图,但是这种技术方案随着场景变大使地图存储占用的空间显著变大,同时,稠密地图的生成效率较低,实时性较差。

发明内容

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

根据本公开的第一方面,提供一种局部网格地图构建方法,包括:

获取实时采集的当前特征图像;

基于结合至少两种位姿求解算法的匹配方式对所述当前特征图像进行位姿求解,得到所述当前特征图像对应的第一位姿数据;

根据所述第一位姿数据以及所述当前特征图像在预设滑窗内对应的目标关键帧的第二位姿数据进行体素重建,得到体素重建结果;

对所述体素重建结果进行面绘制处理,构建所述当前特征图像对应的实时局部网格地图。

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

当前特征图像采集模块,用于获取实时采集的当前特征图像;

第一位姿数据计算模块,用于基于结合至少两种位姿求解算法的匹配方式对所述当前特征图像进行位姿求解,得到所述当前特征图像对应的第一位姿数据;

体素重建模块,用于根据所述第一位姿数据以及所述当前特征图像在预设滑窗内对应的目标关键帧的第二位姿数据进行体素重建,得到体素重建结果;

局部网格地图构建模块,用于对所述体素重建结果进行面绘制处理,构建所述当前特征图像对应的实时局部网格地图。

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

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

处理器;以及

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

本公开的一种实施例所提供的局部网格地图构建方法,获取实时采集的当前特征图像;基于结合至少两种位姿求解算法的匹配方式对当前特征图像进行位姿求解,得到当前特征图像对应的第一位姿数据;根据第一位姿数据以及当前特征图像在预设滑窗内对应的目标关键帧的第二位姿数据进行体素重建,得到体素重建结果;对体素重建结果进行面绘制处理,构建当前特征图像对应的实时局部网格地图。一方面,基于结合至少两种位姿求解算法的匹配方式对当前特征图像进行位姿求解,以根据实时采集的当前特征图像的不同,灵活采用不同的位姿求解算法对当前特征图像进行位姿求解,在保证准确度的同时提升位姿求解的效率,提升位姿求解结果的鲁棒性;另一方面,根据预构建的预设滑窗内的实时采集的当前特征图像以及目标关键帧进行实时局部网格地图的重建,提高实时局部网格地图的重建效率,保证局部网格地图的实时性;再一方面,确定预设滑窗内的实时采集的当前特征图像以及目标关键帧的体素重建结果,并根据体素重建结果进行面绘制得到局部网格地图,进一步提升局部网格地图的重建效率,同时由于不需要构建全局的稠密地图,降低了内存占用,提升系统性能。

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

附图说明

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

图1示出了可以应用本公开实施例中局部网格地图构建方法的一种示例性系统架构示意图;

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

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

图4示意性示出本公开示例性实施例中一种基于结合至少两种位姿求解算法的匹配方式求解当前特征图像的位姿数据的流程图;

图5示意性示出本公开示例性实施例中一种对当前特征图像以及目标关键帧进行体素重建的流程图;

图6示意性示出本公开示例性实施例中一种对体素重建结果进行面绘制的流程图;

图7示意性示出本公开示例性实施例中一种目标体元的结构图;

图8示意性示出本公开示例性实施例中一种对当前特征图像进行闭环检测的流程图;

图9示意性示出本公开示例性实施例中局部网格地图构建装置的组成示意图。

具体实施方式

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

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

图1示出了可以应用本公开实施例的局部网格地图构建方法的AR导航方案的示例性系统架构的示意图。

如图1所示,实现本公开AR导航方案的系统架构可以包括局部网格地图构建设备11、重定位设备12和云端13。

针对本公开局部网格地图构建的示例性方案:

局部网格地图构建设备11可以通过其配置的RGB-D摄像头111获取到当前特征图像,并通过惯性测量单元112获取到惯性信息。将当前特征图像和惯性信息发送给即时定位与地图构建单元113,即时定位与地图构建单元113可以将当前特征图像和基于结合至少两种位姿求解算法的匹配方式计算得到的当前特征图像对应的位姿数据发送给云端13的局部网格地图构建模块132。云端13的局部网格地图构建模块132基于预设滑窗确定该当前特征图像对应的目标关键帧,并获取多个目标关键帧对应的位姿数据。局部网格地图构建模块132可以根据在同一预设滑窗内的当前特征图像对应的第一位姿数据,以及目标关键帧对应的第二位姿数据进行体素重建,得到体素重建结果。接下来,局部网格地图构建模块132可以对体素重建结果进行面绘制处理,得到预设滑窗内的当前特征图像与目标关键帧对应的实时局部网格地图。

为了更好地实现AR导航方案,本示例实施例还可以依据构建的局部网格地图实现重定位方案,针对本公开重定位的示例性方案:

重定位设备12可以通过其配置的RGB-D摄像头121获取到定位特征图像,并通过惯性测量单元122获取到对应的惯性信息,即时定位与地图构建单元123可以将定位特征图像和对应的位姿发送给云端13的重定位模块133。云端13的重定位模块133可以对定位特征图像进行特征提取,得到当前特征图像的特征点信息。重定位模块133可以从构建的实时局部网格地图对应的关键帧集合中检索出与定位特征图像相似的关键帧,并获取该关键帧的特征点信息。接下来,重定位模块133可以确定定位特征图像与关键帧之间的特征点信息匹配的特征匹配结果,并结合该特征匹配结果计算当前特征图像在局部网格地图构建设备11的建图坐标系下的位姿,鉴于可以获取到定位特征图像在重定位设备12的重定位坐标系下的位姿,因此,可以求解出重定位设备12与局部网格地图构建设备11之间的相对位姿关系,即完成重定位。

另外,局部网格地图构建设备11可以通过应用程序114配置锚点,并将锚点信息发送给云端13的锚点管理模块131。重定位设备12可以通过应用程序124将配置的锚点信息发送给云端13的锚点管理模块131。由此,基于重定位模块133确定出的相对位姿关系,即可以实现在局部网格地图构建设备11和重定位设备12上均同时呈现由局部网格地图构建设备11配置的虚拟对象和由重定位设备12配置的虚拟对象,进而实现AR导航方案。

在上面的示例性描述中,本公开的局部网格地图构建方案可以由云端13实现,也就是说,下面所述方法的各步骤可以由云端13执行,方法对应的装置可以配置在云端13中。由此,避免了终端设备执行处理过程计算能力受限制的问题。

容易理解的是,本公开的局部网格地图构建方案也可以由上述局部网格地图构建设备11实现,也就是说,下面所述的局部网格地图构建方法的各步骤也可以由局部网格地图构建设备11执行,对应的局部网格地图构建装置可以配置于局部网格地图构建设备11。在这种情况下,本公开示例性方案可以没有云端13的参与,直接由局部网格地图构建设备11实现,下面以终端设备执行该局部网格地图构建方法为例进行说明。

另外,需要注意的是,局部网格地图构建设备11与重定位设备12并非绝对的限制,在一些情况下,局部网格地图构建设备11需要进行重定位操作时可作为重定位设备,重定位设备12在进入新的场景进行局部网格地图构建时,可作为局部网格地图构建设备。

本公开对局部网格地图构建设备的类型不做限制,可以例如是手机、平板电脑、AR头盔、AR眼镜等。

图2示出了适于用来实现本公开示例性实施方式的电子设备的示意图。本公开所述的局部网格地图构建设备或者重定位设备可以配置为如图2所示的电子设备。需要说明的是,图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 IdentificationModule,SIM)卡接口295等。其中传感器模块280可以包括深度传感器2801、压力传感器2802、陀螺仪传感器2803、气压传感器2804、磁传感器2805、加速度传感器2806、距离传感器2807、接近光传感器2808、指纹传感器2809、温度传感器2810、触摸传感器2811、环境光传感器2812及骨传导传感器2813等。

可以理解的是,本申请实施例示意的结构并不构成对电子设备200的具体限定。在本申请另一些实施例中,电子设备200可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件、软件或软件和硬件的组合实现。

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

USB接口230是符合USB标准规范的接口,具体可以是MiniUSB接口,MicroUSB接口,USBTypeC接口等。USB接口230可以用于连接充电器为电子设备200充电,也可以用于电子设备200与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。

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

电子设备200的无线通信功能可以通过天线1、天线2、移动通信模块250、无线通信模块260、调制解调处理器以及基带处理器等实现。

移动通信模块250可以提供应用在电子设备200上的包括2G/3G/4G/5G等无线通信的解决方案。

无线通信模块260可以提供应用在电子设备200上的包括无线局域网(WirelessLocal Area Networks,WLAN)(如无线保真(Wireless Fidelity,Wi-Fi)网络)、蓝牙(Bluetooth,BT)、全球导航卫星系统(Global Navigation Satellite System,GNSS)、调频(Frequency Modulation,FM)、近距离无线通信技术(Near Field Communication,NFC)、红外技术(Infrared,IR)等无线通信的解决方案。

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

电子设备200可以通过ISP、摄像模组291、视频编解码器、GPU、显示屏290及应用处理器等实现拍摄功能。在一些实施例中,电子设备200可以包括1个或N个摄像模组291,N为大于1的正整数,若电子设备200包括N个摄像头,N个摄像头中有一个是主摄像头。

内部存储器221可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器221可以包括存储程序区和存储数据区。外部存储器接口222可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备200的存储能力。

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

音频模块270用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块270还可以用于对音频信号编码和解码。在一些实施例中,音频模块270可以设置于处理器210中,或将音频模块270的部分功能模块设置于处理器210中。

扬声器271,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备200可以通过扬声器271收听音乐,或收听免提通话。受话器272,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备200接听电话或语音信息时,可以通过将受话器272靠近人耳接听语音。麦克风273,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风273发声,将声音信号输入到麦克风273。电子设备200可以设置至少一个麦克风273。耳机接口274用于连接有线耳机。

针对电子设备200包括的传感器,深度传感器2801用于获取景物的深度信息。压力传感器2802用于感受压力信号,可以将压力信号转换成电信号。陀螺仪传感器2803可以用于确定电子设备200的运动姿态。气压传感器2804用于测量气压。磁传感器2805包括霍尔传感器。电子设备200可以利用磁传感器2805检测翻盖皮套的开合。加速度传感器2806可检测电子设备200在各个方向上(一般为三轴)加速度的大小。距离传感器2807用于测量距离。接近光传感器2808可以包括例如发光二极管(LED)和光检测器,例如光电二极管。指纹传感器2809用于采集指纹。温度传感器2810用于检测温度。触摸传感器2811可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏290提供与触摸操作相关的视觉输出。环境光传感器2812用于感知环境光亮度。骨传导传感器2813可以获取振动信号。

按键294包括开机键,音量键等。按键294可以是机械按键。也可以是触摸式按键。马达293可以产生振动提示。马达293可以用于来电振动提示,也可以用于触摸振动反馈。指示器292可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。SIM卡接口295用于连接SIM卡。电子设备200通过SIM卡和网络交互,实现通话以及数据通信等功能。

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

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

在步骤S310中,获取实时采集的当前特征图像。

在一示例性实施例中,当前特征图像可以是指通过图像采集单元实时采集的最新图像帧,当前特征图像可以是包含深度信息的色彩RGB图像,也可以是色彩RGB图像以及色彩RGB图像对应的深度图像,本示例实施例对此不做特殊限定,例如,当前特征图像可以是手持设备或智能穿戴设备上搭载的RGB-D相机(如Kinect相机、Xtion相机、RealSense相机等,本示例实施例不以此为限)拍摄的包含深度信息的色彩RGB图像,也可以是普通镜头与TOF(Time of flight)镜头的组合镜头拍摄的色彩RGB图像以及色彩RGB图像对应的深度图像,本示例实施例对此不做特殊限定。

在实时采集当前特征图像时,可以通过硬件与软件结合的方式控制RGB-D相机,保证色彩RGB图像以及对应的深度图像的时间同步。同时,在采集RGB图像和深度图像时,不能剧烈运动,否则会使图片产生运动模糊,影响位姿解算效果。采集图像的帧率也需要保持连续稳定,尽量避免丢帧现象的发生,例如,可以将图像采集的帧率稳定在25~30fps,以提高采集的当前特征图像的精度。

在步骤S320中,基于结合至少两种位姿求解算法的匹配方式对所述当前特征图像进行位姿求解,得到所述当前特征图像对应的第一位姿数据。

在一示例性实施例中,结合至少两种位姿求解算法的匹配方式可以是指采用多种位姿求解算法组合的形式计算位姿的匹配方式,例如,结合至少两种位姿求解算法的匹配方式可以是基于光度误差的直接匹配算法与特征点匹配算法的组合进行位姿求解的匹配方式,也可以是特征点匹配算法与激光匹配算法的组合进行位姿求解的匹配方式,当然,也可以是其他的位姿求解算法的组合,本示例实施例对此不做特殊限定。

在位姿解算方面一般有两大主流算法,一种是基于光度误差的直接匹配算法,一种是特征点匹配算法。直接匹配算法一般不提取图像特征点,不需要特征匹配,计算开销小,计算效率较高;但是,由于直接匹配算法基于灰度不变假设,受光照影响较大,且帧间相对运动较大时,直接匹配算法的匹配效果较差,位姿求解精度较低。而特征点匹配算法需要提取特征点信息进行特征匹配,计算开销较大,但特征点匹配算法在帧间运动较大时相比于直接匹配算法仍然可以鲁棒跟踪,且跟踪精度比直接匹配算法要高。结合至少两种位姿求解算法的匹配方式融合了直接匹配算法和特征点匹配算法,优先使用特征点匹配算法做跟踪,以得到更加精确的帧间运动;当在一些弱纹理的场景中特征点匹配算法无法工作时,使用直接匹配算法进行跟踪,求解位姿,有效提升位姿求解的鲁棒性,提升位姿求解效果。第一位姿数据可以是指当前特征图像对应的相机位姿,例如,第一位姿数据可以是当前特征图像对应的6DOF(6Degrees Of Freedom,6自由度)位姿,也可以是3DOF位姿,当然,也可以是其他多自由度位姿,本示例实施例对此不做特殊限定。

在步骤S330中,根据所述第一位姿数据以及所述当前特征图像在预设滑窗内对应的目标关键帧的第二位姿数据进行体素重建,得到体素重建结果。

在一示例性实施例中,预设滑窗可以是指预先构建的固定长度的滑窗,预设滑窗内容纳固定数量的关键帧,预设滑窗内像队列一样不断地添加新关键帧并移除旧关键帧,预设滑窗中记录了当前特征图像以及在前时刻的关键帧的关键位姿及地图点云数据。

第二位姿数据可以是指目标关键帧对应的对应的相机位姿,例如,第二位姿数据可以是目标关键帧对应的6DOF位姿,第二位姿数据可以直接从预设滑窗中记录的目标关键帧获取。

体素重建结果可以是指对当前特征图像以及同一预设滑窗内的目标关键帧进行体素重建得到的结果,例如,可以基于同一预设滑窗内的当前特征图像和目标关键帧对应的RGB-D图像、第一位姿数据、第二位姿数据,使用TSDF(Truncated Signed DistanceFunction)算法,计算得到体素重建结果。TSDF是经典的基于体素的重建算法,把三维空间切割成一系列体素,然后计算每个关键帧对应的体素的tsdf值,用tsdf值来表示该体素处于表面外侧还是表面内侧,表面外侧的值为[0,1]之间,表面内侧的值为[-1,0]之间。计算得到的每个体素的tsdf值用于后续的局部网格地图重建。

在步骤S340中,对所述体素重建结果进行面绘制处理,构建所述当前特征图像对应的实时局部网格地图。

在一示例性实施例中,面绘制处理可以是指根据体素重建结果绘制地图网格的处理过程,例如可以通过移动立方体算法(Marching Cube)对体素重建结果进行三角面抽取,得到网格地图实现对体素重建结果的面绘制处理。

下面对步骤S310至S340进行进一步的解释说明。

在一示例性实施例中,可以通过图4中的步骤基于结合至少两种位姿求解算法的匹配方式对当前特征图像进行位姿求解得到第一位姿数据:

参考图4所示,步骤S410,提取所述当前特征图像对应的特征点信息。

其中,特征点信息可以是指当前特征图像对应的特征点。在提取特征点信息时,可以从云端调取特征提取算法及特征描述子,其中,特征提取算法可以包括但不限于FAST特征点检测算法、DOG特征点检测算法、Harris特征点检测算法、SIFT特征点检测算法、SURF特征点检测算法等。特征描述子可以包括但不限于BRIEF特征点描述子、BRISK特征点描述子、FREAK特征点描述子等。

具体的,可以将特征提取算法与特征描述子进行组合,以确定出特征提取模式,例如,特征提取模式可以为FAST特征点检测算法和BRIEF特征点描述子,也可以为DOG特征点检测算法和FREAK特征点描述子。随后,可以基于该特征提取模式对当前特征图像进行特征提取,以得到特征点信息。

另外,还可以利用多组不同的特征提取模式对当前特征图像进行特征提取,以得到不同类型的特征点信息,这些不同类型的特征点信息均可以作为确定出的当前特征图像的特征点信息。

根据本公开的另一些实施例,还可以利用机器学习模型来提取当前特征图像的特征点信息,其中,该机器学习模型可以例如是训练后的卷积神经网络。具体的,可以将当前特征图像输入卷积神经网络,卷积神经网络的输出或处理构成中产生的特征图即可对应特征点信息。

步骤S420,获取所述当前特征图像对应的参考关键帧,并基于所述特征点信息确定所述当前特征图像与所述参考关键帧的三维匹配点对。

其中,参考关键帧可以是指当前特征图像对应的上一帧关键帧,可以基于当前特征图像以及参考关键帧的特征点信息,对当前特征图像和参考关键帧进行特征匹配,得到2D-2D匹配点对,然后获取参考关键帧对应的深度图像,进而结合参考关键帧对应的深度图像以及2D-2D匹配点对得到当前特征图像和参考关键帧对应的3D-2D匹配点对。

步骤S430,如果确定所述三维匹配点对的数量小于预设阈值,则通过基于光度误差的直接匹配算法计算所述当前特征图像对应的第一位姿数据。

其中,预设阈值可以是指用于判断当前特征图像中的纹理强弱的数值,例如预设阈值可以是3,即当前特征图像和参考关键帧的3D-2D匹配点对的数量小于3,此时认为当前特征图像与参考关键帧之间的变化较大,且当前特征图像中的特征点较少,即纹理较弱,特征点匹配算法无法正常工作,此时可以通过基于光度误差的直接匹配算法计算当前特征图像对应的第一位姿数据,以提高位姿求解的精确度。

优选的,如果确定三维匹配点对的数量小于预设阈值,则可以认为当前特征图像与参考关键帧之间发生了较大的变化,因此可以将三维匹配点对的数量小于预设阈值的当前特征图像作为目标关键帧,该目标关键帧可以是与其他确定的关键帧作为构建实时局部网格地图的关键帧,目标关键帧可以包括第二位姿数据以及地图点云数据,并将目标关键帧按时间顺序保存到关键帧数据库中,以便于后续进行实时局部网格地图的构建。

步骤S440,如果确定所述三维匹配点对的数量大于预设阈值,则通过特征点匹配算法计算所述当前特征图像对应的第一位姿数据。

其中,预设阈值可以是指用于判断当前特征图像中的纹理强弱的数值,例如预设阈值可以是3,即当前特征图像和参考关键帧的3D-2D匹配点对的数量大于3,此时认为当前特征图像与参考关键帧之间的特征点较多,即纹理较强,此时可以通过特征点匹配算法计算当前特征图像对应的第一位姿数据,相比于直接匹配算法,能够提高位姿求解的精确度,得到更加精确的帧间运动。

在一示例性实施例中,可以通过基于光度误差的直接匹配算法计算所述当前特征图像对应的第一位姿数据,具体可以根据当前特征图像确定像素点坐标,以及像素点坐标对应的像素灰度信息;然后基于像素点坐标以及像素灰度信息对当前特征图像以及参考关键帧进行图像配准以最小化光度误差,估计计算当前特征图像对应的第一位姿数据。

其中,像素点坐标可以是指当前特征图像中的每一个像素点在三维空间中的坐标,像素灰度信息可以是指每个像素点对应的RGB信息的索引值。可以通过当前特征图像和参考关键帧对应的像素点坐标和像素灰度信息进行图像配准,得到一个变形数据(Warp),该变形数据就可以表示当前特征图像对应的第一位姿数据。

在一示例性实施例中,可以通过特征点匹配算法计算所述当前特征图像对应的第一位姿数据,具体可以计算特征点信息对应的特征描述符;基于特征描述符对当前特征图像以及参考关键帧进行特征点匹配以最小化重投影误差,估计计算当前特征图像对应的第一位姿数据。

其中,特征描述符可以是指对提取的特征点信息进行描述的数据,是一种二进制编码描述子,例如,特征点信息对应的特征描述符可以是BRIEF特征描述符,也可以是BRISK特征描述符,还可以是FREAK特征描述符,本示例实施例对此不做特殊限定。具体可以对当前特征图像和参考关键帧对应的特征描述符进行PnP求解,计算得到当前特征图像对应的第一位姿数据。

在一示例性实施例中,在根据第一位姿数据以及当前特征图像在预设滑窗内对应的目标关键帧的第二位姿数据进行体素重建,得到体素重建结果之前,可以先对位姿数据进行非线性优化,以提高位姿的精度,进而保证构建的实时局部网格地图的准确性。

具体可以先构建固定长度的预设滑窗,以及构建非线性优化残差项,其中,非线性优化残差项是观测约束关系的量化表示,进而可以基于非线性优化残差项,对预设滑窗内的当前特征图像和目标关键帧进行优化,通过最小化共视三维坐标点在当前特征图像和目标关键帧中的重投影误差以得到优化后的第一位姿数据、第二位姿数据以及地图点云数据。

在一示例性实施例中,可以根据图5中的步骤实现对当前特征图像以及目标关键帧的体素重建,参考图5所示,具体可以包括:

步骤S510,构建优化后的所述地图点云数据对应的最小包围盒,以根据所述最小包围盒构建体素;

步骤S520,根据优化后的所述第一位姿数据确定所述当前特征图像对应的体素的第一带符号距离数据,以及根据优化后的所述第二位姿数据确定所述目标关键帧对应的体素的第二带符号距离数据;

步骤S530,通过所述第一带符号距离数据以及所述第二带符号距离数据对所述当前特征图像与所述目标关键帧的体素进行融合,得到体素重建结果。

其中,最小包围盒(Bounding Box)可以是指用体积稍大且特性简单的几何体(称为包围盒)来近似地代替复杂的几何对象的虚拟长方体。体素可以是指描述三维空间的最小单位,相对于二维空间的像素而言,体素的大小取决于最小包围盒的大小以及预设划分体素的数目,例如,体素的大小可以是0.05m*0.05m*0.05m的立方体,本示例实施例对此不做特殊限定。

第一带符号距离数据可以是指当前特征图像对应的体素的TSDF值,具体可以根据当前特征图像对应的第一位姿数据将世界坐标系下的像素点转化到当前特征图像对应的相机坐标系下,进而根据相机坐标系下像素点到原点的距离与像素点对应的深度值的差值,该像素点对应的权重值,以及引入的截断距离,计算得到当前特征图像对应的体素的TSDF值。

第二带符号距离数据可以是指目标关键帧对应的体素的TSDF值,具体可以根据目标关键帧对应的第二位姿数据将世界坐标系下的像素点转化到目标关键帧对应的相机坐标系下,进而根据相机坐标系下像素点到原点的距离与像素点对应的深度值的差值,该像素点对应的权重值,以及引入的截断距离,计算得到目标关键帧对应的体素的TSDF值。

需要说明的是,本公开中的“第一”、“第二”仅用于区分不同图像帧对应的位姿数据、带符号距离数据等,并没有特殊的含义,并不应对本示例实施例特殊限定。

在一示例性实施例中,可以通过图6中的步骤实现对体素重建结果的面绘制处理,参考图6所示,具体可以包括:

步骤S610,通过所述体素重建结果中的体素构建目标体元;

步骤S620,获取体元分界面构型,并根据所述目标体元在所述体元分界面构型中进行匹配;

步骤S630,根据匹配到的体元分界面构型对所述体素重建结果进行面绘制处理,构建所述预设滑窗内的所述当前特征图像与所述目标关键帧对应的实时局部网格地图。

其中,目标体元可以是指体素重建结果中由相邻的八个体素点组成的正方体方格,遍历所有体元,判断每个体元中的八个体素对应的TSDF值的正负性,进而可以将目标体元划分为虚体元、边界体元和实体元,其中,虚体元可以表示该体元对应的8个体素的TSDF值均为负,相反实体元可以表示该体元对应的8个体素的TSDF值均为正,边界体元处于二者之间,目标体元的构建用于对物体表边进行三角面片拟合。

图7示意性示出本公开示例性实施例中一种目标体元的结构图。

参考图7所示,对体素重建结果中的体素可以构建目标体元,得到的目标体元大致可以分为虚体元701、边界体元702以及实体元703。其中,构成虚体元701的体素1、体素2、体素3、体素4、体素5、体素6、体素7、体素8的TSDF值均为负值,构成边界体元702的体素1、体素3、体素4、体素8的TSDF值为负值,体素2、体素5、体素6、体素7的TSDF值为正值,构成实体元703的体素1、体素2、体素3、体素4、体素5、体素6、体素7、体素8的TSDF值均为正值。当然,此处的边界体元702只是一种示意性举例,边界体元还可以是一个、两个或者三个体素为正值或者负值的体元,本示例实施例对此不做特殊限定。

体元分界面构型可以是指预先根据不同类型的体元构建的分界面构型,体元分界面构型主要有15种分界面构型,通过15种体元分界面构型的旋转变换能够得到总共256种体元分界面构型,进而通过得到的目标体元在256种体元分界面构型匹配对应的分界面构型以得到每个目标体元对应的分界面,进而通过匹配到的体元分界面构型对应的分界面对体素重建结果进行拟合,构建预设滑窗内的当前特征图像与目标关键帧对应的实时局部网格地图。

通过构建目标体元,并根据构建的目标体元从预先设置的体元分界面构型中进行匹配,进而根据匹配到的体元分界面构型对应的分界面进行拟合得到实时局部网格地图,能够有效提升实时局部网格地图的构建效率,同时通过匹配体元分界面构型就可以快速拟合分界面,降低计算压力,提升系统性能。

在一示例性实施例中,还可以对关键帧数据库中的目标关键帧进行闭环检测,以根据闭环检测结果对预设滑窗内的当前特征图像和目标关键帧进行闭环优化,得到闭环优化后的第一位姿数据、第二位姿数据以及地图点云数据。

其中,可以在关键帧数据库中检索当前特征图像,判断是否有相似度较高的目标关键帧出现,进行判断是否产生闭环。闭环检测用于检测系统是否到达过当前位置,本示例实施例通过词袋模型在关键帧数据库中对当前特征图像进行检索,如果当前特征图像与关键帧数据库中的目标关键帧存在高度相似,那么可以认为到达了之前出现过的场景,即系统产生了闭环,因此会构成新的闭环观测约束,以在闭环的基础上对当前特征图像和目标关键帧进行误差优化。

具体的,可以通过图8中的步骤对当前特征图像和关键帧数据库中的目标关键帧进行闭环检测:

参考图8所示,步骤S810,确定所述当前特征图像的语义信息;

步骤S820,基于词袋模型,通过所述语义信息在所述关键帧数据库进行匹配以判断是否产生闭环;

步骤S830,如果确定产生闭环,对所述当前特征图像以及所述关键帧数据库中的所述目标关键帧进行闭环优化以减小闭环累计误差;

步骤S840,如果确定未产生闭环,则不进行闭环优化。

其中,语义信息可以是描述当前特征图像中主要特征的数据,例如,检测到当前特征图像中的主要特征表现为一个桌子,则可以认为当前特征图像对应的语义信息表示为“桌子”,当然,当前特征图像对应的语义信息还可以表示为“zhuozi”或者“desk”,本示例实施例对此不做特殊限定。在确定了当前特征图像以及目标关键帧的语义信息之后,可以直接根据词袋模型进行语义信息匹配,在关键帧数据库中匹配到与当前特征图像的语义信息具有高相似度的目标关键帧时,可以认为当前特征图像对应的场景与目标关键帧的场景重合,产生了闭环。

在闭环的基础上对当前特征图像以及关键帧数据库中的所有目标关键帧的6DOF位姿和地图点云信息进行优化,减小闭环累积误差,使得局部网格地图构建结果更加精确。受限于传感器精度SLAM系统不可避免地会产生漂移,当系统检测到闭环后,可以利用闭环观测对关键帧数据库中的6DOF位姿及地图点云信息进行联合优化,提升系统整体精度。

在一示例性实施例中,可以获取定位特征图像,并确定定位特征图像对应的定位语义信息,根据定位语义信息在构成实时局部网格地图的关键帧集合中匹配与定位特征图像相似的关键帧,然后可以通过关键帧计算定位特征图像在建图坐标系下的位姿;利用定位特征图像在重定位坐标系下的位姿以及在建图坐标系下的位姿,确定相对位姿数据,进而可以根据相对位姿数据进行重定位,确定采集定位特征图像的重定位设备的位置坐标。

综上所述,本示例性实施方式中,一方面,基于结合至少两种位姿求解算法的匹配方式对当前特征图像进行位姿求解,以根据实时采集的当前特征图像的不同,灵活采用不同的位姿求解算法对当前特征图像进行位姿求解,在保证准确度的同时提升位姿求解的效率,提升位姿求解的鲁棒性;另一方面,根据预构建的预设滑窗内的实时采集的当前特征图像以及目标关键帧进行实时局部网格地图的重建,提高实时局部网格地图的重建效率,保证局部网格地图的实时性;再一方面,确定预设滑窗内的实时采集的当前特征图像以及目标关键帧的体素重建结果,并根据体素重建结果进行面绘制得到局部网格地图,进一步提升局部网格地图的重建效率,同时由于不需要构建全局的稠密地图,降低了内存占用,提升系统性能。

本公开给出了一种完备的生成局部网格的RGBD-SLAM方法,可以得到全局一致的6DOF位姿及地图点云信息,并且可以实时生成动态局部网格地图,对环境中的三维结构进行描述。本公开作为一种SLAM方法,是支撑AR导航的基础功能,实时生成局部网格地图描述了空间平面信息,可用于平面检测、遮挡与碰撞等上层的AR功能。

优选的,本公开提供的局部网格地图构建方法,能够实时动态生成的局部网格地图,进而还可以对实时生成的局部网格地图进行进一步面片渲染,通过色彩RGB图像将局部网格地图中的物体表面的颜色信息补全,使得局部三维网格地图更加直观形象,提升用户使用体验;也可以在面片渲染的基础上进一步增加碰撞逻辑及遮挡效果渲染,从而为AR导航这项高级应用做更充实的技术支撑。

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

进一步的,参考图9所示,本示例的实施方式中还提供一种局部网格地图构建装置900,包括当前特征图像采集模块910、第一位姿数据计算模块920、体素重建模块930以及局部网格地图构建模块940。其中:

当前特征图像采集模块910用于获取实时采集的当前特征图像;

第一位姿数据计算模块920用于基于结合至少两种位姿求解算法的匹配方式对所述当前特征图像进行位姿求解,得到所述当前特征图像对应的第一位姿数据;

体素重建模块930用于根据所述第一位姿数据以及所述当前特征图像在预设滑窗内对应的目标关键帧的第二位姿数据进行体素重建,得到体素重建结果;

局部网格地图构建模块940用于对所述体素重建结果进行面绘制处理,构建所述当前特征图像对应的实时局部网格地图。

在一示例性实施例中,第一位姿数据计算模块920还包括:

特征点信息提取单元,用于提取所述当前特征图像对应的特征点信息;

三维匹配点对确定单元,用于获取所述当前特征图像对应的参考关键帧,并基于所述特征点信息确定所述当前特征图像与所述参考关键帧的三维匹配点对;

直接匹配算法求解位姿单元,用于如果确定所述三维匹配点对的数量小于预设阈值,则通过基于光度误差的直接匹配算法计算所述当前特征图像对应的第一位姿数据;

特征点匹配算法求解位姿单元,用于如果确定所述三维匹配点对的数量大于预设阈值,则通过特征点匹配算法计算所述当前特征图像对应的第一位姿数据。

在一示例性实施例中,直接匹配算法求解位姿单元还可以用于:

根据所述当前特征图像确定像素点坐标,以及所述像素点坐标对应的像素灰度信息;

基于所述像素点坐标以及所述像素灰度信息对所述当前特征图像以及所述参考关键帧进行图像配准以最小化光度误差,估计计算所述当前特征图像对应的第一位姿数据。

在一示例性实施例中,特征点匹配算法求解位姿单元还可以用于:

计算所述特征点信息对应的特征描述符;

基于所述特征描述符对所述当前特征图像以及所述参考关键帧进行特征点匹配以最小化重投影误差,估计计算所述当前特征图像对应的第一位姿数据。

在一示例性实施例中,直接匹配算法求解位姿单元还包括:

目标关键帧存储子单元,用于将所述三维匹配点对的数量小于预设阈值的当前特征图像作为目标关键帧,所述目标关键帧包括第二位姿数据以及地图点云数据,并将所述目标关键帧按时间顺序保存到关键帧数据库中。

在一示例性实施例中,局部网格地图构建装置900还包括非线性优化单元,非线性优化单元可以用于:

构建固定长度的预设滑窗,以及构建非线性优化残差项;

基于所述非线性优化残差项,对所述预设滑窗内的所述当前特征图像和所述目标关键帧进行优化,以得到优化后的所述第一位姿数据、所述第二位姿数据以及所述地图点云数据。

在一示例性实施例中,体素重建模块930还可以用于:

构建优化后的所述地图点云数据对应的最小包围盒,以根据所述最小包围盒构建体素;

根据优化后的所述第一位姿数据确定所述当前特征图像对应的体素的第一带符号距离数据,以及根据优化后的所述第二位姿数据确定所述目标关键帧对应的体素的第二带符号距离数据;

通过所述第一带符号距离数据以及所述第二带符号距离数据对所述当前特征图像与所述目标关键帧的体素进行融合,得到体素重建结果。

在一示例性实施例中,局部网格地图构建模块940还可以用于:

通过所述体素重建结果中的体素构建目标体元;

获取体元分界面构型,并根据所述目标体元在所述体元分界面构型中进行匹配;

根据匹配到的体元分界面构型对所述体素重建结果进行面绘制处理,构建所述预设滑窗内的所述当前特征图像与所述目标关键帧对应的实时局部网格地图。

在一示例性实施例中,局部网格地图构建装置900还包括闭环优化单元,闭环优化单元可以用于:

对所述关键帧数据库中的目标关键帧进行闭环检测,以根据闭环检测结果对所述预设滑窗内的所述当前特征图像和所述目标关键帧进行闭环优化,得到闭环优化后的所述第一位姿数据、所述第二位姿数据以及所述地图点云数据。

在一示例性实施例中,闭环优化单元还包括闭环检测子单元,闭环检测子单元可以用于:

确定所述当前特征图像的语义信息;

基于词袋模型,通过所述语义信息在所述关键帧数据库进行匹配以判断是否产生闭环;

如果确定产生闭环,对所述当前特征图像以及所述关键帧数据库中的所述目标关键帧进行闭环优化以减小闭环累计误差;

如果确定未产生闭环,则不进行闭环优化。

在一示例性实施例中,局部网格地图构建装置900还包括重定位模块,重定位模块可以用于:

获取定位特征图像,并确定所述定位特征图像对应的定位语义信息;

根据所述定位语义信息在构成所述实时局部网格地图的关键帧集合中匹配与所述定位特征图像相似的关键帧;

通过所述关键帧计算所述定位特征图像在建图坐标系下的位姿;

利用所述定位特征图像在重定位坐标系下的位姿以及在所述建图坐标系下的位姿,确定相对位姿数据,以根据所述相对位姿数据进行重定位。

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

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

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

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

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

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

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

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

相关技术
  • 局部网格地图构建方法及装置、可读介质和电子设备
  • 版本构建方法、版本构建装置、电子设备及可读存储介质
技术分类

06120112262017