3

我一直在探索使用 Google 的 Tango 项目进行 3D 扫描和重建。

到目前为止,我尝试过的一些应用程序,例如Project Tango ConstructorVoxxlr,在短时间内做得很好(我很乐意获得其他潜在扫描应用程序的建议)。问题是,不管应用程序是什么,如果我运行它足够长的时间,扫描会累积如此多的漂移,最终一切都会错位并毁掉。

每当我将设备指向无特色的空间(如空白墙)时,或者当我将相机指向上方以扫描天花板时,也会发生很大的漂移。设备会暂时迷失方向,从而破坏未来扫描的对齐方式。无论如何,让设备知道它在哪里以及它指向什么对我来说都是一个问题。

我知道一些 3D 扫描应用程序在一定程度上使用了区域学习,因为这些应用程序在启动应用程序时要求我允许区域学习。我认为这是为了帮助定位设备并稳定其姿势(如果这不准确,请纠正我)。

从我尝试过的应用程序中,我从未获得加载我自己的 ADF 的选项。我的理解是,加载经过仔细学习且功能丰富的 ADF 有助于更好地锚定设备姿势。允许用户加载自制 ADF 的应用程序如此匮乏是否有原因?很难/不可能做到吗?当前的应用程序是否已经最佳地利用区域学习来进行本地化,我提供的任何自记录 ADF 是否可以做得更好?

我将不胜感激有关此主题的任何指针/说明-在 3D 扫描和重建中使用 ADF 的方法和功效没有明确记录。最终,我正在寻找一种使用 Tango 进行高质量 3D 扫描的方法。如果图片中不需要 ADF,那也没关系。如果答案是我正在努力完成一项不可能完成的任务,我也想知道。

如果还没有现成的解决方案,我也愿意尝试自己处理点云,尽管我觉得说起来容易做起来难。

4

1 回答 1

3

不幸的是,Tango 目前没有任何应用程序可以做到这一点,您需要为此开发自己的应用程序。万一您想知道如何在代码中执行此操作,请按以下步骤操作:首先,应打开应用程序的学习模式。当我们打开学习模式时,系统会开始记录一个 ADF,它允许应用程序看到它已经到过的现有区域。对于我们保存的每个点云,我们也应该保存与点相关的时间戳。

在四处走走收集积分后,我们需要从 API 调用 TangoService_saveAreaDescription 函数。这一步对系统中保存的每个关键姿势进行了一些优化。保存完成后,我们需要使用点云保存的时间戳再次查询优化姿势,为此,我们使用函数TangoService_getPoseAtTime。在这一步之后,你会看到点云设置为正确的变换,点会重叠在一起。

就像对步骤的回顾:

  1. 在 Tango 配置中打开学习模式。

  2. 四处走走,保存点云以及与点云关联的时间戳。

  3. 调用保存 TangoService_saveAreaDescription 函数。

  4. 保存完成后,调用 TangoServcie_getPoseAtTime 根据点云保存的时间戳查询优化后的位姿。

于 2016-03-21T22:15:33.067 回答