为图片添加尺寸

针对具体平台的指南

借助 ARCore 中的增强图像 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 空间中的位置。