首页 / 专利库 / 软件 / 数据处理 / 一种位姿数据处理方法、装置、终端及计算机可读存储介质

一种位姿数据处理方法、装置、终端及计算机可读存储介质

阅读:664发布:2024-02-15

专利汇可以提供一种位姿数据处理方法、装置、终端及计算机可读存储介质专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种 位姿 数据处理 方法、装置、终端及计算机可读存储介质,该方法包括:将摄像机获取的 帧 图像发送至 服务器 ,根据服务器返回的第一视觉 定位 数据进行初始化;根据初始化结果进行SLAM视觉 跟踪 ,确定帧序列;对于帧序列中的关键帧,若关键帧满足周期性条件,则将关键帧发送至服务器;根据服务器返回的第二视觉定位数据,调整SLAM场景地图数据。本发明 实施例 ,实现了视觉定位技术和视觉SLAM技术的融合方案;服务器中运行的视觉定位技术能够提高SLAM中数据的准确性,视觉SLAM技术能够实时的响应摄像机拍照得到的图像,提高了6DoF位姿计算的准确性和实时性。,下面是一种位姿数据处理方法、装置、终端及计算机可读存储介质专利的具体信息内容。

1.一种位姿数据处理方法,其特征在于,应用于移动终端,包括:
将摄像机获取的图像发送至服务器,根据所述服务器返回的第一视觉定位数据进行初始化;
根据初始化结果进行SLAM视觉跟踪,确定帧序列;
对于帧序列中的关键帧,若所述关键帧满足周期性条件,则将所述关键帧发送至服务器;
根据所述服务器返回的第二视觉定位数据,调整SLAM场景地图数据。
2.根据权利要求1所述的位姿数据处理方法,其特征在于,所述根据所述服务器返回的第一视觉定位数据进行初始化,包括:
接收服务器返回的第一视觉定位数据;
判断所述第一视觉定位数据是否准确;
若所述第一视觉定位数据准确,则将所述帧图像作为帧序列的首帧,根据所述第一视觉定位数据确定帧序列中首帧的位姿,以完成初始化。
3.根据权利要求2所述的位姿数据处理方法,其特征在于,所述判断所述第一视觉定位数据是否准确,包括:
根据第一视觉定位数据确定重投影误差和二维2D-三维3D点对数量;
判断所述重投影误差是否小于第一阈值,判断所述二维2D-三维3D点对数量是否大于第二阈值;
如果所述重投影误差小于第一阈值,且所述二维2D-三维3D点对数量大于第二阈值,则判定所述第一视觉定位数据准确。
4.根据权利要求1所述的位姿数据处理方法,其特征在于,所述根据服务器返回的第二视觉定位数据,调整SLAM场景地图数据,包括:
判断根据第二视觉定位数据得到位姿与根据视觉SLAM得到的关键帧的位姿的误差,是否小于第三阈值;
若误差小于第三阈值,则将所述第二视觉定位数据中的三维3D点数据及二维2D-三维
3D对应关系加入到SLAM场景地图数据中。
5.根据权利要求4所述的位姿数据处理方法,其特征在于,在将所述第二视觉定位数据中的三维3D点数据加入到SLAM场景地图数据中之后,还包括:
对添加的三维点数据添加标记,被标记的三维点数据在视觉SLAM系统中的视觉相似度计算及全局、局部优化中权重,大于所述视觉SLAM系统中其他三维点数据的权重。
6.根据权利要求4所述的位姿数据处理方法,其特征在于,在判断第二视觉定位数据的重投影误差是否小于第三阈值之后,还包括:
若误差大于所述第三阈值,则根据所述关键帧和所述第二视觉定位结果进行重新初始化。
7.根据权利要求1所述的位姿数据处理方法,其特征在于,所述根据初始化结果进行SLAM视觉跟踪,确定帧序列,包括:
使用SLAM的前端线程,根据相邻帧之间的视觉相似性关系获得当前帧的位姿;
若成功获得所述当前帧的位姿,则将当前帧压入帧序列。
8.根据权利要求7所述的位姿数据处理方法,其特征在于,在根据相邻帧之间的视觉相似性关系获得当前帧的位姿之后,还包括:
若无法成功获取所述当前帧的位姿,则返回执行初始化步骤。
9.根据权利要求1所述的位姿数据处理方法,其特征在于,所述关键帧满足周期性条件,包括:
若读取当前关键帧的时间与上一次向所述服务器发送图像帧的时间的时间差,大于第四阈值,则满足周期性条件。
10.根据权利要求1所述的位姿数据处理方法,其特征在于,在确定帧序列之后,还包括:
根据所述关键帧提取视觉特征;
根据所述视觉特征扩展SLAM场景地图数据。
11.根据权利要求1所述的位姿数据处理方法,其特征在于,在将所述关键帧发送至服务器之后,还包括:
若在预设时间内,未收到所述服务器返回的第二视觉定位数据,则取消将根据服务器返回的第二视觉定位数据,调整SLAM场景地图数据。
12.一种位姿数据处理装置,其特征在于,应用于移动终端,包括:
初始化模,用于将摄像机获取的帧图像发送至服务器,根据服务器返回的第一视觉定位数据进行初始化;
视觉跟踪模块,用于根据初始化结果进行SLAM视觉跟踪,确定帧序列;
调整模块,用于对于帧序列中的关键帧,若所述关键帧满足周期性条件,则将所述关键帧发送至服务器;根据服务器返回的第二视觉定位数据,调整SLAM场景地图数据。
13.一种终端,其特征在于,所述终端包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-11中任一所述的位姿数据处理方法。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-11中任一所述的位姿数据处理方法。

