视觉惯性里程计的状态确定方法、装置和电子设备与流程

文档序号:16640995发布日期:2019-01-16 07:33阅读:127来源:国知局
视觉惯性里程计的状态确定方法、装置和电子设备与流程

本发明涉及增强现实的技术领域,尤其是涉及一种视觉惯性里程计的状态确定方法、装置和电子设备。



背景技术:

ar(augmentedreality)增强现实技术是通过带有视觉传感器的设备实现在物理真实场景中添加并显示虚拟信息,实现现实和虚拟场景的交互。同步定位与地图构建(slam或simultaneouslocalizationandmapping)是增强现实中的一个重要技术,该技术能在真实场景中构建三维地图,并对传感设备进行即时定位。

目前比较成熟的框架有谷歌的arcoer和苹果的arkit。arcore和arkit都有三个主要组成部分:运动跟踪、环境理解和光源估计,其中运动跟踪和环境理解主要依赖slam技术。然而,现有的slam技术在增强现实中的应用仍然有一定的缺陷,主要表现在无法精确鲁棒的估计场景的三维信息,导致虚拟物体的位姿一直在波动。由于传感噪声和测量噪声的影响,利用slam技术对传感设备进行运动跟踪时,会产生一定的估计误差,这个误差会随着时间的改变而有所不同,最终会让用户感觉到虚拟物体在真实场景中浮动。

综上,现有的运动跟踪准确性差,使得最终构建的三维场景精度差。



技术实现要素:

有鉴于此,本发明的目的在于提供一种视觉惯性里程计的状态确定方法、装置和电子设备,以缓解现有的运动跟踪准确性差的技术问题。

第一方面,本发明实施例提供了一种视觉惯性里程计的状态确定方法,包括:获取视觉惯性里程计拍摄的目标图像帧,并确定所述目标图像帧和目标关键帧之间的公共特征点,所述目标关键帧为所述视觉惯性里程计所拍摄到的多个图像帧中位于所述目标图像帧之前的关键帧,且所述目标关键帧在多个图像帧所包含的关键帧中与所述目标图像帧之间的间隔最小;计算各个公共特征点的三焦张量测量误差;利用所述各个公共特征点的三焦张量测量误差确定所述视觉惯性里程计的误差状态量;基于所述误差状态量和所述视觉惯性里程计的当前系统状态量预测值确定所述视觉惯性里程计的当前系统状态量。

进一步地,利用所述各个公共特征点的三焦张量测量误差确定所述视觉惯性里程计的误差状态量包括:利用所述三焦张量测量误差计算所有公共特征点的三焦张量测量误差均值;利用所述三焦张量测量误差均值和所述三焦张量测量误差计算所述所有公共特征点的测量协方差;计算所述视觉惯性里程计的系统测量量和系统状态量之间的协方差,得到目标协方差;基于所述三焦张量测量误差、所述三焦张量测量误差均值、所述测量协方差和所述目标协方差,计算所述误差状态量。

进一步地,确定所述目标图像帧和目标关键帧之间的公共特征点包括:对所述目标图像帧进行特征点检测,得到所述目标图像帧的特征点;获取所述目标关键帧,并确定所述目标关键帧的特征点;将所述目标关键帧的特征点与所述目标图像帧的特征点进行匹配,得到所述公共特征点。

进一步地,所述目标关键帧包括第一目标关键帧和第二目标关键帧,所述第一目标关键帧为所述第二目标关键帧之前的关键帧,且所述第一目标关键帧为与所述第二目标关键帧帧次距离最近的关键帧;确定所述目标关键帧的特征点包括:确定所述第一目标关键帧的特征点和所述第二目标关键帧的特征点;将所述目标关键帧的特征点与所述目标图像帧的特征点进行匹配,得到所述公共特征点包括:将所述第一目标关键帧的特征点,所述第二目标关键帧的特征点和所述目标图像帧的特征点进行匹配,得到所述公共特征点。

进一步地,将所述第一目标关键帧的特征点,所述第二目标关键帧的特征点和所述目标图像帧的特征点进行匹配,得到所述公共特征点包括:将所述第一目标关键帧的特征点与所述第二目标关键帧的特征点进行匹配,得到第一匹配特征点;将所述第二目标关键帧的特征点与所述目标图像帧的特征点进行匹配,得到第二匹配特征点;将所述第一匹配特征点和所述第二匹配特征点之间相同的特征点作为原始公共特征点;利用单点随机抽样一致算法计算所述视觉惯性里程计的临时系统状态量,并根据所述临时系统状态量去除所述原始公共特征点中的外点,得到所述公共特征点。

