CloudCompare标注自己的点云数据(部件分割)

张开发
2026/4/15 6:07:08 15 分钟阅读

分享文章

CloudCompare标注自己的点云数据(部件分割)
写在前面的话进行点云部件分割训练自定义数据集第一步就是标注自己的点云数据在使用CloudCompare标注数据过程中主要参考这篇文章如何利用CloudCompare软件进行点云数据标注-CSDN博客在此表示感谢看前须知文中图多篇幅长但详细因标注的数据非公开故在此教程是教程更是记录来时路中将官方数据集的txt数据删除标签列重新标注。在标注前需要知道该物体分为几部分此处以“earphone”为例分为两部分其中第一部分为头上戴的第二部分为两只耳朵。1.打开CloudCompare依次点击左上角的“文件”—“打开”选择点云数据的存放路径。2.注意右下角的格式选择若点云数据为pcd格式则点击左下角选择pcd否则点云数据不显示。CloudCompare支持挺多格式的。3.双击选中的点云数据显示如图所示信息txt中共六列数据前三列X,Y,Z为空间坐标信息后三列NxNyNz为法向量信息点击“Apply”。然后显示移动、缩放等信息页面点击“Yes”后即可看到点云画面。4.标注时一定要先选中物体才能进行标注。点击左边点云数据名称图中物体出现黄色立体框即为选中按住鼠标左键可以调整不同视角方向右键可以移动图像位置滑动滚轮可以进行缩放操作。5.点击如图所示“剪刀”状图标开始标注。点击鼠标左键选择框选目标的起点当框选完成后起点与终点重合点击右键形成闭合的图形即为该部分标注完成。若标注的部件较为规则可点击图中位置选择“矩形框”。该部分标注完成后点击如图所示位置表示将标注部分作为一个新的点云文件。接着点击图中“绿色√”保存标注的点云数据。点击后会发现左边多出来一行红色框中的“1-Cloud-segmented”即为标注的数据“1-Cloud.remaining”即为剩余的未标注数据。取消勾选“1-Cloud-segmented”前边的“蓝色√”后可以看到剩余的未标注部分。选中“1-Cloud.remaining”重复上述操作标注剩余部分。6.标注完成后给各个部分打标签。将“earphone” 头上戴的部分标为0左右两个耳朵标为1。在实际工程应用场景中除过需要分类的部分外可能还会存在背景背景的点云数据占比会比较多可根据实际情况选择标注与否需要提前知道的事下边给各部分打标签过程中提到的命名必须全部一致标签值可不同。点击图中箭头所示位置然后点击“”全屏模式下“”可能会直接看到在弹出的命名框里输入“eee”,点击“OK” 然后将标签值设为0点击“OK”后框选部分变为蓝色则说明标注成功。7.重复上述步骤给左右两个耳朵标为1注意命名一致8.至此剩下最后一步了如图全选框中的标注文件选中其中一个然后CtrlA即可发现箭头上边的图标变亮了点击该图标进行合并。在弹出的对话框选择“No”会发现左上方为标注文件合并成一个了“earphone”也按照期望的那样划分为两部分了。9.至此标注完成但如何成为训练可用的txt文件呢请继续查看点击左上角的“文件”—“保存”然后点击保存类型即可看到有我们想要的txt格式点保存在弹出的界面点“Ok”txt保存成功。打开txt后发现和很多教程中出现的txt表示的信息不一致通过查看导出的不同物体的txt发现前三列为点的空间坐标信息不变其他列按顺序可能为法向量、标签值等。打开刚导出“earphone”的txt如下图前三列为点的空间坐标信息第四列为标签值后三列为法向量。训练过程中只用到空间坐标信息与标签那么可以对txt文件进行简单处理如下为删除txt第5-7列的程序。 删除txt文件的第5、6、7列,第23行程序data中的值为 [4,5,6],若删除其他列修改此处即可 修改第16、17行的点云数据路径以及删除列后的输出路径 import numpy as np def read_data_from_file(file_path): data np.loadtxt(file_path) return data def write_data_to_file(data, file_path): np.savetxt(file_path, data, fmt%.8f, delimiter ) # Define the input and output file paths input_file_path rD:\Pointnet2\data\earphone\1 - Cloud.txt output_file_path rD:\Pointnet2\data\earphone\1 - Cloud-out.txt # Read data from the input file data read_data_from_file(input_file_path) # Delete the 6th and 7th columns (Python uses 0-based indexing) data np.delete(data, [4,5,6], axis1) # Write the modified data to the output file write_data_to_file(data, output_file_path) print(Data modification complete. Modified data written to, output_file_path)运行该程序后txt内容如下注后续运行train_partseg.py在进行参数配置的时候记得给--normal,设置为defaultFalse即不使用法向量。写在最后的话若有所待便是人生若有所憾也是人生。

更多文章