重建相应点的3D位置

时间:2011-03-01 12:34:06

标签: mapping computer-vision correspondence

我正在开展一个项目,我想重建3D的位置 我从相机图像中提取的特征点。我的想法是:

  • 进行相机拍摄(灰度信息,VGA尺寸:640 x 480)
  • 提取相机框架中的要素点(我正在使用SIFT)
  • 来自帧[k-1]的对应特征与来自帧[k]的特征(我打算用 为此使用RANSAC,稍后会更多......)
  • 计算/估算这些特征之间的一些相对距离信息 点(这将在某些(x,y,z)坐标系中)

我在许多论文中都读过RANSAC是一种用于的算法 重建,最终结果是某种点云。我想成为 能做到这一点。但是,我遇到了一些障碍,我希望你们 可以帮助我解决这些问题。

第一个障碍是我真的不明白我将如何使用 RANSAC执行这一点通信。我理解RANSAC的概念 作为一个模型拟合工具,我只是看不出它是如何用于做的 通信解决。

第二个障碍是,假设我有我的通信信息,如何获得 所有这些点之间的某种距离信息。我读过这个 透视投影可以用来解决这个问题,反过来应该尝试 估计基本矩阵。然后做一些数学魔术才能得到 点云。 重点是,我不明白基本矩阵中的实际值是什么 意思。我知道它给出了2的位置之间的数学关系 相机(或者在我的情况下,相机正在移动的视频中有2帧),以及 它利用了极线几何。但除此之外,我只是没有线索 基本矩阵实际上需要什么。这个3x3矩阵是如何捕获的 1台相机相对于另一台相机的6DOF? 另外我认为我提到的'数学魔术'是某种矩阵 乘法,但我没有找到任何信息来源来解释我是什么 它确实和配方是什么。

因此,我的问题是: 你们中的任何人都能指出我正确的方向吗?我一直在挖掘 我到目前为止所阅读的论文的参考文献,但这些也给了我“我们 使用RANSAC算法解决这个问题“-line,我的感觉越来越强烈 朝错误的方向看。 对这些事情有一些很好的解释,也许是外行人的条件和/或 有一些插图? 简而言之:我应该在哪里寻找,或者在哪里可以找到这个难以捉摸的部分 信息?

提前致谢, Xilconic

PS:检查维基百科,但它对我帮助不大。也听了 “基本矩阵之歌”,这是同一个故事。

3 个答案:

答案 0 :(得分:4)

在此论文中写了my thesis,也在我的论文中使用了RANSAC算法。

此主题的内容多于此处的几段内容。考虑获得优秀的书Multiple View Geometry

Snag 1

RANSAC将找到一个模型,在这种情况下是基本矩阵 F ,即使存在大量的异常值。在这种情况下,一些点对应候选者是远离的。这是一个异常值。基本上你只是从随机绘制的点中继续拟合 F 矩阵。最终,您会找到一组共同创建一致模型的点。这些是 inliers 。它们现在可用于更准确地估计模型( F )。

在我的论文中有一个简单的例子,其中有一个线条拟合的例子可以帮助您入门,并且可以轻松掌握适用于对应问题的RANSAC解释。

Snag 2

F 矩阵最重要的一点是它将一个图像中的一个点映射到另一个图像中的

Fx = l '其中 x 是一张图片中的一个点而 l '是一行另一个。

F 矩阵有9个元素,但必须有rank 2,并且刻度无关紧要,因此它只有7个自由度。 F 矩阵的元素没有简单的解释。

使用点对应 x < - > x '和 F 如果您知道相机内部参数(如焦距),则可以提取所描绘点的世界3D坐标 X

请注意,使用连续的电影帧时,相机通常移动很少,可能很难计算基本矩阵。它可以解决。我建议调查Marc Pollefeys'

的作品

答案 1 :(得分:2)

查看基本矩阵wikipedia entry中的第一个公式:

enter image description here

这是您尝试使用RANSAC解决的“模型”。您有两个3xn (n>=7)矩阵 x x' 代表您所有相应的x,y - x',y'两个图像中的点(第三个坐标始终只是数字1)。以及您想要查找值的未知3x3矩阵 F wikipedia entry中RANSAC的伪代码算法是一个很好的解释。

现在,什么是基本矩阵? 考虑图像中的点的一种方式是连接相机位置和3D空间中的点的3D线。该线在两个方向上延伸到无穷大。如果您使用不同的相机查看该线上的3D点,那么在该相机的图像中,您会看到一条直线穿过它。图像中的点到3D线的变换(实际上是投影)仅仅是矩阵运算。将3D线条投影到2D图像上也是矩阵运算。 F 在一个矩阵中捕获这两个矩阵运算。 F 也可用于确定两个相机的camera matrix,然后可用于3D重建。

也许这有点帮助?否则,我从Hartley and Zisserman了解到最多这方面的知识。

答案 2 :(得分:1)

使用类似5点或8点算法的基本矩阵的稳健解决方案肯定是一个良好的开端。也就是说,基本矩阵解决方案可能容易受到异常值的影响,您可能需要一些额外的总体系统来进行实际的3D求解。您可以使用卡尔曼滤波器类型方法(快速,可以在嵌入式系统上实时完成)或捆绑调整(非常准确但可能更慢)。

您可以使用或从中获取灵感的一些优秀的SFM软件:

VSLAM(由Konolige开发,他是斯坦福大学的教授,也在Willow Garage工作,OpenCV人员)。可能是我见过的最快的捆绑调整解决方案。

RSLAM(由牛津移动机器人集团开发,显示出一些出色的结果)