ARcore 导出点云进行后处理

ARcore export point cloud for postprocessing

我在 Unity 中尝试了 ARcore 示例项目 HelloAR。现在我的目标是高效导出映射点云进行后处理。

在示例 HelloAR Unity 项目中,我更改了 "PointcloudVisualizer.cs" 脚本。现在,在每次更新时,我都会将当前的点云复制到 Vector4 列表中。

Frame.PointCloud.CopyPoints(pointcloud_temp);
pointcloud_all.AddRange(pointcloud_temp);

然后我创建了一个导出按钮,它从 "pointcloud_all" 列表中创建了一个文本文件。

  1. 这是从 ARcore 导出点云的正确方法吗?还是我错过了 api 中更简单的功能?
  2. 我说的对吗,在 Frame.PointCloud 中只保存了当前帧的点云?整个点云保存在某个地方吗?
  3. Unity ARcore vector4 具有作为第四部分的置信度。这是如何衡量的?低值比高值好吗?
  4. 有人使用过 ARcore 映射并给我一些建议吗?
  5. 在下一步中,我会将来自房间的 ARcore 点云与真实的 3d 激光扫描点云进行比较。有人已经这样做并取得了一些成果吗?

我正在使用: ARCore SDK v1.1.0 和 Unity 2017.4.0f1

  1. 您对后处理的定义是什么?您是在尝试 运行 在您的应用 运行 运行时进行额外处理,还是在尝试下载数据以在您的计算机上本地播放?如果是前者,则不应写入文本文件。请记住,位置是相对于相机变换的。
  2. 是的,点云是相对于每一帧的,没有全局点云(或全局网格)支持(还没有?)
  3. 它基于 ARCore 计算的一些启发式算法。越高越好。 (将其视为百分比,我 90% 确定这是一个有效的点云点)。
  4. 您要重建房间吗?你想实时做吗?这与自动驾驶汽车中使用的激光雷达系统存在同样的问题。本质上,如果您在连续帧中的同一点看到多个云点,则该点是真实的 likely-hood 很高(可能与 ARCore 使用的启发式算法相同)。
  5. 啊,这回答了上面的几个问题。最困难的部分是将您的 cloud-point 生成的房间版本与您的 lidar-scanned 表示对齐。但除此之外,除了单相机 visual-inertial 里程计会给你比 lidar-based 扫描更嘈杂的点之外,你应该能够将一个与另一个匹配,但有一些错误