英语原文共 10 页,剩余内容已隐藏,支付完成后下载完整资料
小型AR工作空间的并行跟踪与映射
Georg Klein David Murray
Active Vision Laboratory Department of Engineering Science University of Oxford
摘要
本文提出了一种在未知场景下,估计摄像机姿态的方法。虽然之前已经尝试采用机器人探测中开发的SLAM算法,但我们提出了一个专门设计的系统,用于在一个小的AR工作空间中跟踪手持相机。我们建议将跟踪和映射分为两个单独的任务,在双核计算机上采用多线程并行处理:一个线程处理自动跟踪不稳定的手持运动的任务,而另一个线程从先前观察的视频中生成点特征的三维图。这就要使用到不常用的与实时操作相关的计算代价高昂的批量优化技术:其结果是生成具有数千个地标的详细地图的系统,可以以帧速率跟踪这些地标,其准确性和鲁棒性与基于模型的最新系统相媲美。
1 介绍
大多数增强现实(AR)系统都事先了解用户的环境,即某种形式的地图。这可能是一个城市的地图,需要维护的组件的CAD模型,甚至是场景中已知的稀疏基准地图。然后,该应用程序允许用户根据有关该模型的主要部分(例如,“该位置感兴趣”或“从该组件中移除该物体”)的事先信息与该环境进行交互。如果提供的地图或模型是全面的,可以直接从中进行注册,这是基于相机的AR跟踪的一种方法。
不
幸的是,综合地图中这往往是不可行的,往往只有一个感兴趣的对象的小地图—例如,一个房间中的一个物理对象或一个基准标记。然后跟踪被限制在某些传感器可以测量这个已知特征的时间内,这限制了记录的范围和质量。这导致了一类技术的发展,称为可扩展跟踪[22,14,4,29,2],在这种技术中,系统试图将以前未知的场景元素添加到初始地图中,然后即使原始地图超出感应范围,这些技术也会提供注册。在[4]中,初始映射是最小的,仅由提供的MET-RIC比例的模板组成;此单目SLAM算法的后续版本现在可以在没有此初始化模板的情况下运行。
可扩展跟踪的逻辑扩展是在没有任何事先映射的场景中进行跟踪,这是本文的重点。具体来说,我们的目标是在没有任何已知对象或初始化目标的情况下,在未知的场景中跟踪校准手持摄像头,同时构建此环境的地图。一旦建立了一个基本的地图,它就被用来将虚拟对象插入到场景中,并且这些对象应该准确地注册到环境中的真实对象中。
由于我们不使用已知的地图,系统对用户环境没有深入的了解,这就除去了许多任务。
图1:系统的典型操作:这里,跟踪的桌面。在网格生成的地图包含近3000个点特征,系统试图在当前的“帧”中找到1000个。660个成功的观测结果显示为点。图中还显示了地图的主要平面,绘制成一个网格,虚拟人物可以在网格上交互。这个 “帧”在18毫秒内被跟踪。
基于AR的应用程序。为用户提供有意义的扩充的一种方法是雇佣一个远程专家[4,16],他可以对生成的地图进行注释。在本文中,我们采用了一种不同的方法:我们将生成的地图视为可以创建虚拟模拟的沙盒。特别是,我们从映射点估计一个主平面(一个虚拟地平面),如图1所示,并允许用虚拟字符填充。本质上,我们希望将任何平坦(纹理合理)的表面转化为虚拟现实模拟的游戏场地(在这个阶段,我们开发了一款简单但快节奏的动作游戏)。然后,手持摄像机成为一个观看设备和一个用户界面组件。
为了进一步为用户提供与模拟交互的自由,我们需要快速、准确和强大的摄像机跟踪,同时优化地图并在探索新区域时扩展地图。这是一个具有挑战性的问题,为了稍微简化任务,我们对要跟踪的场景施加了一些限制:它应该大部分是静态的,即不可以改变外形的,并且应该很小。我们的意思是指,用户将大部分时间花在同一个地方:例如,在办公桌上、房间的一个角落或在一栋大楼前面。我们认为这与工作区相关的AR应用程序是兼容的,其中不管怎样,用户通常被束缚在计算机上,不支持在城市周围运行之类的探索性任务。
下一节将概述所建议的方法,并将其与以前的方法进行对比。随后的章节将详细描述所使用的方法,给出结果并评估方法的性能。
2 SLAM背景下的方法概述
我们的方法可以概括为以下几点:
-
- 跟踪和映射是分开的,在两个并行线程中运行。
- 映射基于使用批处理技术(束调整)处理的关键帧。
- 地图由一对立体声(5点al-算法)密集初始化。
- 使用极线搜索初始化新点。
- 绘制了大量(数千)个点。
从以上的角度来看,将这种方法与当前最先进的方法进行比较是很有帮助的。据我们所知,两个最令人信服的在绘制手持相机时进行跟踪的系统是Davison等人[5]的和 Eade 和Drummond的[8,7]。这两个系统都可以看作是对机器人领域中为SLAM开发的算法的适应(分别是ekf-slam[27]和fastslam 2.0[17]),两者都是精确的映射方法:跟踪和映射是紧密相连的,因此当前的相机姿势和每个标志点的位置在每一个视频框架中都会一起更新。
在这里,我们认为跟踪手持相机比跟踪移动的机器人要困难得多:首先,机器人通常是在某种形式的里程表在运行;其次,机器人可以以任意较慢的速度驱动。相比之下,这种情况不适用于手持单U-lar slam,因此数据关联错误成为一个问题,并且可能会对增量系统生成的地图造成不可挽回的破坏。出于这个原因,上述两种单眼冲击波方法都需要花费大量时间来避免数据关联错误。从协方差驱动选通(active search)开始,它们必须通过联合兼容分支和绑定(jcbb)[19](在[5]情况下)或随机样本con-sensus(ransac)[10](在[7]情况下)进一步进行每种形式的二进制输入/输出。尽管做出了这些努力,但这两个系统都不能提供我们希望用于AR的健壮性。这会在跟踪和映射之间产生分裂。如果这两个过程被分离,跟踪就不再被概率地应用到地图绘制过程中,并且可以使用任何所需的鲁棒跟踪方法(这里,我们使用带有鲁棒估计的粗到细方法)。实际上,跟踪和地图之间的数据关联甚至不需要共享。此外,由于现代计算机通常具有多个处理核心,因此我们可以将跟踪和映射拆分为两个单独调度的线程。从每帧更新地图的计算负担中解脱出来,跟踪线程可以执行更彻底的图像处理,进一步提高性能。
- 进一步的相关工作
[23]和[3]分别为提高单眼冲击波的鲁棒性做出了努力。[23]用一个粒子过滤器来代替EKF,它对快速摄像机运动具有弹性;但是,映射过程无论如何都不考虑特征到特征或摄像机到特征之间的关系。[3]采用了另一种方法,将基于相关性的搜索替换为更健壮的图像描述符,大大降低了异常值测量的概率。这使得系统能够在不影响鲁棒性的情况下使用大的特征搜索区域。该系统基于无标度卡尔曼滤波器,该滤波器的标度较低(O(n 3)),且地图大小不超过几十个点。然而,重新将强度补丁描述符与更健壮的本地更改一起放置似乎有优点。
以前[11,29]曾尝试使用批处理技术进行可扩展跟踪。在学习阶段使用外部跟踪系统或基准标记对新的特征点进行三角测量,这些特征点随后可用于跟踪。[11]在培训阶段采用CLAS-SIC束调整,在以后跟踪学习的特性时,获得了令人尊敬的跟踪性能,但在学习阶段之后没有尝试扩展映射。[29]引入了一种不同的估计器,据称该估计器更为稳健和准确,但这会造成严重的性能损失,从而将系统速度降低到无法使用的水平。在最初的培训阶段之后,还不清楚后一个系统是否将会是一个继续增长的地图。
3 地图
本节描述系统对用户环境的表示。第5节将描述如何跟踪此地图,第6节将描述如何构建和更新地图。地图由一组M点特征组成,这些特征位于世界坐标系W中。每个点特征代表世界上的一个局部平面纹理斑块。地图中的第j个点(pj)在坐标系中有坐标pjW = (xjW yjW zjW 1)T 。
每个点也有一个补丁单位nj和补丁源像素的参考。地图还包含n个关键帧:这些是手持相机在不同时间点拍摄的快照。每个关键帧都有一个相关的以相机为中心的坐标帧,表示第i个关键帧的ki。这个坐标系和世界之间的转换就是ekiw。每个关键帧还存储一个四级灰度8bpp图像金字塔;零级存储完整的640times;480像素的相机快照,这是在80times;60像素的情况下细分到三级。
4 跟踪
本节介绍基于点的跟踪系统的操作,假设已经创建了三维点的地图。跟踪系统接收来自手持摄像机的图像,并保持相对于构建的地图的摄像机姿态的实时估计。利用这个估计,可以在视频帧的顶部绘制增强的图形。在每个帧上,系统执行以下两个阶段的跟踪过程:
从相机获取新的帧,并从运动模型生成先前的姿态估计。
- 根据帧先前的姿态估计,将地图点投影到图像中。
- 在图像中搜索少量(50)最粗比例特征。
- 从这些粗略匹配中更新相机姿势。
- 在图像中重新投影和搜索更多(1000)个点。
- 根据找到的所有匹配项计算出帧的最终姿势估计。
5.1 图像采集
图像是从一个配备了2.1毫米广角镜头的单脑Fire-I摄像机拍摄的。相机以30Hz的频率提供640times;480像素的YUv411帧。这些帧被转换为8bp灰度,用于跟踪,以及用于增强显示的RGB图像。
跟踪系统构建一个四级图像金字塔,如第4节所述。此外,我们在每个金字塔层次上运行了快速-10[24]角探测器。这是在没有非最大抑制的情况下完成的,从而产生一个类似斑点的角区域簇。
估计帧的相机姿势的先验值。我们使用衰减速度模型;这类似于一个简单的alpha;-beta;等速模型,但是缺少任何新的测量,估计的相机会减慢并最终停止。
5.2 摄像机的姿态和投影
为了将地图点投影到图像平面中,首先将它们从世界坐标系转换到以相机为中心的坐标系C。这是通过左乘4times;4矩阵(表示相机姿势)实现的。
下标c w可以读作“来自帧w的帧c”。矩阵ECW包含一个旋转和一个平移组件,并且是三维刚体变换集Lie Group SE(3)的成员。
要将相机帧中的点投影到图像中,需要使用经过校准的相机投影模型camproj():
我们采用针孔相机投影功能,支持镜头呈现桶形径向变形。转换R→R′的径向畸变模型是[6]的FOV模型。焦距(fu,fv)、主点(u0,v0)和畸变(omega;)的Cam-era参数假定已知:
跟踪(以及地图平)系统的一个基本要求是能够区分等式2对摄像机姿态ECW变化的影响。相机姿势的更改通过左乘4times;4相机运动M表示:
5.3 补丁搜索
为了在当前帧中找到一个地图点P,我们围绕该点的预测图像位置执行固定范围的图像搜索。要执行此搜索,必须首先扭曲相应的面片,以考虑面片的第一次观察和当前相机位置之间的视点更改。我们执行一个仿射弯曲,其特征是弯曲矩阵A,其中
和 {us, vs} 对应于补丁的源金字塔级别中的水平和垂直像素位移,uc,vc对应于当前相机帧的零(全尺寸)金字塔级别中的像素位移。通过将源关键帧金字塔级别中的单位像素位移反向投影到面片平面上,然后将其投影到当前(目标)帧中,可以找到该矩阵。执行这些投影可以确保扭曲的ma-trix不仅补偿(到一阶)透视和比例的变化,而且补偿图像中透镜畸变的变化。矩阵A的行列式用来决定在当前帧的哪个金字塔级别搜索补丁。a的终止点对应于面积,单位为平方像素/单个。
源像素将占据全分辨率图像,DET(A)/4是金字塔一级的对应区域,依此类推。选择焦油金字塔L级,使DET(A)/4L最接近统一,也就是说,我们试图在金字塔的层面上找到最接近其规模的补丁。
在某些情况下,特别是在高金字塔级别,整数像素位置不够精确,无法产生平滑的跟踪结果。定位补丁位置可以通过执行迭代误差最小化来进行优化。我们使用了[1]的逆合成方法,将过度翻译和平均补丁强度差异最小化。然而,对于跟踪的每个补丁来说,这样做的计算代价太高了。
5.4 姿态更新
给定一组成功的补丁观测,就可以计算出相机姿态的最新信息。每次观察都会产生一个发现的补丁位置(u_v_)t(参考零级像素单位),并假设测量噪声为sigma;2=22L乘以2times;2单位矩阵(同样是零级像素单位)。通过最小化重投影误差的鲁棒目标函数,可以自动计算姿态更新:
其中 ej 是重射误差向量:
Obj(·, sigma;T ) 是Tukey双权重目标函数[13]和sigma;t,是从所有残差中得出的分布标准衰减的稳健(基于中位数)估计。我们使用了十个重新加权的最小二乘迭代来允许M估计从任何一组测量值收敛。
5.5 两级粗到细跟踪
为了提高跟踪系统对快速相机加速的恢复能力,补丁搜索和姿势更新进行了两次。最初的粗略搜索只搜索50个地图点,这些地图点出现在当前帧图像金字塔的最高级别,并且在大搜索半径范围内执行此搜索(使用亚像素细化)。然后根据这些测量值计算新的姿势。之后,剩余的1000个可能可见的图像补丁被重新投影到图像中,现在补丁搜索在一个更紧密的搜索区域执行。子像素细化只在补丁的高级子集上执行。最后的帧姿态是从粗糙和精细的图像测量集计算得到的。
5.6 跟踪质量和故障恢复
尽管努力使跟踪尽可能稳健,但最终的跟踪失败是不可避免的。因此,跟踪系统使用成功的特征观测分数来估计每帧的跟踪质量。
如果这个分数低于某个阈值,跟踪质量就被认为很差。跟踪照常进行,但系统
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[441894],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。