Fast Lidar Clustering by Density and Connectivity
这篇文章是发布在cs.cv上面的一篇文章,个人理解为利用语义信息来进行聚类。
接下来详细解读一下这篇文章。
首先这篇文章提出了一种实时的雷达点云实例分割的网络。主要亮点在于提出了skip conection这个结构来增加网络的鲁棒性。
主要步骤:
此工作是利用将三维点云转换成深度图像后进行相关操作。
1.去除地面。
2.横纵向距离值D计算。
3.合并3个2值图,进行连通性判断。
4.skip-connection。
详细步骤:
一、去除地面:
首先进行的是地面的滤除工作,这个工作是为了将由地面连通的两个物体连接起来。
主要步骤:
1.将三维点云投影成深度图像,像素值是传感器到障碍物的距离。
2.计算深度图像中的每个像素的角度β值,这个值是深度图像中的像素值。
β值的计算公式如上,计算的是垂直方向上的相邻两个点连线与平面的夹角。其实也就是下图的阿尔法值(其他文章的图)
地面滤除参考文章:“A fast ground
segmentation method for 3D point cloud"
接下来进行的主要工作是计算D值:
二、计算D值:
1.去除地面后,我们拿到的是滤除地面后的深度图像,如上图所示,上右图所示的α角是传感器角分辨率,分为水平分辨率和垂直角分辨率,所以我们在计算的时候分为两部分,一个是计算水平方向上的D值,另一个是垂直方向上的D值,这个D指的就是同一个激光发射器上相邻两点的欧氏距离(水平),或者是上下相邻激光发射器同一时刻发射的上下两点的欧氏距离(垂直)。
2.上述的距离D说明了两个点的距离,也是我们判断激光是否打到同一个障碍物的判断依据,因为α的值是个常数,所以最终的计算公式可以按照上图的最下面的公式。
3.计算过两个方向上的数值过后,我们会设置一个距离阈值,如果超过这个阈值我们则认为不是同一个障碍物。
到这步文章有一个创新点:
将上述计算的两个图(x轴方向算的和y轴算的)变成一个二值图,表示像素中的每个点是不是同一个障碍物,能够连通且满足最小聚类数量则算成是同一障碍物。这时候我们已经有两个二值图了。
接下来我们要将原深度图的也转换成二值图,转换的依据是原图中是不是地面点,是地面点则值为零,否则为一,到时候我们会对1的值开始遍历,查找连通域,最后的形状如图所示:
在这步完事之后,我们可使用文章中所使用的4-conncted的方法进行连通域的查找,进行label的标记,后续对此方法进行解读。
对标记完的图像我们可以进行下采样到原来的深度图像,在随后的步骤我们可以进行聚类点数最小值阈值的确定,以防止过分割现象。
D值计算参考文章:“Efficient Online Segmentation for Sparse 3D Laser
Scans
"
三、Skip-conection:
其实到上一步分割部分已经可以完成了,如果这样就发了一篇文章岂不是太水了,因为大部分做法已经在其他文章做过了。
所以接下来的这部分相当于本文章的一个亮点,在激光雷达实际使用过程中,由于点云的稀疏性,尤其是线束少的情况,skip-connection的作用就是来解决过分割的现象。
整体的结构如上图:
整体的想法就是,做采样。
具体的做法应该是:
1。对于原深度图进行采样工作,2-skip就是步长为2的采样
2.重复之前的工作,重新生成三个二值的图像,拼接到一起。
最后再进行上采样恢复原分辨率的工作。
对于Skip-connection的结构现在还稍有疑问,后续补充。