为图片添加尺寸

针对具体平台的指南

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

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

在运行时,ARCore 会在用户环境中的平面上搜索这些功能。这样一来,ARCore 便可以在现实世界中检测这些图像,并估算图像的位置、方向和大小(如果未提供图像)。

功能

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

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

图片可以在运行时添加到增强图像数据库中,每个数据库最多可包含 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
    包含重复的几何图形地图项 分辨率足够高;包含许多独特功能

关于创建映像数据库的提示

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

优化跟踪技巧

  • 如果您的图片绝不会从其初始位置移动(例如贴在墙上的海报),您可以向图片附加锚点以提高跟踪稳定性。
  • 初始图像必须占据摄像头图像的至少 25%。您可以提示用户将物理图片放在其摄像头画面中。
  • 在图片的跟踪状态达到完全跟踪状态之前,请勿使用图片的姿态和大小估计值。最初由 ARCore 检测图像时,如果没有指定预期的物理尺寸,则会暂停其跟踪状态。这意味着 ARCore 可以识别图像,但尚未收集到足够的数据来估计图像在 3D 空间中的位置。