基础矩阵与本征矩阵
在第一部分介绍的相机成像坐标为归一化的图像坐标,并非实际采集到的图像坐标,这是因为相机传感器并非完全规则,比如传感器的像元非正方形、中心点与光心并不一致,所以真实的像素坐标与成像坐标的关系依赖内参矩阵。
$$ K=\begin{bmatrix}f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 &1 \end{bmatrix} $$
即 $\hat{x}_1 = K \cdot x_1, \hat{x}_2 = K \cdot x_2$,从而得到两个点的像素坐标满足线约束:
$$ \mathbf{\hat{x}_2}^{T}K_1 E K_2 \mathbf{\hat{x}_1} = 0 $$
其中$F=K_1EK_2$为基础矩阵,包含7个自由度,但是8点能构造一个线性约束更容易求解,所以常见 8 点法求解。
Structure from motion
基于双目的 3D 重建流程如下:
- 通过关键点检测和特征提取,进行两张图质检的特征点匹配,找到对应关系
- 利用像素点的匹配关系计算基础矩阵和本征矩阵
- 基于本征矩阵利用 SVD 分解得到 $R, t$ 相机位置姿态
- 利用 $Rt$ 得到更多的匹配点,然后通过三角化生成 3D 空间坐标
如果内参未知,基于对应关系可以计算得到基础矩阵,通过基础矩阵可以得到投影矩阵 $P=K[R|t]$ ?
Sfm 与 SLAM 的区别
SLAM (Simutanenous Localization And Mapping) 的应用场景一般是机器人,要求实时定位和建图,同时采集方案相对固定是单目或者双目顺序采集场景,前后帧之间有较大的重叠;而 Sfm 通常没有上述采集限制,可能来自不同的相机。TODO:优化上的差异点。