ARKit或ARCore使用何种算法来检测平面表面?

6

我正在开发简单的AR应用程序,尝试了一下ARCore和ARKit。我对虚拟物体在现实世界中定位的精确度印象深刻,因为我使用的手机没有深度传感器或多个摄像头,所以我想知道:这些SDK采用什么算法进行平面检测?

1个回答

6
基本上,ARCore使用一种称为并发里程计和映射(COM)的技术,而ARKit使用一种称为视觉惯性里程计(VIO)的技术来理解智能手机相对于其周围真实环境的位置。
在第一阶段——运动跟踪阶段——每个智能手机结合来自RGB摄像头传感器(60fps)和来自加速度计和陀螺仪传感器(1000fps)的运动数据,使用视差公式计算高对比度特征点的位置。这些信息允许ARCore和ARKit获取虚拟相机在六个自由度(6 DoF)上的位置和方向。
下一阶段 - 场景理解 - 帮助 ARCore 和 ARKit 理解多个特征点(也称为稀疏点云)共面的位置,从而使智能手机能够找到检测到的平面所在位置。
最后一个 ARCore 阶段是光线估计,而最后一个 ARKit 阶段是渲染(你甚至不需要导入 SceneKit,因为 ARKit 包含所有必要的 SceneKit 类 - 请查看这个)。
正如您所见,制造商无需为智能手机提供多个 RGB 摄像头或深度后置摄像头,因为只需要 RGB 和 IMU 传感器就可以完成工作。

2
嘿,安迪,我喜欢你的回答,因为它很好地概括了这两种技术的工作原理,但是你有没有一份来源证明渲染是ARKit的最后阶段?在我的想法中,这并不合理,因为ARKit基本上是一个场景理解框架,与其如何呈现无关(例如,我们可以使用ARKit获取场景信息并使用Metal或Vulkan进行渲染)。 - Marcel Alves
2
嘿@MarcelAlves,请观看ARKit WWDC 2017会议(时间05:00),了解Scene Understanding之后即将推出的ARKit第三层。由于Xcode中的ARKit包含所有必要的SceneKit类,因此在制作iOS AR应用程序时甚至不需要导入SceneKit模块。https://developer.apple.com/videos/play/wwdc2017/602 - Andy Jazz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接