进一步地,所述方法还包括:将所述目标图像帧的特征点与所述第二目标关键帧的特征点进行匹配,得到相匹配的特征点数;将所述目标图像帧所对应的相机位姿与所述第二目标关键帧所对应的相机位姿进行对比,得到对比结果;若所述相匹配的特征点数超过预设阈值,或者,所述对比结果为所述相机位姿的距离大于预设距离,则将所述目标关键帧中的第二目标关键帧作为当前关键帧中的第一目标关键帧,且将所述目标图像帧作为所述当前关键帧中的第二目标关键帧。

进一步地,计算各个公共特征点的三焦张量测量误差包括:获取所述视觉惯性里程计在上一时刻计算出的状态协方差参数和所述视觉惯性里程计的当前系统状态量预测值;采用sigmapoint算法分解所述上一时刻计算出的状态协方差参数,得到状态协方差参数的分解值;基于所述状态协方差参数的分解值和所述当前系统状态量预测值,计算所述各个公共特征点的三焦张量测量误差。

进一步地,基于所述三焦张量测量误差、所述三焦张量测量误差均值、所述测量协方差和所述目标协方差,计算所述误差状态量包括:基于所述测量协方差和所述目标协方差,计算卡尔曼滤波器的卡尔曼增益;基于所述卡尔曼增益、所述三焦张量测量误差和所述三焦张量测量误差均值,计算所述误差状态量。

进一步地,在获取视觉惯性里程计拍摄的目标图像帧之前,所述方法还包括:获取所述视觉惯性里程计中惯性测量单元imu采集的imu数据;基于所述imu数据和上一时刻计算出的所述视觉惯性里程计的系统状态量,确定所述imu数据的修正值;结合运动方程和四阶龙格库塔法对所述imu数据的修正值进行计算,得到所述当前系统状态量预测值。

进一步地,在基于所述误差状态量和所述视觉惯性里程计的当前系统状态量预测值确定所述视觉惯性里程计的当前系统状态量之后,所述方法还包括:基于所述当前系统状态量和所述公共特征点,对所述公共特征点进行三角化,得到三维地图;采用三点随机抽样一致算法检测所述三维地图中的平面;确定所述平面的法线方向,并在所述法线方向中确定目标方向,其中,所述目标方向包括以下任一种:竖直方向,水平方向;将所述目标方向所对应的平面作为目标平面;在获取到用户的交互信息之后,基于所述交互信息将虚拟物体设置于所述目标平面中。

第二方面,本发明实施例还提供了一种视觉惯性里程计的状态确定装置,包括:第一确定单元,用于获取视觉惯性里程计拍摄的目标图像帧,并确定所述目标图像帧和目标关键帧之间的公共特征点,所述目标关键帧为所述视觉惯性里程计所拍摄到的多个图像帧中位于所述目标图像帧之前的关键帧,且所述目标关键帧在多个图像帧所包含的关键帧中与所述目标图像帧之间的间隔最小;计算单元,用于计算各个公共特征点的三焦张量测量误差;第二确定单元,用于利用所述各个公共特征点的三焦张量测量误差确定所述视觉惯性里程计的误差状态量;第三确定单元,用于基于所述误差状态量和所述视觉惯性里程计的当前系统状态量预测值确定所述视觉惯性里程计的当前系统状态量。

第三方面,本发明实施例提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面任一项所述的方法的步骤。

第四方面,本发明实施例提供了一种具有处理器可执行的非易失的程序代码的计算机可读介质,所述程序代码使所述处理器执行上述第一方面任一项所述的方法的步骤。

在本发明实施例中,首先获取视觉惯性里程计拍摄的目标图像帧,并确定目标图像帧和目标关键帧之间的公共特征点;然后,计算各个公共特征点的三焦张量测量误差;进而,利用各个公共特征点的三焦张量测量误差确定视觉惯性里程计的误差状态量;最终,基于误差状态量和视觉惯性里程计的当前系统状态量预测值确定视觉惯性里程计的当前系统状态量。通过上述描述可知,在本实施例中,各个公共特征点的三焦张量测量误差具有很强的鲁棒性,准确性好,所以确定得到的误差状态量也更加准确,最终得到的视觉惯性里程计的当前系统状态量的精确度高,即能准确的对视觉惯性里程计的运动进行跟踪,进而使得后续构建的三维场景更加精确,缓解了现有的运动跟踪准确性差的技术问题。

本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种电子设备的示意图;

图2为本发明实施例提供的一种视觉惯性里程计的状态确定方法的流程图;

图3为本发明实施例提供的计算当前系统状态量预测值的方法流程图;

图4为本发明实施例提供的增强现实实现的方法流程图;

图5为本发明实施例提供的一种视觉惯性里程计的状态确定装置的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1:

