论文阅读 ICRA2020: TextSLAM

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

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:

[ heta = ( heta_1, heta_2, heta_3)^3 = -n/d ]

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


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

$ h cdot oldsymbol{n}^{mathrm{T}} ilde{oldsymbol{m}}+d=0(, 这里) ilde{m}$ 表示齐次坐标. 得到: ( ho=1 / h=-oldsymbol{n}^{mathrm{T}} / d ilde{oldsymbol{m}}=oldsymbol{ heta}^{mathrm{T}} ilde{oldsymbol{m}})

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

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

[left[egin{array}{c} ilde{m}_{1}^{mathrm{T}} \ vdots \ ilde{m}_{n}^{mathrm{T}} end{array} ight] oldsymbol{ heta}=left[egin{array}{c} ho_{1} \ vdots \ ho_{n} end{array} ight] ]

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

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

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

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

然后转化到target坐标系.

[egin{array}{l} u^{prime}=left(oldsymbol{r}_{1} ilde{oldsymbol{m}}+t_{1} ilde{oldsymbol{m}}^{mathrm{T} oldsymbol{ heta}} ight) /left(oldsymbol{r}_{3} ilde{oldsymbol{m}}+t_{3} ilde{oldsymbol{m}}^{mathrm{T}} oldsymbol{ heta} ight) \ v^{prime}=left(oldsymbol{r}_{2} ilde{oldsymbol{m}}+t_{2} ilde{oldsymbol{m}}^{mathrm{T}} oldsymbol{ heta} ight) /left(oldsymbol{r}_{3} ilde{oldsymbol{m}}+t_{3} ilde{oldsymbol{m}}^{mathrm{T}} oldsymbol{ heta} ight) end{array} ]

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

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

[m' = h(m, T_h, T_t, heta) ]

C. Photometric error for text object

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

[Z N C Cleft(I_{h}, I_{t} ight)=sum_{m in Omega} ilde{I}_{h}(oldsymbol{m}) ilde{I}_{t}left(oldsymbol{m}^{prime} ight) ]

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

[Eleft(I_{h}, I_{t} ight)=sum_{m in Omega}left( ilde{I}_{h}(oldsymbol{m})- ilde{I}_{t}left(oldsymbol{m}^{prime} ight) ight)^{2} ]

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

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

[sum_{m in Omega}left( ilde{I}_{h}(oldsymbol{m})^{2}+ ilde{I}_{t}left(oldsymbol{m}^{prime} ight)^{2} ight)-2 sum_{oldsymbol{m} in Omega} ilde{I}_{h}(oldsymbol{m}) ilde{I}_{t}left(oldsymbol{m}^{prime} ight) ]

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

4. TextSLAM系统

1593328410767

A. text对象的初始化

我们用了EAST[40].

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

[left[ ilde{oldsymbol{m}}_{i}^{prime} ight]_{ imes} oldsymbol{t} ilde{oldsymbol{m}}_{i}^{mathrm{T}} oldsymbol{ heta}=-left[ ilde{oldsymbol{m}}_{i}^{prime} ight]_{ imes} mathbf{R} ilde{oldsymbol{m}}_{i} ]

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

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

B. Camera pose estimation with text objects

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

[Eleft(mathbf{T}_{t} ight)=E_{ ext {point}}left(mathbf{T}_{t} ight)+lambda_{w} E_{t e x t}left(mathbf{T}_{t} ight) ]

点的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

没啥.

原文地址:https://www.cnblogs.com/tweed/p/13203224.html