共计 1144 个字符,预计需要花费 3 分钟才能阅读完成。
背景痛点
刚接触点云标注时,我踩过不少坑:

- 效率低下:手动框选 1000 个物体要花 6 小时,鼠标点到手抽筋
- 边界模糊:树木和建筑交界处总标不准,反复调整耗时占 30%
- 格式混乱:同事用毫米单位标注的模型,我按米制导入全乱了
工具横向测评
对比几款主流工具后发现:
- LabelCloud:
- 优点:网页端协作方便,内置 AI 预标注
-
缺点:收费贵($299/ 月),10GB 以上数据卡顿明显
-
CloudCompare:
- 优点:开源免费,支持 8000 万 + 点云实时渲染
- 缺点:学习曲线陡峭,快捷键多达 200+ 个
核心功能实操
1. 分层标注策略
- 加载点云后按
Ctrl+Shift+S调出 Segment 工具 - 用
Q键切换不同颜色层(建议每类物体单独分层) - 按住
Shift+ 鼠标滚轮旋转查看各层叠加效果
2. 批量复制技巧
遇到重复结构(如路灯阵列):
- 框选单个路灯组件
- 点击
Edit > Multiply - 设置 X / Y 轴偏移量(例如 5m 间距)和数量(如 20 个)
3. 坐标校准三板斧
- 粗校准 :用
Align工具选取 3 对对应点 - 精校准:ICP 算法迭代(误差控制在 0.01m 内)
- 验证 :用
Tools > Distance测量特征点间距
Python 自动化实战
自动平面标注脚本
import pyCloudCompare as pcc
from sklearn.linear_model import RANSACRegressor
# 加载点云
cloud = pcc.load("road.pcd")
# RANSAC 平面检测(参数单位:米)ransac = RANSACRegressor(residual_threshold=0.05)
ransac.fit(cloud.points[:, :2], cloud.points[:, 2])
# 标注结果保存
with open("labels.json", "w") as f:
json.dump({"plane_normal": list(ransac.estimator_.coef_),
"inliers": ransac.inlier_mask_.tolist()}, f)
内存优化技巧
- 分块加载:
cloud = pcc.load("large.las", chunk_size=5000000) # 每块 500 万点 - GPU 加速:
- 编辑
ccViewer.ini文件 - 添加
[OPENGL]
MaxVBOCount=2048
血泪避坑指南
- 单位灾难现场:
- 模型导入前检查
Edit > Scale中的系数(1.0= 米,0.001= 毫米) -
建议团队统一使用 米制
-
密度取舍原则:
- 人行道标注:保留 5cm 间距点云
-
建筑物轮廓:可抽稀到 20cm
-
版本兼容方案:
- 保存时勾选
兼容 2.10+ 版本选项 - 跨版本传递数据用
.bin格式
进阶思考
- 如何用区域生长算法实现自动树木标注?
- 当点云存在大量缺失时,怎样保证标注连续性?
- 设计一套多人协作标注的版本控制方案
正文完
发表至: 技术教程
近一天内