首先,参照图1来描述用于实现本发明实施例的电子设备100,该电子设备可以用于运行本发明各实施例的视觉惯性里程计的状态确定方法。

如图1所示,电子设备100包括一个或多个处理器102、一个或多个存储器104、输入装置106、输出装置108以及摄像机110,这些组件通过总线系统112和/或其它形式的连接机构(未示出)互连。应当注意,图1所示的电子设备100的组件和结构只是示例性的,而非限制性的,根据需要,所述电子设备也可以具有其他组件和结构。

所述处理器102可以采用数字信号处理器(dsp)、现场可编程门阵列(fpga)、可编程逻辑阵列(pla)和asic(applicationspecificintegratedcircuit)中的至少一种硬件形式来实现,所述处理器102可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元,并且可以控制所述电子设备100中的其它组件以执行期望的功能。

所述存储器104可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器102可以运行所述程序指令,以实现下文所述的本发明实施例中(由处理器实现)的客户端功能以及/或者其它期望的功能。在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如所述应用程序使用和/或产生的各种数据等。

所述输入装置106可以是用户用来输入指令的装置,并且可以包括键盘、鼠标、麦克风和触摸屏等中的一个或多个。

所述输出装置108可以向外部(例如,用户)输出各种信息(例如,图像或声音),并且可以包括显示器、扬声器等中的一个或多个。

所述摄像机110用于进行图像采集,其中,摄像机所采集的数据经过所述视觉惯性里程计的状态确定方法进行处理之后得到当前系统状态量,例如,摄像机可以拍摄用户期望的图像(例如照片、视频等),然后,将该图像经过所述视觉惯性里程计的状态确定方法进行处理之后得到当前系统状态量,摄像机还可以将所拍摄的图像存储在所述存储器104中以供其它组件使用。

示例性地,用于实现根据本发明实施例的视觉惯性里程计的状态确定方法的电子设备可以被实现为诸如智能手机、平板电脑等智能移动终端。

实施例2:

根据本发明实施例,提供了一种视觉惯性里程计的状态确定方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图2是根据本发明实施例的一种视觉惯性里程计的状态确定方法的流程图,如图2所示,该方法包括如下步骤:

步骤s202,获取视觉惯性里程计拍摄的目标图像帧,并确定目标图像帧和目标关键帧之间的公共特征点,目标关键帧为视觉惯性里程计所拍摄到的多个图像帧中位于目标图像帧之前的关键帧,且目标关键帧在多个图像帧所包含的关键帧中与目标图像帧之间的间隔最小;

在本实施例中,视觉惯性里程计是指由相机和惯性测量单元(inertialmeasurementunit,简称imu)所组成的视觉传感设备;目标图像帧是指视觉惯性里程计中的相机所拍摄得到的当前图像帧。

另外,目标关键帧为视觉惯性里程计所拍摄到的多个图像帧中位于目标图像帧之前的关键帧,且目标关键帧在多个图像帧所包含的关键帧中与目标图像帧之间的间隔最小,也就是目标关键帧是上一次计算过程中所确定的关键帧,下文中再对确定目标关键帧的过程进行说明,在此不再赘述。

步骤s204,计算各个公共特征点的三焦张量测量误差;

在得到目标图像帧和目标关键帧之间的公共特征点后,进一步计算各个公共特征点的三焦张量测量误差,该各个公共特征点的三焦张量测量误差具有很强的鲁棒性,并且准确性好,下文中再对该计算过程进行详细介绍。

步骤s206,利用各个公共特征点的三焦张量测量误差确定视觉惯性里程计的误差状态量;在本实施例中,误差状态量表示当前系统状态量预测值与实际的当前系统状态量之间的误差。

步骤s208,基于误差状态量和视觉惯性里程计的当前系统状态量预测值确定视觉惯性里程计的当前系统状态量。

在本实施例中,当前系统状态量是由多个参量所组成的,其中包括:imu的当前数据(比如,加速度,角速度,偏摆),目标图像帧所对应的相机位姿数据(比如,相机的位置,相机和重力方向的夹角),即当前系统状态量表征了视觉惯性里程计的当前运动状态。

在本发明实施例中,首先获取视觉惯性里程计拍摄的目标图像帧,并确定目标图像帧和目标关键帧之间的公共特征点;然后,计算各个公共特征点的三焦张量测量误差;进而,利用各个公共特征点的三焦张量测量误差确定视觉惯性里程计的误差状态量;最终,基于误差状态量和视觉惯性里程计的当前系统状态量预测值确定视觉惯性里程计的当前系统状态量。通过上述描述可知,在本实施例中,各个公共特征点的三焦张量测量误差具有很强的鲁棒性,准确性好,所以确定得到的误差状态量也更加准确,最终得到的视觉惯性里程计的当前系统状态量的精确度高,即能准确的对视觉惯性里程计的运动进行跟踪,进而使得后续构建的三维场景更加精确,缓解了现有的运动跟踪准确性差的技术问题。

