如何求解对极几何中的本质矩阵?

摘要:本文详解了已知内参下的对极几何问题,推导了本质矩阵的8点线性算法与基于Sampson误差的非线性优化方法,并提供了完整的C++实现与评估代码。
1 引言 在本系列(《最小二乘问题详解:目录》)的前三篇文章中,我们系统探讨了运动恢复结构(Structure from Motion, SFM)中的两个核心子问题: PnP 问题(《最小二乘问题详解10:PnP问题求解》与《最小二乘问题详解11:基于李代数的PnP优化》):在已知部分 3D 结构的前提下,通过 2D-3D 对应关系求解相机位姿; 三角化(《最小二乘问题详解12:三角化中的非线性优化》):在已知相机位姿的前提下,通过多视角 2D 观测反推空间点的 3D 位置。 这两个问题互为对偶,共同构成了 SFM 系统的“闭环”:PnP 扩展位姿,三角化扩展结构。然而,它们都依赖一个关键前提——系统中必须已有初始的 3D 点或相机位姿。 那么,当面对一组全新的图像序列,既无任何 3D 点云,也无任何相机位姿时,我们该如何迈出第一步?答案正是本文的主题:对极几何(Epipolar Geometry)。对极几何是 SFM 初始化阶段的基础。它允许我们仅凭两幅图像中的 2D-2D 特征匹配,在不依赖任何先验 3D 信息的情况下,估计出两个相机之间的相对运动(旋转 \(\mathbf{R}\) 与平移方向 \(\mathbf{t}\))。这一估计结果,将作为后续三角化生成初始 3D 点的依据,从而正式启动整个 SFM 流程。 然而,对极几何的完整理论涵盖多种场景,其复杂性不容小觑。为了清晰阐述并聚焦工程实践,本文将做出一个关键且合理的假设:相机已经过标定,内参矩阵 \(\mathbf{K}\) 已知且恒定。这一假设在绝大多数实际应用中(如机器人导航、增强现实、无人机测绘等)都成立。在此前提下,我们可以直接估计本质矩阵(Essential Matrix, \(\mathbf{E}\)),进而高效、鲁棒地恢复相机的相对位姿,并为后续的非线性优化(如束调整)奠定坚实基础。在下篇中,我们将探讨更具挑战性的未知内参场景。 本文将遵循本系列一贯的风格:从几何模型出发,建立最小二乘优化问题,分析其线性与非线性解法,并最终通过实例代码验证理论。 2 几何模型 2.1 从成像模型出发 对极几何的推导始于我们熟悉的针孔相机成像模型。考虑两个相机观测同一静态场景,其投影过程可分别描述为: \[\lambda_1 \mathbf{x}_1 = \mathbf{K}_1 [\mathbf{R}_1 \mid \mathbf{t}_1] \tilde{\mathbf{X}}, \quad \lambda_2 \mathbf{x}_2 = \mathbf{K}_2 [\mathbf{R}_2 \mid \mathbf{t}_2] \tilde{\mathbf{X}} \tag{1} \] 其中: \(\tilde{\mathbf{X}} = [\mathbf{X}^\top, 1]^\top \in \mathbb{R}^4\) 是空间点 \(\mathbf{X} \in \mathbb{R}^3\) 的齐次坐标; \(\mathbf{x}_1, \mathbf{x}_2 \in \mathbb{R}^3\) 是其在两幅图像中的齐次像素坐标; \(\mathbf{K}_1, \mathbf{K}_2\) 为相机内参矩阵; \([\mathbf{R}_i \mid \mathbf{t}_i]\) 为第 \(i\) 个相机的外参(从世界坐标系到相机坐标系的变换); \(\lambda_1, \lambda_2\) 为未知的正尺度因子(即深度)。 为简化分析,我们将世界坐标系固定在第一个相机上。这是一个无损一般性的选择,因为相对运动与坐标系选取无关。
阅读全文