代码之家  ›  专栏  ›  技术社区  ›  melon Z

为什么平移是本质矩阵的零向量

  •  0
  • melon Z  · 技术社区  · 6 年前

    在计算机视觉中,如果 E 是基本矩阵,并且 T 那就是翻译

    transpose(E)*T = 0. // or E*T=0, depending on how you define E

    这似乎是一个已知的结果。为什么会这样?它背后的直觉是什么?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ash    6 年前

    在谈论这背后的直觉之前,首先让我们从象征的角度回答这个问题。基本矩阵通常定义为

    E=R*[T]_x
    

    哪里 R 是两个摄像头之间的相对旋转, T 是翻译,以及 [.]_x 表示叉积的矩阵 T .现在,很明显

    E*T=R*[T]_x*T=0 //because the cross product of T with itself is null

    现在,我们知道本质矩阵有秩 2 根据秩定理,这意味着E的核是维数的 1 .所以 E 只是由定义的空间 alpha*T 哪里 alpha 是一个实数。


    现在,让我们讨论一下直觉。我建议你在纸上画一个小图形,这样更容易形象化。让我们注意两个摄像头中心 C_1 C_2 .另外,让我们注意 z 在的坐标系中表示的三维点 C\U 2 ,并让 y 是相对于的坐标系表示的另一个三维点 C\U 1 .首先,让我们问问自己,基本矩阵是做什么的, i、 e。 方程式是什么 y^t*E*z 意思是现在,考虑一下飞机 L 由三点定义 C_1,C_2,z .为了让事情更简单,让我们先看看 R==Identiy .在这种情况下,

    y^t E * z= y^t * [T]_x * z 
    

    在这里, [T]_x * z 提供平面的法向量 L 自从 [T]_x 只不过是 C_2-C_1 (或 C_1-C_2 ,对我们的目的来说并不重要)。现在你知道了 L [T] \u x*z ,你可以看到什么 y^t * [T]_x *z 确实是 检查 Y 位于内部 L (如何检查点是否位于平面内?您可以看到点与平面法线的乘积是否为零,这就是此代码所做的。)。

    现在,如果 R 不是身份吗?请注意 L 您通过以下方式获得 [T] \u x*z 相对于的坐标系表示 C\U 2 .乘以 R 转换此向量并将其表示为 C\U 1 既然 Y 法线在同一坐标系中,可以检查“多少” Y 位于内部 L


    最后,让我们回到开发和直觉,了解为什么 T 是的nullspace E ,我们可以看到 L 只是 0 这是一个退化平面,任何点 w 在三维欧几里德空间中,它就位于其中,因为 w\t*0=0