AR android app

时间:2016-06-25 12:55:42

标签: android opencv augmented-reality object-recognition

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

我有两个问题:

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

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

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

2 个答案:

答案 0 :(得分:3)

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

你的问题非常普遍。

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

SIFT和SURF最准确,但它们受专利保护,无需购买即可使用。

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

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

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

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

答案 1 :(得分:1)

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

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

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

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