对极约束
问题描述
:求取两帧图像
I
1
,
I
2
I
1
,
I
2
之间的运动。设第一帧到第二帧的运动为
R
,
t
⃗
R
,
t
→
,其中心分别为
O
1
,
O
2
O
1
,
O
2
,
I
1
I
1
中有一个点
p
1
p
1
对应到
I
2
I
2
的点为
p
2
p
2
.
P
P
为两个摄像机在远处的交点。
称为极平面(Epipolar plane),
O
1
O
2
O
1
O
2
连线与相机平面交点称为极点(Epipoles),
O
1
O
2
O
1
O
2
称为基线,
l
1
,
l
2
l
1
,
l
2
为极线(Epipolar line).
以第一帧的坐标系作为基准,设
P
P
坐标为
,
p
1
,
p
2
p
1
,
p
2
位置为:
s
1
p
1
=
K
P
,
s
2
p
2
=
K
(
R
P
+
t
⃗
)
s
1
p
1
=
K
P
,
s
2
p
2
=
K
(
R
P
+
t
→
)
其中
K
K
为相机内参,
R
,
t
⃗
R
,
t
→
为坐标系的相机运动。转化为齐次等式:
p
1
=
K
P
,
p
2
=
K
(
R
P
+
t
⃗
)
p
1
=
K
P
,
p
2
=
K
(
R
P
+
t
→
)
取
x
⃗
1
=
K
−
1
p
⃗
1
x
→
1
=
K
−
1
p
→
1
,
x
⃗
2
=
K
−
1
p
⃗
2
x
→
2
=
K
−
1
p
→
2
,则有:
x
⃗
2
=
R
x
⃗
1
+
t
⃗
x
→
2
=
R
x
→
1
+
t
→
两边左乘
t
⃗
∧
t
→
∧
,有:
t
⃗
∧
x
⃗
2
=
t
⃗
∧
R
x
⃗
1
(
x
⃗
2
t
⃗
=
0
)
t
→
∧
x
→
2
=
t
→
∧
R
x
→
1
(
x
→
2
t
→
=
0
)
两边再左乘
x
⃗
⊤
2
x
→
2
⊤
:
x
⃗
⊤
2
t
⃗
∧
x
⃗
2
=
x
⃗
⊤
2
t
⃗
∧
R
x
⃗
1
x
→
2
⊤
t
→
∧
x
→
2
=
x
→
2
⊤
t
→
∧
R
x
→
1
因为
t
⃗
∧
x
⃗
2
t
→
∧
x
→
2
与
t
⃗
∧
t
→
∧
和
x
⃗
2
x
→
2
皆为垂直,所以左侧为0:
x
⃗
⊤
2
t
⃗
∧
R
x
⃗
1
=
0
x
→
2
⊤
t
→
∧
R
x
→
1
=
0
再代入
x
1
,
x
2
x
1
,
x
2
得到:
(
K
−
1
p
⃗
2
)
⊤
t
⃗
∧
R
K
−
1
p
⃗
1
=
0
(
K
−
1
p
→
2
)
⊤
t
→
∧
R
K
−
1
p
→
1
=
0
即:
p
⃗
⊤
2
K
−
⊤
t
⃗
∧
R
K
−
1
p
⃗
1
=
0
p
→
2
⊤
K
−
⊤
t
→
∧
R
K
−
1
p
→
1
=
0
此式即为
对极约束
,几何意义为
O
1
,
O
2
,
P
O
1
,
O
2
,
P
共面。
将中间拆为基础矩阵和本质矩阵,可简化约束为:
E
=
t
⃗
∧
R
,
R
=
K
−
T
E
K
−
1
,
x
⃗
⊤
2
E
x
⃗
1
=
p
⃗
⊤
2
F
p
⃗
1
=
0
E
=
t
→
∧
R
,
R
=
K
−
T
E
K
−
1
,
x
→
2
⊤
E
x
→
1
=
p
→
2
⊤
F
p
→
1
=
0
上式中,
E
E
为
本质矩阵
(Essential Matrix),
F
F
为
基础矩阵
(Fundamental Matrix).所以相机位势估计问题变为:
-
根据配对点的像素位置, 求出
E
E
或
F
F
; -
根据
E
E
或
F
F
, 求出
R
,
t
⃗
R,
t
→
.
本质矩阵
E
E
性质:
-
尺度等价性:
E
E
在不同尺度下等价 -
内在性质:
E
E
的奇异值必定是
[
ρ
,
ρ
,
0
]
[ρ
,
ρ
,
0
]
的形式 -
t
⃗
∧
R
t→
∧
R
有6个自由度,而
E
E
有5个自由度
如何求解本质矩阵
E
E
:
-
方法一:因为
E
E
有五个自由度,说明可以用五对点来求解
E
E
。但
E
E
的内在性质是非线性的,用线性的方程求解会带来问题。 -
方法二:从尺度等价性出发,用
八对点
来解方程。
八对点求解本质矩阵
E
E
考虑一对匹配点,它们的归一化坐标为
x
⃗
1
=
[
u
1
,
v
1
,
1
]
⊤
x
→
1
=
[
u
1
,
v
1
,
1
]
⊤
,
x
⃗
2
=
[
u
2
,
v
2
,
1
]
⊤
x
→
2
=
[
u
2
,
v
2
,
1
]
⊤
,根据对极约束有:
[
u
1
,
v
1
,
1
]
⊤
⎡
⎣
⎢
e
1
e
4
e
7
e
2
e
5
e
8
e
3
e
6
e
9
⎤
⎦
⎥
[
u
2
,
v
2
,
1
]
⊤
[
u
1
,
v
1
,
1
]
⊤
[
e
1
e
2
e
3
e
4
e
5
e
6
e
7
e
8
e
9
]
[
u
2
,
v
2
,
1
]
⊤
把
E
E
展开成向量表示,
e
⃗
=
[
e
1
,
⋯
,
e
9
]
⊤
e
→
=
[
e
1
,
⋯
,
e
9
]
⊤
,则线性方程为:
[
u
1
u
2
,
u
1
v
2
,
u
1
,
v
1
u
2
,
v
1
v
2
,
v
1
,
u
2
,
v
2
,
1
]
⋅
e
⃗
=
0
⃗
[
u
1
u
2
,
u
1
v
2
,
u
1
,
v
1
u
2
,
v
1
v
2
,
v
1
,
u
2
,
v
2
,
1
]
⋅
e
→
=
0
→
对其他点对,也有类似表示。把这8个点对的方程放在一起可组成一个线性方程:
⎡
⎣
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
u
1
1
u
1
2
u
2
1
u
2
2
u
3
1
u
3
2
⋮
u
8
1
u
8
2
u
1
1
v
1
2
u
2
1
v
2
2
u
3
1
v
3
2
⋮
u
8
1
v
8
2
u
1
1
u
2
1
u
3
1
⋮
u
8
1
v
1
1
u
1
2
v
2
1
u
2
2
v
3
1
u
3
2
⋮
v
8
1
u
8
2
v
1
1
v
1
2
v
2
1
v
2
2
v
3
1
v
3
2
⋮
v
8
1
v
8
2
v
1
1
v
2
1
v
3
1
⋮
v
8
1
u
1
2
u
2
2
u
3
2
⋮
u
8
2
v
1
2
v
2
2
v
3
2
⋮
v
8
2
1
1
1
⋮
1
⎤
⎦
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
e
⃗
=
0
⃗
[
u
1
1
u
2
1
u
1
1
v
2
1
u
1
1
v
1
1
u
2
1
v
1
1
v
2
1
v
1
1
u
2
1
v
2
1
1
u
1
2
u
2
2
u
1
2
v
2
2
u
1
2
v
1
2
u
2
2
v
1
2
v
2
2
v
1
2
u
2
2
v
2
2
1
u
1
3
u
2
3
u
1
3
v
2
3
u
1
3
v
1
3
u
2
3
v
1
3
v
2
3
v
1
3
u
2
3
v
2
3
1
⋮
⋮
⋮
⋮
⋮
⋮
⋮
⋮
⋮
u
1
8
u
2
8
u
1
8
v
2
8
u
1
8
v
1
8
u
2
8
v
1
8
v
2
8
v
1
8
u
2
8
v
2
8
1
]
e
→
=
0
→
则问题变为:
如何根据已估得的本质矩阵
E
E
,恢复得到
R
R
和
t
⃗
t
→
.
不妨设
E
E
的SVD分解为:
E
=
U
Σ
V
⊤
E
=
U
Σ
V
⊤
其中
U
U
和
V
V
为正交阵,
Σ
Σ
为奇异值矩阵,根据之前的推断
Σ
=
d
i
a
g
(
ρ
,
ρ
,
0
)
Σ
=
d
i
a
g
(
ρ
,
ρ
,
0
)
,可知对任一
E
E
存在两个可能的
R
R
和
t
⃗
t
→
与之对应:
t
⃗
∧
1
=
U
R
Z
(
π
2
)
Σ
U
⊤
,
R
1
=
U
R
⊤
Z
(
π
2
)
V
⊤
t
⃗
∧
2
=
U
R
Z
(
−
π
2
)
Σ
U
⊤
,
R
2
=
U
R
⊤
Z
(
−
π
2
)
V
⊤
t
→
1
∧
=
U
R
Z
(
π
2
)
Σ
U
⊤
,
R
1
=
U
R
Z
⊤
(
π
2
)
V
⊤
t
→
2
∧
=
U
R
Z
(
−
π
2
)
Σ
U
⊤
,
R
2
=
U
R
Z
⊤
(
−
π
2
)
V
⊤
式中
R
Z
(
π
2
)
R
Z
(
π
2
)
表示为沿Z轴旋转90度得到的旋转矩阵。此外,由于-
E
E
和
E
E
等价,对任意的
t
⃗
t
→
取负号也会得到同样结果。所以从
E
E
分解到
R
R
和
t
⃗
t
→
时一共存在四个可能的解。
后续为了检查哪个解是正确的时候,可以把任意一点代入四个解中,当该点在两个相机下的深度皆为正的深度时(即解为正数),即可确认该解是所述问题的正确的解。
剩下的问题
:
如何确认解出的
E
E
满足内在性质
?
假设对
E
E
做SVD分解后,奇异值矩阵
Σ
=
d
i
a
g
(
ρ
1
,
ρ
2
,
ρ
3
)
Σ
=
d
i
a
g
(
ρ
1
,
ρ
2
,
ρ
3
)
, 不妨设
ρ
1
≥
ρ
2
≥
ρ
3
ρ
1
≥
ρ
2
≥
ρ
3
,构造:
E
=
U
d
i
a
g
(
ρ
1
+
ρ
2
2
,
ρ
2
+
ρ
3
2
,
0
)
V
⊤
E
=
U
d
i
a
g
(
ρ
1
+
ρ
2
2
,
ρ
2
+
ρ
3
2
,
0
)
V
⊤
即把求出的矩阵投影到
E
E
的流形上,即可保证其满足内在性质。更简单的做法是直接将奇异值矩阵取为diag(1, 1, 0)使得
E
E
具有尺度等价性。
单应矩阵
单应矩阵(Homography)
H
H
:描述了两个平面之间的映射关系。它描述了处于共同平面上的一些点在两张图像之间的变换关系。
假设图像
I
1
I
1
和
I
2
I
2
有匹配好的点
p
1
p
1
和
p
2
p
2
,这些特征点落在平面上,平面满足方程:
n
⃗
⊤
P
+
d
=
0
n
→
⊤
P
+
d
=
0
整理有:
−
n
⃗
⊤
P
d
=
1
−
n
→
⊤
P
d
=
1
则:
p
⃗
2
=
K
(
R
P
+
t
⃗
)
=
K
(
R
P
+
t
⃗
⋅
(
−
n
⃗
⊤
P
d
)
)
=
K
(
R
−
t
⃗
n
⃗
⊤
d
)
P
=
K
(
R
−
t
⃗
n
⃗
⊤
d
)
K
−
1
p
1
p
→
2
=
K
(
R
P
+
t
→
)
=
K
(
R
P
+
t
→
⋅
(
−
n
→
⊤
P
d
)
)
=
K
(
R
−
t
→
n
→
⊤
d
)
P
=
K
(
R
−
t
→
n
→
⊤
d
)
K
−
1
p
1
这是一个关于图像坐标
p
1
p
1
和
p
2
p
2
的变换,为方便把中间这部记为
H
H
, 于是:
p
⃗
2
=
H
p
⃗
1
p
→
2
=
H
p
→
1
为求解
H
H
,类似于
E
E
的做法,将上式展开:
⎡
⎣
⎢
u
2
v
2
1
⎤
⎦
⎥
=
⎡
⎣
⎢
h
1
h
4
h
7
h
2
h
5
h
8
h
3
h
6
h
9
⎤
⎦
⎥
⎡
⎣
⎢
u
1
v
1
1
⎤
⎦
⎥
[
u
2
v
2
1
]
=
[
h
1
h
2
h
3
h
4
h
5
h
6
h
7
h
8
h
9
]
[
u
1
v
1
1
]
为简化问题,实际上常常乘以一个非0因子使得
h
9
=
1
h
9
=
1
,即乘上
1
/
(
h
7
u
1
+
h
8
v
1
+
h
9
)
1
/
(
h
7
u
1
+
h
8
v
1
+
h
9
)
,再次展开得到式子:
u
2
=
h
1
u
1
+
h
2
v
1
+
h
3
h
7
u
1
+
h
8
v
1
+
h
9
v
2
=
h
4
u
1
+
h
5
v
1
+
h
6
h
7
u
1
+
h
8
v
1
+
h
9
u
2
=
h
1
u
1
+
h
2
v
1
+
h
3
h
7
u
1
+
h
8
v
1
+
h
9
v
2
=
h
4
u
1
+
h
5
v
1
+
h
6
h
7
u
1
+
h
8
v
1
+
h
9
注意到
h
9
=
1
h
9
=
1
, 整理后可得到:
u
2
=
(
h
1
u
1
+
h
2
v
1
+
h
3
)
−
(
h
7
u
1
+
h
8
v
1
)
u
2
v
2
=
(
h
4
u
1
+
h
5
v
1
+
h
6
)
−
(
h
7
u
1
+
h
8
v
1
)
v
2
u
2
=
(
h
1
u
1
+
h
2
v
1
+
h
3
)
−
(
h
7
u
1
+
h
8
v
1
)
u
2
v
2
=
(
h
4
u
1
+
h
5
v
1
+
h
6
)
−
(
h
7
u
1
+
h
8
v
1
)
v
2
由此可见一对匹配点可构造两项约束,于是自由度为8的单应矩阵可通过4对匹配点来算出。构造方程如下:
⎡
⎣
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
u
1
1
0
u
2
1
0
u
3
1
0
u
4
1
0
v
1
1
0
v
2
1
0
v
3
1
0
v
4
1
0
1
0
1
0
1
0
1
0
0
u
1
1
0
u
2
1
0
u
3
1
0
u
4
1
0
v
1
1
0
v
2
1
0
v
3
1
0
v
4
1
0
1
0
1
0
1
0
1
−
u
1
1
u
1
2
−
u
1
1
v
1
2
−
u
2
1
u
2
2
−
u
2
1
v
2
2
−
u
3
1
u
3
2
−
u
3
1
v
3
2
−
u
4
1
u
4
2
−
u
4
1
v
4
2
v
1
1
u
1
2
−
v
1
1
v
1
2
v
2
1
u
2
2
−
v
2
1
v
2
2
v
3
1
u
3
2
−
v
3
1
v
3
2
v
4
1
u
4
2
−
v
4
1
v
4
2
⎤
⎦
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎡
⎣
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
h
1
h
2
h
3
h
4
h
5
h
6
h
7
h
8
⎤
⎦
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
=
⎡
⎣
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
u
1
2
v
1
2
u
2
2
v
2
2
u
3
2
v
3
2
u
4
2
v
4
2
⎤
⎦
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
[
u
1
1
v
1
1
1
0
0
0
−
u
1
1
u
2
1
v
1
1
u
2
1
0
0
0
u
1
1
v
1
1
1
−
u
1
1
v
2
1
−
v
1
1
v
2
1
u
1
2
v
1
2
1
0
0
0
−
u
1
2
u
2
2
v
1
2
u
2
2
0
0
0
u
1
2
v
1
2
1
−
u
1
2
v
2
2
−
v
1
2
v
2
2
u
1
3
v
1
3
1
0
0
0
−
u
1
3
u
2
3
v
1
3
u
2
3
0
0
0
u
1
3
v
1
3
1
−
u
1
3
v
2
3
−
v
1
3
v
2
3
u
1
4
v
1
4
1
0
0
0
−
u
1
4
u
2
4
v
1
4
u
2
4
0
0
0
u
1
4
v
1
4
1
−
u
1
4
v
2
4
−
v
1
4
v
2
4
]
[
h
1
h
2
h
3
h
4
h
5
h
6
h
7
h
8
]
=
[
u
2
1
v
2
1
u
2
2
v
2
2
u
2
3
v
2
3
u
2
4
v
2
4
]
解线性方程可得到
H
H
.此法称为直接线性变换法(Direct Linear Transform).
同本质矩阵相似,为验证
H
H
,对
H
H
做SVD分解后可得到四组旋转矩阵与向量,考虑以下事实:
- 成像的地图点的深度是否全为正值?若是可排除两组解。
-
场景中的平面的法向量。若场景平面与相机平面平行,又可排除一组解,其法向量
n
⃗
n→
的理论值应为
1
⃗
1→
.
可以看到最后的解是通过场景事实筛选而获得的。
问题讨论:
-
尺度不确定性问题:对
t
⃗
t→
归一化时,会导致单目视觉的尺度不确定性(Scale Ambiguity). 当对两张图的
t
⃗
t→
归一化时,相当于固定了尺度,即
t
⃗
t→
的单位为1,称之为单目SLAM的初始化。要求初始化的两张图像须有一定程度的平移。 -
初始化的纯旋转问题:若相机发生的是纯旋转,导致
t
⃗
t→
为零,会导致无法求解
R
R
. 因而要求:单目初始化不能只有纯旋转,必须要有一定程度的平移。 -
多于八对点的情况:不妨设线性化后的对极约束等式中,左侧的系数矩阵为
A
A
:
A
e
⃗
=
0
⃗
Ae
→
=
0
→
只用八点法的话,
A
A
的大小为8*9; 当多于八对点时,可以通过最小化二次型来求解:
min
e
⃗
∥
A
e
⃗
∥
2
2
=
min
e
⃗
e
⃗
⊤
A
⊤
A
e
⃗
mine
→
‖
A
e
→
‖
2
2
=
min
e
→
e
→
⊤
A
⊤
A
e
→
这样就求出了在最小二乘意义下的矩阵。也可以通过
Random Sample Concensus
(随机采样一致性)来求解。