来源:Richard Hartley 与 Andrew Zisserman 的 Multiple View Geometry in Computer Vision,第 9 章 Epipolar Geometry and the Fundamental Matrix,9.2 小节 The fundamental matrix F。
这篇笔记承接 9.1 对极几何。9.1 讲几何直观,9.2 把这种几何关系写成代数形式,也就是基础矩阵 F。
本节核心
基础矩阵 F 是对极几何的代数表示。
它把第一张图像中的点 x 映射到第二张图像中的对应对极线 l′:
l′=Fx
反过来,第二张图像中的点 x′ 映射到第一张图像中的对极线 l:
l=FTx′
如果 x 和 x′ 是同一个三维点的两幅图像,那么它们满足:
x′TFx=0
这就是最常见的 epipolar constraint。
从点到线的映射
9.1 中已经知道:第一张图中的一个点 x,在第二张图中对应一条对极线 l′。
因此存在一个映射:
x↦l′
这个映射不是点到点,而是点到线。基础矩阵 F 正是这个点到线映射的矩阵表示:
l′=Fx
理解 F 时不要先把它想成“匹配两个点”的矩阵。更准确地说,F 把一个点变成另一张图中的一条约束线。
9.2.1 几何推导
基础矩阵的几何推导可以分成两步。
第一步:通过一个平面做点转移
取一个空间平面 π,它不经过两个相机中心。
第一张图中的点 x 反投影成一条空间射线。这条射线与平面 π 相交于一个三维点 X,再投影到第二张图像,得到一个点 x′。
这个过程叫做通过平面 π 的点转移,可以用一个平面单应矩阵表示:
x′=Hπx
其中 Hπ 是由平面 π 诱导的 homography。
第二步:用 epipole 构造对极线
第二张图中的对极线 l′ 经过两个点:
- 转移得到的点 x′
- 第二张图中的 epipole e′
两点确定一条线,在齐次坐标中可用叉乘表示:
l′=e′×x′
叉乘可以写成反对称矩阵形式:
e′×x′=[e′]×x′
代入 x′=Hπx:
l′=[e′]×Hπx
因此定义:
F=[e′]×Hπ
于是:
l′=Fx
这就是基础矩阵的几何来源。
这里引入平面 π 只是为了构造一个点到点的中间映射。F 的存在不依赖场景里真的有这样一个平面。
为什么 F 的秩是 2
因为:
F=[e′]×Hπ
其中 Hπ 是满秩 3×3 homography,而 [e′]× 是由叉乘构成的反对称矩阵,秩为 2。
所以:
rank(F)=2
也就是说:
det(F)=0
9.2.2 代数推导
现在从两个相机矩阵 P 和 P′ 出发推导 F。
图像点 x 在第一台相机下反投影为一条空间射线:
X(λ)=P+x+λC
其中:
- P+ 是 P 的伪逆。
- C 是第一台相机中心,满足 PC=0。
这条射线上有两个方便的点:
P+x
和相机中心:
C
把它们投影到第二张图像:
P′P+x
P′C
其中:
e′=P′C
是第一台相机中心在第二张图像中的投影,也就是第二张图像的 epipole。
第二张图中的对极线是这两个投影点的连线:
l′=(P′C)×(P′P+x)
写成矩阵形式:
l′=[e′]×P′P+x
因此:
F=[e′]×P′P+
这是从相机矩阵直接计算 F 的一般公式。
如果两台相机中心重合,P′C 会退化为零向量,这个推导会失效。对极几何要求两个视图有非重合相机中心。
标定双目情形
若第一台相机作为世界原点:
P=K[I∣0]
第二台相机为:
P′=K′[R∣t]
则基础矩阵可写为:
F=K′−T[t]×RK−1
也可以写成:
F=[K′t]×K′RK−1
其中两个 epipole 为:
e′=K′t
e=KRTt
这个公式很重要,因为它把 F 和相机内参、相对旋转、相对平移联系起来。
9.2.3 对应点条件
如果 x 和 x′ 是对应点,那么 x′ 必须位于 x 的对极线 l′ 上。
而:
l′=Fx
点在线上的齐次表达是:
x′Tl′=0
代入得到:
x′TFx=0
这就是对应点约束。
这条式子只提供必要条件:满足 x′TFx=0 的点位于对极线上,但不一定就是正确匹配点。
为什么可以从匹配点估计 F
因为 F 满足:
x′TFx=0
这个式子只涉及图像点坐标和 F,不需要直接知道相机矩阵 P,P′。
所以只要有足够多的匹配点,就可以反过来估计 F。
书中后续会说明:一般情况下,至少需要 7 对点才能估计 F;实际中更常见的是使用归一化 8 点算法和 RANSAC。
9.2.4 F 的性质
基础矩阵 F 的重要性质如下。
1. 转置性质
如果 F 是相机顺序 (P,P′) 的基础矩阵,那么 FT 对应相反顺序 (P′,P)。
2. 对极线
第一张图中的点对应第二张图中的线:
l′=Fx
第二张图中的点对应第一张图中的线:
l=FTx′
3. 对极点是零空间
第二张图中的 epipole e′ 是 F 的左零向量:
FTe′=0
第一张图中的 epipole e 是 F 的右零向量:
Fe=0
4. 自由度
F 是 3×3 齐次矩阵。
普通 3×3 齐次矩阵有:
9−1=8
个自由度,因为整体尺度不重要。
但 F 还满足秩为 2 的约束:
det(F)=0
所以最终自由度为:
8−1=7
5. F 是 correlation
F 是一个从点到线的射影映射:
x↦l′
但是它不是可逆的,因为所有落在同一条对极线上的点会映射到同一条对应对极线。也就是说,F 是奇异的、秩为 2。
从不同相机形式计算 F
一般相机
给定:
P,P′
令:
PC=0
e′=P′C
则:
F=[e′]×P′P+
规范相机
若:
P=[I∣0]
P′=[M∣m]
则:
e′=m
e=M−1m
并且:
F=[e′]×M
也可写作:
F=M−T[e]×
标定相机且相机中心有限
若:
P=K[I∣0]
P′=K′[R∣t]
则:
F=K′−T[t]×RK−1
9.2.5 对极线束的 homography
每张图像中的所有对极线都经过 epipole,形成一个线束。
第一张图中的对极线束:
{l∣e∈l}
第二张图中的对极线束:
{l′∣e′∈l′}
这两个一维射影空间之间存在一个 homography,也就是对极线束之间的对应关系。
如果 l 和 l′ 是对应对极线,且 k 是任意不过 epipole e 的线,则:
l′=F[k]×l
对称地:
l=FT[k′]×l′
一个方便选择是取:
k=e
因为把 e 看作线的系数时,它不经过点 e 本身,满足条件。
本节记忆点
- F 把一个点映射成另一张图像中的对极线。
- 最核心公式是:
x′TFx=0
- F 是 3×3、秩为 2 的齐次矩阵。
- F 有 7 个自由度。
- epipole 是 F 的零空间:
Fe=0,FTe′=0
F=[e′]×P′P+
- 给定匹配点,也可以从 x′TFx=0 反过来估计 F。
后续问题
读完 9.2 后,可以继续追问:
- 为什么 7 对点理论上可以求 F?
- 8 点算法为什么要做归一化?
- 如何用 SVD 强制 F 的秩为 2?
- essential matrix E 和 fundamental matrix F 有什么关系?
- 如何从 F 恢复两个相机矩阵?