在本实施例中,参考图3,在获取视觉惯性里程计拍摄的目标图像帧之前,该方法还包括如下步骤:

步骤s301,获取视觉惯性里程计中惯性测量单元imu采集的imu数据;

具体的,imu数据包括:加速度数据和角速度数据。

步骤s302,基于imu数据和上一时刻计算出的视觉惯性里程计的系统状态量,确定imu数据的修正值;

在得到imu数据后,获取上一时刻计算出的视觉惯性里程计的系统状态量,主要是获取其中的偏摆,用得到的imu数据减去偏摆,就能得到imu数据的修正值。

步骤s303,结合运动方程和四阶龙格库塔法对imu数据的修正值进行计算,得到当前系统状态量预测值。

在得到imu数据的修正值之后,利用imu的运动方程并结合四阶龙格库塔法对imu数据的修正值进行计算,得到当前系统状态量预测值。

同时,在该过程中还能计算得到传递函数和噪声协方差,进而根据传递函数、噪声协方差以及上一时刻计算出的状态协方差参数计算得到当前状态协方差预测值。

具体的,根据计算算式计算当前状态协方差预测值,其中,pk|k-1表示当前状态协方差预测值,fd表示传递函数,pk-1|k-1表示上一时刻计算出的状态协方差参数,qd表示噪声协方差。需要说明的是,在第一次进行计算时,上一时刻计算出的状态协方差参数为根据经验预设的状态协方差参数。

在得到当前系统状态量预测值和当前状态协方差预测值之后,进一步获取目标图像帧,并确定目标图像帧和目标关键帧之间的公共特征点。在一个可选地实施方式中,步骤s202,确定目标图像帧和目标关键帧之间的公共特征点包括如下步骤:

步骤s2021,对目标图像帧进行特征点检测,得到目标图像帧的特征点;

具体的,将目标图像帧上划分m×n个网格,对每一个网格进行特征点检测,使得在每一个网格中都检测得到一个特征点,进而得到目标图像帧的特征点。

步骤s2022,获取目标关键帧,并确定目标关键帧的特征点;

具体的,目标关键帧包括第一目标关键帧和第二目标关键帧,第一目标关键帧为第二目标关键帧之前的关键帧,且第一目标关键帧为与第二目标关键帧帧次距离最近的关键帧;

确定目标关键帧的特征点包括:确定第一目标关键帧的特征点和第二目标关键帧的特征点。

需要说明的是,在第一次计算时,视觉惯性里程计静止时拍摄得到的一个图像帧作为第一目标关键帧,给视觉惯性里程计一微小扰动后,拍摄得到的一个图像帧作为第二目标关键帧。之后关键帧的确定方法将在下文中进行描述。

步骤s2023,将目标关键帧的特征点与目标图像帧的特征点进行匹配,得到公共特征点。

具体的,将第一目标关键帧的特征点,第二目标关键帧的特征点和目标图像帧的特征点进行匹配,得到公共特征点,具体包括下述(1)-(4)的步骤:

(1)将第一目标关键帧的特征点与第二目标关键帧的特征点进行匹配,得到第一匹配特征点;

(2)将第二目标关键帧的特征点与目标图像帧的特征点进行匹配,得到第二匹配特征点;

(3)将第一匹配特征点和第二匹配特征点之间相同的特征点作为原始公共特征点;

(4)利用单点随机抽样一致算法计算视觉惯性里程计的临时系统状态量,并根据临时系统状态量去除原始公共特征点中的外点,得到公共特征点。

具体的,单点随机抽样一致算法是指单点ransac算法。具体过程为:假设原始公共特征点中的一个公共特征点没有误差,然后根据该没有误差的公共特征点可以计算得到一个临时系统状态量(采用步骤s204到步骤s206的方法得到该没有误差的特征点的误差状态量,加上之前的系统状态量就得到了临时系统状态量),进而根据该临时系统状态量确定原始公共特征点中各个公共特征点的误差,根据各个公共特征点的误差确定有多少内点多少外点,如此对每个公共特征点进行计算,最后将内点最多的原始公共特征点作为公共特征点,剔除该次判定的外点,以进行后续优化计算。

步骤s2022中介绍了第一次计算时,目标关键帧的确定方法,下面对中间计算过程中关键帧的确定方法进行介绍:

在本发明实施例中,该方法还包括如下(i)-(iii)步骤:

