zoukankan      html  css  js  c++  java
  • 论文阅读 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

    没啥.

  • 相关阅读:
    Java实现 蓝桥杯VIP 基础练习 完美的代价
    Java实现 蓝桥杯VIP基础练习 矩形面积交
    Java实现 蓝桥杯VIP 基础练习 完美的代价
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    核心思想:想清楚自己创业的目的(如果你没有自信提供一种更好的产品或服务,那就别做了,比如IM 电商 搜索)
    在Linux中如何利用backtrace信息解决问题
  • 原文地址:https://www.cnblogs.com/tweed/p/13203224.html
Copyright © 2011-2022 走看看