PL-SLAM: Real-Time Monocular Visual SLAM with Points and Lines

往ORBSLAM里面加入了line特征。

III.SYSTEM OVERVIEW

A.Line-based Reprojection Error

P,Q作为3D点的端点。对应的2d投影p_d,q_d.

以Homogeneous形式代入以下公式获得归一化的线参数:

l=\frac{p_d^h\times q_d^h }{\left | p_d^h\times q_d^h\right |}

 这篇论文对线定义了两种error:

The line reprojection error E_{line}

E_{line} 定义为两个点到直线的距离之和.

点是3D线端点的2D投影点,线是检测到的本地线。(如下图右)

PL-SLAM: Real-Time Monocular Visual SLAM with Points and Lines_第1张图片

E_{line}(P,Q,I,\theta ,K)=E_p_l^2(P,I,\theta ,K)+E_p_l^2(Q,I,\theta ,K)

E_p_l(P,I,\theta ,K)=I^T\pi (P,\theta ,K)

其中l是本地检测到的线的系数,\pi (P,\theta ,K)是把端点投影到图像平面.

注意在实际中,因为直线遮挡和错误检测,本地检测到的线端点p_d,q_d不会跟P,Q的投影点匹配上(上图左)。

所以,论文定义了detected line reprojection error E_{line,d}

detected line reprojection error E_{line,d}

E_{line,d}(p_d,q_d,l)=E_{pl,d}^2(p_d,l)+E_{pl,d}^2(q_d,l)

其中l是3D线投影线的系数,而点到直线的误差是

E_{pl,d}(p_d,l)=l^Tp_d

基于 [30] 中提出的方法,将对detected reprojection line error进行递归,以优化位姿参数theta,同时将E_{line,d}近似为上面定义的E_{line}.

B.Bundle Adjustment with Points and Lines

本文的BA包含两种几何实体

\widetilde{x}_{i,j}=\pi (X_j,\theta _i,K)

其中X是i帧里面的j号地图点,\theta _i是该帧位姿。结合观测点x_{i,j}

e_{i,j}=x_{i,j}-\widetilde{x}_{i,j}.

类似的,i帧第j个地图线的端点P_j,Q_j可以被投影到该关键帧的图像平面(homogeneous coordinates)

\widetilde{p}^h_{i,j}=\pi (P_j,\theta_i,K),

\widetilde{q}^h_{i,j}=\pi (Q_j,\theta_i,K)

然后该帧观测到这根线j,它有两个端点p_{i,j},q_{i,j},用上面叉乘的公式估计它的系数\widetilde{I}_{i,,j}.

则线的误差向量可以定义为:

e^{'}_{i,j}=(\widetilde{I}_{i,j})^T(K^{-1}p^h_{i,j}),

e^{''}_{i,j}=(\widetilde{I}_{i,j})^T(K^{-1}q^h_{i,j}).

为何这里带了个逆K?

上述两个误差项实际就是上面line reprojection error的两个实例

根据[30]的解释,它们不是恒定相关于3D线上端点P,Q的位移,它用作隐式正则化,允许我们在 BA 中使用这种非最小表达的线参数化。

所以最终统一的cost function就是:

C=\sum_{i,j}^{}\rho (e^T_{i,,j}\Omega ^{-1}_{i,j}e_{i,j} +(e^{'}_{i,j})^{T}(\Omega ^{'}_{i,j})^{-1}(e^{'}_{i,j})^{T} +(e^{''}_{i,j})^{T}(\Omega ^{''}_{i,j})^{-1}(e^{''}_{i,j})^{T})

其中\rho是Huber function,\Omega _{i,j},\Omega ^{'}_{i,j},\Omega ^{''}_{i,j}是跟检测到的线和点的尺度相关的协方差矩阵。

C.Global Relocalization

本文在Global Relocalization问题中因为引入了line特征,所以使用的是【30】中的EPnPL方法而不是传统的EPnP方法。它最小化上述的detected line reprojection error.

V.MAP INITIALIZATION WITH LINES

本文提出了一种使用连续三帧来初始化地图的方法

PL-SLAM: Real-Time Monocular Visual SLAM with Points and Lines_第2张图片

如Fig4所示,通过端点P,Q定义了一条线。把它们投影到三个不同的成像平面,获得三条线I_1,I_2,I_3,和它们的端点\left \{ p_1,q_1 \right \},\left \{ p_2,q_2 \right \},\left \{ p_3,q_3 \right \} .

本文做了一个假设,即连续的帧中连续的小的旋转,例如第一帧到第二帧的旋转是跟第二帧到第三帧的旋转相同的。基于这种假设,本文定义了R_1=R^T,R_2=I,and R_3=R.

同时,线系数I_1,I_2,I_3也表示向量,这些向量垂直于相机中心O_i和投影点p_i,q_i所组成的平面。两个向量的叉乘会平行于线P,Q同时正交于第三条向量。
把它们放到同一个参考系下的话,可得到约束:

I^T_2((R^TI_1)\times (RI_3))=0.

这里(R^TI_1)=R_1I_1,(RI_3)=R_3I_3,可见是放到R系下.

对于小的旋转,我们把R近似为

R=\begin{pmatrix} 1&-r_3 &r_2 \\ r_3&1 &-r_1 \\ -r_2&r_1 &1 \end{pmatrix}.

这样参数化后,有了三条匹配上的线后,我们可以得到三条上述约束公式,和三个未知数r1r2r3。
通过【15】的多项式解法,得到8个解。
对于每个解,可以通过trifocal tensor equations[11]得到t1,t3.我们假设t2=0.
我们检测这八个可能的解,留下使得上述约束公式最小的解。

注意,为了保证在用trifocal tensor equation解translaion的时候有足够的独立约束,我们会添加两条额外的线对应,所以算法最后需要五条匹配上的线。

你可能感兴趣的:(Paper,人工智能)