(i)将目标图像帧的特征点与第二目标关键帧的特征点进行匹配,得到相匹配的特征点数;

(ii)将目标图像帧所对应的相机位姿与第二目标关键帧所对应的相机位姿进行对比,得到对比结果;

(iii)若相匹配的特征点数超过预设阈值,或者,对比结果为相机位姿的距离大于预设距离,则将目标关键帧中的第二目标关键帧作为当前关键帧中的第一目标关键帧,且将目标图像帧作为当前关键帧中的第二目标关键帧。

具体的,若满足上述条件中的任意一个条件时,当前关键帧中的第一目标关键帧为目标关键帧中的第二目标关键帧,而当前关键帧中的第二目标关键帧为目标图像帧,也就是用目标图像帧挤掉了目标关键帧中的第一目标关键帧,进而得到了当前关键帧,这样,得到的当前关键帧就会进一步作为目标关键帧用于下次的计算。

上述内容对确定公共特征点的过程以及确定关键帧的过程进行了具体介绍,下面对计算各个公共特征点的三焦张量测量误差的过程进行详细介绍。在一个可选地实施方式中,步骤s204,计算各个公共特征点的三焦张量测量误差包括如下步骤:

步骤s2041,获取视觉惯性里程计在上一时刻计算出的状态协方差参数和视觉惯性里程计的当前系统状态量预测值;

需要说明的是,第一次计算时,上一时刻计算出的状态协方差参数为根据经验预设的状态协方差参数。

步骤s2042,采用sigmapoint算法分解上一时刻计算出的状态协方差参数,得到状态协方差参数的分解值;其中,sigmapoint算法即为sigma采样法;

步骤s2043,基于状态协方差参数的分解值和当前系统状态量预测值,计算各个公共特征点的三焦张量测量误差。

具体的,假设状态协方差参数的分解值为n个,这样当前系统状态量预测值和这n个分解值之间就组成了2n+1个采样值。比如,分解值有3个,分别为1,2,3,那么当前系统状态量预测值(用表示)和这3个分解值所组成的采样值为:有一个采样值就会有计算得到一组三焦张量测量误差(该组三焦张量测量误差为各个公共特征点的三焦张量测量误差),这样就得到了2n+1组三焦张量测量误差。

上述内容对计算各个公共特征点的三焦张量测量误差的过程进行了具体介绍,下面对确定误差状态量的过程进行详细介绍。在一个可选地实施方式中,步骤s206,利用各个公共特征点的三焦张量测量误差确定视觉惯性里程计的误差状态量包括如下步骤:

步骤s2061,利用三焦张量测量误差计算所有公共特征点的三焦张量测量误差均值;

在得到各个公共特征点的三焦张量测量误差后,对各个公共特征点的三焦张量测量误差进行求平均计算,得到所有公共特征点的三焦张量测量误差均值。

具体的,如步骤s2043所述,一共有2n+1组三焦张量测量误差,那么求平均计算时,将每个公共特征点对应维度的三焦张量测量误差相加后除以2n+1,就得到了所有公共特征点的三焦张量测量误差均值

步骤s2062,利用三焦张量测量误差均值和三焦张量测量误差计算所有公共特征点的测量协方差;

具体的,根据协方差的计算算式利用三焦张量测量误差均值和三焦张量测量误差计算所有公共特征点的测量协方差,其中,表示所有公共特征点的测量协方差,zi表示三焦张量测量误差,表示三焦张量测量误差均值。

步骤s2063,计算视觉惯性里程计的系统测量量和系统状态量之间的协方差,得到目标协方差;

具体的,根据目标协方差计算算式计算系统测量量和系统状态量之间的协方差,得到目标协方差,其中,表示目标协方差,zi表示三焦张量测量误差,表示三焦张量测量误差均值,xi表示步骤s2043中的采样值,表示当前系统状态量预测值(也即采样值的均值)。

步骤s2064,基于三焦张量测量误差、三焦张量测量误差均值、测量协方差和目标协方差,计算误差状态量。

可选地,步骤s2064,基于三焦张量测量误差、三焦张量测量误差均值、测量协方差和目标协方差,计算误差状态量包括如下步骤:

步骤s20641,基于测量协方差和目标协方差,计算卡尔曼滤波器的卡尔曼增益;

具体的,根据卡尔曼增益计算算式计算卡尔曼滤波器的卡尔曼增益,其中,kk表示卡尔曼增益,表示目标协方差,表示测量协方差所表示的矩阵的逆矩阵。

步骤s20642,基于卡尔曼增益、三焦张量测量误差和三焦张量测量误差均值,计算误差状态量。

