一、理解Epipolar Geometry的关键在于掌握下面的几个点:
- 在射影几何中,要通过两个不同的点求连接这两点的直线,两点作叉乘即可。当然由于Duality的存在,要通过两条直线求他们相交于哪一点,同样两线作叉乘即可。
- 相机的成像原理是将一个三维的点按照小孔成像的原理投影到了二维平面上,那么其逆过程(通过二维平面的点估计三维点的位置)必然会带来一个不确定量。这个不确定的量就是深度,更准确地说,是小孔和三维点之间的距离。
- CV中引入Epipolar Geometry的目的是为了研究从不同的相机看世界中的同一个点,在两个视平面上的点应该满足什么样的关系。通过1和2我们会知道这个关系是(相机1中的)点对应(相机2中的)线的关系。通过这个关系,我们之后可以进一步使用三角定位来找出三维世界中的点在哪里。
几点解释:
- 射影几何中的2D点如何表示? x ^ = [ u v 1 ] \mathbf{\hat{x}} =\begin{bmatrix}u\\v\\1\end{bmatrix} x^=⎣⎡uv1⎦⎤
- 射影几何中的线如何表示? l = [ a b c ] \mathbf{l}= \begin{bmatrix}a\\b\\c\end{bmatrix} l=⎣⎡abc⎦⎤ ,这其中隐含的表示是一个直线方程 a x + b y + c = 0 ax + by + c = 0 ax+by+c=0
- 如何表示点在线上?
x
^
T
l
=
a
u
+
b
v
+
c
=
0
\mathbf{\hat{x}}^T\mathbf{l} = au + bv + c = 0
x^Tl=au+bv+c=0
假定现在有另外一个点 x ^ ′ = [ u ′ v ′ 1 ] \mathbf{\hat{x}'} = \begin{bmatrix}u'\\v'\\1\end{bmatrix} x^′=⎣⎡u′v′1⎦⎤也在线上,则
x ^ ′ T l = a u ′ + b v ′ + c = 0 \mathbf{\hat{x}}^{'T}\mathbf{l} = au' + bv' + c = 0 x^′Tl=au′+bv′+c=0
联立方程如何求解这条直线?叉乘咯!!!
l = x ^ × x ^ ′ \mathbf{l} = \mathbf{\hat{x}} \times \mathbf{\hat{x}'} l=x^×x^′
二、本质矩阵(Essential matrix)和基础矩阵(Fundamental matrix)
- 本质矩阵E:描述空间点P在两个相机的相机坐标系下的关系,换言之,给定两个相机的相对位置关系,E即被确定。
假设P在 O 1 , O 2 O_{1},O_{2} O1,O2坐标系下坐标为 P 1 , P 2 P_{1},P_{2} P1,P2,刚体变换关系为 P 2 = R P 1 + T P_{2}=RP_{1}+T P2=RP1+T 可得 T × P 2 = T × R P 1 + T × T = T × R P 1 T\times P_{2}=T\times RP_{1}+T\times T=T\times RP_{1} T×P2=T×RP1+T×T=T×RP1
其中 T × P 2 T\times P_{2} T×P2为极平面的法向量,因此与 P 2 P_{2} P2点乘为0
P 2 ⋅ ( T × P 2 ) = P 2 ⋅ ( T × R P 1 ) = 0 P_{2}\cdot (T\times P_{2})=P_{2}\cdot (T\times RP_{1})=0 P2⋅(T×P2)=P2⋅(T×RP1)=0
写成矩阵相乘的形式 P 2 T T ∧ R P 1 = 0 P_{2}^{T}T^{\wedge}RP_{1}=0 P2TT∧RP1=0 P 2 T E P 1 = 0 P_{2}^{T}EP_{1}=0 P2TEP1=0 P 1 和 P 2 P_{1}和P_{2} P1和P2也可以是归一化的坐标 x ˉ 1 = [ x 1 y 1 z 1 ] , x ˉ 2 = [ x 2 y 2 z 2 ] \bar{x}_{1}=\begin{bmatrix} x_{1}\\y_{1} \\ z_{1} \end{bmatrix},\bar{x}_{2}=\begin{bmatrix} x_{2}\\y_{2} \\ z_{2} \end{bmatrix} xˉ1=⎣⎡x1y1z1⎦⎤,xˉ2=⎣⎡x2y2z2⎦⎤
其中 T ∧ T^{\wedge} T∧为向量 T T T的反对称阵 T = [ 0 − T 3 T 2 T 3 0 − T 1 − T 2 T 1 0 ] T=\begin{bmatrix}0 & -T_{3} & T_{2}\\T_{3} & 0 & -T_{1} \\ -T_{2} & T_{1} & 0\end{bmatrix} T=⎣⎡0T3−T2−T30T1T2−T10⎦⎤
所以 E = T ∧ R E=T^{\wedge}R E=T∧R - 基础矩阵F:描述空间点P在两个相机成像的各自的图像像素坐标系下的关系,换言之,给定了两个相机的相对位置关系和相机内参,F即被确定。
x 1 和 x 2 x_{1}和x_{2} x1和x2为像素坐标,设 K 1 , K 2 K_{1},K_{2} K1,K2分别为其相机内参数,则 x 1 = K 1 P 1 x_{1}=K_{1}P_{1} x1=K1P1 x 2 = K 2 P 2 x_{2}=K_{2}P_{2} x2=K2P2将 P 1 , P 2 P_{1},P_{2} P1,P2带入上面的本质矩阵中得到 ( K 2 − 1 x 2 ) T E ( K 1 − 1 x 1 ) = 0 (K_{2}^{-1}x_{2})^{T}E(K_{1}^{-1}x_{1})=0 (K2−1x2)TE(K1−1x1)=0
x 2 T ( ( K 2 − 1 ) T E ( K 1 − 1 ) ) x 1 = 0 x_{2}^{T}((K_{2}^{-1})^{T}E(K_{1}^{-1}))x_{1}=0 x2T((K2−1)TE(K1−1))x1=0
x 2 T F x 1 = 0 x_{2}^{T}Fx_{1}=0 x2TFx1=0
F = ( K 2 − 1 ) T E ( K 1 − 1 ) F=(K_{2}^{-1})^{T}E(K_{1}^{-1}) F=(K2−1)TE(K1−1)
终于算是捋明白了