自然标记增强现实实现

时间:2011-04-07 08:33:25

标签: c++ opencv augmented-reality

在发现OpenCV的强大功能后,我决定使用该库来开发我正在研究的自然标记跟踪引擎。但我的问题是我不知道如何正确实施这种跟踪器。

我设计了以下计划:

  1. 使用对象跟踪算法之一(例如SIFT,SURF等)从实时摄像机源中描述和提取关键点。
  2. 根据提取的关键点,将它们转换为直方图,并将直方图与存储标记的直方图进行比较。
  3. 找到匹配项后,转换这些位置信息并将其传递给负责渲染3d对象的引擎。
  4. 我尝试了SIFT和SURF算法来描述和提取关键点,最终结果是两种算法的超低fps(即小于0 fps)。我注意到SIFT和SURF的计算成本非常高,它是否适合在现场摄像机上进行这种跟踪?

    感谢。

3 个答案:

答案 0 :(得分:4)

开发此类标记需要您对图像处理,3D成像,跟踪等有深入了解。不像开发简单的应用程序。

最好使用开发的;)

FERNS比SIFT更有效,更简单。你可以使用它。它是由EPFL的研究开发的。如果你阅读AR /跟踪论文,你会发现这些人是行业/领域的领导者。它也在更高版本的OpenCV中实现(我认为在2.1或2.2中?)

否则,您始终可以从此处获取该算法的源代码: Ferns: Planar Object Detection

修改

基本上像FERNS这样的算法会告诉你位置/旋转等(这是由称为Homography的矩阵表示的变化)某个表面将参考另一个帧。这个Homography是3D渲染所需的一切;)

使用OpenGL或类似的3D库,您可以使用计算的Homography绘制对象。如果您为每个帧重复此过程,您将拥有一个简单的AR应用程序。

理论书籍:Image Processing3D Imaging

了解AR阅读:ARToolKit paper

有关FERNS的更多信息:oezuysal'site

答案 1 :(得分:4)

SIFT是一个很好的算法,但你无法从中得到最好的效果。有些方法使用FAST进行检测,然后构建检测点的简化SIFT描述符(而不是它们使用的128个值,例如32)。还开发了用于FAST的金字塔方法(你有ORB,但它的描述符不够好)。

现在OpenCV刚刚发布了FREAK,他们承诺它是最快和最强大的,所以我很快就会尝试。您可以在OpenCV上查看这种tutorial增强现实。

答案 2 :(得分:1)

SIFT和SURF是成功的视觉特征,可能是正确的方法(尽管存在更快的计算功能) 可以在GPU上有效地计算SIFT。请参阅siftGPU