大家好,今天给大家带来IGARSS 2019点云分类挑战赛中使用的传统方法总结,主要从使用PDAL计算点云曲率与密度,栅格地图和分离场景地面三个方面进行介绍。
本人原创,在泡泡点云有推送。
2019 IEEE GRSS Data Fusion Contest 3D PointCloud Classification Challenge[1] 要求使用Urban Semantic 3D(US3D) 数据集完成点云分割任务。US3D数据集由机载激光雷达扫描(ALS)得到,内容包括两个大城市的多视图,多波段卫星图像和地面实况几何和语义标签。对于每个地理区块,以点云形式提供用于评估分割算法的激光雷达数据,使得每个3D点云带有语义标签分类。
为了准确描述3D点云,只有点云的空间位置坐标是不够的。有必要计算一些附加参数,例如密度,法线和曲率。使用PDAL工具[2] 可以根据点云空间位置关系计算出点的密度,曲率和法向量。
点云密度[3] 反映点云在空间中的疏密程度,尝试根据点云的空间坐标计算点云的密度。通过统计包含在以查询点为球心以给定长(默认值为1.0)为半径的球体内的点的数量,然后使用球体的体积对统计的数量(包括查询点)进行归一化。
法线和曲率[4] 是点云分割中两种广泛使用的显著特征,它们使用传统的主成分分析(PCA)计算。对于每个查询点,使用K近邻算法计算其周围k个点(k取8)。然后使用主成分分析(PCA)进行平面拟合,计算k近邻点的特征值和特征向量。由具有最小特征值的特征向量给出总最小二乘最佳法线方向。并将其长度缩放到1,方向朝向视点方向。按式1计算曲率,其中λ是按升序排序的特征值。
k的选择对计算法线的质量至关重要。k的值越小,所需的处理时间越短。但是,k值过小会对噪声敏感。较高的值可能会在近似过程中补偿噪声,但会增加处理时间并可能导致错误的结果。使用合适大小的不同k值,生成对应不同k值大小的法向量和曲率。比较法向量和曲率区分场景中的平面是曲率的一个应用思路。
与二维图像中像素的规则排列方式不同,点云数据是无序的,这使得它很难直接应用二维图像中已经成熟的深度学习方法。借鉴GIS地图系统中(使用卫星图像+GPS定位的地图系统,全称为geographic information system)中栅格地图[5] 的思想,我们尝试把三维点云数据转化为二维栅格地图。栅格地图给每一个栅格赋一个值,本质是数据结构化和信息压缩。这个栅格值表示的是栅格数据所描绘的现象,例如点云的强度、类别,还有上文计算得到的密度,曲率等信息等。在我们的方案中,后处理部分使用了一系列不同类型栅格值的栅格地图,某个场景的栅格地图如图2所示:
在CCF BDCI2018:阿里巴巴集团自动驾驶三维点云分割的前四名方案中[6],均使用了栅格地图,其处理思路是栅格地图+卷积神经网络。这些方案同时融合了点云数据和传统图像检测算法,且均达到了10fps的硬性实时要求。(我们在IGARSS竞赛中没有使用这种思路,IGARSS没有实时性的要求)。同时要注意到由于栅格地图的栅格的尺寸的局限性,可能会造成空间误差;将数据重建到固定间距的栅格边界时会损失一定的精度。
在机器人室内导航领域,也有将三维点云制备成二维栅格地图的方法。通过结合三维地图完整描述环境与二维地图占用存储空间小的优势进行地图制备的方法将是一种有效的室内导航地图制备方法。
栅格地图将整个环境均匀分割成单元栅格, 每个栅格赋予一个值来表示栅格中有无障碍,表达方法形象,适用于室内复杂环境的导航任务,但不能充分描述环境的三维结构。[7]中提出一种基于VSLAM技术的室内导航地图制备方法,在基于VSLAM构建环境的三维点云地图后,通过截取出机器人高度范围内的三维点云, 将机器人的通行区域内的点云投影到地面平面来生成二维栅格地图。并对平面中各栅格的占用状态进行更新和计算,可以构建出栅格地图。由于将环境的三维点云投影到地面平面中,悬空或低矮物体可以出现在该平面上。该方法制备的二维导航地图,能够包含环境的三维结构信息,有助于机器人在执行路径规划等任务时能够考虑到环境的三维结构。
分离出场景中的地面是十分必要的。自动驾驶车辆需要快速识别可通行区域;地面分离是障碍物检测和识别的先决条件,很大程度上决定了目标识别的好坏。在泡泡第六十八课中,介绍过地面分割算法,包括:基于网格的方法,基于分类器的方法,基于模型的方法,基于Mesh的方法等。
在机载激光雷达应用领域,利用点云地面滤波,区分开哪些点云是属于地面的,哪些点云是属于高出地面的地物(例如建筑物、树木等)。地面滤波是很多点云处理的基础,例如分割(分出一栋栋建筑物或一棵棵树木)、分类(到底是建筑物物还是树木)和参数提取(建筑物尺寸、树木高度胸径)等。
在IGARSS竞赛中使用的US3D数据集,每个场景中地面点的数量均占到一半以上,且地面点几乎位于点云的底部。如果能把地面分割出来,对于各标签数量的平衡会不会有帮助呢?所以有必要将点云的地面分割出来。
我们尝试使用了[8]介绍的一种基于布料模拟的机载LiDAR滤波方法[9]。如图3所示,CSF地面滤波器首先将激光点云倒置,然后在顶层模拟一块具有一定刚性的布料。布料会因重力作用而覆盖在点云的最上面,最后与布料接触的点是即为地面点。当然分割完成后,发现分割出来的“地面”中,除了地面,还有建筑物和水面等类别。但这不妨碍它是优秀的地面分割算法。
[1] https://competitions.codalab.org/competitions/21132#learn_the_details
[2] https://pdal.io/
[3] https://pdal.io/stages/filters.radialdensity.html?highlight=density
[4] https://pdal.io/stages/filters.normal.html?highlight=curvature
[5]http://desktop.arcgis.com/zh-cn/arcmap/10.3/manage-data/raster-and-images/what-is-raster-data.htm
[6] https://zhuanlan.zhihu.com/p/51508500
[7] 林志林, 张国良, 王蜂, et al. 一种基于VSLAM的室内导航地图制备方法[J]. 电光与控制, 2018, 25(1).
[8] Zhang W M , Qi J B , Wan P , et al. An easy-to-use airborne LiDAR data filtering method based on cloth simulation[J]. Remote Sensing, 2016, 8( 6): 501.
[9] http://ramm.bnu.edu.cn/projects/CSF/
请各位关注公众号。更多的文章可以关注公众号查看。