对极几何:本质矩阵与基本矩阵

核心03-相机与三维几何预计 30 分钟对极几何基本矩阵本质矩阵极线

前置知识点

kp-010 针孔相机模型与投影

一句话定义

两台相机看同一场景时,一个图像点在另一图像中的候选位置被约束在一条直线上(极线),全部这类约束打包成一个 3×3 矩阵——相机内参已知的用本质矩阵 E,未知的用基本矩阵 F。

为什么重要

对极约束把「二维匹配」砍成「一维搜索」,是立体匹配与多视重建效率的来源;它同时是「两张图是否同一场景」的几何裁判——特征匹配通过 RANSAC 拟合 F,内点率高即判为真实对应,这是 SLAM 初始化与图像配对的标准流程。

直观类比

两台相机的光心像两只眼睛,目标点与两眼连线构成一个平面(对极平面);该平面与每张「视网膜」相交出一条直线(极线)。左手拇指固定一点,闭右眼再闭左眼,拇指在视野里「横跳」——跳动的轨迹就是不同视角下的极线。

前置知识

kp-010(投影方程、归一化坐标);kp-009(RANSAC 用于矩阵估计)。

核心概念

原理与机制

在归一化坐标系下,空间点 X 的两条投影射线共面,其混合积为零,整理即 x′ᵀ E x = 0:对任意真实对应,该式必须成立,反过来说 x 的所有合法对应 x′ 都落在 E x 定义的直线上。E 由相对位姿决定而不依赖场景内容;F 在 E 两端串上内参的换算,把约束直接搬到像素坐标。实际计算中先用 RANSAC 抽 8 对(或 5 对)匹配解矩阵初值,再联合内点精化;随后对 E 做奇异值分解即可恢复 R 与 t(存在四组解,需用「三角化深度必须为正」挑出唯一物理解)——这正是 SFM 与 SLAM 两视图初始化的完整链条。

公式与模型

对极约束: x′ᵀ F x = 0 (像素坐标) E = [ t ]× · R (t 的叉积矩阵,秩 2,两个非零奇异值相等) F = K′⁻ᵀ · E · K⁻¹ (K 为两图内参) 极线: l′ = F x,x 的对应点必在 l′ 上

图示

空间点 X 左图极线 右图极线 基线(两光心连线),与 X 共面 = 对极平面

实例与案例

立体匹配提速:无约束时右图搜索是二维窗口,施加极线(校正后为同一行)后变一维,kp-013 由此才可行。图像对验证:以图搜景时对候选对拟合 F,内点比例过阈值即认为同一场景,比逐点比对便宜得多。无人机相对定位:两帧匹配 → E → R、t,给出载机相对位移,是视觉里程计的核心一环。

import cv2
F, maskF = cv2.findFundamentalMat(pts1, pts2, cv2.FM_RANSAC, 1.0, 0.99)
E, maskE = cv2.findEssentialMat(pts1_n, pts2_n, K, cv2.RANSAC, 0.999, 1.0)
R1, R2, t = cv2.decomposeEssentialMat(E)     # 四组解中再由三角化筛选

常见误区

与其他知识点的关系

kp-013 用极线约束做一维视差搜索;kp-014 的 SFM/SLAM 初始化「匹配 → F/E → 位姿 → 三角化」整条链路在本站闭环;kp-009 的 RANSAC 是估计 F/E 的稳健层。

自测题

  1. 对极约束如何把匹配搜索从二维降到一维?

答案要点:x 的所有对应必在极线 F x 上,候选从整幅图缩为一条线;校正后该线与扫描行平行。

  1. E 与 F 的换算关系是什么?

答案要点:F = K′⁻ᵀ E K⁻¹,两端乘内参的逆把归一化坐标换算成像素坐标。

  1. 恢复相对位姿为何有四组解?如何挑选?

答案要点:E 的 SVD 与 t 的正负号产生 2×2 组合;对四组分别三角化,取所有点深度均为正的那组。

延伸阅读

相关知识点

kp-013 立体视觉与深度kp-014 三维重建与视觉 SLAM 概览