一种视觉定位数据处理方法、装置、终端及计算机可读存储介质转让专利
申请号 : CN201910579061.0
文献号 : CN110310326B
文献日 : 2021-07-02
发明人 : 刘赵梁 , 陈思利 , 张永杰
申请人 : 北京百度网讯科技有限公司
摘要 :
权利要求 :
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中任一所述的视觉定位数据处理方法。
说明书 :
一种视觉定位数据处理方法、装置、终端及计算机可读存储
介质
技术领域
背景技术
姿,可称之为位姿。
合的点云数据进行匹配,得到摄像机的6DoF位姿。视觉SLAM技术通过比较连续拍摄的帧图
像间的视觉特征相似关系,得到摄像机的6DoF位姿。
在移动终端上实时运行,但是无法获得绝对空间内的6DoF位姿且常发生位姿漂移现象,准
确性低。
发明内容
跟踪;对于跟踪过程中形成的帧序列中的关键帧,将满足周期性要求的关键帧发送至服务
器进行视觉定位,得到服务器返回的第二视觉定位数据。根据第二视觉定位数据对SLAM场
景地图数据进行更新。相对于单独使用视觉SLAM技术准确性低、单独使用视觉定位技术实
时性差,本发明实施例,在服务器中运行视觉定位技术,并将视觉定位技术融合到视觉SLAM
技术的初始化阶段以及关键帧的处理中,实现上述两种视觉定位技术的融合方案。服务器
中运行的视觉定位技术能够提高SLAM中数据的准确性,同时,视觉SLAM技术能够实时的响
应摄像机拍照得到的图像,提高了6DoF位姿计算的准确性和实时性。
附图说明
具体实施方式
于描述,附图中仅示出了与本发明相关的部分而非全部结构。
为可穿戴设备,如可穿戴头盔,如果可穿戴设备连接有线缆,则可通过有线方式与服务器
020进行通信。移动终端010还可以为智能手机、平板电脑、智能眼镜等电子设备,上述电子
设备可通过无线方式与服务器020连接。
以实现成用来提供分布式服务的多个软件或软件模块,也可以实现成单个软件或软件模
块。在此不做具体限定。图1中的移动终端、网络和服务器的数目仅仅是示意性的。根据实现
需要,可以具有任意数目的终端、网络和服务器。
SLAM技术进行跟踪。在初始化以及对满足周期性条件的关键帧处理时,移动终端010将用于
初始化的帧图像或关键帧发送至服务器020。服务器020预先配置有当前场景的点云数据,
服务器020接收移动终端010发送的帧图像或关键帧时,采用视觉定位技术获取帧图像或关
键帧的视觉定位数据,并将视觉定位数据反馈至移动终端010,以便移动终端010根据服务
器020反馈的视觉定位数据完成初始化或对SLAM场景地图进行更新。
下步骤:
动终端为可穿戴设备,如智能眼镜、智能头盔等,摄像机可位于移动终端外表面,用于拍摄
用户视线方向的帧图像。可选的,摄像机可以为移动终端以外的其他设备的摄像机,如车载
摄像机、监控摄像机等,该摄像机所在设备可将拍摄到的帧图像传送到移动终端。
定位两个步骤。点云构建可通过视觉交叉矩阵结构(Structure From Motion,SFM)、激光扫
描等多种方法完成,并在系统启动前将构建出的点云及其中的视觉特征存储在云端的服务
器中。
特征提取及描述可采用尺度不变特征变换(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)等方
法。
图像为初始帧。移动终端将初始帧存储到帧序列中,并存储初始帧的位姿以及初始帧中2D
点坐标及对应的3D场景点坐标,实现初始化。
摄像机内在参数如焦距等确定。根据投影坐标(PX)与该三维坐标点在空间二维坐标(x)的
差值的绝对值,即(PX‑x)的绝对值,确定重投影误差。
二阈值,说明投影到摄像机成像平面的点对数量较多,点对数量越多说明定位数据越准确。
数据。判断新的初始帧的第一视觉定位数据是否准确。以此类推,直至得到准确的第一视觉
定位数据后,根据准确的第一定位数据进行初始化。
存储,以及首帧的位姿存储时,初始化结束。
和后端线程。其中前端线程利用相邻帧图像的视觉相似性估计当前帧的位姿;后端线程根
据前端线程提供的位姿,对局部时间窗口内或全局图像中的三维场景点及位姿进行优化,
以降低累积误差,并在关键帧中提取新的视觉特征,实现场景拓展。
刻的帧图像。可以根据当前帧以及与当前帧互为相邻帧的帧图像,之间的视觉相似性关系
获得当前帧的位姿。通过特征匹配、图像配准、光流等方法,计算相邻帧间具有相同视觉内
容的特征点之间的二维位置对应关系,并根据这些特征点的三维空间位置、二维位置对应
关系,计算当前帧的位姿。
额定的内容差异程度。
帧。
局部优化。优化过程包括:使用获取到的帧图像或者该帧图像在视觉内容上存在重叠
(overlap)的图像,对获取到的图像的位姿以及三维点数据进行优化。
期性要求,则将关键帧发送至服务器。如果该帧不符合周期性条件,则取消将该关键帧发送
至服务器。并读取帧序列中的下一帧数据。
姿、三维点以及二维三维对应关系。
定。此时重投影误差的P由视觉SLAM获得的位姿计算得到,X与x为第二视觉定位数据中的2D
坐标及3D坐标,以此计算服务器返回的第二视觉定位数据中的位姿与根据视觉SLAM得到的
位姿是否有较大差异。若二者的误差小于第三阈值,则确定差异较小,执行步骤142。若二者
的误差大于第三阈值,则确定差异较大,则执行步骤143。
场景地图数据中。能够使SLAM场景地图数据不仅包括SLAM算法得到的地图数据,还包括通
过服务器中运行的视觉定位算法得到的地图数据,即三维3D点数据及二维2D‑三维3D对应
关系。由于视觉定位算法的精确度高于SLAM算法的精确度,因此,将第二视觉定位数据中的
三维3D点数据及二维2D‑三维3D对应关系加入到SLAM场景地图数据中,能够提高SLAM场景
地图数据的可靠性。
的三维点数据添加标记,可以将视觉定位算法得到的三维点数据标记为杰出点(EXCELLENT
点),被标记的三维点数据在视觉SLAM系统中的视觉相似度计算及全局、局部优化中权重,
大于视觉SLAM系统中其他三维点数据的权重。
视觉定位数据。此时,取消将该关键帧的视觉定位结果融合到视觉SLAM场景地图数据中。
得到帧图像(步骤201)。线程1:判断SLAM是否已完成初始化(步骤202),如果未初始化,则执
行系统初始化(步骤203)。系统初始化时,将帧图像发送至服务器。服务器:服务器对接收到
的帧图像进行视觉定位(步骤204),服务器判断是否为初始帧(步骤205),若终端未初始化,
则帧图像为初始帧,得到的视觉定位数据为第一视觉定位数据;若终端已初始化,则帧图像
为非初始帧,得到的视觉定位数据为第二视觉定位数据。如果是初始帧,则将初始帧的第一
视觉定位数据返回至移动终端的线程1。
则,确定未完成初始化。判断是否SLAM是否已完成初始化(步骤202)的另一个结果分支为,
如果已经完成初始化,则执行视觉SLAM前端跟踪(步骤207),即使用SLAM前端线程估算位
姿,在使用SLAM前端线程进行跟踪时,需要从帧序列中读取上一个帧图像,根据上一个帧图
像和当前帧的视觉相似性关系获得当前帧的位姿;判断前端跟踪是否成功(步骤208)。如果
前端跟踪成功,则将当前帧压入帧序列。如果前端跟踪失败,则确定未完成初始化。当确定
未完成初始化时,下一次获取到的图像后,判断是否SLAM是否已完成初始化(步骤202)的结
果为未初始化。线程1的功能包括:进行初始化的状态认定、根据服务器返回的第一视觉定
位数据完成初始化以及执行SLAM前端线程的位姿计算。
键帧对局部时间窗口内或全局图像中的三维场景点及位姿进行优化。如果为关键帧,则一
方面在关键帧中提取视觉特征,以扩展SLAM场景地图数据。另一方面,如果该关键帧同时符
合周期性条件,则将该关键帧传输到线程3。
帧。服务器判断出关键帧不是初始帧,因此服务器将第二视觉定位数据返回至线程3。线程
3:接收到第二视觉定位数据后,根据第二视觉定位数据融合定位结果至场景地图数据中
(步骤210)。
列中的关键帧,将满足周期性要求的关键帧发送至服务器进行视觉定位,得到服务器返回
的第二视觉定位数据。根据第二视觉定位数据对SLAM场景地图数据进行更新。相对于单独
使用视觉SLAM技术准确性低、单独使用视觉定位技术实时性差,本发明实施例,在服务器中
运行视觉定位技术,并将视觉定位技术融合到视觉SLAM技术的初始化阶段以及关键帧的处
理中,实现上述两种视觉定位技术的融合方案。服务器中运行的视觉定位技术能够提高
SLAM中数据的准确性,同时,视觉SLAM技术能够实时的响应摄像机拍照得到的图像,提高了
6DoF位姿计算的准确性和实时性。
对于跟踪过程中形成的帧序列中的关键帧,调整模块303将满足周期性要求的关键帧发送
至服务器进行视觉定位,得到服务器返回的第二视觉定位数据。根据第二视觉定位数据对
SLAM场景地图数据进行更新。相对于单独使用视觉SLAM技术准确性低、单独使用视觉定位
技术实时性差,本发明实施例,在服务器中运行视觉定位技术,并将视觉定位技术融合到视
觉SLAM技术的初始化阶段以及关键帧的处理中,实现上述两种视觉定位技术的融合方案。
服务器中运行的视觉定位技术能够提高SLAM中数据的准确性,同时,视觉SLAM技术能够实
时的响应摄像机拍照得到的图像,提高了6DoF位姿计算的准确性和实时性。
的终端12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
储器28和处理单元16)的总线18。
例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)
总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动
的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用
于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘
(例如CD‑ROM,DVD‑ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可
以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,
该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施
例的功能。
程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常
执行本发明所描述的实施例中的功能和/或方法。
一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通
信可以通过输入/输出(I/O)接口22进行。并且,终端12还可以通过网络适配器20与一个或
者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,
网络适配器20通过总线18与终端12的其它模块通信。应当明白,尽管图中未示出,可以结合
终端12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、
外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、
磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储
介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机
磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或
闪存)、光纤、便携式紧凑磁盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的
任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介
质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可
读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于
由指令执行系统、装置或者器件使用或者与其结合使用的程序。
还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以
完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部
分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在
涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或
广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提
供商来通过因特网连接)。
重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行
了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还
可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。