ARCore或ARKit如何生成实时视频的实时扩充?

时间:2017-08-31 14:55:16

标签: computer-vision augmented-reality arkit 3d-reconstruction structure-from-motion

大约一年前,我有兴趣建立自己的准系统增强现实(AR)库。我的目标是能够拍摄某些内容的视频(实际上是真的),然后才能在视频中放置增强(实际上并不存在的3D对象)。例如,我可能会拍摄我的起居室的视频然后,通过这个AR库/工具,我可以添加一个坐在我的咖啡桌顶部的怪物的3D头像。因此,一般都不了解主题或计算机视觉,我已经选择了以下策略:

  1. 使用3D重建工具/技术(Motion from Motion或SfM)构建视频中所有内容的3D模型(例如我客厅的3D模型)
  2. 分析平面的3D模型(确切地说是3D点云)
  3. 添加我自己的逻辑,以确定放置在视频3D模型的哪个区域(例如站在咖啡桌顶部的怪物)中的对象(3D模型,如Blender文件等)
  4. 最难的部分:在视频的每一帧中推断相机方向,然后根据相机指向的内容确定如何正确定位增强(例如怪物),然后“合并”增强的3D模型进入主视频3D模型。这意味着当相机在我的客厅里移动时,怪物似乎仍然站在我咖啡桌的同一个地方。我从来没有找到一个很好的解决方案,但想到我是否可以进入第四步,我会找到一些解决方案。
  5. 经过几个艰难的几个星期(计算机视觉很难!)我得到了以下管道工具,并取得了不同的成功:

    1. 我能够将视频的样本帧(例如,在我的客厅里走动时拍摄的视频)提供到OpenMVG并生成稀疏的pointcloud PLY文件/模型< / LI>
    2. 然后我就能将该PLY文件输入MVE并生成密集点云(再次是PLY文件)
    3. 然后我将密集的pointcloud和原始帧送入mvs-texturing以生成我视频的纹理3D模型
    4. 大约30%的时间,这条管道工作得惊人!这是我家前面的模型。你可以看到我的3D前院,我儿子的3D剧场,甚至有点/有点儿可以看到门窗!

      enter image description here

      大约70%的时间流水线因无法解决的错误而失败,或产生看起来像抽象画的东西。此外,即使使用自动脚本编写,工具也需要大约30分钟才能生成最终的3D纹理模型......所以非常慢。

      好吧,看起来Google ARCodeApple ARKit打败了我!这些框架可以从您的智能手机上获取实时视频,并完成完全一年前我想要完成的事情:实时3D AR。与Pokemon Go非常相似(但更高级和互动)。拍摄你客厅的视频,瞧,一个动画怪物坐在你的咖啡桌上,你可以与之互动。非常非常非常酷的东西。

      我的问题

      我很嫉妒!当然,Google和Apple可以聘请一些最佳的CV / 3D侦察员,但我仍然嫉妒!我很好奇是否有任何核心的AR / CV / 3D侦察专家,他们要么掌握内幕知识,要么只知道AR风景,他们可以说出幕后正在进行什么样的工具/管道/技术这里有ARCode或ARKit。因为我几乎打破了我的大脑试图自己解决这个问题,而且我失败了。

      • 我的策略(如上所述)是棒球准确的,还是远离基地? (再次:视频的3D重建 - &gt;表面分析 - &gt;逐帧相机分析,模型合并)?
      • 这里有什么样的工具/图书馆/技术?
      • 他们如何在实时中实现这一目标,而如果我的3D侦察工作甚至有效,则需要30多分钟才能完成处理&amp;产生?

      提前致谢!

1 个答案:

答案 0 :(得分:4)

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

移动设备上AR的关键是计算机视觉和惯性跟踪(手机的陀螺仪)的融合。 引自Apple's ARKit docu

  

ARKit使用一种称为视觉惯性测距法的技术。这个流程   结合了iOS设备运动传感硬件的信息   用计算机视觉分析设备可见的场景   相机。

引自Google's ARCore docu

  

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

这种方法的问题在于您必须了解有关相机和IMU传感器的每一个细节。它们必须经过校准并同步。难怪苹果公司比普通开发商更容易。这也是Google仅支持couple of phones进行ARCore预览的原因。