【问题标题】:3d object recognition for AR android appAR android 应用程序的 3d 对象识别
【发布时间】:2016-06-25 12:55:41
【问题描述】:

我正在尝试开发一个 AR android 应用程序。
它应该检测并识别相机捕获的对象,我为此使用 OpenCV,但我对 AR 领域的移动设备的对象识别不是很熟悉。

我有两个问题:

1- 哪种算法更好(在精度和速度的意义上)SIFT、SURF、FAST、ORB 还是其他?

2- 我想知道检测和跟踪的过程是否会是这样的:
拍摄一个相机帧,检测其关键点,计算其描述符,然后将其与数据库中可用的每个图像(描述符矩阵)进行匹配,以找到它属于哪一个。
我觉得上面提到的步骤在计算上会很繁重,特别是如果对每一帧都重复它们以继续跟踪对象。

请提供一些有关算法的详细信息以及最适合我的目标的步骤。
提前致谢

【问题讨论】:

    标签: android opencv augmented-reality object-recognition


    【解决方案1】:

    FAST 只是一个检测器,而 SIFT、SURF、ORB 和 BRISK 是检测器和描述符。

    您的问题是一个非常笼统的问题。

    • SIFT 描述符是一种经典方法,也是“原始”方法 为后来提出的大多数描述符提供灵感。缺点 是它在数学上复杂且计算量大。
    • SURF 检测器被认为是一种更有效的替代品 筛。它有一个基于 Hessian 的检测器和一个基于分布的 描述符生成器。
    • SIFT 和 SURF 基于梯度直方图。那就是 需要计算补丁中每个像素的梯度。这些 计算需要时间。尽管 SURF 加快了计算速度 使用积分图像,这对于某些人来说仍然不够快 应用程序

    SIFT 和 SURF 最准确,但它们受专利保护,必须购买才能使用。

    • FAST 是一个独立的特征检测器,它不是一个描述符 发电机。它的设计非常高效,适用于 任何复杂性的实时应用程序。
    • BRIEF 描述符是一个轻量级、易于实现的描述符 基于二进制字符串。简要描述符针对低功耗 设备,并补偿其一些鲁棒性和准确性的 效率。

    二进制描述符对于许多现代应用程序来说是一种有吸引力的解决方案,尤其是对于计算和内存资源都有限的移动平台。

    在我看来,我更喜欢 ORB,因为它是基于二进制的描述符。与 BRISK 相比,它需要较低的计算量和更少的内存需求。

    在最终确定之前,您必须对所有这些可用的描述符进行研究。

    【讨论】:

    • 亲爱的@Lisa.s,您为什么为您的项目选择特征检测器和描述符而不是 haar 级联和深度学习 (CNN)?我也在做同样的项目,但我只是不知道为什么要使用 Feature 方法。
    【解决方案2】:

    我知道这是一个老问题,但我觉得它可以帮助其他人。

    有一个很好的教程,它使用 Android、OpenCV 和 OpenGL ES 3.0 使用 NDK 使用 Android Studio 构建一个小型 AR 应用程序。 它有很好的解释和一个 Github repo 来检查代码。

    http://www.anandmuralidhar.com/blog/android/simple-ar/

    它使用 ORB 功能来检测/匹配标记以在场景中生成 3D 对象。 关于您的第二点,本教程可以让您了解该过程是如何工作的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-25
      • 1970-01-01
      • 1970-01-01
      • 2017-12-14
      • 1970-01-01
      • 2018-07-08
      • 2016-08-26
      相关资源
      最近更新 更多