在正式介绍 CloudCompare点云分割标注前,我先介绍一下体例中使用的数据载体和标注情景,接下来从 导入、分割、标注、融合、导出 5个部分并结合我的使用经验、快捷键、和踩过的坑来介绍标注方法。
点云是由一系列点组成的集合,每个点拥有类似于的形式,其中通常是必要的坐标位置信息,而在做分割(seg)任务时,常需要作为该点所属部位的标签,用于监督训练神经网络。
结合具体场景来说,假设现在有停车场的原始点云数据,涉及的主要物体有person、car、pillar,我们的目的是从原始的点云数据把属于person这一部分的点给分割开来,即需要的有 person(0)、others(nan) 两类。
博主使用的是CloudCompare_v2.13.2,点击即可下载(可能需要梯子)。
不知道你是否注意到了前文中,我给others标注的是nan而不是1,这是因为CloudCompare中默认的标注信息是nan,在上述只需要分割person的情况下,我们只需要标记person就可以了,剩下的nan如果需要的话可以使用Python程序替换为1,这样在面对批量的点云标注时可以提高效率。相关程序如下:
总的来说,使用CloudCompare标记点云可以分为以下5步:
- 导入点云
- 分割点云
- 标注点云
- 融合点云
- 导出点云
在每步操作的时候要小心些,因为CloudCompare对撤销的支持不太好。
2.1 导入点云
2.2 分割点云
首先,将暂不处理的点云文件夹按Shift选中,并切换(Toggle)为冻结模式(快捷键:A),选中文件夹切换模式后其中的点云不会切换模式,便于后续处理:
常用快捷键01:A 切换选中文件的状态:激活/冻结
- 接在进入裁剪模式T,左键画多边形选中区域,右键结束选取,选中的是此时的视角对多边形投影后包裹的点云。
- 接着分割出选中区域I,并按Enter确定。
- 在下面的动图中,注意观察左上角的点云文件变化,其中*.segment就是我们分割的部分,以*.remaining为剩余的部分。
常用快捷键02:T - 左键右键 - I - Enter 快速分割出选中区域
2.3 标注点云
接着就要给*.segment文件贴了(如果有多个,则每个对象都要操作一遍,可惜该软件好像不支持批量操作)。选中对应文件,点击顶部的+号,首先让你输入 SF(scaler field) 的名字,然后输入Value值。
①首先,输入名字都默认为Constant,无论你标注的对象实际是什么。否则最后导出的点云文件不会是3+1列,而可能是3+n列,n为你添加的SF名称的种类数。相当于每一个SF名称都是一个总的分割域,而通常的标注是在同一分割域下进行的。
②接着,输入Value,这里就是实际的分割号了,自己拟定即可。如果只是做种类不多的简单分割的话,建议默认值0,因为这样按两下Enter即可快速标注,之后有需要再用程序批量更改标号。
常用快捷键03:Enter - Enter 实现快速标注
2.4 融合点云
按Shift选中需要融合的文件(大家可以尝试下与Ctrl多选的区别),注意选择顺序,第一个选中的文件名即为融合后的文件名,之后点击顶部的融合按钮,并在接下来的弹框中选择否(可以使用 - Enter快捷键,熟练了后比鼠标快),不然就会像多个SF名称一样在最后的导出文件中多出几列。
常用快捷键04: - Enter 快速融合
使用CloudCompare标注分割点云数据主要有导入点云、分割点云、标注点云、融合点云、导出点云 这5步,涉及的快捷键如下:
常用快捷键01:A 切换选中文件的状态:激活/冻结
常用快捷键02:T - 左键右键 - I - Enter 快速分割出选中区域
常用快捷键03:Enter - Enter 实现快速标注
常用快捷键04: - Enter 快速融合
在使用过程中注意保存和名称覆盖的问题。