ARCore之路-ARCore图像识别

版权声明:David Wang原创ARCore文章,仅供学习研究之用,不得用于任何商业目的,未经授权不得转载! https://blog.csdn.net/yolon3000/article/details/83471957

  图像识别技术正在突飞猛进,如人脸识别、车牌识别已经大规模商业化,通用的AR SDK也大量涌现,例如国外的Vuforia、ARKit、ARCore、ARToolkit、Wikitude,和国内的HiAR SDK、Void AR、EasyAR等。我们这里只对ARCore图像识别进行学习。

  ARCore图像识别技术也是主要针对2D图像识别,也就是平面图像的识别与追踪技术,并与IMU数据进行融合,提供图像追踪能力。借助 ARCore 中的增强图像功能,可以构建能在真实环境中响应 2D 图像(如海报或产品包装)的 AR 应用, 通过提供一组参考图像,在摄像头视野中检测到图像时,ARCore 会跟踪这些图像的位置与姿态。从目前公布的技术指标来看,ARCore图像识别技术还有提高的空间,特别是参考图像数、大倾角情况下的识别与跟踪、运动图像跟踪等等。

Cookie

一、ARCore图像识别技术指标

  目前,ARCore图像识别的主要技术指标如下:

  • 每个图像数据库可以存储最多 1000 张参考图像的特征点信息。
  • ARCore 可以在环境中同步跟踪最多 20 张图像,但无法跟踪同一图像的多个实例。
  • 环境中的物理图像必须至少为 15cm x 15cm 且必须平坦(例如,不能起皱或卷绕在瓶子上)。
  • 在物理图像被跟踪后,ARCore 会提供对位置、方向和物理大小的估算。 随着 ARCore 收集的数据增多,这些估算会持续优化。
  • ARCore 无法跟踪移动的图像,不过它可以在图像停止移动后继续跟踪。
  • 所有跟踪都在设备上完成,所以无需网络连接。 可以在设备端或通过网络更新参考图像,无需应用更新。

二、使用ARCore图像识别的注意事项

(一)、有关参考图像选择

  • 增强图像支持 PNG 和 JPEG 文件格式。 对于 JPEG 文件,为了获得最佳性能,请避免过度压缩。
  • 检测仅基于高对比度的点,所以彩色和黑白图像都会被检测到,无论使用彩色还是黑白参考图像。
  • 图像的分辨率至少应为 300 x 300 像素。
  • 使用高分辨率的图像不会提升性能。
  • 避免使用具有稀疏特征的图像。
  • 避免使用具有重复特征的图像。肉眼很难分辨高质量的参考图像,使用 ARCoreIMG 工具可以获取每个图像的得分(0 - 100),Google建议得分至少为 75。ARCoreIMG 是一个命令行工具,它可以获取一组参考图像并生成图像数据库文件,此工具还可以让您检查参考图像的质量。 这个工具在 ARCore SDK for Android 中提供,且仅适用于 Android 和 Android NDK 开发者。 它内置于 Unity SDK 插件中。不过,我们已经把这个工作提取出来了,并上传到 [这里],读者可以下载使用。

  在Windows下检查参考图像质量的命令示例为:

  arcoreimg eval-img -input_image_path=004.jpg

  这里对arcoreimg深入了解一下,官方给出的检查参考图像质量命令为:arcoreimg eval-img dog.png,这并不对,正确的命令应该如上如示,我们对此还进行了其他测试:

结果 原因
返回数据(如:55) 正常,参考值为[0,100]得分越高,识别率越高,建议选择分值50以上图片作图像库参考图像。
input_image_path is not specified! 命令行中需要加 input_image_path参数。
Unsupported image format. 格式不支持,只支持jpg,png,并且还跟编码有关系,有时即使是jpg,也会报这个错误。
Failed to get enough keypoints from target image. 图像中可以参考的关键点太少,建议换张图像。

下面是两个示例图像:

DavidWang 原创

  在Unity3D中,arcoreimg功能已经集成进去,在添加图像库中的参考图像后会直接给出一个参考分数值,如下所示:

DavidWang 原创

  从上面的参考图像选择可以看出,ARCore图像识别对图像要求还很高,要求越高说明这种技术使用的局限性就越大,或者说技术还不够成熟,而且1000的参数图像总量对一些应用来说可能还远远不够,希望技术的发展能突破这些条条框框的限制。

(二)、有关图像数据库创建

  • 数据库会存储参考图像的压缩表示。 每个图像占据大约 6KB。
  • ARCore1.5支持运行时添加参考图像,运行时,将一个图像添加到数据库需要大概 30ms。 尽量在工作线程上添加图像,以免阻塞界面线程,或者如果可以,使用 arcoreimg 工具在编译时添加图像。
  • 如果可能,最好先指定图像的预期物理大小。 此元数据可以提升跟踪性能,特别是对于较大的物理图像(超过 75cm)。
  • 不要在数据库中保存未使用的图像,因为这会对系统性能产生一定的影响。

(三)、有关跟踪优化

  • 物理图像必须占据摄像头图像的 40%。需要及时提示用户将物理图像放在他们的摄像头取景范围内。
  • 在 ARCore 初次检测到图像时,如果未指定预期的物理大小,图像的跟踪状态将为暂停。 这意味着,ARCore 已识别出图像,但未收集到足够的数据来估算图像在 3D 空间中的位置。 如果图像的状态不是正在跟踪,那么开发者不应使用图像的姿态和大小估算。

参考文献

1、识别与增强图像 识别与增强图像

猜你喜欢

转载自blog.csdn.net/yolon3000/article/details/83471957