具体的,根据误差状态量计算算式计算误差状态量,其中,表示误差状态量,kk表示卡尔曼增益,zi表示三焦张量测量误差,表示三焦张量测量误差均值。

在计算得到误差状态量后,进一步计算当前状态协方差参数,具体的:

基于卡尔曼增益,测量协方差和当前状态协方差预测值计算当前状态协方差参数,以将当前状态协方差参数作为上一时刻计算出的状态协方差参数用于下次计算。

在本实施例中,根据状态协方差参数计算算式计算当前状态协方差参数,其中,pk|k表示当前状态协方差参数,pk|k-1表示步骤s303中计算得到的当前状态协方差预测值,kk表示卡尔曼增益,表示测量协方差,表示卡尔曼增益所表示的矩阵的转置矩阵。

在得到误差状态量后,再基于误差状态量和视觉惯性里程计的当前系统状态量预测值确定视觉惯性里程计的当前系统状态量。具体的,根据计算算式确定视觉惯性里程计的当前系统状态量,其中,表示当前系统状态量,表示当前系统状态量预测值,表示误差状态量。

需要说明的是,在将当前状态协方差参数和当前系统状态量用于下次计算时,需要先对当前状态协方差参数和当前系统状态量进行转换,转换后方可用于下次计算。转换的过程为:pk|k=tepk|k,其中,等号右边的表示当前系统状态量,等号左边的表示转换后的当前系统状态量,等号右边的pk|k表示当前状态协方差参数,等号左边的pk|k表示转换后的当前状态协方差参数,

在本发明实施例中,参考图4,在基于误差状态量和视觉惯性里程计的当前系统状态量预测值确定视觉惯性里程计的当前系统状态量之后,该方法还包括如下步骤:

步骤s401,基于当前系统状态量和公共特征点,对公共特征点进行三角化,得到三维地图;

具体的,根据当前系统状态量中的一个相机位姿的坐标位置和对应的公共特征点就能确定一条射线,这样两条射线相交得到的交点坐标即为三维地图中的一个三维坐标,如此求得所有的三维坐标就得到了三维地图。

步骤s402,采用三点随机抽样一致算法检测三维地图中的平面;

步骤s403,确定平面的法线方向,并在法线方向中确定目标方向,其中,目标方向包括以下任一种:竖直方向,水平方向;

步骤s404,将目标方向所对应的平面作为目标平面;

步骤s405,在获取到用户的交互信息之后,基于交互信息将虚拟物体设置于目标平面中。

具体的,如果确定得到的目标平面为多个,在将虚拟物体设置于目标平面中时,放在最后确定的目标平面上,或者是将虚拟物体设置于距离相机最进的目标平面中。

在本实施例中,交互信息可以是点击虚拟物体的交互操作或者是拖拽虚拟物体的交互操作。

本发明的方法计算量小,更加适用于移动端,三焦张量测量误差具有很强的鲁棒性,能很好的处理剧烈运动的图像,同时利用关键帧的确定方法能很好的消除静态误差,使得最终确定的当前系统状态量更加准确,进而使得后续构建的三维地图更加精确,改善了增强显示技术的体验。

实施例3:

步骤501:初始化。静止时获取imu数据,计算一段时间内加速度平均值,将加速度平均值的模作为重力加速度的大小,计算平均加速度与重力的夹角,并将夹角作为imu的初始姿态,同时记录此时图像位姿然后,给视觉惯性里程计一个微小运动,记录此时的imu位姿(微小运动后,得到imu数据,包括加速度数据和角速度数据,对加速度数据和角速度数据进行时间积分,就得到的加速度和角度,得到的加速度和角度即为imu位姿,其中,还包含有偏摆)和图像位姿(由于相机和imu之间的位姿关系已知且固定不变,在得到imu位姿后,根据二者之间的固定关系,就能得到图像位姿),并以此初始化系统状态量:其中,表示初始化系统状态量,并将得到的两帧图像作为关键帧,同时给定初始状态协方差参数p0|0;

步骤502:运动预测。当视觉惯性里程计在运动过程中检测到新的imu数据后,利用上一时刻计算的系统状态量中的偏摆对该新的imu数据进行修正,得到修正后的imu数据,利用imu的运动方程并结合四阶龙格库塔法对修正后的imu数据进行计算,得到当前系统状态量预测值同时计算得到传递函数fd和噪声协方差qd,进而计算得到当前状态协方差预测值:

步骤503:特征点检测。当视觉惯性里程计在运动过程中拍摄得到新的图像帧(即实施例2中的目标图像帧)后,将新的图像帧划分成m×n的网格,对每一个网格进行特征点检测,得到新的图像帧的特征点;

