SLAM实战避坑指南:对极几何与极点极线推导——吃透零空间与对极约束

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

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) d1p1=KP(1)

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

  2. 归一化坐标

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

    d1x1=P(3) d_1 x_1 = P \qquad (3) d1x1=P(3)

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

  3. 消元与叉积

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

    d2x2=d1Rx1+t d_2 x_2 = d_1 R x_1 + t d2x2=d1Rx1+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∧d2x2=t∧d1Rx1+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) d2x2T(t×x2)=d1x2T(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 = 0x2TEx1=0。
    • 基础矩阵 :F=K−TEK−1F = K^{-T} E K^{-1}F=K−TEK−1,满足 p2TFp1=0p_2^T F p_1 = 0p2TFp1=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=F21p1

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

    l1=F21Tp2 l_1 = F_{21}^T p_2 l1=F21Tp2

2.3 极点求解(核心)

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

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

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

    F21e1=0 F_{21} e_1 = 0 F21e1=0

求解图像2的极点 e2e_2e2
  • e2e_2e2 是相机1的光心投影。对于图像2中的任意极线 l2l_2l2,都有 e2Tl2=0e_2^T l_2 = 0e2Tl2=0。

    代入 l2=F21p1l_2 = F_{21} p_1l2=F21p1,得 e2TF21p1=0⇒(F21Te2)Tp1=0e_2^T F_{21} p_1 = 0 \Rightarrow (F_{21}^T e_2)^T p_1 = 0e2TF21p1=0⇒(F21Te2)Tp1=0。

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

    F21Te2=0 F_{21}^T e_2 = 0 F21Te2=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 = 0p2TF21p1=0):

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

3.3 方向反转的情况

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

对象 求解方程 (针对 F12F_{12}F12)
e1e_1e1 (图像1极点) F12Te1=0F_{12}^T e_1 = 0F12Te1=0
e2e_2e2 (图像2极点) F12e2=0F_{12} e_2 = 0F12e2=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 = 0Fijej=0(右零空间)
      • 图像 iii 的极点 eie_iei 满足 FijTei=0F_{ij}^T e_i = 0FijTei=0(左零空间)
    • 具体地(当使用 F21F_{21}F21 时):
      • 图像1的极点 e1e_1e1 :解 F21e1=0F_{21} e_1 = 0F21e1=0
      • 图像2的极点 e2e_2e2 :解 F21Te2=0F_{21}^T e_2 = 0F21Te2=0
  3. 物理验证 :极点一定是另一个相机光心 的位置。如果你算出来的 e1e_1e1 不在图像1上,或者位置不对,立刻检查 FFF 的定义方向。

相关推荐
暂未成功人士!10 小时前
简单了解李群和李代数的相关概念以及典型应用
人工智能·机器人·slam·姿态·李群李代数
MIXLLRED3 天前
Ubuntu 22.04 + ROS2 Humble 上部署 ScaRF‑SLAM指南
ubuntu·slam·ros2·离线建图
大江东去浪淘尽千古风流人物4 天前
【VGGT-Ω】前馈式3D重建的规模化之路:Register Attention、自监督训练与10B参数Scaling Law深度解析
深度学习·计算机视觉·transformer·slam·vio·3d重建
大江东去浪淘尽千古风流人物4 天前
【VGGT】统一3D重建:单网络同时预测相机位姿、深度图、点云与3D轨迹的前馈Transformer架构深度解析
网络·数码相机·3d·transformer·slam·3d重建·cvpr2025
kobesdu7 天前
【ROS2实战笔记-24】ROS2 Launch 实用技巧:条件逻辑与节点动态生成
笔记·ros·slam
大江东去浪淘尽千古风流人物8 天前
【RADIO-ViPE】动态环境下的在线开放词汇语义SLAM:视觉-语言-几何紧耦合BA与自适应鲁棒核深度解析
slam·语义slam·vio·开放词汇·动态场景
大江东去浪淘尽千古风流人物9 天前
【KV-Tracker】Transformer 实时位姿跟踪:KV-Cache 加速多视图几何网络达 27FPS
网络·深度学习·transformer·slam·位姿估计·kv-cache
大江东去浪淘尽千古风流人物9 天前
【ACE-SLAM】场景坐标回归实时神经 SLAM:TriMLP 架构与隐式回环闭合
人工智能·神经网络·数据挖掘·回归·实时·slam·场景坐标回归
元让_vincent9 天前
论文 Review SLAM LiLoc | Lifelong Localization
slam·性能提升·激光slam·multi-session·先验地图
大江东去浪淘尽千古风流人物10 天前
【SharpSLAM】无人机高速飞行下的物体级视觉 SLAM:GAN 去模糊与 3D 重建联合优化
生成对抗网络·3d·无人机·slam·3d重建·deepsdf·去模糊