先对论文的方法部分翻译一遍帮助理解,后期逐渐补充和完善。
I.INTRODUCTION
II.RELATED WORK
III.METHODOLOGY(方法)
A.Problem definition(问题定义)
设置与符号说明。
对于一张使用雷达扫描数据集建立的点云地图,我们想要移除地图中的动态点。我们提出的方法以后处理的方式工作,通常可以用来监测每个点长期的变化。
“post-processing”——后处理,个人理解为先进行采集,采集过程中不进行处理,而是对采集结果进行处理。
在此过程中,我们主要考虑两个不同的坐标
1、局部传感器坐标
Q
Q
Q
2、全局地图坐标
M
M
M
我们使用
1、
P
Q
P^Q
PQ表示传感器坐标下的单个查询帧数据
2、
P
M
P^M
PM表示全局地图坐标下的地图
则
1、
P
k
Q
P^Q_k
PkQ表示传感器坐标下第k个查询帧数据
2、
P
k
M
P^M_k
PkM表示上面帧对应的全局地图坐标下的子图
我们假定对于 P k Q P_k^Q PkQ相关联的 位姿 T k Q T_k^Q TkQ 使用SLAM方法,处于已知状态,但存在一定程度上的估计错误。然后,我们从查询集 { P k Q } \{P_k^Q\} {PkQ}中挑选一个查询点云 P k Q P^Q_k PkQ与 P k M P^M_k PkM相比较从而消除地图点中的动态物体。
在比较过程中,我们将目标地图分割为两个互斥子集,分别为:
1、静态点集
P
S
M
P^{SM}
PSM
2、动态点集
P
D
M
P^{DM}
PDM
上述提到的问题表达为:
P
M
=
P
S
M
∪
P
D
M
P^M=P^{SM}\cup{P^{DM}}
PM=PSM∪PDM
同时
P
S
M
∩
P
D
M
=
∅
P^{SM}\cap{P^{DM}}=\emptyset
PSM∩PDM=∅
最初的分割利用传统的分割方法来估测预测静态点集
P
S
M
P^{SM}
PSM和预测动态点集
P
D
M
P^{DM}
PDM,其中不可避免地包含状态预测误差。在本文中,我们将静态定义为
P
P
P(Positive),动态定义为
N
N
N(Negative),估测的预测静态点集
P
^
S
M
\hat{P}^{SM}
P^SM和预测动态点集
P
^
D
M
\hat{P}^{DM}
P^DM表达为:
P
^
S
M
=
T
P
∪
F
P
a
n
d
P
^
D
M
=
T
N
∪
F
N
\hat{P}^{SM}=TP\cup{FP}\ and \ \hat{P}^{DM}=TN\cup{FN}
P^SM=TP∪FP and P^DM=TN∪FN
这里
T
P
TP
TP、
F
P
FP
FP、
T
N
TN
TN、
F
N
FN
FN分别代表正确的静态点集、错误的静态点集、正确的动态点集、错误的动态点集,使用这个等式,我们能将问题重新定义为:在静态和动态的估测中,降低错误的静态点
F
P
FP
FP和错误的动态点
F
N
FN
FN的数量。
事实上,如果我们规定每个点要么属于静态子集,要么属于动态子集,那么错误的动态点
F
N
FN
FN是全部正确的静态点
T
P
TP
TP点的一个子集。我们的目标可以理解为检测预测动态点集
P
D
M
P^{DM}
PDM中错误的动态点,然后将它们移动到预测静态点集
P
S
M
P^{SM}
PSM中。我们的算法重复地表达这一过程,进而增强预测的静态地图使得它更好地收敛到真正的静态地图。简而言之,迭代静态地图加强策略是我们removert算法的主要创意,图2为概要,III-D为具体细节。
图2:提出的静态地图构造方法管道图。首字母
S
k
S_k
Sk(Static)和
D
k
D_k
Dk(Dynamic)分别代表第k帧主要由静态点和动态点组成的点云。图中
S
k
S_k
Sk和
D
k
D_k
Dk盒子的大小代表每个点云的大小(换句话说,点的数量),盒子的颜色代表点云真正的预测率;提出的Removert算法通过应用从良好到粗糙的范围图像来迭代地增强中央的静态地图。BR模块是BATCHREMOVAL(批量消除)的缩写(III-C),作为我们的副产品,我们可以为每点的动态值加标签,然后使用全局静态地图为每帧自动地解析动态物体。(示例在图5中部)
B.Range image-based map comparison(基于深度图像的地图比较)
已分享的现存方法的类似原理如[14,15],我们使用可见性而不是体素射线跟踪来执行动态点识别。不像现存方法,我们检查地图点云在投影深度图像(range image)平面内的可见性。在图3中,在改变距离图像的分辨率时,进行矩阵运算是检测差异和降低地图点关联歧义(III-D)的直接方法。
对于一个可见域,一个相似的工作[27]为3D变化检测使用了图像格式。我们也为雷达采集的点云提供了一个基于深度图像的可见性检查方法,然后通过减弱雷达运动模糊,扩展到多分辨率的版本,来获得更好的静态地图预测。
对于动态物体的消除,在第k个查询帧和地图之间,我们使用相对的转化方法,将相对大的地图(即
∣
P
M
∣
>
∣
P
k
Q
∣
\vert P^M \vert>\vert P^Q_k \vert
∣PM∣>∣PkQ∣)投影到固定大小的深度图。在投影过程中,我们使用一个具有特定分辨率的深度图(例如,单个像素表示水平和垂直方向上的1°视场角),我们把这个具有视场角约束的的被抽样的地图点云称为“可见的地图点云”。这个可见的地图点云
P
k
M
P^M_k
PkM与它的等效深度图像
I
k
M
I^M_k
IkM同时被定义如下:
I
k
,
i
j
M
=
min
p
⊂
P
i
j
M
r
(
p
)
I^M_{k,ij} = {\underset { p \subset P^M_{ij} }{\operatorname {min}}\,r(p)}
Ik,ijM=p⊂PijMminr(p)
P
k
M
=
{
P
k
,
i
j
M
∣
P
k
,
i
j
M
=
argmin
p
⊂
P
i
j
M
r
(
p
)
}
P^M_k = \{P^M_{k,ij}\mid P^M_{k,ij}={\underset { p \subset P^M_{ij} }{\operatorname {argmin}}\,r(p)} \}
PkM={Pk,ijM∣Pk,ijM=p⊂PijMargminr(p)}
在这里像素m和n的数量由给出的每个像素的特定分辨率和水平和垂直的视场角范围[min,max]确定。
r(·)代表一个点
p
p
p在查询帧下的局部坐标范围
I
k
,
i
j
M
I^M_{k,ij}
Ik,ijM是深度图中的一个像素(i,j)值
P
i
,
j
M
P^M_{i,j}
Pi,jM是
P
M
P^M
PM的的子集,是像素(i,j)中具有球形坐标(即仰角和方位角)的点的集合。
第一个公式: P i , j M P^M_{i,j} Pi,jM是像素(i,j)中具有球形坐标的点的集合,所有点求 r ( ⋅ ) r(·) r(⋅)获得每点的局部坐标范围 (什么叫坐标范围?r(·)的结果是什么样的?没懂),其中 r ( ⋅ ) r(·) r(⋅)的最小值作为深度图中 ( i , j ) (i,j) (i,j)像素的值(没懂)
第二个公式: a r g arg arg函数为求函数值的自变量值,即求取到 r ( ⋅ ) r(·) r(⋅)最小值的那个点 p p p,将该点作为第k帧对应的全局地图中像素 ( i , j ) (i,j) (i,j)的对应点,所有像素对应的点的集合作为第k帧对应的全局地图的子图。(是每个像素只取一个值吗?为什么是r(·)函数的最小值呢?)
以上求得了第k帧对应的全局地图的深度图
I
k
M
I^M_k
IkM和点云
P
k
M
P^M_k
PkM。同样,查询帧的深度图
I
k
Q
I^Q_k
IkQ和它相关的点云
P
k
Q
P^Q_k
PkQ也是需要的,也通过上述方法求得。然后,通过它们的矩阵逐元素相减可以计算出地图点的可见性,公式如下:
I
k
D
i
f
f
=
I
k
Q
−
I
k
M
I^{Diff}_k=I^Q_k-I^M_k
IkDiff=IkQ−IkM
如果
I
D
i
f
f
I^{Diff}
IDiff中某个点
p
p
p对应的像素值超过了一个特定的阈值,则地图点
p
k
,
i
j
M
p^M_{k,ij}
pk,ijM被认为是动态的点。
查询帧和全局地图中同一像素的的深度值应该相差不大,若相差过大到超过一定阈值,则认为这个点是动态的点。
最后,动态的地图点被定义为:
P
k
D
M
=
{
P
k
,
i
j
M
∣
i
s
a
s
s
o
c
i
a
t
e
d
I
k
,
i
j
D
i
f
f
>
τ
D
}
P^{DM}_k = \{P^M_{k,ij}\mid is\ associated \ I^{Diff}_{k,ij}>\tau _D \}
PkDM={Pk,ijM∣is associated Ik,ijDiff>τD}
最后,静态地图点背定义为动态地图点的补集
P
k
S
M
=
P
k
M
−
P
k
D
M
P^{SM}_k=P^M_k-P^{DM}_k
PkSM=PkM−PkDM,我们额外地提出使用一个适应性的阈值来调制我们的算法对于点的距离的敏感度,适应性阈值被定义为一个范围函数:(怎么用没看懂)
τ
D
a
t
a
=
r
(
p
i
j
M
)
τ
D
\tau _{D_{ata}}=r(p^M_{ij})\tau_D
τData=r(pijM)τD
图3:左列:高分辨率的深度图像(每个像素0.4°)、右列:低分辨率的深度图像(每个像素1°)。从顶部到底部,每一行分别代表:第k帧查询帧的深度图
I
k
Q
I^Q_k
IkQ、第k帧查询帧对应的全局坐标下子图的深度图
I
k
M
I^M_k
IkM、以及两者作差得到的深度图。这个颜色地图展现了对于第k个传感器帧中一个3D点的像素距离,蓝色表示更近,红色表示更远。因此,在这个像素中的地图点应该被标记为动态的(看左图中部白色盒子)。使用高分辨率的深度图(左)在物体的边界或地面上消除了大量的模糊点(左列的橘色盒子),这些点事实上是静态的。在第一次迭代时,它们首先被消除而确定是静态的点会被保留。在低分辨率的步骤中,前面提到的被错误分类的动态(实际上是静态)的信息会被恢复。然而,如果我们使用太粗糙的深度图,靠近地面的点将被错误地恢复(看右边中部深度图的绿色盒子中的汽车)。
C.Batch dynamic point removed(批量动态点消除)
我们主要的问题为完全的动态点消除而不是让结果处于中间状态。在这个部分,我们展示了一个
I
I
I
−
B
III-B
III−B处理方式的批量版本,通过多帧投票的方式来更新结果。这样可以克服在一个单一扫描数据中的地图点闭塞和视场角限制的问题。这部分的模块叫做BATCHREMOVAL(批量消除)。
我们假定随着机器人移动顺序扫描的N个数据集合已提前给出。对于每个扫描数据
P
k
Q
P^Q_k
PkQ(传感器坐标下的单个scan,k从1到N),我们像在
I
I
I
−
B
III-B
III−B中那样展示基于深度图像的动态地图点检测结果,计算在地图中标记为
S
M
SM
SM或
D
M
DM
DM的点的总数,分别记为
n
S
M
nSM
nSM和
n
D
M
nDM
nDM。然后,动态地图
P
D
M
P^{DM}
PDM使用策略分数
s
(
⋅
)
s(·)
s(⋅)定义,它是一个关于
n
S
M
nSM
nSM和
n
D
M
nDM
nDM的权重函数,静态地图自然地定义为
P
D
M
P^{DM}
PDM的补集。
P
D
M
=
{
P
M
∣
s
(
p
M
)
<
τ
S
}
P^{DM} = \{P^M\mid s(p^M)<\tau _S \}
PDM={PM∣s(pM)<τS}
P
S
M
=
P
M
−
P
D
M
P^{SM} = P^M-P^{DM}
PSM=PM−PDM
这里,单个3D点的策略分数
s
(
⋅
)
:
=
α
S
M
n
S
M
(
p
M
)
+
α
D
M
n
D
M
(
p
M
)
s(·):=\alpha_{SM}n_{SM}(p^M)+\alpha_{DM}n_{DM}(p^M)
s(⋅):=αSMnSM(pM)+αDMnDM(pM)
其中,
α
S
M
\alpha_{SM}
αSM和
α
D
M
\alpha_{DM}
αDM分别是静态和动态的权重系数。我们默认标记一些没有被计数的点(即在每一次处理中都没有被标记的点)为静态的。
更多地,比较和消除不应该受设备运动影响。例如,如果我们的查询帧以与运动序列相同的顺序扫描,那么前方以相同的的速度移动的一个汽车就不可能被消除。在比较过程中,我们随机选择查询扫描数据
P
k
Q
P^Q_k
PkQ然后执行批次处理。(没懂)
图4:在图2中描述中所提出的removert(删除再恢复)算法的可视化。彩色地图显示了点的视觉清晰度(红色说明清晰度更高)。我们标记所有显示点云地图的图片都遵从这些彩色编码。
D.Removert:remove,then revert static points(消除,然后恢复静态点)
在
I
I
I
−
C
III-C
III−C中的动态地图分离可以在有一张固定分辨率大小的深度图像时使用。由于估计的动态点可能包括静态点(图四顶行),所以我们发现还需要额外的细化。例如,像[14]中的表述,即使点的入射角度的差异很小,它们的深度图仍然有很大的变化,导致地面上的点十分模糊。因此,静态的地面上的点很容易被错误标记为动态点。为了解决这个问题,[14,25]的作者额外利用了法向、点的入射角、区域生长(是个算法,没看过)。
与先前的工作不同,我们的方法仅需要点的3D位置(x,y,z)。此外,现存的方法部分地解决了这个问题,如果最初的机器人运动是不精确的,那么查询点和地图点会被错误的关联起来。同一个物体可能被定位到深度图中的其它的像素,导致错误的预测(例如:消除了错误的静态点或恢复了错误的动态点)。
我们发现在狭窄的物体上(例如棒子、电线杆)或者物体的边界处(例如车顶和树顶;图3左边中图中的橘色盒子)容易频繁地发生错误的估计。