一、对极几何约束
假设相机从 O 1 O_1 O1经过旋转平移运动, R , t R,t R,t,到达新的位置 O 2 O_2 O2 。 I 1 , I 2 I_1,I_2 I1,I2分别为相机在两个位置的成像平面,空间中同一点 P P P,在两个成像平面上的投影分别为 p 1 , p 2 p_1,p_2 p1,p2。
极平面:
O
1
,
P
,
O
2
O_1,P,O_2
O1,P,O2三点确定的平面(
Δ
O
1
P
O
2
\Delta O_1PO_2
ΔO1PO2所在的平面)
极点:
O
1
,
O
2
O_1,O_2
O1,O2连线与两个成像平面
I
1
,
I
2
I_1,I_2
I1,I2的交点
e
1
,
e
2
e_1,e_2
e1,e2
基线:两个相机光心的连线
O
1
O
2
O_1O_2
O1O2
极线:极平面与两个成像平面之间的相交线
l
1
,
l
2
l_1,l_2
l1,l2
1、本质矩阵
假设在第一帧所在坐标系下,点P的坐标为:
P
=
[
X
Y
Z
]
P=\begin{bmatrix} X\\ Y\\ Z\\ \end{bmatrix}
P=⎣
⎡XYZ⎦
⎤
根据针孔相机模型的投影公式,两个成像平面上像素点
p
1
,
p
2
p_1,p_2
p1,p2的坐标位置为:
s
1
p
1
=
K
P
(1)
s_1p_1=KP\tag{1}
s1p1=KP(1)
s
2
p
2
=
K
(
R
P
+
t
)
(2)
s_2p_2=K(RP+t)\tag{2}
s2p2=K(RP+t)(2)
这里,
K
K
K为
3
×
3
3×3
3×3的相机内参数矩阵;
R
,
t
R,t
R,t为相机的运动,具体来说,这里应该是
R
21
,
t
21
R_{21},t_{21}
R21,t21,将
O
1
O_1
O1坐标系下的坐标
P
P
P转换到了
O
2
O_2
O2坐标系下的坐标
(
R
21
P
+
t
21
)
(R_{21}P+t_{21})
(R21P+t21);
s
1
s_1
s1为深度信息,即空间点
P
P
P到相机光心
O
1
O_1
O1的距离,
s
2
s_2
s2则为空间点
P
P
P到相机光心
O
2
O_2
O2的距离,两者并不相等;
p
1
,
p
2
p_1,p_2
p1,p2为
3
×
1
3\times 1
3×1的齐次坐标形式,
P
P
P为
3
×
1
3\times 1
3×1的欧氏坐标形式。
根据针孔相机模型的投影公式:
Z
[
u
v
1
]
=
K
[
X
Y
Z
]
Z\begin{bmatrix}u\\v\\1\end{bmatrix}=K\begin{bmatrix}X\\Y\\Z\end{bmatrix}
Z⎣
⎡uv1⎦
⎤=K⎣
⎡XYZ⎦
⎤
令等式两边同时乘
1
Z
\frac{1}{Z}
Z1:
[
u
v
1
]
=
K
[
X
Z
Y
Z
1
]
\begin{bmatrix}u\\v\\1\end{bmatrix}=K\begin{bmatrix}\frac{X}{Z}\\\\\frac{Y}{Z}\\\\1\end{bmatrix}
⎣
⎡uv1⎦
⎤=K⎣
⎡ZXZY1⎦
⎤
令等式两边同时左乘
K
−
1
K^{-1}
K−1:
K
−
1
[
u
v
1
]
=
[
X
Z
Y
Z
1
]
K^{-1}\begin{bmatrix}u\\v\\1\end{bmatrix}=\begin{bmatrix}\frac{X}{Z}\\\\\frac{Y}{Z}\\\\1\end{bmatrix}
K−1⎣
⎡uv1⎦
⎤=⎣
⎡ZXZY1⎦
⎤
可以看出,对像素点二维坐标的齐次坐标左乘
K
−
1
K^{-1}
K−1后,并不能恢复到空间点的三维坐标
[
X
Y
Z
]
\begin{bmatrix} X\\ Y\\ Z\\ \end{bmatrix}
⎣
⎡XYZ⎦
⎤,而是得到这个三维坐标在归一化平面(
Z
=
1
的平面
Z=1的平面
Z=1的平面)上的坐标:
[
X
Z
Y
Z
1
]
\begin{bmatrix}\frac{X}{Z}\\\\\frac{Y}{Z}\\\\1\end{bmatrix}
⎣
⎡ZXZY1⎦
⎤
现在,取:
x
1
=
K
−
1
p
1
(3)
x_1=K^{-1}p_1\tag{3}
x1=K−1p1(3)
x
2
=
K
−
1
p
2
(4)
x_2=K^{-1}p_2\tag{4}
x2=K−1p2(4)
可知, x 1 , x 2 x_1,x_2 x1,x2是两个像素点的归一化平面上的坐标。
联立式(1)(2)(3)(4):
由
s
2
p
2
=
K
(
R
P
+
t
)
s_2p_2=K(RP+t)
s2p2=K(RP+t)等式两边左乘
K
−
1
K^{-1}
K−1:
K
−
1
s
2
p
2
=
R
P
+
t
K^{-1}s_2p_2=RP+t
K−1s2p2=RP+t
s
2
K
−
1
p
2
=
R
P
+
t
s_2K^{-1}p_2=RP+t
s2K−1p2=RP+t
s
2
x
2
=
R
P
+
t
(5)
s_2x_2=RP+t\tag{5}
s2x2=RP+t(5)
由
s
1
p
1
=
K
P
s_1p_1=KP
s1p1=KP等式两边左乘
K
−
1
K^{-1}
K−1:
K
−
1
s
1
p
1
=
P
K^{-1}s_1p_1=P
K−1s1p1=P
s
1
K
−
1
p
1
=
P
s_1K^{-1}p_1=P
s1K−1p1=P
s
1
x
1
=
P
s_1x_1=P
s1x1=P
将
s
1
x
1
=
P
s_1x_1=P
s1x1=P代入式(5),得:
s
2
x
2
=
R
s
1
x
1
+
t
s_2x_2=Rs_1x_1+t
s2x2=Rs1x1+t
在等式两侧同时左乘
t
∧
t^{\wedge}
t∧:
s
2
t
∧
x
2
=
s
1
t
∧
R
x
1
+
t
∧
t
=
s
1
t
∧
R
x
1
(
后面那块
t
×
t
的结果是零向量,所以没有了
)
s_2t^{\wedge}x_2=s_1t^{\wedge}Rx_1+t^{\wedge}t\\ =s_1t^{\wedge}Rx_1\\ (后面那块t\times t的结果是零向量,所以没有了)
s2t∧x2=s1t∧Rx1+t∧t=s1t∧Rx1(后面那块t×t的结果是零向量,所以没有了)
∧
^{\wedge}
∧的定义:在《视觉SLAM十四讲》中,
a
∧
a^{\wedge}
a∧是与向量
a
a
a一一对应的一个反对称矩阵,
a
∧
b
=
a
×
b
a^{\wedge}b=a\times b
a∧b=a×b,实际上就是一个叉乘的矩阵表达形式,在某些地方
a
∧
a^{\wedge}
a∧也可能写成
a
×
a_{×}
a×,知道是同一个意思就好
上式中,再同时左乘
x
2
T
x_2^T
x2T:
s
2
x
2
T
t
∧
x
2
=
s
1
x
2
T
t
∧
R
x
1
s_2x_2^Tt^{\wedge}x_2=s_1x_2^Tt^{\wedge}Rx_1
s2x2Tt∧x2=s1x2Tt∧Rx1
观察上述等式的左侧,
t
∧
x
2
t^{\wedge}x_2
t∧x2的结果是一个与
t
,
x
2
t,x_2
t,x2均垂直的向量,左乘
x
2
T
x_2^T
x2T相当于
x
2
x_2
x2点乘向量
t
∧
x
2
t^{\wedge}x_2
t∧x2。由于向量
t
∧
x
2
t^{\wedge}x_2
t∧x2必定与
x
2
x_2
x2垂直,因此
x
2
x_2
x2点乘向量
t
∧
x
2
t^{\wedge}x_2
t∧x2的结果自然是0。
s
2
s
1
x
2
T
t
∧
x
2
=
x
2
T
t
∧
R
x
1
\frac{s_2}{s_1}x_2^Tt^{\wedge}x_2=x_2^Tt^{\wedge}Rx_1
s1s2x2Tt∧x2=x2Tt∧Rx1
由于
x
2
T
t
∧
x
2
=
0
x_2^Tt^{\wedge}x_2=0
x2Tt∧x2=0,
s
1
,
s
2
s_1,s_2
s1,s2是常数,最终得到结果:
x
2
T
t
∧
R
x
1
=
0
(6)
x_2^Tt^{\wedge}Rx_1=0\tag{6}
x2Tt∧Rx1=0(6)
将式(6)的中间部分
t
∧
R
t^{\wedge}R
t∧R记作
E
E
E ,即本质矩阵:
x
2
T
E
x
1
=
0
x_2^TEx_1=0
x2TEx1=0
从式子中可以看到,本质矩阵约束了空间中同一个三维点,在两个归一化平面坐标之间的联系
2、基础矩阵
再将归一化坐标与像素点坐标的关系
x
1
=
K
−
1
p
1
x_1=K^{-1}p_1
x1=K−1p1,
x
2
=
K
−
1
p
2
x_2=K^{-1}p_2
x2=K−1p2 代入式(6),得:
(
K
−
1
p
2
)
T
t
∧
R
K
−
1
p
1
=
0
(K^{-1}p_2)^Tt^{\wedge}RK^{-1}p_1=0
(K−1p2)Tt∧RK−1p1=0
p
2
T
K
−
T
t
∧
R
K
−
1
p
1
=
0
(7)
p_2^TK^{-T}t^{\wedge}RK^{-1}p_1=0\tag{7}
p2TK−Tt∧RK−1p1=0(7)
将式(7)的中间部分
K
−
T
t
∧
R
K
−
1
K^{-T}t^{\wedge}RK^{-1}
K−Tt∧RK−1记作
F
F
F ,即基础矩阵:
p
2
T
F
p
1
=
0
p_2^TFp_1=0
p2TFp1=0
从式子中可以看到,基础矩阵约束了空间中同一个三维点,在两个成像平面上,像素坐标之间的联系,记住这里的
p
1
,
p
2
p_1,p_2
p1,p2 是
3
×
1
3\times 1
3×1 的齐次坐标形式。
可以看出,基础矩阵
F
F
F 与本质矩阵
E
E
E 之间只相差相机内参数矩阵
K
K
K:
F
=
K
−
T
E
K
−
1
F=K^{-T}EK^{-1}
F=K−TEK−1
3、单应矩阵
(1)前置知识:
平面的表示形式:
n
T
P
+
d
=
0
n^TP+d=0
nTP+d=0
其中,n是平面的单位法向量,P是平面上一点,d是该平面距离坐标原点的有向距离,如果平面面向原点,则d为正,如果平面背向原点,则d为负。
推导:来自于平面的一般式
A
x
+
B
y
+
C
z
+
D
=
0
Ax+By+Cz+D=0
Ax+By+Cz+D=0
一般式中,(A,B,C)为平面的法向量,(x,y,z)为平面上任意一点。而D实际是平面距原点的有向距离。
(0,0,0)到平面的距离:
d
=
∣
A
×
0
+
B
×
0
+
C
×
0
+
D
∣
A
2
+
B
2
+
C
2
=
∣
D
∣
1
=
∣
D
∣
d=\frac{|A×0+B×0+C×0+D|}{\sqrt{A^2+B^2+C^2}}=\frac{|D|}{1}=|D|
d=A2+B2+C2∣A×0+B×0+C×0+D∣=1∣D∣=∣D∣
在这里,d是无向距离,D是有向距离,有正负的。
所以,由一般式:
A
x
+
B
y
+
C
z
+
有向距离
=
0
Ax+By+Cz+有向距离=0
Ax+By+Cz+有向距离=0
n
T
P
+
有向距离
=
0
n^TP+有向距离=0
nTP+有向距离=0
(2)单应矩阵:
单应矩阵用于描述处于共同平面上的一些点(三维空间中)在两张图像(二维图像)之间的对应关系。
如上图所示,空间中存在一平面Π,平面的单位法向量为n,平面上一点P在两台摄像机所拍摄到的图像上的投影为
p
1
,
p
2
p_1,p_2
p1,p2
设平面Π满足方程:
n
T
P
+
d
=
0
n^TP+d=0
nTP+d=0
−
n
T
P
d
=
1
-\frac{n^TP}{d}=1
−dnTP=1
由于P在图像
I
2
I_2
I2上的投影为
p
2
p_2
p2:
s
2
p
2
=
K
(
R
P
+
t
)
s_2p_2=K(RP+t)
s2p2=K(RP+t)
=
K
(
R
P
+
t
⋅
(
−
n
T
P
d
)
)
=K(RP+t·(-\frac{n^TP}{d}))
=K(RP+t⋅(−dnTP))
将P提公因式:
=
K
(
R
−
t
n
T
d
)
P
=K(R-\frac{tn^T}{d})P
=K(R−dtnT)P
由于:
s
1
p
1
=
K
P
s_1p_1=KP
s1p1=KP
s
1
K
−
1
p
1
=
P
s_1K^{-1}p_1=P
s1K−1p1=P
有:
s
2
p
2
=
K
(
R
−
t
n
T
d
)
s
1
K
−
1
p
1
s_2p_2=K(R-\frac{tn^T}{d})s_1K^{-1}p_1
s2p2=K(R−dtnT)s1K−1p1
s
2
s
1
p
2
=
K
(
R
−
t
n
T
d
)
K
−
1
p
1
\frac{s_2}{s_1}p_2=K(R-\frac{tn^T}{d})K^{-1}p_1
s1s2p2=K(R−dtnT)K−1p1
s 1 , s 2 s_1,s_2 s1,s2 为尺度,在尺度等价下,有:
p 2 ≅ K ( R − t n T d ) K − 1 p 1 p_2\cong K(R-\frac{tn^T}{d})K^{-1}p_1 p2≅K(R−dtnT)K−1p1
令
K
(
R
−
t
n
T
d
)
K
−
1
=
H
K(R-\frac{tn^T}{d})K^{-1}=H
K(R−dtnT)K−1=H
即单应矩阵
p 2 ≅ H p 1 p_2\cong Hp_1 p2≅Hp1
观察 H H H 的形式能发现,单应矩阵的定义中包含了摄像机的旋转、平移以及平面的相关参数。
4、总结
本质矩阵
x
2
T
E
x
1
=
0
x_2^TEx_1=0
x2TEx1=0
E
=
t
∧
R
E=t^{\wedge}R
E=t∧R
本质矩阵约束了空间中同一个三维点,在两个归一化平面坐标之间的联系。(归一化平面即Z=1的平面)
基础矩阵
p
2
T
F
p
1
=
0
p_2^TFp_1=0
p2TFp1=0
F
=
K
−
T
t
∧
R
K
−
1
F=K^{-T}t^{\wedge}RK^{-1}
F=K−Tt∧RK−1
F
=
K
−
T
E
K
−
1
F=K^{-T}EK^{-1}
F=K−TEK−1
基础矩阵约束了空间中同一个三维点,在两个成像平面上的像素坐标之间的联系。
且基础矩阵 F F F 与本质矩阵 E E E 之间只相差相机内参数矩阵 K K K。
单应矩阵
p
2
≅
H
p
1
p_2\cong Hp_1
p2≅Hp1
H
=
K
(
R
−
t
n
T
d
)
K
−
1
H=K(R-\frac{tn^T}{d})K^{-1}
H=K(R−dtnT)K−1
单应矩阵约束了空间中处于某一已知平面上的同一个三维点,在两个成像平面上的像素坐标之间的联系
二、本质矩阵求解
本质矩阵的自由度: E = t ∧ R E=t^{\wedge}R E=t∧R,是一个 3 × 3 3\times 3 3×3的矩阵,内有9个未知数,因此存在9个自由度。
1.八点法
由于对极约束
x
2
T
E
x
1
=
0
x_2^TEx_1=0
x2TEx1=0 是等式为零的约束,意思是中间的本质矩阵
E
E
E 即使经过任意常数
k
k
k 倍的缩放,等式仍然成立:
x
2
T
k
E
x
1
=
0
x_2^TkEx_1=0
x2TkEx1=0
意味着本质矩阵
E
E
E 与它的
k
k
k 倍缩放
k
E
kE
kE 是等价效果的,即
E
E
E 在不同尺度下是等价的:
E
≃
k
E
E\simeq kE
E≃kE
由于这种性质,可以将
E
E
E 中所有元素均除以矩阵内任意一个非零元素,如
e
1
e_1
e1:
E
=
[
e
1
e
2
e
3
e
4
e
5
e
6
e
7
e
8
e
9
]
≃
[
e
1
e
1
e
2
e
1
e
3
e
1
e
4
e
1
e
5
e
1
e
6
e
1
e
7
e
1
e
8
e
1
e
9
e
1
]
≃
[
1
e
2
e
1
e
3
e
1
e
4
e
1
e
5
e
1
e
6
e
1
e
7
e
1
e
8
e
1
e
9
e
1
]
E=\begin{bmatrix} e_1&e_2&e_3\\ e_4&e_5&e_6\\ e_7&e_8&e_9 \end{bmatrix}\simeq\begin{bmatrix} \frac{e_1}{e_1}&\frac{e_2}{e_1}&\frac{e_3}{e_1}\\ \frac{e_4}{e_1}&\frac{e_5}{e_1}&\frac{e_6}{e_1}\\ \frac{e_7}{e_1}&\frac{e_8}{e_1}&\frac{e_9}{e_1} \end{bmatrix}\simeq\begin{bmatrix} 1&\frac{e_2}{e_1}&\frac{e_3}{e_1}\\ \frac{e_4}{e_1}&\frac{e_5}{e_1}&\frac{e_6}{e_1}\\ \frac{e_7}{e_1}&\frac{e_8}{e_1}&\frac{e_9}{e_1} \end{bmatrix}
E=⎣
⎡e1e4e7e2e5e8e3e6e9⎦
⎤≃⎣
⎡e1e1e1e4e1e7e1e2e1e5e1e8e1e3e1e6e1e9⎦
⎤≃⎣
⎡1e1e4e1e7e1e2e1e5e1e8e1e3e1e6e1e9⎦
⎤
使其中某个元素处的值为1,从而减少一个自由度
在这种情况下,9个自由度的本质矩阵 E E E 可变成8个自由度
考虑一对匹配点,它们的归一化坐标为
x
1
=
[
U
1
V
1
1
]
x_1=\begin{bmatrix}U_1\\V_1\\1\end{bmatrix}
x1=⎣
⎡U1V11⎦
⎤,
x
2
=
[
U
2
V
2
1
]
x_2=\begin{bmatrix}U_2\\V_2\\1\end{bmatrix}
x2=⎣
⎡U2V21⎦
⎤,根据本质矩阵约束有:
x
2
T
E
x
1
=
[
U
2
V
2
1
]
[
e
1
e
2
e
3
e
4
e
5
e
6
e
7
e
8
e
9
]
[
U
1
V
1
1
]
=
0
x_2^TEx_1=\begin{bmatrix} U_2&V_2&1 \end{bmatrix} \begin{bmatrix} e_1&e_2&e_3\\ e_4&e_5&e_6\\ e_7&e_8&e_9 \end{bmatrix} \begin{bmatrix} U_1\\V_1\\1 \end{bmatrix}=0
x2TEx1=[U2V21]⎣
⎡e1e4e7e2e5e8e3e6e9⎦
⎤⎣
⎡U1V11⎦
⎤=0
[
U
2
U
1
U
2
V
1
U
2
V
2
U
1
V
2
V
1
V
2
U
1
V
1
1
]
[
e
1
e
2
e
3
e
4
e
5
e
6
e
7
e
8
e
9
]
=
0
\begin{bmatrix} U_2U_1&U_2V_1&U_2&V_2U_1&V_2V_1&V_2&U_1&V_1&1 \end{bmatrix}\begin{bmatrix} e_1\\e_2\\e_3\\e_4\\e_5\\e_6\\e_7\\e_8\\e_9 \end{bmatrix}=0
[U2U1U2V1U2V2U1V2V1V2U1V11]⎣
⎡e1e2e3e4e5e6e7e8e9⎦
⎤=0
可见,一对匹配点能得到一条方程,求解一个未知数,针对本质矩阵
E
E
E 的八个自由度,需要求解八个未知数,即需要八对匹配点,组成一个齐次线性方程组:
[
U
2
1
U
1
1
U
2
1
V
1
1
U
2
1
V
2
1
U
1
1
V
2
1
V
1
1
V
2
1
U
1
1
V
1
1
1
U
2
2
U
1
2
U
2
2
V
1
2
U
2
2
V
2
2
U
1
2
V
2
2
V
1
2
V
2
2
U
1
2
V
1
2
1
⋮
⋮
⋮
⋮
⋮
⋮
⋮
⋮
⋮
U
2
8
U
1
8
U
2
8
V
1
8
U
2
8
V
2
8
U
1
8
V
2
8
V
1
8
V
2
8
U
1
8
V
1
8
1
]
8
×
9
[
e
1
e
2
e
3
e
4
e
5
e
6
e
7
e
8
e
9
]
=
0
\begin{bmatrix} U_2^1U_1^1&U_2^1V_1^1&U_2^1&V_2^1U_1^1&V_2^1V_1^1&V_2^1&U_1^1&V_1^1&1\\ U_2^2U_1^2&U_2^2V_1^2&U_2^2&V_2^2U_1^2&V_2^2V_1^2&V_2^2&U_1^2&V_1^2&1\\ \vdots&\vdots&\vdots&\vdots&\vdots&\vdots&\vdots&\vdots&\vdots\\ U_2^8U_1^8&U_2^8V_1^8&U_2^8&V_2^8U_1^8&V_2^8V_1^8&V_2^8&U_1^8&V_1^8&1 \end{bmatrix}_{8\times 9}\begin{bmatrix} e_1\\e_2\\e_3\\e_4\\e_5\\e_6\\e_7\\e_8\\e_9 \end{bmatrix}=0
⎣
⎡U21U11U22U12⋮U28U18U21V11U22V12⋮U28V18U21U22⋮U28V21U11V22U12⋮V28U18V21V11V22V12⋮V28V18V21V22⋮V28U11U12⋮U18V11V12⋮V1811⋮1⎦
⎤8×9⎣
⎡e1e2e3e4e5e6e7e8e9⎦
⎤=0
解上述齐次线性方程组,即可得到本质矩阵
E
E
E 。
2.五点法
本质矩阵 E = t ∧ R E=t^{\wedge}R E=t∧R,根据本质矩阵的定义,平移有3个自由度,旋转有3个自由度,因此本质矩阵可以缩小到6个自由度,再根据八点法中提到的尺度等价约束,可以再缩小一个自由度,最终本质矩阵实际上可以是5个自由度,即由5对匹配点就可以进行求解。
但由于这种做法形式复杂,而从工程实际角度考虑,实际上两幅图片大概率会有非常多对匹配点,甚至多达上百对,从八点法降低到五点法的意义并不明显。
参考:
1.对极几何 Epipolar Geometry
https://zhuanlan.zhihu.com/p/79845576
2.《视觉SLAM十四讲》——高翔、张涛
3.视觉SLAM中,本质矩阵、基础矩阵、单应性矩阵自由度和秩分析。
https://blog.csdn.net/Walking_roll/article/details/119343924
4.SLAM基础知识补充:多视图几何
https://note.youdao.com/ynoteshare1/index.html?id=5e98f487c40ef22f90e1177f29271be5&type=note