ARCore 或 ARKit 如何生成实时视频的实时增强?

sme*_*eeb 5 computer-vision augmented-reality 3d-reconstruction structure-from-motion arkit

大约一年前,我对构建自己的准系统增强现实 (AR) 库很感兴趣。我的目标是能够拍摄某物(任何真实的东西)的视频,然后能够在视频中放置增强(实际上并不存在的 3D 对象)。例如,我可能会拍摄我的客厅的视频,然后通过这个 AR 库/工具,我可以添加一个坐在咖啡桌上的怪物的 3D 头像。因此,在对这个主题或计算机视觉总体一无所知的情况下,我决定采用以下策略:

  1. 使用 3D 重建工具/技术(Structure from Motion,或 SfM)建立视频中所有内容的 3D 模型(例如我客厅的 3D 模型)
  2. 分析平面的 3D 模型(准确地说是 3D 点云)
  3. 添加我自己的逻辑来确定将哪些对象(3D 模型,例如 Blender 文件等)放置在视频 3D 模型的哪个区域(例如站在咖啡桌顶部的怪物)
  4. 最难的部分:推断视频每一帧中的摄像机方向,然后根据摄像机所指向的方向确定如何正确定向增强(例如怪物),然后将增强的 3D 模型“合并”到主模型中视频3D模型。这意味着当摄像机在我的客厅周围移动时,怪物似乎仍然站在我咖啡桌上的同一个地方。我从来没有找到一个好的解决方案,但我想如果我能到达第四步,我就会找到一些解决方案。

经过几个艰难的几周(计算机视觉很难!),我得到了以下一系列工具,并取得了不同程度的成功:

  1. 我能够将视频的样本帧(例如在客厅里走动时拍摄的视频)输入OpenMVG并生成稀疏点云PLY 文件/模型
  2. 然后我能够将该 PLY 文件输入MVE并生成它的密集点云(再次是 PLY 文件)
  3. 然后,我将密集点云和原始帧输入mvs-texturing,以生成视频的纹理 3D 模型

大约 30% 的时间里,这条管道运行得非常好!这是我家前面的模型。您可以看到我的 3D 前院、我儿子的 3D 剧场,甚至可以看到门窗!

在此输入图像描述

大约 70% 的情况下,管道会因难以辨认的错误而失败,或者生成看起来像抽象画的东西。此外,即使涉及自动化脚本,该工具也需要大约 30 分钟才能生成最终的 3D 纹理模型......非常慢。


好吧,看来Google ARCodeApple ARKit抢先了我!这些框架可以从您的智能手机获取实时视频源,并准确地完成我大约一年前一直试图完成的任务:实时 3D AR。与 Pokemon Go 非常非常相似(但更先进且更具互动性)。拍摄您客厅的视频,瞧,一个动画怪物坐在您的咖啡桌上,您可以与它互动。非常非常非常酷的东西。

我的问题

我嫉妒!当然,谷歌和苹果可以聘请一些最优秀的 CV/3D 侦察人员,但我仍然嫉妒!!!我很好奇是否有任何核心 AR/CV/3D 侦察专家,他们要么拥有内部知识,要么只是非常了解 AR 领域,以至于他们可以谈论幕后正在使用什么样的工具/管道/技术这里使用 ARCode 或 ARKit。因为我几乎绞尽脑汁试图自己解决这个问题,但我失败了。

  • 我的策略(如上所述)大致准确还是偏离基地?(再次:视频的 3D 侦察 -> 表面分析 -> 逐帧相机分析,模型合并)?
  • 什么样的工具/库/技术在这里发挥作用?
  • 他们如何实时完成此任务,而如果我的 3D 侦察有效,则需要 30 多分钟才能处理和生成?

提前致谢!

Phi*_*Lab 5

我理解你的嫉妒,作为一名计算机视觉工程师,我以前经历过很多次:-)。

\n\n

移动设备上 AR 的关键是计算机视觉和惯性跟踪(手机陀螺仪)的融合。\n引用Apple 的 ARKit 文档

\n\n
\n

ARKit 使用一种称为视觉惯性里程计的技术。此过程将来自 iOS 设备\xe2\x80\x99s 运动传感硬件\n 的信息与设备\xe2\x80\x99s\n 相机可见场景的计算机视觉分析相结合。

\n
\n\n

引用Google 的 ARCore 文档

\n\n
\n

视觉信息与设备 IMU 的惯性测量相结合,以估计相机随时间相对于世界的姿势(位置和方向)。

\n
\n\n

这种方法的问题在于您必须了解有关相机和 IMU 传感器的每一个细节。它们必须一起校准和同步。难怪苹果比普通开发者更容易。这也是谷歌只支持少数手机进行 ARCore 预览的原因。

\n