带OpenCV的增强现实SDK

Jav*_*ock 93 opencv augmented-reality

我正在OpenCV上开发一个增强现实SDK.我在找到关于该主题的教程,遵循的步骤,可能的算法,快速有效的实时性能编码等方面遇到了一些问题.

到目前为止,我收集了下一个信息和有用的链接.

OpenCV安装

下载最新版本.

你可以在这里找到安装指南(平台:linux,mac,windows,java,android,iOS).

在线文档.

增强现实

对于begginers,这里是OpenCV中的一个简单的增强现实代码.这是一个好的开始.

对于任何寻找精心设计的最先进SDK的人,我发现了一些基于标记跟踪的每个增强现实应该具有的一般步骤,考虑到OpenCV功能.

  1. 主程序:创建所有类,初始化,从视频捕获帧.

  2. AR_Engine类:控制增强现实应用程序的各个部分.应该有两个主要状态:

    • 检测:尝试检测场景中的标记
    • 跟踪:一旦检测到,使用较低的计算技术在即将到来的帧中跟踪标记.

还应该有一些算法用于在每一帧中找到摄像机的位置和方向.这是通过检测场景中检测到的标记与我们已离线处理的标记的2D图像之间的单应性变换来实现的.这里对此方法的解释(第18页).姿势估计的主要步骤是:

  1. 加载相机内部参数.以前通过校准离线提取. 内在参数

  2. 将图案(标记)加载到轨迹:它是我们要跟踪的平面标记的图像.有必要为此模式提取特征并生成描述符(关键点),以便稍后我们可以与场景中的特征进行比较.此任务的算法:

  3. 对于每个帧更新,运行检测算法以从场景中提取特征并生成描述符.我们还有几种选择.

    • 快速
    • 冲浪
    • FREAK:一种新方法(2012)是最快的.
    • ORB
  4. 查找模式和场景描述符之间的匹配.

  5. 从这些匹配中查找Homography矩阵.之前可以使用RANSAC来查找匹配集中的内点/异常值.

  6. 从单应性中提取相机姿势.

完整的例子:

Muf*_*ffo 19

由于AR应用程序通常在移动设备上运行,因此您还可以考虑其他功能检测器/描述符:

  • 谢谢!还有一个"快速"版本的FAST可以在手机中实时运行,它是金字塔形的,并且SIFT描述符减少了 (3认同)
  • Freak是处理AR上描述符的最后一种算法.比FAST快. (3认同)
  • 使用ORB,我得到了近乎完美的结果 (2认同)

Mar*_*ett 13

通常,如果您可以选择标记,则首先使用边缘检测器检测方形目标,然后使用Hough或简单的轮廓检测 - 然后从内部设计中识别特定标记.而不是使用一般点匹配器.

看看Aruco编写的代码示例.

  • 是的,基准方法是最简单的,但它并不是最新的.我想现在应该指出纹理标记.谢谢.这个例子很有意思,因为它得到了很好的解释. (4认同)