使用 OpencV 扩增实境 SDK

我正在 OpencV 上开发一个扩增实境的 SDK。我遇到了一些问题,需要找到关于这个主题的教程,需要遵循哪些步骤,可能的算法,快速有效的实时性能编码等等。

到目前为止,我已经收集了下面的信息和有用的链接。

OpenCV 安装

下载 最新版本

你可以找到安装指南 给你(平台: linux,mac,windows,java,android,iOS)。

在线 文件

扩增实境

对于初学者来说,给你是一个简单的扩增实境代码,它是一个很好的开始。

对于任何寻找设计先进的 SDK 的人来说,我发现了一些基于标记跟踪的增强现实应该具备的一般步骤,考虑到 OpenCV 的功能。

  1. 主程序: 从视频中创建所有类、初始化、 捕捉帧。

  2. AR _ engine 类: 控制扩增实境应用程序的各个部分:

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

还应该有一些算法,以确定位置和方向的摄像机在每一帧。这是通过检测在场景中检测到的标记和我们离线处理的标记的二维图像之间的同形变换来实现的。此方法的说明 给你(第18页)。姿态估计的主要步骤是:

  1. 加载相机内部参数 。先前通过校准提取脱机。 intrinsic parameters

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

  3. 对于每个帧更新,运行 从现场提取特征的检测算法并生成描述符。

    • SIFT
    • 很快
    • 冲浪
    • FREAK : 一种新的方法(2012)被认为是最快的。
    • ORB
  4. 在模式和场景描述符之间找到 火柴

  5. 从这些匹配中查找 单词矩阵。 RANSAC 可以用于在匹配集中查找 inliers/outliers。

  6. 从同形词中提取 相机姿势

完整的例子:

57475 次浏览

Since AR applications often run on mobile devices, you could consider also other features detector/descriptor:

Generally if you can chose the markers you first detect a square target using an edge detector and then either Hough or simply contours - then identify the particular marker from the internal design. Rather than using a general point matcher.

Take a look at Aruco for well written example code.