首页 文章

AR Android应用程序的3d对象识别

提问于
浏览
0

我正在尝试开发一个AR android应用程序 .
它应该检测并识别相机捕获的对象,我不熟悉AR领域中移动设备的对象识别 .

我有两个问题:

1-哪种算法更好(在精度和速度的意义上)SIFT,SURF,FAST,ORB或其他什么?

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

请向我提供有关算法的一些细节以及最符合我目标的步骤 .
提前致谢

2 回答

  • 1

    我知道这是一个老问题,但我觉得它能够帮助别人 .

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

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

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

  • 3

    FAST只是一个探测器,其中SIFT,SURF,ORB和BRISK是探测器和描述符 .

    你的问题是一个非常普遍的问题 .

    • SIFT描述符是一种经典方法,也是后来提出的大多数描述符的“原始”灵感 . 缺点是它在数学上是复杂的并且计算量很大 .

    • SURF检测器被认为是SIFT的更有效替代品 . 它有一个基于Hessian的检测器和一个基于分布的描述符生成器 .

    • SIFT和SURF基于梯度的直方图 . 也就是说,需要计算贴片中每个像素的梯度 . 这些计算花费了时间 . 尽管SURF使用积分图像加速了计算,但对于某些应用来说,这仍然不够快

    SIFT和SURF是最准确的,但它们受到专利保护,不能在没有购买的情况下使用 .

    • FAST是一个独立的特征检测器,它不是描述符生成器 . 它的设计非常高效,适用于任何复杂的实时应用 .

    • 简要描述符是一种基于二进制字符串的轻量级,易于实现的描述符 . 简要描述符针对低功耗器件,并补偿其一些稳健性和效率 .

    二进制描述符是许多现代应用程序的有吸引力的解决方案,特别是对于计算和内存资源有限的移动平台 .

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

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

相关问题