步骤504:确定关键帧。如果新的图像帧的特征点与关键帧中的后一时刻的关键帧(即实施例2中的第二目标关键帧)的特征点的匹配点数超过设定阈值,或新的图像帧所对应的相机位姿与关键帧中的后一时刻的关键帧所对应的相机位姿之间的距离大于预设距离,则将新的图像帧作为关键帧中的后一时刻关键帧,关键帧中的原来的后一时刻关键帧就作为前一时刻关键帧;

步骤505:三张图特征点匹配。在得到关键帧和新的图像帧后,先将关键帧中的前一时刻的关键帧的特征点和后一时刻的关键帧的特征点进行匹配,得到第一匹配特征点,然后将后一时刻的关键帧的特征点与新的图像帧的特征点进行匹配,得到第二匹配特征点,最后求第一匹配特征点和第二匹配特征点的公共交集,作为三张图的公共特征点;

步骤506:剔除外点。利用单点ransac的方法计算视觉惯性里程计的临时系统状态量,并根据临时系统状态量去除步骤505中公共特征点中的外点,得到最终的公共特征点;

步骤507:计算sigmapoints三焦张量观测误差。利用sigmapoints方法分解上一时刻计算出的状态协方差参数(比如第一计算时,即为步骤501p0|0,后续计算过程中,即为pk-1|k-1),并计算每个公共特征点的三焦张量测量误差zi,并得到其均值和测量协方差以及测量量与状态量之间的协方差

步骤508:计算卡尔曼增益。

步骤509:状态更新。计算误差状态量和当前状态协方差参数表示误差状态量,pk|k表示当前状态协方差参数,该当前状态协方差参数在用于下次计算时,就作为了上一时刻计算得出的状态协方差参数,最终状态量更新,得到视觉惯性里程计的当前系统状态量其中,表示当前系统状态量,表示步骤502中的当前系统状态量预测值,表示误差状态量;

步骤510:状态迭代。对当前系统状态量和当前状态协方差参数进行转换,得到转换后的当前系统状态量和转换后的当前状态协方差参数,其中,等号右边的表示当前系统状态量,等号左边的表示转换后的当前系统状态量,等号右边的pk|k表示当前状态协方差参数,等号左边的pk|k表示转换后的当前状态协方差参数,进而在得到新的imu数据和新的图像帧后重复执行步骤502至步骤510的过程。

步骤511:构建地图。根据视觉里程计提供的位姿信息(即当前系统状态量),结合多帧之间匹配的特征点,对特征点进行三角化,构建三维地图,即每次得到一个当前系统状态量就构建得到一个三维地图;

步骤512:平面检测。利用三点ransac检测三维地图中的平面,得到平面的中心和法向。在三点选取后,计算经过这三点的平面方程,如果法线方向不是竖直方向或者水平方向,则跳过当前次,得到法向方向为竖直方向或水平方向的目标平面;

步骤513:虚拟物体放置。获取用户的交互信息后,在目标平面中设置虚拟物体。

本发明的方法计算量小,更加适用于移动端,三焦张量测量误差具有很强的鲁棒性,能很好的处理剧烈运动的图像,同时利用关键帧的确定方法能很好的消除静态误差,使得最终确定的当前系统状态量更加准确,进而使得后续构建的三维地图更加精确,改善了增强显示技术的体验。

实施例4:

本发明实施例还提供了一种视觉惯性里程计的状态确定装置,该视觉惯性里程计的状态确定装置主要用于执行本发明实施例上述内容所提供的视觉惯性里程计的状态确定方法,以下对本发明实施例提供的视觉惯性里程计的状态确定装置做具体介绍。

图5是根据本发明实施例的一种视觉惯性里程计的状态确定装置的示意图,如图5所示,该视觉惯性里程计的状态确定装置主要包括第一确定单元10,计算单元20,第二确定单元30和第三确定单元40,其中:

第一确定单元10,用于获取视觉惯性里程计拍摄的目标图像帧,并确定目标图像帧和目标关键帧之间的公共特征点,目标关键帧为视觉惯性里程计所拍摄到的多个图像帧中位于目标图像帧之前的关键帧,且目标关键帧在多个图像帧所包含的关键帧中与目标图像帧之间的间隔最小;

计算单元20,用于计算各个公共特征点的三焦张量测量误差;

第二确定单元30,用于利用各个公共特征点的三焦张量测量误差确定视觉惯性里程计的误差状态量;

第三确定单元40,用于基于误差状态量和视觉惯性里程计的当前系统状态量预测值确定视觉惯性里程计的当前系统状态量。

