理论重述
1. 概述
本文明确使用单目视觉, 针孔相机模型[1], orb特征检测与匹配[2]
相关理论: 对极几何, 三角测量, PnP
2. 对极几何
2.1 坐标系
- 像素坐标系:
图像的左上角是原点, 正方向分别往右和往下 - 相机坐标系:
原点为相机镜头的光心, 向前为z轴正方向, 向下为y轴正方向, 向右为x轴正方向 - 归一化坐标:
相机坐标系投影到z=1的平面上的坐标, 显然, 坐标形如(X/Z, Y/Z, 1)的形式 - 世界坐标系:
可以任意指定, 为方便起见, 本文取世界坐标为右侧相机的相机坐标系为世界坐标系
2.2 极线约束
以第一帧图像的相机坐标系为世界坐标系, 某一空间点P = [X, Y, Z]T, 投影在两张图像的点像素坐标分别为 p 1 , p 2 p_1,p_2 p1,p2 以 s s s表示深度,则有
{ s 1 p 1 = K P s 2 p 2 = K ( R P + t ) \begin{cases} s_1p_1=KP\\\\ s_2p_2=K(RP+t) \end{cases} ⎩⎪⎨⎪⎧s1p1=KPs2p2=K(RP+t)
简化为以下形式,其中 E = t ∧ R E=t^{\land}R E=t∧R,称为本征矩阵
通过E可以分解出R和t, 本身具有尺度等价性, 但是对t乘以一个非0常数, 分解也是成立的[3],所以通常对t进行归一化处理,使其长度为1,这将直接导致t的尺度不确定性,比如t的第一维是0.17, 我们无法确定其单位是cm还是m. 因此单目slam有一步不可避免的初始化, 初始化的图像必须有一定程度的平移, 而后的轨迹和地图必须以此步的平移为单位.
3. 三维重建
根据针孔相机模型, 有如下关系:
Z [ u v 1 ] = [ f x 0 c x 0 f y c y 0 0 1 ] [ X Y Z ] Z\begin{bmatrix} u\\\\ v\\\\ 1 \end{bmatrix} = \begin{bmatrix} f_x&0&c_x\\\\ 0&f_y&c_y\\\\ 0&0&1\end{bmatrix} \begin{bmatrix} X\\\\ Y\\\\ Z\end{bmatrix} Z⎣⎢⎢⎢⎢⎡uv1⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡fx000fy0cxcy1⎦⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎡XYZ⎦⎥⎥⎥⎥⎤
说明: [ u v 1 ] T [u\ v\ 1]^T [u v 1]T 是像素坐标, [ X Y Z ] T [X\ Y\ Z]^T [X Y Z]T是某一点的空间坐标。
仅通过上式无法求解空间坐标,但是能求解空间点映射到归一化平面 ( Z = 1 ) (Z=1) (Z=1)上的归一化坐标 [ u ′ v ′ 1 ] \begin{bmatrix}u'&v'&1\end{bmatrix} [u