文章目录
- 1 数据准备与概览
- 2 CloudCompare使用步骤
- 2.1 导入点云
- 2.2 分割点云
- 2.3 标注点云
- 2.4 融合点云
- 2.5 导出点云
- 3 结语
- 4 相关文章
在正式介绍 CloudCompare点云分割标注前,我先介绍一下体例中使用的数据载体和标注情景,接下来从 导入、分割、标注、融合、导出 5个部分并结合我的使用经验、快捷键、和踩过的坑来介绍标注方法。
1 数据准备与概览
点云是由一系列点组成的集合,每个点拥有类似于 [ x , y , z , n x , n y , n z , r , g , b , l a b e l ] [{\color{#2EA9DF}{x,y,z}},nx,ny,nz,r,g,b,{\color{#E16B8C}{label}}] [x,y,z,nx,ny,nz,r,g,b,label]的形式,其中 x , y , z {\color{#2EA9DF}{x,y,z}} x,y,z通常是必要的坐标位置信息,而在做分割(seg)任务时,常需要 l a b e l {\color{#E16B8C}{label}} label作为该点所属部位的标签,用于监督训练神经网络。
结合具体场景来说,假设现在有停车场的原始点云数据,涉及的主要物体有person、car、pillar,我们的目的是从原始的点云数据把属于person这一部分的点给分割开来,即需要的 l a b e l {\color{#E16B8C}{label}} label有 person(0)、others(nan) 两类。
简便起见,以原始尺寸为
(
N
,
3
)
(N,3)
(N,3)的点云为例,
N
N
N为该电云中点的数量,
3
3
3代表每个点具有
[
x
,
y
,
z
]
[{\color{#2EA9DF}{x,y,z}}]
[x,y,z]的形式。点云数据下图所示:
可视化后,如下图所示,所有物体的颜色(
l
a
b
e
l
{\color{#E16B8C}{label}}
label)都一样,其中红框中的是person。
接下来需要使用CloudCompare软件给点云中的每个点增加一个
l
a
b
e
l
{\color{#E16B8C}{label}}
label,使得其变为
[
x
,
y
,
z
,
l
a
b
e
l
]
[{\color{#2EA9DF}{x,y,z}},{\color{#E16B8C}{label}}]
[x,y,z,label]的
(
N
,
4
)
(N,4)
(N,4)点云数据。如下图所示:
可视化如下图,其中蓝色的是person:
2 CloudCompare使用步骤
博主使用的是CloudCompare_v2.13.2,点击即可下载(可能需要梯子)。
不知道你是否注意到了前文中,我给others标注的是nan而不是1,这是因为CloudCompare中默认的标注信息是nan,在上述只需要分割person的情况下,我们只需要标记person就可以了,剩下的nan如果需要的话可以使用Python程序替换为1,这样在面对批量的点云标注时可以提高效率。相关程序如下:
label = 1 #特定的标签号
pcd[np.isnan(pcd)]= label#pcd为点云
总的来说,使用CloudCompare标记点云可以分为以下5步:
- 导入点云
- 分割点云
- 标注点云
- 融合点云
- 导出点云
在每步操作的时候要小心些,因为CloudCompare对撤销的支持不太好。
2.1 导入点云
导入点云前建议先在软件中新建一个文件夹,用于集中存放处理好的点云,也便于集中导出,并保存项目,做好记录,而不要直接导入零散的点云文件,这对批量处理点云十分重要。
接下来就可以批量导入点云文件了,按住Shift多选,中间会出现一个筛选界面,选择你需要的维度,点击Apply all即可。这里以导入前5帧的点云ply文件为例。
这里每个点云文件都会以一个文件夹的形式导入,对每个点云的处理在各自的文件夹进行,处理完后再将文件夹中的点云一起移入一开始创建的pcd文件夹。
2.2 分割点云
首先,将暂不处理的点云文件夹按Shift选中,并切换(Toggle)为冻结模式(快捷键:A),选中文件夹切换模式后其中的点云不会切换模式,便于后续处理:
常用快捷键01:A 切换选中文件的状态:激活/冻结
接着,选中0号点云(要选中才能操作,选中和显示是两回事),并调整视角,建议可以先观察点云(鼠标左键、中键、右键都试试),了解待分割目标的特征,然后切换到俯视图模式下进行分割,之后视角非必要就不要动了。
- 接在进入裁剪模式T,左键画多边形选中区域,右键结束选取,选中的是此时的视角对多边形投影后包裹的点云。
- 接着分割出选中区域I,并按Enter确定。
- 在下面的动图中,注意观察左上角的点云文件变化,其中*.segment就是我们分割的部分,以*.remaining为剩余的部分。
常用快捷键02:T - 左键右键 - I - Enter 快速分割出选中区域
如果需要分割多个不相邻的目标,要继续选中*.remaining点云,重复上述操作。
2.3 标注点云
接着就要给*.segment文件贴 l a b e l {\color{#E16B8C}{label}} label了(如果有多个,则每个对象都要操作一遍,可惜该软件好像不支持批量操作)。选中对应文件,点击顶部的+号,首先让你输入 SF(scaler field) 的名字,然后输入Value值。
①首先,输入名字都默认为Constant,无论你标注的对象实际是什么。否则最后导出的点云文件不会是3+1列,而可能是3+n列,n为你添加的SF名称的种类数。相当于每一个SF名称都是一个总的分割域,而通常的标注是在同一分割域下进行的。
②接着,输入Value,这里就是实际的分割号了,自己拟定即可。如果只是做种类不多的简单分割的话,建议默认值0,因为这样按两下Enter即可快速标注,之后有需要再用程序批量更改标号。
常用快捷键03:Enter - Enter 实现快速标注
2.4 融合点云
按Shift选中需要融合的文件(大家可以尝试下与Ctrl多选的区别),注意选择顺序,第一个选中的文件名即为融合后的文件名,之后点击顶部的融合按钮,并在接下来的弹框中选择否(可以使用 → \bold{\rightarrow} → - Enter快捷键,熟练了后比鼠标快),不然就会像多个SF名称一样在最后的导出文件中多出几列。
常用快捷键04: → \bold{\rightarrow} → - Enter 快速融合
注意此时,融合后的点云处于选中状态,直接按A就可以取消激活了,然后再选择下一个待处理的点云文件夹,按A激活,进入下一轮循环即可。
2.5 导出点云
- 在处理完上述点云文件后,将各文件夹中的点云按Ctrl选中后拖入一开始创建的pcd文件夹,并右键该文件夹选择排序选项。
- 然后可以再集中用Shift选中与A激活的方式,分批次的检查融合后的点云文件。
- 检查无误后再右键pcd文件夹一起导出。注意导出的文件名字结尾的标号仅与pcd文件夹中点云文件的数量相关,而与其在项目中的名称无关,留意不要覆盖之前的文件了。
另外,可以结合Advanced Renamer_v3.95软件实现文件的批量重命名,点击即可下载。 - 在导出弹出的窗口中,可以设置坐标和标签的精度等信息。

导出结果如下:
3 结语
使用CloudCompare标注分割点云数据主要有导入点云、分割点云、标注点云、融合点云、导出点云 这5步,涉及的快捷键如下:
常用快捷键01:A 切换选中文件的状态:激活/冻结
常用快捷键02:T - 左键右键 - I - Enter 快速分割出选中区域
常用快捷键03:Enter - Enter 实现快速标注
常用快捷键04: → \bold{\rightarrow} → - Enter 快速融合
在使用过程中注意保存和名称覆盖的问题。
4 相关文章
这个点云教程是基于AVP项目撰写的,如有对深度图转融合点云、PointNet++语义分割、Dbscan实例化有兴趣的可以看以下传送门: