对极几何与极点极线推导梳理

1. 对极几何约束(Epipolar Constraint)推导

1.1 符号定义

符号含义
PPP世界坐标系下的三维点
p1,p2p_1,p_2p1​,p2​像素坐标 (2D)
x1,x2x_1,x_2x1​,x2​归一化平面坐标 (Normalized coords)
KKK相机内参矩阵
R,tR,tR,t相机2相对于相机1的旋转与平移
EEE本质矩阵 (Essential Matrix)
FFF基础矩阵 (Fundamental Matrix)

1.2 推导过程

  1. 投影方程:

    d1p1=KP(1) d_1 p_1 = K P \qquad (1) d1​p1​=KP(1)

    d2p2=K(RP+t)(2) d_2 p_2 = K (R P + t) \qquad (2) d2​p2​=K(RP+t)(2)

  2. 归一化坐标:

    消除内参 KKK,得到归一化坐标 x=K−1px = K^{-1} px=K−1p:

    d1x1=P(3) d_1 x_1 = P \qquad (3) d1​x1​=P(3)

    d2x2=RP+t(4) d_2 x_2 = R P + t \qquad (4) d2​x2​=RP+t(4)

  3. 消元与叉积:

    将 (3) 代入 (4) 消去 PPP:

    d2x2=d1Rx1+t d_2 x_2 = d_1 R x_1 + t d2​x2​=d1​Rx1​+t

    两边左乘 t∧t^\wedget∧(反对称矩阵,表示叉乘 t×t \timest×):

    t∧d2x2=t∧d1Rx1+t∧t t^\wedge d_2 x_2 = t^\wedge d_1 R x_1 + t^\wedge t t∧d2​x2​=t∧d1​Rx1​+t∧t

    由于 t∧t=0t^\wedge t = 0t∧t=0,简化为:

    d2(t×x2)=d1(t×Rx1) d_2 (t \times x_2) = d_1 (t \times R x_1) d2​(t×x2​)=d1​(t×Rx1​)

  4. 点积归零:

    两边左乘 x2Tx_2^Tx2T​:

    d2x2T(t×x2)=d1x2T(t×Rx1) d_2 x_2^T (t \times x_2) = d_1 x_2^T (t \times R x_1) d2​x2T​(t×x2​)=d1​x2T​(t×Rx1​)

    左边 x2T(t×x2)=0x_2^T (t \times x_2) = 0x2T​(t×x2​)=0(叉乘结果垂直于原向量,点积为0),故:

    x2T(t∧R)x1=0 x_2^T (t^\wedge R) x_1 = 0 x2T​(t∧R)x1​=0

  5. 最终形式:

    • 本质矩阵:E=t∧RE = t^\wedge RE=t∧R,满足 x2TEx1=0x_2^T E x_1 = 0x2T​Ex1​=0。
    • 基础矩阵:F=K−TEK−1F = K^{-T} E K^{-1}F=K−TEK−1,满足 p2TFp1=0p_2^T F p_1 = 0p2T​Fp1​=0。

2. 极点(Epipole)与极线(Epipolar Line)求解

2.1 几何定义

  • 极点 (e):另一个相机光心在当前图像上的投影。
  • 极线 (l):空间点所在的射线投影在图像上形成的直线。

2.2 极线求解

给定基础矩阵 F21F_{21}F21​(从图1到图2的映射):

  • 图像1中的点 p1p_1p1​ 在 图像2 中对应的极线 l2l_2l2​:

    l2=F21p1 l_2 = F_{21} p_1 l2​=F21​p1​

  • 图像2中的点 p2p_2p2​ 在 图像1 中对应的极线 l1l_1l1​:

    l1=F21Tp2 l_1 = F_{21}^T p_2 l1​=F21T​p2​

2.3 极点求解(核心)

极点满足:极点在其对应图像的极线上永远成立。

求解图像1的极点 e1e_1e1​
  • e1e_1e1​ 是相机2的光心投影。当图像1的点取 e1e_1e1​ 时,对应的极线在图像2中退化(过原点),即 F21e1=0F_{21} e_1 = 0F21​e1​=0。

  • 计算:e1e_1e1​ 是 F21F_{21}F21​ 的右零空间(Null Space)。

    F21e1=0 F_{21} e_1 = 0 F21​e1​=0

求解图像2的极点 e2e_2e2​
  • e2e_2e2​ 是相机1的光心投影。对于图像2中的任意极线 l2l_2l2​,都有 e2Tl2=0e_2^T l_2 = 0e2T​l2​=0。
    代入 l2=F21p1l_2 = F_{21} p_1l2​=F21​p1​,得 e2TF21p1=0⇒(F21Te2)Tp1=0e_2^T F_{21} p_1 = 0 \Rightarrow (F_{21}^T e_2)^T p_1 = 0e2T​F21​p1​=0⇒(F21T​e2​)Tp1​=0。

  • 计算:e2e_2e2​ 是 F21F_{21}F21​ 的左零空间。

    F21Te2=0 F_{21}^T e_2 = 0 F21T​e2​=0

数值解法(SVD)

对 FFF 进行奇异值分解 F=UΣVTF = U \Sigma V^TF=UΣVT:

  • e1e_1e1​ 对应 VVV 的最后一列(对应最小奇异值0)。
  • e2e_2e2​ 对应 UUU 的最后一列(对应最小奇异值0)。

3. 区分 e1,e2,l1,l2e_1,e_2,l_1,l_2e1​,e2​,l1​,l2​ 与 FFF 的对应关系

这是最容易混淆的部分,关键在于明确 FFF 的下标定义。

3.1 核心原则

FABF_{AB}FAB​ 表示将图像 BBB 中的点映射到图像 AAA 中的极线。

极点 eAe_AeA​ 是“另一个相机(BBB)”在“图像 AAA”上的投影。

下标约定:FABF_{AB}FAB​ 的下标 AAA 表示目标图像(极线所在图像),BBB 表示源图像(特征点所在图像)。因此 F21F_{21}F21​ 将图像1(源)中的点映射到图像2(目标)中的极线。

3.2 对照表

假设我们定义 F21F_{21}F21​(即方程 p2TF21p1=0p_2^T F_{21} p_1 = 0p2T​F21​p1​=0):

对象物理意义数学表达求解方程
p1p_1p1​图像1中的特征点已知–
p2p_2p2​图像2中的特征点未知/已知–
l2l_2l2​图像2中的极线l2=F21p1l_2 = F_{21} p_1l2​=F21​p1​–
l1l_1l1​图像1中的极线l1=F21Tp2l_1 = F_{21}^T p_2l1​=F21T​p2​–
e1e_1e1​相机2光心在图像1上的投影图像1的极点F21e1=0F_{21} e_1 = 0F21​e1​=0
e2e_2e2​相机1光心在图像2上的投影图像2的极点F21Te2=0F_{21}^T e_2 = 0F21T​e2​=0

3.3 方向反转的情况

如果定义 F12F_{12}F12​(即方程 p1TF12p2=0p_1^T F_{12} p_2 = 0p1T​F12​p2​=0),则所有关系反转:

对象求解方程 (针对 F12F_{12}F12​)
e1e_1e1​ (图像1极点)F12Te1=0F_{12}^T e_1 = 0F12T​e1​=0
e2e_2e2​ (图像2极点)F12e2=0F_{12} e_2 = 0F12​e2​=0

3.4 记忆口诀

  1. “点在矩阵右边”:如果 FFF 乘以 p1p_1p1​ 得到 l2l_2l2​,那么 FFF 就是从1到2的映射(即 F21F_{21}F21​)。

  2. “极点找零空间”(通用规则):

    • 对于基础矩阵 FijF_{ij}Fij​(从图像 jjj 到图像 iii):
      • 图像 jjj 的极点 eje_jej​ 满足 Fijej=0F_{ij} e_j = 0Fij​ej​=0(右零空间)
      • 图像 iii 的极点 eie_iei​ 满足 FijTei=0F_{ij}^T e_i = 0FijT​ei​=0(左零空间)
    • 具体地(当使用 F21F_{21}F21​ 时):
      • 求 图像1的极点 e1e_1e1​:解 F21e1=0F_{21} e_1 = 0F21​e1​=0
      • 求 图像2的极点 e2e_2e2​:解 F21Te2=0F_{21}^T e_2 = 0F21T​e2​=0
  3. 物理验证:极点一定是另一个相机光心的位置。如果你算出来的 e1e_1e1​ 不在图像1上,或者位置不对,立刻检查 FFF 的定义方向。

Logo

聚焦RDK与具身智能,汇集机器人开发教程、开源案例和技术交流

更多推荐