在感知不是很稳定的情况下, 感觉这种检测划定范围, 使用图像本身的重建方法还是比较合适的.

Abstract

text紧耦合进视觉SLAM的pipeline.

关键的idea是把每个检测到的text作为平面特征, 它包含足够的纹理和语义信息.

文字特征是用三个参数表示的, 并且使用光度不变误差.

1. Introduction

众所周知, 引入高等级的特征比如 line [8] 或者是 平面[9]会导致更好的表现.

Text提取和识别在飞速的发展, 比如COCO-Text[12], DOST[13], ICDAR[14].

[17]在Tange的 SLAM用text特征来促进回环.

贡献

  • text特征用了3DOF的参数形式, 是紧凑且允许即时初始化.
  • 使用光度误差. 它对于光照变化和模糊鲁邦.
  • 紧耦合的text SLAM.

a) 平面特征

现存的方法都需要3D信息来发现平面特征, 一般使用RGBD相机.

text在真实世界里大多在平面上, 所以可以是好的平面特征.

b) 对象特征

现存方法需要预先扫描的3D模型来精准的拟合图像上的观测. [27]也尝试了用深度相机实时重建3D模型, 但是还是很难泛化.

另一种方法是3D bounding boxes或者是quadrics[30]来近似一般物体. 但是这个就会损失精度.

与一般对象不同, text对象的几何是很简单的.

c) Text-aided navigation

text是天生的优秀的人造marker来帮助导航.

3. Text 特征

A. 参数化

每个text patch都是被一个bounding box包围.

1593326356064

平面被表示为: \(n^T p + d = 0\). \(n\)是平面的法向量, \(d\)是平面到origin的距离. 但是, 这个表示方式是over parameterization, 会导致rank deficient在非线性最小二乘优化问题里.

我们用一个更紧凑的参数化方法, 3DOF:

\[\theta = (\theta_1, \theta_2, \theta_3)^3 = -n/d \]

这个参数化方法就跟3D点的逆深度很接近了.


主帧中的每个3D点有图像归一化坐标 \(m=(u,v)^T\) 和它的逆深度\(\rho = 1/h\).

$ h \cdot \boldsymbol{n}^{\mathrm{T}} \tilde{\boldsymbol{m}}+d=0\(, 这里\)\tilde{m}$ 表示齐次坐标. 得到: \(\rho=1 / h=-\boldsymbol{n}^{\mathrm{T}} / d \tilde{\boldsymbol{m}}=\boldsymbol{\theta}^{\mathrm{T}} \tilde{\boldsymbol{m}}\)

我们可以用简单的点乘来快速推断一个text的2D归一化坐标的逆深度.

如果我们最少有三个点在text patch上(和他们的逆深度), 我们就可以获得text参数:

\[\left[\begin{array}{c} \tilde{m}_{1}^{\mathrm{T}} \\ \vdots \\ \tilde{m}_{n}^{\mathrm{T}} \end{array}\right] \boldsymbol{\theta}=\left[\begin{array}{c} \rho_{1} \\ \vdots \\ \rho_{n} \end{array}\right] \]

这个使得我们可以快速的初始化平面.

B. Projection of the 3D text object onto a target image

\(T=T_t^{-1}T_h\).

给定平面参数 \(\theta\) 和图像观测点 \(m\), 3D点是 $ p=\tilde{m}/\rho = \tilde{m} / (\theta^T \tilde{m})$.

然后转化到target坐标系.

\[\begin{array}{l} u^{\prime}=\left(\boldsymbol{r}_{1} \tilde{\boldsymbol{m}}+t_{1} \tilde{\boldsymbol{m}}^{\mathrm{T} \boldsymbol{\theta}}\right) /\left(\boldsymbol{r}_{3} \tilde{\boldsymbol{m}}+t_{3} \tilde{\boldsymbol{m}}^{\mathrm{T}} \boldsymbol{\theta}\right) \\ v^{\prime}=\left(\boldsymbol{r}_{2} \tilde{\boldsymbol{m}}+t_{2} \tilde{\boldsymbol{m}}^{\mathrm{T}} \boldsymbol{\theta}\right) /\left(\boldsymbol{r}_{3} \tilde{\boldsymbol{m}}+t_{3} \tilde{\boldsymbol{m}}^{\mathrm{T}} \boldsymbol{\theta}\right) \end{array} \]

