点云前视图与俯视图生成
点云前视图与俯视图在一些多传感器融合的算法中作为网络的输入,因此有必要对齐进行了解。
1.点云俯视图的生成(Bev)
点云的俯视图由高度、强度以及密度组成。
(1)高度图:将点云在Z轴方向投影要xoy平面上,xoy平面的分辨率为0.1的二维网格,取每一个网格中点高度最大值记为这个网格的最大高度,即高度特征。这样只能获得一个高度图,因此在实际中在Z轴方向划分为M个块,按上述方法即可以每一个块生成一个高度图,即得到M个高度图。
(2)强度图:同样跟高度图一样,只不过取最大高度点的反射强度,这样能够保证强度图与高度图对应的是同一个点。注意强度图只有一个,并不像高度图那样进行划分。
(3)密度图:密度图是根据每一个网格中点云的个数。按照公式计算得到该网格对应的密度特征,具体公式如下:
m
i
n
(
1.0
,
l
o
g
(
N
+
1
)
l
o
g
(
64
)
)
\begin{array}{c} min\left ( 1.0,\frac{log(N+1)}{log(64)} \right ) \end{array}
min(1.0,log(64)log(N+1))
其中N为该网格所有Z轴方向上的点个数,因此密度图也只有一个。
因此最终生成的点云俯视图的维度为(M+2,W,H)。
2.点云前视图的生成(FV)
点云前视图的生成相较于俯视图会麻烦一点,如果直接将点云投影到yoz平面会非常稀疏。因此需要将点云转到柱坐标系,再将柱面剪开摊平为矩形,生成前视图。
在柱坐标系下可以根据(x,y,z)坐标利用三角关系得到
θ
\begin{array}{c} \theta \end{array}
θ与
φ
\begin{array}{c} \varphi \end{array}
φ的值。根据水平分辨率以及垂直分辨率,即可换算得到该点在前视图的坐标。
水平分辨率:根据激光雷达的角分辨率即可得到水平方向的分辨率,以kitti为例。其角分辨率为0.09,视角为360度。
垂直分辨率:以kitti为例,其垂直视角为26.8度,其为64线的激光雷达,因此垂直分辨率为26.8/64=0.42度。
因此最终可以利用如下公式计算得到每一个点在前视图上面的坐标:
c
=
arctan
(
y
/
x
)
/
△
θ
\begin{array}{c} c=\arctan (y/x)/\bigtriangleup \theta \end{array}
c=arctan(y/x)/△θ
r
=
arctan
(
z
/
x
2
+
y
2
)
/
△
μ
\begin{array}{c} r=\arctan (z/\sqrt{x^{2}+y^{2} } )/\bigtriangleup \mu \end{array}
r=arctan(z/x2+y2)/△μ
其中
△
θ
\begin{array}{c} \bigtriangleup \theta \end{array}
△θ与
△
μ
\begin{array}{c} \bigtriangleup \mu \end{array}
△μ分别代表水平分辨率与垂直分辨率。
至此点云的俯视图与前视图都已经生成完毕,如有错误,希望各位读者指出,共同学习!