当前位置: 首页 > news >正文

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

写在前面的话:

进行点云部件分割,训练自定义数据集第一步就是标注自己的点云数据,在使用CloudCompare标注数据过程中主要参考这篇文章:如何利用CloudCompare软件进行点云数据标注-CSDN博客,在此表示感谢!

看前须知:文中图多,篇幅长,但详细!

因标注的数据非公开,故在此教程(是教程更是记录来时路)中将官方数据集的txt数据删除标签列,重新标注。在标注前需要知道该物体分为几部分,此处以“earphone”为例,分为两部分,其中第一部分为头上戴的,第二部分为两只耳朵。

1.打开CloudCompare,依次点击左上角的“文件”—“打开”,选择点云数据的存放路径。

2.注意右下角的格式选择!若点云数据为pcd格式则点击左下角选择pcd,否则点云数据不显示。CloudCompare支持挺多格式的。

3.双击选中的点云数据,显示如图所示信息,txt中共六列数据,前三列(X,Y,Z)为空间坐标信息,后三列(Nx,Ny,Nz)为法向量信息,点击“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.至此,剩下最后一步了,如图全选框中的标注文件(选中其中一个然后Ctrl+A即可),发现箭头上边的图标变亮了,点击该图标,进行合并。

在弹出的对话框选择“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 = r'D:\Pointnet2\data\earphone\1 - Cloud.txt' output_file_path = r'D:\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], axis=1) # 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',设置为default=False,即不使用法向量。

写在最后的话:

若有所待便是人生,若有所憾也是人生。

http://www.jsqmd.com/news/637504/

相关文章:

  • 终极Jellyfin Media Player Qt WebEngine优化指南:10个提升播放性能的实用技巧
  • Rocket.Chat移动端终极优化指南:打造完美响应式聊天体验
  • C语言stdio.h指南:从printf到文件操作的全方位解析
  • 别再复制粘贴了!手把手教你为STM32F103ZE手动移植FreeRTOS v202212.01(附完整源码包)
  • 专知智库白皮书(一):什么是余行税?企业隐形生存税的定义与本质
  • 新手小白学习人工智能,推荐哪些入门书籍和课程?适合零基础的有哪些?|2024新手必看
  • explainerdashboard核心组件详解:从SHAP值到特征重要性分析
  • 深入解析AX3000 PLC中HSC_Counter高速计数指令的配置与优化
  • 基于微信小程序实现移动学习平台管理系统【附项目源码+论文说明】计算机毕业设计
  • GoCelery扩展开发:如何自定义Broker和Backend
  • TDC终极指南:3步掌握药物研发AI神器,轻松预测分子特性
  • 50ms消息响应革命:Rocket.Chat边缘计算部署实战指南
  • 专知智库白皮书(二):余行税的三大表现与流程税对比
  • ABAP - 动态生成邮件表格并自动发送的实战代码
  • 实测可行|OpenClaw windows部署教程 路径报错快速修复
  • 基于微信小程序实现个人行政复议在线预约系统【附项目源码+论文说明】计算机毕业设计
  • 告别CANoe!用这个QT开发的DBC/Excel互转工具,5分钟搞定报文数据整理
  • ttkbootstrap自定义主题创建教程:打造专属UI设计系统
  • 2026奇点大会AIAgent自动驾驶核心白皮书首发(仅限前500名技术决策者获取)
  • 微服务架构:如何将 Express ES6 API 拆分为可扩展的微服务
  • douyin-ios-objectc性能优化:如何实现流畅的视频列表滚动体验
  • 微信小程序调用Pixel Couplet Gen:用户行为埋点与A/B测试方案
  • 沁恒蓝牙芯片CH57x系列开发实战:从机模式深度解析
  • 知网AI率高怎么降?嘎嘎降AI使用教程:3步降到5%
  • Rocket.Chat终极安全指南:区块链技术如何重塑企业通信安全
  • F-Droid Client高级技巧:蓝牙共享、IPFS集成和仓库管理的终极教程
  • 3个必知技巧:快速上手AI-Render插件,轻松实现Blender中的AI艺术创作
  • Docker Desktop vs Docker Toolbox:2024年开发者该如何选择?
  • MiniCPM-V-2_6产品设计反馈:用户晒图识别→痛点挖掘→改进建议生成
  • Freedom DDD 框架事务处理完全指南:保证数据一致性的最佳实践