深度 | 苹果略胜微软一筹,为什么说 ARKit 是 AR 的最好选择?

原文:Why is ARKit better than the alternatives?
作者:Matt Miesnieks
翻译:陈冬
审校:苏宓

苹果在今年的 WWDC 上发布的 ARKit 对增强现实领域(Augmented Reality)产生了巨大的影响。开发者首次发现,一款强大并广泛可用的 AR SDK“恰好”适用于他们的 App。它不需要对标记、初始化、深度摄像机和专用的创建工具进行修改。不出所料,这引发了一阵 Demo 热潮。但是大部分开发者都不知道 ARKit 的工作原理,也不了解其优于其他 SDK 的具体原因。揭开 ARKit 背后的原理有助于发现如今 ARKit 的局限之处、完善内容、以及帮助我们预测 Android 和头显(VR 或 AR)等设备何时会有类似的功能出现。

本文笔者已经从事 AR 行业九年了,曾经也搭建过与 ARKit 完全一样的技术(但不幸的是当时并没有与之相对应的硬件支持)。关于 AR 系统是如何搭建的以及为何这样搭建,作为一名业内人士,我也有着自己的看法。

这篇博客是为那些掌握一些科学技术但不是计算机视觉工程师的人而写的。从科学的角度看,我知道我所做的一些简化不是百分百的准确,但也希望能够帮助人们在已有的基础上有更深一层地理解。

ARKit 是基于什么样的技术进行搭建的?

从技术角度来看,ARKit 是一种具有简单的 2D 平面检测功能的视觉惯性测距系统(Visual Inertial Odometry,简称 VIO)。VIO 意味着可以通过软件实时追踪用户的空间位置(用户在空间上的 6dof 姿势),即在每帧刷新之间重新计算用户的位置,速度为每秒 30 次及以上。这些计算是并行完成两次。通过视觉(摄像)系统将现实世界中的一个点与摄像机传感器上的一帧像素相匹配,从而追踪用户的姿势。惯性导航系统也可以追踪用户的姿势(用户的加速度计和陀螺仪跟踪统称为惯性测量单元,或者叫 IMU)。接下来,卡尔曼滤波器结合两个系统的输出结果,决定哪一个系统提供的估测更接近用户的“真实”位置(地面实况)并通过 ARKit SDK 更新位置。VIO 系统追踪用户的 iPhone 在六维空间里的移动,好比用户汽车里的里程表测量车的行驶距离一样。6 维是指 xyz 方向上的三维运动(移动)加上俯仰/偏转/滚动(旋转)。

VIO 带来的最大好处是 IMU 的读数大约为 1000 每秒并且基于加速度(用户的移动)。曾经使用的航位推算法用于测量 IMU 读数之间的设备运动,但这种方法推算是一种猜测,就像如果我让你向前走一步,然后猜测走了多远一样,此时会用航位推算法来估计距离。稍后我会介绍如何准确地进行猜测。惯导系统中的误差会随时间累积,所以 IMU 帧率越长,惯导系统从视觉系统中复位后的时间越长,追踪位置距离真实位置偏差就越多。

视觉/光学测量使用摄像机的帧率,通常为 30fps 并且依赖距离(不同的场景帧率也有所不同)。光学系统通常随着距离的增大误差也不断的增大(时间也会有轻度影响),所以用户运动得越远,误差就越大。

好消息是每个系统的优点都抵消了另一个系统的缺点。

所以视觉和惯性跟踪系统是基于完全不同的测量系统,,没有相互依赖。这意味着可以盖住摄像机或者只看到一个具有很少光学特征的场景(比如白墙),而惯性系统可以为一些帧中“携带载荷”。或者设备在完全静止的条件下,视觉系统可以呈现出一个比惯性系统更加稳定的姿态。Kalman 波器不断地选择最佳姿态,从而实现稳定跟踪。

到目前为止一切顺利,但有趣的是 VIO 系统已经存在很多年并在业界广泛认可,并且在应用市场已经有相当一部分应用。所以苹果使用 VIO 并不代表 VIO 本身怎样。我们要关注的是苹果系统为何如此健壮。

ARKit 的第二个关键点是简单的平面检测。有了“地面”你才能在上面建立内容,否则就会像在太空中一样乱浮动。“地面”是从光学系统检测到的特征(就是你在演示中看到的小点),而任意三点构成一个平面,通过算法将这些平面平均化,通过足够多的平面就可以估计出真实的平面位置。另外,这些点通常被称为“点云”,这是一个很容易混淆的术语。这些点都是用于光学跟踪的稀疏点云。稀疏的点云花费更少的内存和 CPU 时间来追踪,并且在惯导系统的支持下,光学系统追踪所需的点数量很少。这是一种不同于密集点云的点云,它看起来也接近真实。(注意一些追踪器使用密集点云来进行追踪, 所以这就更加混乱)

关于一些误解的说明

顺便说一下,我见过有人将 ARKit 比做 SLAM,或用 SLAM 来指代追踪。需要澄清的是,SLAM 是一个像“多媒体”一样非常宽泛的术语。追踪本身则是一个更加通用的术语而里程计则是更加具体的。但在 AR 相关的实际使用过程中可以通用,这很

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程介绍 本套课程从技术理念到项目实践,教大家系统掌握ARKit技术开发,随心打造iOS端AR增强现实应用。由一开始的开发环境搭建,到Unity ARKit Plugin、ARFoundation ARKit等不同时期技术的讲解。从平面模型放置、识别图片、手势交互、3D物体识别、面部AR贴纸、光照估计、环境探针、多人AR技术,甚至包含ARKit3.0的动作捕捉技术等。除了以上课程内容,更加入了随着技术更新与时俱进更新的ARKit连载技术教学内容。课程收益 轻松理解ARKit的技术原理,从零到一创建自己的第一个AR项目。学习UnityARKit Plugin经典技术,了解ARKit中的常见概念和原理。学会在 ARFoundation 中使用ARKit,进行企业级AR项目开发。学会如何在AR项目里播放模型动画,通过触屏手势交互实现模型的旋转和缩放。 了解ARKit的图片识别,掌握AR卡片、AR书籍的实现方法。 学会使用面部增强技术,实现热门短视频应用的AR贴纸效果,实现面部表情追踪。学会使用ARKit物体检测技术,实现3D物体识别,可以广泛应用于工业、建筑、古董、玩具手办、艺展览等不同场景。学习ARKit中的经典交互案例,优化AR项目的用户体验。熟练使用环境纹理、光照估计技术,让AR内容随当前现实场景自动变化调节,看起来更加真实。基于WorldMap、CollaborativeSession AR技术,实现AR场景的持久化及多人AR体验效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值