说明书全文

一种位姿数据处理方法、装置、终端及计算机可读存储介质

技术领域

[0001] 本发明实施例涉及视觉定位技术,尤其涉及一种位姿数据处理方法、装置、终端及计算机可读存储介质。

背景技术

[0002] 移动终端视觉位姿计算技术指根据移动终端中的图像采集设备拍摄的场景帧图像,实时计算移动终端的6个方向自由度(Six degrees of freedom tracking,6DoF)位姿,可称之为位姿。
[0003] 计算位姿的方法包括视觉定位技术和视觉同步定位与地图构建(simultaneous localization and mapping,SLAM)技术。视觉定位技术将当前获取的帧图像特征与预先配合的点数据进行匹配,得到摄像机的6DoF位姿。视觉SLAM技术通过比较连续拍摄的帧图像间的视觉特征相似关系,得到摄像机的6DoF位姿。
[0004] 但是,视觉定位技术虽能够准确获得摄像机在绝对空间内的6DoF位姿,但是需要耗费较多的计算时间,无法适用于移动终端的实时跟踪需求,实时性差。视觉SLAM技术能够在移动终端上实时运行,但是无法获得绝对空间内的6DoF位姿且常发生位姿漂移现象,准确性低。

发明内容

[0005] 本发明实施例提供一种位姿数据处理方法、装置、终端及计算机可读存储介质,以实现提高6DoF位姿计算的准确性和实时性。
[0006] 第一方面,本发明实施例提供了一种位姿数据处理方法,应用于移动终端,包括:
[0007] 将摄像机获取的帧图像发送至服务器,根据服务器返回的第一视觉定位数据进行初始化;
[0008] 根据初始化结果进行SLAM视觉跟踪,确定帧序列;
[0009] 对于帧序列中的关键帧,若关键帧满足周期性条件,则将关键帧发送至服务器;
[0010] 根据服务器返回的第二视觉定位数据,调整SLAM场景地图数据。
[0011] 第二方面,本发明实施例还提供了一种位姿数据处理装置,应用于移动终端,包括:
[0012] 初始化模,用于将摄像机获取的帧图像发送至服务器,根据服务器返回的第一视觉定位数据进行初始化;
[0013] 视觉跟踪模块,用于根据初始化结果进行SLAM视觉跟踪,确定帧序列;
[0014] 调整模块,用于对于帧序列中的关键帧,若关键帧满足周期性条件,则将关键帧发送至服务器;根据服务器返回的第二视觉定位数据,调整SLAM场景地图数据。
[0015] 第三方面,本发明实施例还提供了一种终端,终端包括:
[0016] 一个或多个处理器;
[0017] 存储装置,用于存储一个或多个程序,
[0018] 当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如第一方面所示的位姿数据处理方法。
[0019] 第四方面,发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如第一方面所示的的位姿数据处理方法。
[0020] 本发明实施例提供的位姿数据处理方法、装置、终端及计算机可读存储介质,终端根据服务器提供的第一视觉定位数据进行初始化;然后在本地使用视觉SLAM技术进行跟踪;对于跟踪过程中形成的帧序列中的关键帧,将满足周期性要求的关键帧发送至服务器进行视觉定位,得到服务器返回的第二视觉定位数据。根据第二视觉定位数据对SLAM场景地图数据进行更新。相对于单独使用视觉SLAM技术准确性低、单独使用视觉定位技术实时性差,本发明实施例,在服务器中运行视觉定位技术,并将视觉定位技术融合到视觉SLAM技术的初始化阶段以及关键帧的处理中,实现上述两种视觉定位技术的融合方案。服务器中运行的视觉定位技术能够提高SLAM中数据的准确性,同时,视觉SLAM技术能够实时的响应摄像机拍照得到的图像,提高了6DoF位姿计算的准确性和实时性。附图说明
[0021] 图1是本发明实施例适用的系统架构示意图;
[0022] 图2是本发明实施例中的一种位姿数据处理方法的流程图
[0023] 图3是本发明实施例中的一种位姿数据处理方法的流程示意图;
[0024] 图4是本发明实施例中的一种位姿数据处理装置的结构示意图;
[0025] 图5是本发明实施例中的一种终端的结构示意图。

