ORBSLAM2特征点三角化简介
插入关键帧以后,我们还需要插入新的地图点。为了确保新插入的地图点是足够鲁棒的,进行严格的检查是必要的。ORBSLAM2在插入地图点的时候也十分仔细,上一讲我们提到了地图的更新策略,唯独三角化没有细讲,倒不是因为它不重要而不提,而是因为三言两语说不清楚,所以才需要单独用一讲来说说这个方法。
接下来,笔者将会从一下两个方面来介绍本讲的内容:
1. 线性三角化方法;
2. 创建新地图点的方法提纲;
线性三角化方法
同之前一样,笔者会介绍创建新地图点所必要的技术细节,然后再讲方法提纲。
在ORBSLAM2源码中,创建新的地图点采用的是线性三角化方法,当然有些点并不是用这个方法创建的,但是这一小节我们不提,留到方法提纲那一节再介绍。
OK,我们就直接进入主题吧。
ORBSLAM2采用的是针孔模型的相机,而不是鱼眼或者事件相机之类的。因此这类相机的投影模型,大家应该都是比较熟悉的。笔者就不赘述了。
假设三维空间点为 $P_{w} = [ X, Y, Z, 1 ]^{T}$,参考帧的相机位姿为 $T_{rw} = [ R_{rw} | t_{rw} ]$,表示从世界坐标系变换到参考帧坐标系,同理,当前帧的相机位姿为 $T_{cw} = [ R_{cw} | t_{cw} ]$。点 $P_{w}$ 在参考帧归一化平面里的位置为 $p_{r} = [ x_{r}/z_{r}, y_{r}/z_{r}, 1 ]^{T}$,深度为 $z_{r}$,在当前帧归一化平面里的位置为 $p_{c} = [ x_{c}/z_{c}, y_{c}/z_{c}, 1 ]^{T}$,深度为 $z_{c}$。根据位置变换关系有:
\begin{equation}
z_{r}p_{r} = T_{rw}P_{w}
\end{equation}
\begin{equation}
z_{c}p_{c} = T_{cw}P_{w}
\end{equation}<