【问题标题】:Use fundamental matrix to compute coordinates translation using OpenCV使用基本矩阵使用 OpenCV 计算坐标平移
【发布时间】:2012-05-10 07:29:16
【问题描述】:

我正在尝试计算两个图像之间几个点的坐标对应关系。 我有一组已知对应关系的点,我将它们与 OpenCV 的 findFundamentalMatrix() 一起使用以找到基本矩阵。 我为每个点验证了x^T * F * x' = (0),结果总是正确或非常接近。

问题是,现在我想使用第一张图像上的点坐标 (y) 和基本矩阵 (F) 来找到第二张图像上的点坐标(y')。我首先想到的是简单地使用上面的等式,但只给y'点的z,就可以有an infinity of solutions

我还能如何使用基本矩阵来计算平移?

更清楚地说:知道“链接”两个投影的基本矩阵,我如何使用它将任何已知点(a, b, 1) 的坐标从第一个投影转换为第二个投影?

考虑到我们知道abF 在这个等式中:(a', b", 1)T * F * (a, b, 1) = (0)

我做了一个简单的绘图作为例子:http://i.imgur.com/drNr2.jpg。这个想法是在投影 2 中找到红点 (xq, yq) 的坐标,考虑到我们知道它在投影 1 中的坐标以及两个投影中所有其他点的坐标(以及其他一些作为找到基本矩阵的算法)实际上至少需要8分)

另一个精度:在我的示例中,已知点是共面的,但研究点不一定是共面的。

我希望这让我的问题更清楚:)

【问题讨论】:

    标签: c++ opencv computer-vision linear-algebra


    【解决方案1】:

    基本矩阵将点从一个图像转换为另一个图像中的线。你能详细说明一下吗

    我还能如何使用基本矩阵来计算平移?

    请。告诉我们您想要实现的目标或许也有帮助。

    编辑:如果您已校准相机,则可以从基本矩阵F 计算基本矩阵E。 E 将一个图像中的一个点转换为另一个图像中的一个点。但当然,要求是要有内部矩阵。如果K 是内部矩阵E=transpose(K)FK。 另一种方法是在另一幅图像中找到一个点的对应线,然后沿着这条线搜索在外观上与第一幅图像中该点周围的补丁最相似的补丁。还有其他一些方法,但确实需要有关问题的更多信息来判断哪种方法适合您的情况。

    编辑 2:在图中你得到的点是共面的。因此,单应性映射了两幅图像之间的点位置,不需要找到基本矩阵。 OpenCV有一个估计单应性的功能,只需要四个点。

    【讨论】:

    • 如果你使用的这组点来自一个棋盘,你可以很容易地使用opencv获取内部参数(据我记得它需要棋盘的几个姿势)
    • 这看起来更像是评论而不是答案:)
    • :-) 太长了,所以决定把它作为一个答案。
    • 我编辑了我的问题以添加一些信息,希望对您有所帮助。我没试过OpenCV的校准,是否需要手动输入两个摄像头的位置?
    • 请看我的第二次编辑。在这种情况下,点总是共面的?
    【解决方案2】:

    鉴于:

    图 1 中的点对应a

    目标:

    找到对应点b位于图 2 中所谓的 对极线 L

    怎么做?

        | x0 |       | x1 |
    a = | y0 | , b = | y1 |
        | 1  |       | 1  |
    

    L = F * a

        |F00 F01 F02|
    F = |F10 F11 F12|
        |F20 F21 F22|
    

    必须满足以下等式才能获得图 2 中的 b

    a' * F * b = 0.

    注意: a' = transpose(a).

    【讨论】:

      【解决方案3】:

      由于某种原因,由于缺乏声誉,我无法添加评论。 我已经研究这个领域大约一个月了,希望我能回答许多在我研究这个主题时也让我感到困惑的悬而未决的问题。

      @M2X 基本矩阵是从图像平面 1 中的一个点到图像平面 2 中的一条线的映射。这些线是一种特殊类型的线,称为对极线,由图像平面与从原点构造的平面相交形成。 2 个摄像头和 3D 点。因此,除非您有一些额外的信息或约束,否则无法使用基本矩阵确定点对点映射。

      @Jukurrpa 单应性是点对点映射,使得平行线映射到平行线。可以证明这个映射是线性的,那么由于线性映射一个等价于矩阵,单应性可以用一个矩阵来定义。 位于投影到图像平面的平面上的一组 3D 点将平行线映射到平行线,因此单应性将适用于您的情况。书中概述了从给定点集估计单应性的方法(计算机视觉中的多视图几何)。给定两个图像中的对应点,您可以使用迭代方法(梯度下降)或封闭形式解决方案(奇异值分解)找到单应性。

      【讨论】:

      • 我很困惑。如果基本矩阵是图像1中的点到图像2的映射,为什么不能只取基本矩阵和任意点的点积,在另一张图像中得到它的对应点?
      • 基本矩阵 a 从图 1 中的 映射到图 2 中的 线。在链接的图中,x' 映射到 l' ' 和 x'' 映射到 l'。 FIGURE
      • 由于 x'' * l'' = 0(这是同质线和点的属性)并且 l'' = Fx' 我们看到 x''Fx' = 0 对于所有的对应点。因此,如果您可以为您的场景找到一个好的 F 估计值,给定 F 和 x',您可以通过找到使 x''Fx' 最小化为接近 0 的值 x'' 来估计 x''。典型的估计方法包括等效于 SVD 的最小二乘回归(根据我的阅读,我自己还没有证明这一点)(奇异值分解)
      • 根据维基百科,基本矩阵映射点到点。 “基本矩阵是一个与对应点相关的 3×3 矩阵”
      • 是的。它确实关联对应点。但这不是 1-1 映射。 . . " 基本矩阵是一个 3×3 矩阵,它关联立体图像中的对应点。在对极几何中,立体图像对中对应点的齐次图像坐标 x 和 x',Fx 描述了一条线(核线),另一张图像上的对应点 x′ 必须位于其上。 "(维基百科)
      猜你喜欢
      • 2012-05-29
      • 2021-03-03
      • 1970-01-01
      • 2013-12-26
      • 2015-01-01
      • 2011-10-14
      • 2019-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多