在本发明实施例中,首先获取视觉惯性里程计拍摄的目标图像帧,并确定目标图像帧和目标关键帧之间的公共特征点;然后,计算各个公共特征点的三焦张量测量误差;进而,利用各个公共特征点的三焦张量测量误差确定视觉惯性里程计的误差状态量;最终,基于误差状态量和视觉惯性里程计的当前系统状态量预测值确定视觉惯性里程计的当前系统状态量。通过上述描述可知,在本实施例中,各个公共特征点的三焦张量测量误差具有很强的鲁棒性,准确性好,所以确定得到的误差状态量也更加准确,最终得到的视觉惯性里程计的当前系统状态量的精确度高,即能准确的对视觉惯性里程计的运动进行跟踪,进而使得后续构建的三维场景更加精确,缓解了现有的运动跟踪准确性差的技术问题。

可选地,第二确定单元还用于:利用三焦张量测量误差计算所有公共特征点的三焦张量测量误差均值;

利用三焦张量测量误差均值和三焦张量测量误差计算所有公共特征点的测量协方差;

计算视觉惯性里程计的系统测量量和系统状态量之间的协方差,得到目标协方差;

基于三焦张量测量误差、三焦张量测量误差均值、测量协方差和目标协方差,计算误差状态量。

可选地,第一确定单元还用于:对目标图像帧进行特征点检测,得到目标图像帧的特征点;

获取目标关键帧,并确定目标关键帧的特征点;

将目标关键帧的特征点与目标图像帧的特征点进行匹配,得到公共特征点。

可选地,第一确定单元还用于:目标关键帧包括第一目标关键帧和第二目标关键帧,第一目标关键帧为第二目标关键帧之前的关键帧,且第一目标关键帧为与第二目标关键帧帧次距离最近的关键帧;

确定目标关键帧的特征点包括:确定第一目标关键帧的特征点和第二目标关键帧的特征点;

将目标关键帧的特征点与目标图像帧的特征点进行匹配,得到公共特征点包括:将第一目标关键帧的特征点,第二目标关键帧的特征点和目标图像帧的特征点进行匹配,得到公共特征点。

可选地,第一确定单元还用于:将第一目标关键帧的特征点与第二目标关键帧的特征点进行匹配,得到第一匹配特征点;

将第二目标关键帧的特征点与目标图像帧的特征点进行匹配,得到第二匹配特征点;

将第一匹配特征点和第二匹配特征点之间相同的特征点作为原始公共特征点;

利用单点随机抽样一致算法计算视觉惯性里程计的临时系统状态量,并根据临时系统状态量去除原始公共特征点中的外点,得到公共特征点。

可选地,该装置还用于:将目标图像帧的特征点与第二目标关键帧的特征点进行匹配,得到相匹配的特征点数;

将目标图像帧所对应的相机位姿与第二目标关键帧所对应的相机位姿进行对比,得到对比结果;

若相匹配的特征点数超过预设阈值,或者,对比结果为相机位姿的距离大于预设距离,则将目标关键帧中的第二目标关键帧作为当前关键帧中的第一目标关键帧,且将目标图像帧作为当前关键帧中的第二目标关键帧。

可选地,计算单元还用于:获取视觉惯性里程计在上一时刻计算出的状态协方差参数和视觉惯性里程计的当前系统状态量预测值;

采用sigmapoint算法分解上一时刻计算出的状态协方差参数,得到状态协方差参数的分解值;

基于状态协方差参数的分解值和当前系统状态量预测值,计算各个公共特征点的三焦张量测量误差。

可选地,第二确定单元还用于:基于测量协方差和目标协方差,计算卡尔曼滤波器的卡尔曼增益;

基于卡尔曼增益、三焦张量测量误差和三焦张量测量误差均值,计算误差状态量。

可选地,该装置还用于:获取视觉惯性里程计中惯性测量单元imu采集的imu数据;

基于imu数据和上一时刻计算出的视觉惯性里程计的系统状态量,确定imu数据的修正值;

结合运动方程和四阶龙格库塔法对imu数据的修正值进行计算,得到当前系统状态量预测值。

可选地,该装置还用于:基于当前系统状态量和公共特征点,对公共特征点进行三角化,得到三维地图;

采用三点随机抽样一致算法检测三维地图中的平面;

确定平面的法线方向,并在法线方向中确定目标方向,其中,目标方向包括以下任一种:竖直方向,水平方向;

将目标方向所对应的平面作为目标平面;

在获取到用户的交互信息之后,基于交互信息将虚拟物体设置于目标平面中。

本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。

在另一个实施例中,还提供了一种具有处理器可执行的非易失的程序代码的计算机可读介质,所述程序代码使所述处理器执行上述权实施例1或实施例2中任意实施例所述的方法的步骤。

另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1