为图片添加维度

平台专用指南

借助 ARCore 中的 Augmented Images API,您可以构建可在用户环境中检测和增强 2D 图像(例如海报或产品包装)的 AR 应用。

您需要提供一组参考图片。ARCore 使用计算机视觉算法从每张图像的灰度信息中提取特征,并将这些特征的表示形式存储在一个或多个增强图像数据库中。

在运行时,ARCore 会在用户环境中的平坦表面上搜索这些特征。这样一来,ARCore 就能在现实世界中检测这些图像,并在未提供图像的情况下估计它们的位置、方向和大小。

功能

ARCore 可以同时跟踪多达 20 个图像。ARCore 不会同时检测或跟踪同一图像的多个实例。

每个增强图像数据库最多可以存储 1,000 张参考图像的信息。数据库数量没有限制,但在任何给定时间只能有一个数据库处于活跃状态。

可以在运行时向增强图像数据库添加图像,每个数据库最多只能包含 1000 张图片。您可以通过网络连接下载之前创建的数据库。

添加图片时,可以提供要检测的图片的物理尺寸。这样做可以提高图片检测性能。

  • 如果未提供实际尺寸,ARCore 会估算尺寸,并随着时间的推移而不断优化此估算值。

  • 如果提供了物理尺寸,ARCore 会使用提供的尺寸并估算图像的位置和方向,忽略表观或实际尺寸与提供的物理尺寸之间的任何差异。

ARCore 可以响应和跟踪符合以下条件的图像:

  • 图片固定不动,如墙上悬挂的印刷品或桌上的杂志

  • 动态图片,如路过的公交车上的广告,或用户转动双手时拿着的平面物体上的图片。

ARCore 开始跟踪图像后,它会为每帧提供图像位置和方向的估算值。ARCore 会在收集更多数据的过程中不断优化这些估计。

一旦检测到图像,ARCore 就会继续“跟踪”图像的位置和方向,即使图像因用户移动设备而暂时移出相机视图也是如此。发生这种情况时,ARCore 会假定图像的位置和方向是静态的,并且图像本身不会在环境中移动。

所有跟踪都是在设备上进行的。检测和跟踪图片无需互联网连接。

要求

图片必须

  • 至少填满相机帧的 25%,以便最初进行检测。

  • 平坦(例如,不能起皱或卷绕在瓶子上)。

  • 确保摄像头清晰可见。因此不应部分遮挡,也不应以高度倾斜的角度查看视图,也不应在相机因运动模糊导致移动速度过快时看到视图。

CPU 利用率和性能注意事项

启用增强图像可能会增加 ARCore 的 CPU 利用率,具体取决于已启用的 ARCore 功能。您可以考虑在 AR 体验不需要时停用所有未使用的功能。这会为您的应用提供更多 CPU 周期,并提高热性能和电池续航时间。

如需了解详情,请参阅性能注意事项

最佳实践

关于选择参考图片的提示

  • 图片的分辨率应为至少 300 x 300 像素。使用高分辨率图片并不能提高性能。
  • 参考图片可以采用 PNG 或 JPEG 文件格式提供。
  • 不使用颜色信息。彩色图片和等效的灰度图片都可以用作参考图片,或供用户在运行时使用。
  • 避免过度压缩图片,因为这会干扰特征提取。
  • 避免使用包含大量几何图形或特征非常少的图片(例如条形码、二维码、徽标和其他线条图),因为这会导致检测和跟踪性能不佳。
  • 避免使用具有重复模式的图片,因为这也可能导致检测和跟踪出现问题。
  • 使用 ARCore SDK 中包含的 arcoreimg 工具可以获取每张图像的质量得分,介于 0100 之间。我们建议质量得分不低于 75。以下是两个示例:

    示例图片 1 示例图片 2
    得分:0 得分:100
    包含重复的几何特征 足够的分辨率;包含许多独特特征

关于创建图片数据库的提示

  • 使用 Android 版 arcoreimg 工具生成图片数据库文件。此工具仅适用于 Android 和 Android NDK 开发。它内置于 Unity SDK 和 ARCore Unreal 插件中。
  • 数据库会存储从参考图像的灰度数据中提取的特征的压缩表示。每个映像条目占用约 6 KB。
  • 在运行时,将图片添加到数据库大约需要 30 毫秒。
    • 在工作线程中添加图片,以免阻塞界面线程。
    • 或者,如果可能,使用 ARCore SDK 中包含的 arcoreimg 工具在编译时添加图像。
  • 如果您知道图片的预期物理尺寸,请指明。这些信息可以提高检测和跟踪性能,尤其是对于大型物理图片(超过 75 厘米)。
  • 避免在数据库中保留许多未使用的映像,因为 CPU 利用率增加会对系统性能产生轻微影响。

跟踪优化技巧

  • 如果您的图片永远不会从其初始位置移动(例如,固定在墙上的海报),您可以在图片上附加锚点,以提高跟踪稳定性。
  • 为进行初始检测,物理图像必须至少占据相机图像的 25%。您可以提示用户将实际图片放入相机取景框内。
  • 在图片的跟踪状态完全跟踪之前,请勿使用图片的姿势和大小估算值。当 ARCore 最初检测到图像时,如果未指定预期的物理尺寸,其跟踪状态将暂停。这意味着 ARCore 已识别图像,但尚未收集到足够的数据来估计其在 3D 空间中的位置。