平台专用指南
Android (Kotlin/Java)
Android NDK (C)
Unity(AR Foundation)
Unreal Engine
借助 ARCore 中的 Augmented Images API,您可以构建 AR 应用,以检测和增强用户环境中的 2D 图片(例如海报或产品包装)。
您需要提供一组参考图片。ARCore 使用计算机视觉算法从每张图片的灰度信息中提取特征,并将这些特征的表示法存储在一个或多个增强图像数据库中。
在运行时,ARCore 会在用户环境中的平面上搜索这些地图项。这样,ARCore 便可在世界中检测这些图片,并估算其位置、方向和大小(如果未提供)。
功能
ARCore 最多可以同时跟踪 20 张图片。ARCore 不会同时检测或跟踪同一图片的多个实例。
每个增强型图片数据库最多可存储 1,000 张参考图片的信息。数据库数量不受限制,但任何时候都只能有一个数据库处于活动状态。
您可以在运行时将图片添加到增强图像数据库,每个数据库最多可添加 1,000 张图片。您可以使用网络连接下载之前创建的数据库。
添加图片时,您可以提供图片的实际尺寸以供检测。这样做可以提高图片检测性能。
如果未提供实际尺寸,ARCore 会估算尺寸,并随着时间的推移优化此估算值。
如果提供了实际尺寸,ARCore 会使用所提供的尺寸并估算图像的位置和方向,而忽略视觉尺寸或实际尺寸与所提供的实际尺寸之间的任何差异。
ARCore 可以响应和跟踪以下类型的图片:
固定在原地的图片,例如挂在墙上的打印照片或放在桌上的杂志
移动图片,例如行驶中的公交车上的广告,或用户在移动手部时所持平面物体上的图片。
ARCore 开始跟踪图片后,便会在每一帧中提供图片位置和方向的估算值。ARCore 会随着收集更多数据而不断优化这些估算值。
检测到图片后,ARCore 会继续“跟踪”图片的位置和方向,即使图片因用户移动设备而暂时移出相机视野也是如此。在这种情况下,ARCore 会假定图片的位置和方向是静态的,并且图片本身不会在环境中移动。
所有跟踪操作均在设备上进行。无需连接到互联网即可检测和跟踪图片。
要求
图片必须:
填充至少 25% 的相机帧,以便系统进行初始检测。
平整(例如,没有皱褶或没有缠绕在瓶子上)。
将相机镜头对准您。这些内容不应被部分遮挡、以极斜的角度观看,也不应在摄像头因移动过快而产生运动模糊时观看。
CPU 利用率和性能注意事项
启用增强现实图片功能可能会增加 ARCore 的 CPU 利用率,具体取决于已启用的 ARCore 功能。在 AR 体验不需要时,请考虑停用所有未使用的功能。这将为您的应用提供额外的 CPU 周期,并提升热性能和电池续航时间。
如需了解详情,请参阅性能注意事项。
最佳做法
选择参考图片的提示
- 图片的分辨率应至少为 300 x 300 像素。使用高分辨率图片不会提升效果。
- 您可以提供PNG 或 JPEG 文件格式的参考图片。
- 系统不会使用颜色信息。彩色图片和等效的灰度图片都可以用作参考图片,也可以供用户在运行时使用。
- 避免使用过度压缩的图片,因为这会干扰特征提取。
- 避免使用包含大量几何图形特征或极少特征的图片(例如条形码、二维码、徽标和其他线条图形),因为这会导致检测和跟踪性能不佳。
- 避免使用重复图案的图片,因为这也可能会导致检测和跟踪问题。
使用 ARCore SDK 中包含的
arcoreimg
工具,为每个图片获取介于0
和100
之间的质量得分。我们建议质量得分至少为 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 空间中的位置。