带有 OpenCV 的增强现实 SDK [关闭]
Posted
技术标签:
【中文标题】带有 OpenCV 的增强现实 SDK [关闭]【英文标题】:Augmented Reality SDK with OpenCV [closed] 【发布时间】:2012-08-30 07:19:10 【问题描述】:我正在 OpenCV 上开发增强现实 SDK。我在查找有关该主题的教程时遇到了一些问题,包括要遵循的步骤、可能的算法、快速高效的实时性能编码等。
到目前为止,我已经收集了下一个信息和有用的链接。
OpenCV 安装
下载latest release version。
您可以找到安装指南here(平台:linux、mac、windows、java、android、ios)。
在线documentation.
增强现实
对于初学者here 是 OpenCV 中的一个简单的增强现实代码。这是一个好的开始。
对于任何寻找设计良好、最先进的 SDK 的人,我发现了一些通用步骤,每个基于标记跟踪的增强现实都应该具备,考虑到 OpenCV 功能。
主程序:创建所有类,初始化,capture视频帧。
AR_Engine 类:控制增强现实应用程序的各个部分。应该有2个主要状态:
检测:尝试检测场景中的标记 跟踪:一旦检测到,使用较低的计算技术来跟踪即将到来的帧中的标记。还应该有一些算法可以在每一帧中找到相机的位置和方向。这是通过检测场景中检测到的标记与我们离线处理的标记的 2D 图像之间的单应变换来实现的。这个方法的解释here(第18页)。姿势估计的主要步骤是:
加载相机内部参数。之前通过校准离线提取。
加载要跟踪的图案(标记):这是我们要跟踪的平面标记的图像。有必要为此模式提取特征并生成描述符(keypoints),以便稍后我们可以与场景中的特征进行比较。此任务的算法:
SIFT FAST SURF对于每帧更新,运行检测算法以从场景中提取特征并生成描述符。同样,我们有几个选择。
筛选 快速 冲浪 FREAK: 一种新方法 (2012) 被认为是最快的。 ORB在模式和场景描述符之间找到匹配。
FLANN matcher从这些匹配中找到Homography 矩阵。之前可以使用 RANSAC 来查找匹配集中的异常值/异常值。
从单应性中提取Camera Pose。
Pose from Homography 上的示例代码。 Homography from Pose 上的示例代码。完整示例:
aruco Mastering OpenCV samples【问题讨论】:
很遗憾,这是“不具建设性的”,您是在寻找建议吗? 关于安装任务,现在OpenCV已经迁移到GIT,所以下载源代码需要做一个“git clone git://code.opencv.org/opencv.git”。 47 票由于愚蠢的规则而关闭。 【参考方案1】:由于 AR 应用程序通常在移动设备上运行,您还可以考虑使用其他功能检测器/描述符:
FREAK ORB【讨论】:
谢谢!还有一个“快速”版本的 FAST 可以在手机中实时运行,它是金字塔形的,并且 SIFT 描述符减少了 我使用 ORB 得到了几乎完美的结果 实际上,阅读有关 ORB 的文章说它是金字塔中的 FAST Freak 是在 AR 上处理描述符的最后一种算法。比 FAST 更快。【参考方案2】:通常,如果您可以选择标记,您首先使用边缘检测器检测方形目标,然后使用霍夫或简单的轮廓 - 然后从内部设计中识别特定标记。而不是使用通用的点匹配器。
查看Aruco 以获得编写良好的示例代码。
【讨论】:
是的,基准方法是最简单的,但不是最新的。我认为现在应该指向纹理标记。谢谢。这个例子很有趣,因为它解释得很好。 如果想知道位姿,需要将标记特征的3D位置与对应的图像坐标进行匹配。规则形状的目标使这更容易,但它们不需要是平面的 但如果它们不是平面的,则需要 3d 模型或 CAD 模型,否则从 2d 到 3d 的单应性不再是有效的方法,是吗?我的意思是 findhomography 中使用的直接线性变换 是的,如果你有一个 3d 标记,你需要知道真正的 3d 形状(来自 cad,或测量它),但它确实提供了更好的解决方案以上是关于带有 OpenCV 的增强现实 SDK [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
是否有任何适用于 android 的开源增强现实 sdk? [关闭]
OpenCV-Python实战(12)——一文详解AR增强现实