Epipolar geometry
当同一场景从两个不同的视角被观测时,极线约束限制了某个 3D 点在一幅图像中的投影,在另一幅图像中只能出现在一条称为极线的直线上。这是双视图重建和单目 SLAM 初始化的几何基础。
几何关系
两个相机中心与该 3D 点共同张成极平面。这个平面与每幅图像相交形成一条极线;连接两个相机中心的直线(基线)与每幅图像相交的点称为极点。图像中所有的极线都经过其极点。这带来的实际结果是:给定图像 1 中的一个特征,它在图像 2 中的匹配点必定位于一条已知的直线上——2D 搜索由此坍缩为 1D 搜索。
Essential Matrix
对于两个已标定的相机(内参已知),本质矩阵 E 编码了两相机之间的相对旋转 R 和平移 t:
E=[t]×R
其中 [t]× 是 t=[t1,t2,t3]T 的反对称矩阵:
[t]×=0t3−t2−t30t1t2−t10
对于在相机 1 的归一化坐标 x1 和相机 2 的归一化坐标 x2 处观测到的一个 3D 点,极线约束为:
x2TEx1=0
它从何而来。 射线方向 x2、Rx1 与基线 t 必须共面(它们都位于极平面内)。三个向量共面意味着标量三重积为零:x2⋅(t×Rx1)=0,将叉积写成 [t]× 的形式,就恰好得到 x2TEx1=0。
E 具有5 个自由度(旋转 3 个,平移 3 个,减去尺度的 1 个),这正是最小求解器需要 5 对对应点的原因。它的 SVD 具有特殊形式 Σ=diag(σ,σ,0)——两个相等的奇异值和一个零奇异值。
从 E 恢复位姿。 给定 E=UΣVT,其中 Σ=diag(1,1,0),四个候选位姿为 [R1∣±t] 和 [R2∣±t],其中
R1=UWVT,R2=UWTVT,t=u3,W=010−100001
真实位姿通过**共视性检验(cheirality check)**来消除歧义:三角化出的点必须位于两个相机的前方。平移只能恢复到一个尺度因子——这正是单目尺度歧义的根源。
Fundamental Matrix
对于两个未标定的相机,基础矩阵 F 关联原始像素坐标 p1,p2:
F=K2−TEK1−1,p2TFp1=0
F 是一个秩为 2 的 3×3 矩阵,具有 7 个自由度(在尺度意义下定义,且 det(F)=0)。它可以通过 8 点法(Longuet-Higgins, 1981)从 8 对或更多点对应中估计出来。图像 2 中对应于点 p1 的极线就是 ℓ2=Fp1,而极点则是 F 和 FT 的零空间向量。
Homography
当场景中所有点都共面,或相机只做纯旋转运动时,单应性 H 可以直接把图像点相互映射:
λp2=Hp1,H∈R3×3
单应性在 ORB-SLAM 中用于地图初始化:对特征匹配同时拟合单应性模型和基础矩阵模型,并选择得分更好的那一个——这是一种同时应对平面场景和一般场景的稳健方法。
需要留意的退化情形
- 纯旋转(t=0):E=[0]×R=0——此时本质矩阵未定义,无法恢复深度;此时应改用单应性来解释这种运动。
- 平面场景:来自单一平面的对应关系满足单应性约束,此时 F/E 的估计会变得存在歧义;这正是 ORB-SLAM 同时拟合两种模型的原因。
- 极小基线:E 的估计在数值上不稳定,三角化得到的深度也毫无意义;初始化过程需要等待足够的视差累积。
对SLAM的意义
极线几何是单目 SLAM 系统自举的方式:仅凭 2D-2D 特征匹配,它就能恢复相对相机位姿并三角化出最初的地图点。它还为立体匹配和引导式特征匹配提供了极线作为一维搜索约束,而极线约束正是 RANSAC 内部用来剔除错误匹配的标准几何验证手段。
动手实践
相关条目