对极几何 | 您所在的位置:网站首页 › 成像的本质 › 对极几何 |
对极几何 —两相机相对位置关系与相机姿态估计方法(基础矩阵,本征矩阵,单应矩阵梳理)附c++源码
对极几何是什么,它有什么用(整体流程理解)对极约束(描述两相机关系)基础矩阵特性与求解方法本征矩阵特性与求解方法相机姿态恢复方法怎么又冒出了个单应矩阵H?
对极几何是什么,它有什么用(整体流程理解)
如图,当空间上有一个点分别在相机1和相机2上进行成像,这两个点存在什么约束关系呢?再扩展一下,真实世界下的场景分别用两个相机进行拍摄,获得两张照片,两张照片有什么约束关系呢?那么对极几何就是用来描述这种变换关系的。 从对极几何的关系公式我们可以总结出基础矩阵F和本征矩阵E,这两个矩阵描述了相机1和相机2成像的变换关系,我们通过求解基础矩阵,从而求解出本质矩阵,最后可以恢复相机姿态R, T。
注意,这里相机成像面上的点 x 1 x_1 x1与相机坐标系中的点 x 1 ^ \hat{x_1} x1^ 不一样,他们之间存在一个投影关系: x 1 = K 1 x 1 ^ x_1=K_1\hat{x_1} x1=K1x1^,即有 E = K 2 − T F K 1 E=K_2^{-T}FK_1 E=K2−TFK1,参数 K i K_i Ki为相机 i i i的一些特征参数,后面我们就是通过这个投影关系,从基础矩阵F中求解本征矩阵E 基础矩阵特性与求解方法基础矩阵F为 3 × 3 3×3 3×3矩阵,矩阵的奇异值为 [ ð 1 , ð 2 , 0 ] [\eth_1, \eth_2,0] [ð1,ð2,0]。对于一对匹配点 [ u 2 , v 2 , 1 ] [u_2,v_2,1] [u2,v2,1]和 [ u 1 , v 1 , 1 ] [u_1,v_1,1] [u1,v1,1]存在如下关系: ( u 2 v 2 1 ) = ( F 11 F 12 F 13 F 21 F 22 F 23 F 31 F 32 F 33 ) ( u 1 v 1 1 ) \begin{pmatrix} u_2 & v_2 & 1 \end{pmatrix} = \begin{pmatrix} F_{11} & F_{12} & F_{13} \\ F_{21} & F_{22} & F_{23} \\ F_{31} & F_{32} & F_{33} \end{pmatrix} \begin{pmatrix} u_1 \\ v_1 \\ 1 \end{pmatrix} (u2v21)=⎝ ⎛F11F21F31F12F22F32F13F23F33⎠ ⎞⎝ ⎛u1v11⎠ ⎞ 匹配点的第三维坐标为1,是因为成像面上的点没有深度信息,用1表示。 那么我们就可以通过已知的多对匹配特征点列方程求解矩阵F。(具体求解这里就不赘述了,求解需要的特征点数至少为8对,多对特征点可以采用RANSAC方法。注意求解出来的F需要进行奇异值分解并把最后的奇异值令为0。Opencv也提供了相关函数,通过输入特征点对求解基础矩阵) 本征矩阵特性与求解方法本征矩阵E为 3 × 3 3×3 3×3矩阵,矩阵的奇异值为 [ ð , ð , 0 ] [\eth, \eth,0] [ð,ð,0],他的两个奇异值相等。那么怎么求解本征矩阵呢?认真看过上面对极约束就可以知道本质矩阵是描述两相机坐标系下点的约束关系的矩阵,它和基础矩阵F有如下关系: E = K 2 − T F K 1 E=K_2^{-T}FK_1 E=K2−TFK1 只要求得 K K K,就可以求出本征矩阵 E E E。而 K K K表征的是相机内参,有如下关系: K = ( f x 0 c x 0 f y c y 0 0 1 ) K= \begin{pmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{pmatrix} K=⎝ ⎛fx000fy0cxcy1⎠ ⎞ 其中, f x , f y f_x,f_y fx,fy是相机沿x和y方向的焦距,一般 f = f x = f y f=f_x=f_y f=fx=fy。 c x , c y c_x,c_y cx,cy为相机的径向畸变稀疏。不考虑畸变是设为0。 相机姿态恢复方法相机的姿态为R和T两个参数,这两个参数可以由本征矩阵E获得。 对E进行奇异值SVD分解:
E
=
U
d
i
a
g
(
ð
,
ð
,
0
)
V
T
E= Udiag(\eth,\eth,0)V^T
E=Udiag(ð,ð,0)VT 则R和T的可能值有(推导过程省略):
T
1
=
U
(
:
,
2
)
T
2
=
−
U
(
:
,
2
)
R
1
=
U
R
Z
(
π
2
)
V
T
R
2
=
U
R
z
T
(
π
2
)
V
T
T_1 = U(:,2)\\ T_2=-U(:,2)\\ R_1 = UR_Z(\frac{\pi}{2})V^T \\R_2 = UR_z^T(\frac{\pi}{2})V_T
T1=U(:,2)T2=−U(:,2)R1=URZ(2π)VTR2=URzT(2π)VT 其中 前面讲的基础矩阵和本征矩阵都是不满秩的,所以不可逆(图像上一个点到3D空间不可逆,缺失了深度信息)。而单应矩阵H满秩。 基础矩阵F表示的像点和另一幅图像上的对极线的映射关系,使用基础矩阵无法得到像点对应点在另一幅图像上的确切位置。 单应矩阵H则是点和点的映射,使用单应矩阵可以找到像点在另一幅图像上对应点的确切位置。 单应矩阵可以直接通过下面的等式直接求得 ( u 2 v 2 1 ) = ( F 11 F 12 F 13 F 21 F 22 F 23 F 31 F 32 F 33 ) ( u 1 v 1 1 ) \begin{pmatrix} u_2 & v_2 & 1 \end{pmatrix} = \begin{pmatrix} F_{11} & F_{12} & F_{13} \\ F_{21} & F_{22} & F_{23} \\ F_{31} & F_{32} & F_{33} \end{pmatrix} \begin{pmatrix} u_1 \\ v_1 \\ 1 \end{pmatrix} (u2v21)=⎝ ⎛F11F21F31F12F22F32F13F23F33⎠ ⎞⎝ ⎛u1v11⎠ ⎞ |
CopyRight 2018-2019 实验室设备网 版权所有 |