现在进入本书的part 2了,标题是Two-View Geometry。第9-14章都隶属于part 2,这一部分涵盖了两个透视图的几何形状知识,这些视图可以像在立体设备中同时获取,或者例如通过相对于场景移动的相机顺序获取。这两种情况在几何上是等价的,这里不再区分。每个视图都有一个关联的相机矩阵 P P P, P ′ P' P′,其中 ′ ' ′表示与第二个视图关联的实体,3D点 X X X在第一个视图中成像为 x = P X x = PX x=PX,在第二个视图中 x ′ = P ′ X x' = P'X x′=P′X。图像点 x x x和 x ′ x′ x′对应,因为它们是同一3D点的图像。 我们将解决三个问题:
- 对应几何。 给定第一个视图中的图像点 x x x,如何约束第二个视图中对应点 x ′ x' x′的位置?
- 相机几何形状(运动)。 给定一组对应的图像点 x i ↔ x i ′ , i = 1 , . . . , n {x_{i} ↔ x'_{i}},i = 1,...,n xi↔xi′,i=1,...,n,两个视图的摄像机 P P P和 P ′ P' P′是多少?
- 场景几何(结构)。 给定对应的图像点 x ↔ x ′ x ↔ x′ x↔x′和摄像机 P , P ′ P,P' P,P′, X X X在3D空间中的位置是什么?
第9章描述了两种视图的对极几何,并直接回答了第一个问题:一个视图中的点定义了另一个视图中对应点所在的对极线。 对极几何结构仅取决于相机——它们的相对位置和内部参数。 它完全不依赖于场景结构。
第10章描述了未校准多视图几何中最重要的结果之一——摄像机和场景结构的重建可以仅根据图像点对应关系来计算; 不需要其他信息。 这同时回答了第二个问题和第三个问题。 仅从点对应关系获得的重建就达到了3D空间的投影模糊度,并且可以通过提供有关摄像机或场景的明确定义的附加信息来解决该模糊度。 以这种方式,可以从未校准的图像计算仿射或度量重建。
接下来的两章将详细介绍计算这种重建的细节和数值算法。
第11章描述了从一组相应图像点 x i ↔ x ′ i {x_{i} ↔ x′_{i}} xi↔x′i计算 F F F的方法,即使这些点的结构未知且相机矩阵未知。 然后可以根据计算的 F F F确定相机 P P P和 P ′ P' P′。
第12章描述了在给定摄像机和相应图像点的情况下通过三角测量计算场景结构。
第13章介绍了平面的双视图几何。 它为第一个问题提供了另一种答案:如果场景点位于一个平面上,那么一旦计算出该平面的几何形状,一个图像中的点的图像 x x x就确定了另一图像中 x ′ x' x′的位置。 这些点通过平面投影变换相关。 本章还描述了视图之间特别重要的射影变换——无限单应性,这是由无穷远平面产生的变换。
第14章描述了两个摄像机 P P P和 P ′ P' P′仿射的特殊情况下的双视图几何。 这种情况比一般投影情况有许多简化,并且在许多实际情况下提供了非常好的近似。
9 Epipolar Geometry and the Fundamental Matrix
本章主要讲述对极几何、基本矩阵F和本质矩阵E。
文章目录
9.1 Epipolar geometry
对极几何是投影几何的内在性质,反应的是两幅图像的关系。
假设3D空间中的点
X
X
X在两个视图中成像,第一个视图中为
x
x
x,第二个视图中为
x
′
x′
x′。 对应的图像点
x
x
x和
x
′
x′
x′之间有什么关系? 如图 9.1a 所示,图像点
x
x
x和
x
′
x′
x′、空间点
X
X
X和相机中心共面。将该平面表示为
π
\pi
π。 显然,从
x
x
x和
x
′
x′
x′反投影的光线在
X
X
X处相交,并且光线共面,位于
π
\pi
π内。 后一个属性在寻找对应关系时最为重要。
假设现在我们只知道
x
x
x,我们可能会问对应点
x
′
x'
x′是如何约束的。平面
π
\pi
π由基线和
x
x
x定义的射线确定。 从上面我们知道,未知点
x
′
x'
x′对应的射线位于
π
\pi
π中,因此点
x
′
x'
x′位于
π
\pi
π与第二像平面的交线上
l
′
l'
l′。这条线
l
′
l'
l′是从
x
x
x反投影的射线的第二个视图中的图像。它是对应
x
x
x的极线。就立体匹配算法而言,好处是搜索与
x
x
x对应的点不需要覆盖整个图像平面,而是可以限制在直线
l
′
l'
l′内。
9.2 The fundamental matrix F F F
基本矩阵是对极几何的代数表示。 下面我们根据点与其极线之间的映射推导基本矩阵,然后指定矩阵的属性。
9.2.1 Geometric derivation
假设空间点 X X X在图像1的投影是 x x x,图像2的投影是 x ′ x' x′,那么 x x x和 x ′ x' x′有什么关系?
x
,
x
′
,
X
x,x',X
x,x′,X三个点构成了一个平面,叫极平面
π
\pi
π。如果我们把
x
x
x反投影,会形成一条
π
\pi
π上的射线
l
′
l'
l′,
l
′
l'
l′往图像2上投影,
x
′
x'
x′一定会在
l
′
l'
l′上,
l
′
l'
l′就叫极线。同时,连接图像1的相机中心和图像2的相机中心,这条线叫基线,基线会和两个图像有交点,叫极点。图像2的极点
e
′
e'
e′也在
l
′
l'
l′上,所以
x
′
x'
x′和
e
′
e'
e′构成了一条直线,可以表达为:
l
′
=
e
′
×
x
′
=
[
e
′
]
×
x
′
l' = e' \times x' = [e']_{\times} x'
l′=e′×x′=[e′]×x′
因为
x
′
=
H
π
X
x'=H_{\pi}X
x′=HπX所以
l
′
=
[
e
′
]
×
H
π
x
=
F
x
l'=[e']_{\times} H_{\pi}x=Fx
l′=[e′]×Hπx=Fx
由此我们定义fundamental matrix F F F,这个矩阵的rank为2。它表示从2维到1维射影空间的映射,因此必须rank是2。
9.2.2 Algebraic derivation
现在我们假设有两个相机的投影矩阵 P P P和 P ′ P' P′。
我们再考虑一下 x ′ x' x′怎么用 x x x表示? x ′ = P ′ P + x x'=P'P^{+}x x′=P′P+x,就是把 x x x用 P P P的逆反投影回去,再用 P ′ P' P′投影一下。 e ′ e' e′怎么用 e e e表示?很简单, P ′ C P'C P′C。看到这里有个问题, C C C为啥不是 P ′ P + C P'P^{+}C P′P+C?因为 C C C本身不用 P + P^{+} P+的逆去反投影,这是为什么呢?
因为如果我们把
x
x
x反投影,会形成一条射线,可以表示为:
X
(
λ
)
=
P
+
x
+
λ
C
X(\lambda) = P^{+}x + \lambda C
X(λ)=P+x+λC
λ → ∞ \lambda \rightarrow \infty λ→∞的时候, X ( λ ) = C X(\lambda)=C X(λ)=C,所以我们看到 C C C其实和 P P P没啥关系的。
回到正题,我们把
x
′
e
′
x' e'
x′e′的表达式带入
l
′
l'
l′就得到了:
l
′
=
(
P
′
C
)
×
(
P
′
P
+
x
)
=
[
e
′
]
×
(
P
′
P
+
)
x
=
F
x
l'=(P'C) \times (P'P^{+}x) \\ =[e'] _{\times} (P'P^{+})x \\ =Fx
l′=(P′C)×(P′P+x)=[e′]×(P′P+)x=Fx
就得到了基本矩阵
F
F
F的表达式。
9.2.3 Correspondence condition
然后,
x
′
x'
x′在
l
′
l'
l′上,所以
x
′
T
l
′
=
0
x'^T l' = 0
x′Tl′=0,这样就得到了:
x
′
T
F
x
=
0
x'^T F x=0
x′TFx=0
这个永远正确,因为如果点 x x x和 x ′ x' x′对应,则 x ′ x' x′位于与点 x x x对应的对极线 l ′ = F x l' = Fx l′=Fx上。 换句话说, 0 = x ′ T l ′ = x ′ T F x 0 = x'^{T}l' = x'^{T}Fx 0=x′Tl′=x′TFx。
9.2.4 Properties of the fundamental matrix
下面我们总结一下 F F F的性质:
- F 是一个 3 × 3 3 \times 3 3×3的矩阵 rank=2,有7个自由度,所以 d e t F = 0 det F = 0 detF=0
- x , x ′ x, x' x,x′是一对对应点,那么 x ′ T F x = 0 x'^T F x = 0 x′TFx=0
- F x Fx Fx就是 x x x对应极线, F T x ′ F^{T}x' FTx′是 x x x对应极线
- 极点满足 F e = 0 Fe=0 Fe=0和 F T e ′ = 0 F^{T}e'=0 FTe′=0,所以解方程 F x = 0 Fx=0 Fx=0就得到了极点
9.5 Retrieving the camera matrices
F F F的一个非常重要的用途就是恢复两个摄像机的矩阵。
我们先说明两个结论。
结论9.8 如果
H
H
H是一个
4
×
4
4 \times 4
4×4的投影变换矩阵,那么
P
,
P
′
P,P'
P,P′的基本矩阵
F
F
F,与
P
H
,
P
′
H
PH,P'H
PH,P′H的基本矩阵
F
F
F是一样的。
结论9.9 假设 P = [ I ∣ 0 ] , P ′ = [ M ∣ m ] P=[I|0],P'=[M|m] P=[I∣0],P′=[M∣m],那么 F F F就是 [ m ] × M [m]_{\times} M [m]×M。
那么这么 M , m M,m M,m具体长什么样子?以下结论告诉我们。
结论9.14 F F F对应的两个相机矩阵可以写成 P = [ I ∣ 0 ] , P ′ = [ [ e ′ ] × F ∣ e ′ ] P=[I|0],P'=[[e']_{\times}F|e'] P=[I∣0],P′=[[e′]×F∣e′]
9.6 The essential matrix
本质矩阵就是对应点在图像坐标系下的对应关系。假设我们知道内参,那么 P = K [ R ∣ t ] P=K[R|t] P=K[R∣t],所以 K − 1 P = [ R ∣ t ] K^{-1} P=[R|t] K−1P=[R∣t],其中 K − 1 P K^{-1} P K−1P叫归一化的相机矩阵。那么点会怎么变化?
原来是
x
=
P
X
x=PX
x=PX,现在
P
P
P变成了
K
−
1
P
K^{-1} P
K−1P,所以点就变成了
K
−
1
P
X
=
K
−
1
x
K^{-1}PX=K^{-1}x
K−1PX=K−1x,我们把
K
−
1
x
K^{-1}x
K−1x记为
x
^
′
\hat{x}'
x^′,所以
K
x
^
′
=
x
K \hat{x}'=x
Kx^′=x,然后带入基本矩阵的表达式,就得到了基本矩阵和本质矩阵的关系:
E
=
K
′
T
F
K
E=K'^T F K
E=K′TFK
书上的思路是从 K − 1 P K^{-1} P K−1P推导,可以把 K − 1 P K^{-1} P K−1P记成 P ^ \hat{P} P^,用 P ^ \hat{P} P^把基本矩阵重新推一次,也可以得到上述关系。
E E E可以由旋转和平移得到,表示为 E = [ t ] × R E=[t]_{\times} R E=[t]×R。
E E E有什么性质?它也是一个 3 × 3 3 \times 3 3×3的奇异矩阵,最后一行是0。
E E E有什么用途?我们可以从 E E E种恢复摄像机矩阵,假设 P = [ I ∣ 0 ] P=[I|0] P=[I∣0],而且我们知道 E E E,把 E E E做SVD分别 E = U d i a g ( 1 , 1 , 0 ) V T E=Udiag(1,1,0)V^T E=Udiag(1,1,0)VT,那么 P ′ P' P′有四种不同结果,这个在三维重建的时候有用。