r1, r2, r3是旋转矩阵的行向量. 上式实际上是homography transformation. \(\mathbf{H} \sim \mathbf{R}+\boldsymbol{t} \boldsymbol{\theta}^{\mathrm{T}}\)

所以整个3D text点投影可以被描述为一个homography mapping

\[m' = h(m, T_h, T_t, \theta) \]

C. Photometric error for text object

我们用了zero mean normalized cross-correlation (ZNCC)作为匹配cost来解决光度变化.

\[Z N C C\left(I_{h}, I_{t}\right)=\sum_{m \in \Omega} \tilde{I}_{h}(\boldsymbol{m}) \tilde{I}_{t}\left(\boldsymbol{m}^{\prime}\right) \]

越大表示越近似. 但是很难在SLAM里直接使用ZNCC, 因为不能被转化为非线性最小二乘问题. 所以我们用了:

\[E\left(I_{h}, I_{t}\right)=\sum_{m \in \Omega}\left(\tilde{I}_{h}(\boldsymbol{m})-\tilde{I}_{t}\left(\boldsymbol{m}^{\prime}\right)\right)^{2} \]

尽管跟SSD类似, 但是它包括了额外的归一化操作来保证对于光度变化的鲁邦.

我们扩展了这个能量函数:

\[\sum_{m \in \Omega}\left(\tilde{I}_{h}(\boldsymbol{m})^{2}+\tilde{I}_{t}\left(\boldsymbol{m}^{\prime}\right)^{2}\right)-2 \sum_{\boldsymbol{m} \in \Omega} \tilde{I}_{h}(\boldsymbol{m}) \tilde{I}_{t}\left(\boldsymbol{m}^{\prime}\right) \]

我们发现这个能量函数和最大化ZNCC是一致的, 因为\(\Sigma \tilde{I_h}(m)^2=1\)而且\(\Sigma \tilde {I_t}(m')^2=1\).

4. TextSLAM系统

1593328410767

A. text对象的初始化

我们用了EAST[40].

一旦text对象被提取了, 我们在区域中检测FAST角点, 然后用KLT跟踪到下一个关键帧. 然后text对象就用跟踪的点初始化. \(m_i\)\(m_i'\) 表示对应的点.

\[\left[\tilde{\boldsymbol{m}}_{i}^{\prime}\right]_{\times} \boldsymbol{t} \tilde{\boldsymbol{m}}_{i}^{\mathrm{T}} \boldsymbol{\theta}=-\left[\tilde{\boldsymbol{m}}_{i}^{\prime}\right]_{\times} \mathbf{R} \tilde{\boldsymbol{m}}_{i} \]

注意左边的矩阵的rank是1. 它需要最少3对来解决\(\theta\). 然后进一步用优化光度误差来refine参数.

在初始化之后, 为毛保留了text四边形(quadrilateral), 四个角点可以被投影到别的视角来预测外观.

B. Camera pose estimation with text objects

点和text对象都会被用于相机位姿估计.

\[E\left(\mathbf{T}_{t}\right)=E_{\text {point}}\left(\mathbf{T}_{t}\right)+\lambda_{w} E_{t e x t}\left(\mathbf{T}_{t}\right) \]

点的cost是几何的, text的是光度的. 需要 \(\lambda_w\) 来平衡.

\(\lambda_w = \sigma_{rep} / \sigma_{photo}\). \(\sigma_{rep}\) 表示重投影误差的标准差. \(\sigma_{photo}\) 表示光度误差的标准差.

C. BA with text obejcts

选用了最少15个FAST点来优化text参数.

5. Experiment

1593330822897

6. Conclusion & Future Work

没啥.

posted on 2020-06-28 15:58  四积阴功五读书  阅读(996)  评论(0编辑  收藏  举报