具体实施方式

[0026] 下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
[0027] 图1为本发明实施例提供的一种系统架构示意图,其中包括移动终端010和服务器020。移动终端010可以通过有线网络或无线网络与服务器020建立通信。如果移动终端010为可穿戴设备,如可穿戴头盔,如果可穿戴设备连接有线缆,则可通过有线方式与服务器
020进行通信。移动终端010还可以为智能手机、平板电脑、智能眼镜等电子设备,上述电子设备可通过无线方式与服务器020连接。
[0028] 需要说明的是,服务器可以是硬件,也可以是软件。当服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成用来提供分布式服务的多个软件或软件模块,也可以实现成单个软件或软件模块。在此不做具体限定。图1中的移动终端、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端、网络和服务器。
[0029] 移动终端010上设有图像获取装置,如摄像机等,摄像机可以为深度摄像机。用户可以手持移动终端或穿戴上移动终端以获取帧图像。移动终端010获取帧图像,并使用视觉SLAM技术进行跟踪。在初始化以及对满足周期性条件的关键帧处理时,移动终端010将用于初始化的帧图像或关键帧发送至服务器020。服务器020预先配置有当前场景的点云数据,服务器020接收移动终端010发送的帧图像或关键帧时,采用视觉定位技术获取帧图像或关键帧的视觉定位数据,并将视觉定位数据反馈至移动终端010,以便移动终端010根据服务器020反馈的视觉定位数据完成初始化或对SLAM场景地图进行更新。
[0030] 图2为本发明实施例提供的一种位姿数据处理方法的流程图,本实施例可适用于使用移动终端进行视觉定位跟踪的情况,该方法可以由移动终端来执行,具体包括如下步骤:
[0031] 步骤110、将摄像机获取的帧图像发送至服务器,根据服务器返回的第一视觉定位数据进行初始化。
[0032] 摄像机可以为深度照相机。如果移动终端为智能手机、平板电脑等,则摄像机可以为移动终端的后置摄像机或前置摄像机。摄像机用于拍摄进行视觉定位的帧图像。如果移动终端为可穿戴设备,如智能眼镜、智能头盔等,摄像机可位于移动终端外表面,用于拍摄用户视线方向的帧图像。可选的,摄像机可以为移动终端以外的其他设备的摄像机,如车载摄像机、监控摄像机等,该摄像机所在设备可将拍摄到的帧图像传送到移动终端。
[0033] 移动终端通过摄像机获取图像后,可通过有线网络或无线网络将该图像发送至服务器。服务器中配置有用于实现视觉定位技术的模块。视觉定位技术包含点云构建及图像定位两个步骤。点云构建可通过视觉交叉矩阵结构(Structure From Motion,SFM)、激光扫描等多种方法完成,并在系统启动前将构建出的点云及其中的视觉特征存储在云端的服务器中。
[0034] 服务器对移动终端发送的帧图像进行视觉定位。帧图像的视觉定位过程包括:图像视觉特征提取及描述、图像与点云间视觉特征匹配、图像位姿计算三个步骤。其中,视觉特征提取及描述可采用尺度不变特征变换(Scale-invariant feature transform,SIFT)、加速稳健特征(Speeded Up Robust Features,SURF)等方法实现。图像与点云间视觉特征匹配可根据场景规模采用直接匹配或索引匹配等多种方法实现。图像位姿计算包含去除外点及Perspective-n-Point(PnP)两个步骤。去除外点可采用随机抽样一致算法(Random Sample Consensus,RANSAC)等方法。PnP是一种用于求解3D到2D点对的运动的方法:即给出n个3D空间点时,求解相机的位姿的算法。PnP可采用直接线性变换(Direct Linear Transformation,DLT)、高效PnP(Efficient PnP,EPnP),Perspective-3-PointP(P3P)等方法。
[0035] 服务器采用上述方式对帧图像进行视觉定位,得到第一视觉定位结果。第一定位结果包括图像的位姿、图像中的2D点坐标及对应的3D场景点坐标。在进行未初始化时,该帧图像为初始帧。移动终端将初始帧存储到帧序列中,并存储初始帧的位姿以及初始帧中2D点坐标及对应的3D场景点坐标,实现初始化。
[0036] 在一种实现方式中,服务器返回的第一视觉定位结果可能存在不准确的问题,为了保证初始化的可靠性,步骤110可实施为:
[0037] 步骤111、接收服务器返回的第一视觉定位数据。
[0038] 第一视觉定位数据包括初始帧的位姿、初始帧中的2D点坐标及对应的3D场景点坐标。
[0039] 步骤112、判断第一视觉定位数据是否准确。
[0040] 根据初始帧的位姿,以及初始帧中的2D点坐标及对应的3D场景点坐标可计算重投影误差,根据重投影误差可判定第一视觉定位数据是否准确。
[0041] 具体的,步骤1)根据第一视觉定位数据确定重投影误差和二维2D-三维3D点对数量。
[0042] 其中,将是某三维点坐标(坐标X)投影到摄像机成像平面,得到投影坐标(PX),可以根据投影参数与三维坐标的乘积确定投影坐标。其中投影参数P可以根据摄像机位姿及摄像机内在参数如焦距等确定。根据投影坐标(PX)与该三维坐标点在空间二维坐标(x)的差值的绝对值,即(PX-x)的绝对值,确定重投影误差。
[0043] 每个三维点投影到摄像机成像平面上形成一个二维点,每组(2D点,3D点)被称为一个点对。
[0044] 步骤2)判断重投影误差是否小于第一阈值,判断二维2D-三维3D点对数量是否大于第二阈值。
[0045] 第一阈值和第二阈值可根据使用场景确定。重投影误差小于第一阈值说明视觉定位数据的误差较小,重投影误差越小说明定位数据越准确。二维2D-三维3D点对数量大于第二阈值,说明投影到摄像机成像平面的点对数量较多,点对数量越多说明定位数据越准确。
[0046] 如果重投影误差小于第一阈值,且二维2D-三维3D点对数量大于第二阈值,执行步骤3-1)。否则,执行步骤3-2)。
[0047] 步骤3-1)如果重投影误差小于第一阈值,且二维2D-三维3D点对数量大于第二阈值,则判定第一视觉定位数据准确。
[0048] 当第一视觉定位数据准确时,根据第一视觉定位数据进行初始化。执行步骤113。
[0049] 步骤3-2)否则,判定第一视觉定位数据不准确,判定SLAM系统未初始化。此时,将移动终端获取的下一个帧图像作为初始帧发送至服务器,得到新的初始帧的第一视觉定位数据。判断新的初始帧的第一视觉定位数据是否准确。以此类推,直至得到准确的第一视觉定位数据后,根据准确的第一定位数据进行初始化。
[0050] 步骤113、若第一视觉定位数据准确,则将帧图像作为帧序列的首帧,根据第一视觉定位数据确定帧序列中首帧的位姿,以完成初始化。
[0051] 在步骤3-1)确定第一视觉定位数据准确时,执行步骤113进行初始化。初始化过程包括将初始帧写入帧序列中的步骤,以及记录初始帧的位姿的步骤。当完成帧序列的首帧存储,以及首帧的位姿存储时,初始化结束。
[0052] 步骤120、根据初始化结果进行SLAM视觉跟踪,确定帧序列。
[0053] 在使用视觉SLAM技术进行视觉跟踪时,可以根据场景特点及应用需要,选择不同的视觉SLAM方法,如ORB-SLAM、SVO、DSO等。上述视觉SLAM方法通常包含两个线程,前段线程和后端线程。其中前端线程利用相邻帧图像的视觉相似性估计当前帧的位姿;后端线程根据前端线程提供的位姿,对局部时间窗口内或全局图像中的三维场景点及位姿进行优化,以降低累积误差,并在关键帧中提取新的视觉特征,实现场景拓展。
[0054] 基于上述实施例提供的SLAM的前端线程和后端线程,步骤120可实施为:
[0055] 步骤121、使用SLAM的前端线程,根据相邻帧之间的视觉相似性关系获得当前帧的位姿。
[0056] 系统初始化成功后,在SLAM系统的前端线程中根据相邻帧之间的视觉相似性关系获得当前帧的位姿。相邻帧为帧序列中相邻的两个帧图像,当前帧为摄像机获取的当前时刻的帧图像。可以根据当前帧以及与当前帧互为相邻帧的帧图像,之间的视觉相似性关系获得当前帧的位姿。通过特征匹配、图像配准、光流等方法,计算相邻帧间具有相同视觉内容的特征点之间的二维位置对应关系,并根据这些特征点的三维空间位置、二维位置对应关系,计算当前帧的位姿。
[0057] 若成功获得当前帧的位姿,则执行步骤122。若无法成功获取当前帧的位姿,则执行步骤123。
[0058] 步骤122、若成功获得当前帧的位姿,则将当前帧压入帧序列。
[0059] 若成功,则说明使用SLAM技术科估算当前帧的位姿。将当前帧添加到帧序列中。
[0060] 步骤123、若无法成功获取当前帧的位姿,则返回执行初始化步骤。
[0061] 若无法获得当前帧的位姿,则认为系统无法再继续跟踪摄像机位姿(即lost),将系统标记为未初始化状态,重新执行初始化过程,跳转执行步骤110。
[0062] 步骤130、对于帧序列中的关键帧,若关键帧满足周期性条件,则将关键帧发送至服务器。
[0063] 其中,关键帧的判断策略包括该帧与上一个关键帧的时间间隔是否足够长、该帧与上一帧之间的视觉内容差异是否足够大等。可以根据使用场景配置额定的时间间隔以及额定的内容差异程度。
[0064] 判断是否满足周期性条件,包括:若读取当前关键帧的时间与上一次向所述服务器发送图像帧的时间的时间差,大于第四阈值,则满足周期性条件。
[0065] 可以通过设置第四阈值,配置周期性发送关键值的周期时间。例如,若第四阈值为N秒,则每隔N秒(或N秒以上)将一图像帧发送至服务器。实现周期性的向服务器发送图像帧。
[0066] 当帧序列不为空时,从帧序列中获取时间戳最早的帧图像,判断该帧图像是否为关键帧。若该帧不是关键帧,则使用该帧图像对场景地图中3D点及摄像机位姿进行全局或局部优化。优化过程包括:使用获取到的帧图像或者该帧图像在视觉内容上存在重叠(overlap)的图像,对获取到的图像的位姿以及三维点数据进行优化。
[0067] 若该帧图像为关键帧,则除了根据该关键帧提取视觉特征;根据视觉特征扩展SLAM场景地图数据之外,还将执行下述步骤:判断该关键帧是否符合周期性条件,若符合周期性要求,则将关键帧发送至服务器。如果该帧不符合周期性条件,则取消将该关键帧发送至服务器。并读取帧序列中的下一帧数据。
[0068] 步骤140、根据服务器返回的第二视觉定位数据,调整SLAM场景地图数据。
[0069] 服务器接收到移动终端发送的关键帧后,使用视觉定位技术对该关键帧进行处理,得到第二视觉定位数据。第二视觉定位数据的组成与第一视觉定位数据相同,包括位姿、三维点以及二维三维对应关系。
[0070] 可选的,服务器返回的第二视觉定位数据可能与移动终端本地运行的SLAM得到的位姿数据存在偏差,基于此,步骤140可实施为:
[0071] 步骤141、判断根据第二视觉定位数据得到位姿与根据视觉SLAM得到的关键帧的位姿的误差,是否小于第三阈值。
[0072] 根据视觉SLAM得到的位姿、第二视觉定位数据中的2D坐标,3D坐标计算重投影误差。重投影误差的计算公式为(PX-x)的绝对值,其中P由摄像机位姿及摄像机内参计算确定。此时重投影误差的P由视觉SLAM获得的位姿计算得到,X与x为第二视觉定位数据中的2D坐标及3D坐标,以此计算服务器返回的第二视觉定位数据中的位姿与根据视觉SLAM得到的位姿是否有较大差异。若二者的误差小于第三阈值,则确定差异较小,执行步骤142。若二者的误差大于第三阈值,则确定差异较大,则执行步骤143。
[0073] 步骤142、若误差小于第三阈值,则将第二视觉定位数据中的三维3D点数据及二维2D-三维3D对应关系加入到SLAM场景地图数据中。
[0074] SLAM场景地图数据包括三维3D点数据及二维2D-三维3D对应关系。当误差小于第三阈值时,将第二视觉定位数据中的三维3D点数据及二维2D-三维3D对应关系加入到SLAM场景地图数据中。能够使SLAM场景地图数据不仅包括SLAM算法得到的地图数据,还包括通过服务器中运行的视觉定位算法得到的地图数据,即三维3D点数据及二维2D-三维3D对应关系。由于视觉定位算法的精确度高于SLAM算法的精确度,因此,将第二视觉定位数据中的三维3D点数据及二维2D-三维3D对应关系加入到SLAM场景地图数据中,能够提高SLAM场景地图数据的可靠性。
[0075] 进一步的,如果根据视觉定位算法得到的地图数据与SLAM算法得到的地图数据使用相同的权重进行计算,则无法高效的利用视觉定位算法得到的地图数据,基于此,对添加的三维点数据添加标记,可以将视觉定位算法得到的三维点数据标记为杰出点(EXCELLENT点),被标记的三维点数据在视觉SLAM系统中的视觉相似度计算及全局、局部优化中权重,大于视觉SLAM系统中其他三维点数据的权重。
[0076] 步骤143、若误差大于第三阈值,则根据关键帧和第二视觉定位结果进行重新初始化。
[0077] 重新初始化时,返回执行步骤113,根据已接收到的第一视觉定位数据进行初始化。
[0078] 进一步的,若在预设时间内,未收到服务器返回的第二视觉定位数据,则取消将根据服务器返回的第二视觉定位数据,调整SLAM场景地图数据。
[0079] 发送关键帧至云端后,若在预设时间内未收到云端的定位结果返回,则可能由于服务器宕机、网络丢包、网络延迟严重等原因,导致云端服务器无法返回该关键帧帧的第二视觉定位数据。此时,取消将该关键帧的视觉定位结果融合到视觉SLAM场景地图数据中。
[0080] 图3为本发明实施例提供的一种位姿数据处理方法的流程示意图,该系统架构包括移动终端和服务器。移动终端中运行有三个线程,线程1、线程2和线程3。摄像机拍摄得到帧图像(步骤201)。线程1:判断SLAM是否已完成初始化(步骤202),如果未初始化,则执行系统初始化(步骤203)。系统初始化时,将帧图像发送至服务器。服务器:服务器对接收到的帧图像进行视觉定位(步骤204),服务器判断是否为初始帧(步骤205),若终端未初始化,则帧图像为初始帧,得到的视觉定位数据为第一视觉定位数据;若终端已初始化,则帧图像为非初始帧,得到的视觉定位数据为第二视觉定位数据。如果是初始帧,则将初始帧的第一视觉定位数据返回至移动终端的线程1。
[0081] 返回线程1:线程1的系统初始化模块根据第一视觉定位数据完成初始化,之后判断初始化是否成功(步骤206)。例如,如果第一视觉定位数据准确,则确定完成初始化,否则,确定未完成初始化。判断是否SLAM是否已完成初始化(步骤202)的另一个结果分支为,如果已经完成初始化,则执行视觉SLAM前端跟踪(步骤207),即使用SLAM前端线程估算位姿,在使用SLAM前端线程进行跟踪时,需要从帧序列中读取上一个帧图像,根据上一个帧图像和当前帧的视觉相似性关系获得当前帧的位姿;判断前端跟踪是否成功(步骤208)。如果前端跟踪成功,则将当前帧压入帧序列。如果前端跟踪失败,则确定未完成初始化。当确定未完成初始化时,下一次获取到的图像后,判断是否SLAM是否已完成初始化(步骤202)的结果为未初始化。线程1的功能包括:进行初始化的状态认定、根据服务器返回的第一视觉定位数据完成初始化以及执行SLAM前端线程的位姿计算。
[0082] 在将当前帧压入帧序列之后,线程2作为SLAM后端线程,对帧序列中的帧图像进行优化(步骤209),分别包括非关键帧的优化以及关键帧的融合。非关键帧优化包括使用非关键帧对局部时间窗口内或全局图像中的三维场景点及位姿进行优化。如果为关键帧,则一方面在关键帧中提取视觉特征,以扩展SLAM场景地图数据。另一方面,如果该关键帧同时符合周期性条件,则将该关键帧传输到线程3。
[0083] 线程3:在接收到线程2传送的关键帧后,将关键帧发送至服务器。服务器:服务器对关键帧进行视觉定位,得到第二视觉定位数据;之后,服务器判断该关键帧是否为初始帧。服务器判断出关键帧不是初始帧,因此服务器将第二视觉定位数据返回至线程3。线程3:接收到第二视觉定位数据后,根据第二视觉定位数据融合定位结果至场景地图数据中(步骤210)。
[0084] 本发明实施例提供的位姿数据处理方法,终端根据服务器提供的第一视觉定位数据进行初始化;然后在本地使用视觉SLAM技术进行跟踪;对于跟踪过程中形成的帧序列中的关键帧,将满足周期性要求的关键帧发送至服务器进行视觉定位,得到服务器返回的第二视觉定位数据。根据第二视觉定位数据对SLAM场景地图数据进行更新。相对于单独使用视觉SLAM技术准确性低、单独使用视觉定位技术实时性差,本发明实施例,在服务器中运行视觉定位技术,并将视觉定位技术融合到视觉SLAM技术的初始化阶段以及关键帧的处理中,实现上述两种视觉定位技术的融合方案。服务器中运行的视觉定位技术能够提高SLAM中数据的准确性,同时,视觉SLAM技术能够实时的响应摄像机拍照得到的图像,提高了6DoF位姿计算的准确性和实时性。
[0085] 图4为本发明实施例提供的一种位姿数据处理装置的结构示意图,应用于移动终端,包括:初始化模块301、视觉跟踪模块302和调整模块303。
[0086] 初始化模块301,用于将摄像机获取的帧图像发送至服务器,根据服务器返回的第一视觉定位数据进行初始化;
[0087] 视觉跟踪模块302,用于根据初始化结果进行SLAM视觉跟踪,确定帧序列;
[0088] 调整模块303,用于对于帧序列中的关键帧,若所述关键帧满足周期性条件,则将所述关键帧发送至服务器;根据服务器返回的第二视觉定位数据,调整SLAM场景地图数据。
[0089] 在上述实施例的基础上,初始化模块301用于:
[0090] 接收服务器返回的第一视觉定位数据;
[0091] 判断所述第一视觉定位数据是否准确;
[0092] 若所述第一视觉定位数据准确,则将所述帧图像作为帧序列的首帧,根据所述第一视觉定位数据确定帧序列中首帧的位姿,以完成初始化。
[0093] 在上述实施例的基础上,初始化模块301用于:
[0094] 根据第一视觉定位数据确定重投影误差和二维2D-三维3D点对数量;
[0095] 判断所述重投影误差是否小于第一阈值,判断所述二维2D-三维3D点对数量是否大于第二阈值;
[0096] 如果所述重投影误差小于第一阈值,且所述二维2D-三维3D点对数量大于第二阈值,则判定所述第一视觉定位数据准确。
[0097] 在上述实施例的基础上,调整模块303用于:
[0098] 判断根据第二视觉定位数据得到位姿与根据视觉SLAM得到的关键帧的位姿的误差,是否小于第三阈值;
[0099] 若误差小于第三阈值,则将所述第二视觉定位数据中的三维3D点数据及二维2D-三维3D对应关系加入到SLAM场景地图数据中。
[0100] 在上述实施例的基础上,调整模块303用于:
[0101] 对添加的三维点数据添加标记,被标记的三维点数据在视觉SLAM系统中的视觉相似度计算及全局、局部优化中权重,大于所述视觉SLAM系统中其他三维点数据的权重。
[0102] 在上述实施例的基础上,初始化模块301用于:
[0103] 若误差大于所述第三阈值,则根据所述关键帧和所述第二视觉定位结果进行重新初始化。
[0104] 在上述实施例的基础上,视觉跟踪模块302用于:
[0105] 使用SLAM的前端线程,根据相邻帧之间的视觉相似性关系获得当前帧的位姿;
[0106] 若成功获得所述当前帧的位姿,则将当前帧压入帧序列。
[0107] 在上述实施例的基础上,初始化模块301用于:
[0108] 若无法成功获取所述当前帧的位姿,则返回执行初始化步骤。
[0109] 在上述实施例的基础上,调整模块303用于:
[0110] 若读取当前关键帧的时间与上一次向所述服务器发送图像帧的时间的时间差,大于第四阈值,则满足周期性条件。
[0111] 在上述实施例的基础上,视觉跟踪模块302用于:
[0112] 根据所述关键帧提取视觉特征;
[0113] 根据所述视觉特征扩展SLAM场景地图数据。
[0114] 在上述实施例的基础上,调整模块303用于:
[0115] 若在预设时间内,未收到所述服务器返回的第二视觉定位数据,则取消将根据服务器返回的第二视觉定位数据,调整SLAM场景地图数据。
[0116] 本发明实施例提供的位姿数据处理装置,初始化模块301根据服务器提供的第一视觉定位数据进行初始化;然后视觉跟踪模块302在本地使用视觉SLAM技术进行跟踪;对于跟踪过程中形成的帧序列中的关键帧,调整模块303将满足周期性要求的关键帧发送至服务器进行视觉定位,得到服务器返回的第二视觉定位数据。根据第二视觉定位数据对SLAM场景地图数据进行更新。相对于单独使用视觉SLAM技术准确性低、单独使用视觉定位技术实时性差,本发明实施例,在服务器中运行视觉定位技术,并将视觉定位技术融合到视觉SLAM技术的初始化阶段以及关键帧的处理中,实现上述两种视觉定位技术的融合方案。服务器中运行的视觉定位技术能够提高SLAM中数据的准确性,同时,视觉SLAM技术能够实时的响应摄像机拍照得到的图像,提高了6DoF位姿计算的准确性和实时性。
[0117] 本发明实施例所提供的位姿数据处理装置可执行本发明任意实施例所提供的位姿数据处理方法,具备执行方法相应的功能模块和有益效果。
[0118] 图5为本发明实施例提供的一种终端的结构示意图,该终端可以为上述实施例所示的移动终端。图5示出了适于用来实现本发明实施方式的示例性终端12的框图。图5显示的终端12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0119] 如图5所示,终端12以通用计算设备的形式表现。终端12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
[0120] 总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
[0121] 终端12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被终端12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
[0122] 系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。终端12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
[0123] 具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
[0124] 终端12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该终端12交互的设备通信,和/或与使得该终端12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,终端12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与终端12的其它模块通信。应当明白,尽管图中未示出,可以结合终端12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
[0125] 处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的位姿数据处理方法。
[0126] 本发明实施例还提供了一种计算机存储介质。本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0127] 计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0128] 计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
[0129] 可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0130] 注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