用CloudCompare给城墙点云做分割标注:从.rcp到训练数据集的保姆级流程

张开发
2026/4/10 13:23:16 15 分钟阅读

分享文章

用CloudCompare给城墙点云做分割标注:从.rcp到训练数据集的保姆级流程
用CloudCompare构建城墙残损点云分割数据集的完整指南古城墙的数字化保护工作中点云分割标注是训练残损检测模型的关键前置步骤。本文将手把手带您完成从Recap导出的.rcp文件到标准化数据集的完整流程涵盖格式转换、点云清理、交互分割、标签分配等全链路操作细节。1. 数据准备与格式转换拿到现场扫描的原始点云数据后第一步是进行数据精简。城墙这类古建筑点云往往包含大量无关环境信息如周边树木、地面杂物建议在Recap中完成初步筛选使用矩形框选工具保留城墙主体结构通过裁剪功能移除天空点等无效数据将处理后的数据另存为.pts格式CloudCompare兼容性最佳注意若原始数据为.las格式CloudCompare可直接读取但.rcp需通过Recap导出中间格式常见点云格式特性对比格式优点缺点适用场景.rcp保留扫描仪原始数据软件依赖性强原始数据存档.pts结构简单无层级信息基础交换格式.las行业标准文件较大测绘领域通用.ply支持颜色属性解析复杂学术研究2. CloudCompare核心操作流程2.1 点云二次清理导入.pts文件后使用剪刀工具(快捷键S)进行精细筛选# 常用点云筛选命令 [1] 按住Shift框选删除区域 [2] 按Delete键移除杂点 [3] 空格键确认操作建议操作先整体浏览点云按城墙结构分区块处理特别注意残留的植被点云呈现散乱分布扫描仪噪点孤立悬浮点反射造成的鬼影重复结构2.2 残损区域分割标注使用交互式分割命令(seg)标记风化区域调出命令行窗口F3输入seg in开始标注保留区域输入seg out标记风化缺损区域循环操作直至完成所有区域划分技巧按Tab键可切换选择模式I键反转当前选择2.3 颜色与标签分配为不同状态区域设置区分色和标签值# 标签对应关系示例 label_mapping { 0: {name: 完好墙体, color: #00FF00}, 1: {name: 风化区域, color: #FF0000}, 2: {name: 裂缝, color: #0000FF} }操作步骤选中完好墙体点云块Edit Colors Set Unique 设置绿色在属性面板添加标签值设为0重复上述过程标注其他状态区域3. 数据导出与格式处理完成标注后合并所有点云块Merge时选择No保留原始属性导出为ASCII格式时会遇到字段排列问题。典型导出结构X Y Z R G B Nx Ny Nz label1 label2 ...处理建议方案使用Python脚本清洗数据import numpy as np data np.loadtxt(exported.xyz) # 提取前6列为坐标和颜色 clean_data data[:, :6] # 追加标签列假设最后一个有效标签在倒数第二列 labels data[:, -2].astype(int) np.savetxt(final_dataset.txt, np.column_stack((clean_data, labels)))生成配套的metadata.json{ class_labels: { 0: well-preserved wall, 1: weathering damage }, color_map: { 0: [0, 255, 0], 1: [255, 0, 0] } }4. 实战经验与避坑指南在实际城墙标注项目中这几个问题最常出现法向量干扰CloudCompare默认导出包含法向量可通过Edit Normals Clear移除NaN值问题在Python中使用np.nan_to_num处理异常值颜色量化标注前建议执行Edit Colors Convert to scalar避免颜色抖动批量处理技巧对连续城墙段可使用Tools Batch Export分块导出某明代城墙项目的标注数据统计标注类别点数占比平均面积(m²)典型特征完好墙体68%2.4平整连续表面风化22%0.8点云密度低结构裂缝10%0.1线性分布完成后的数据集可直接用于PointNet等网络训练。建议将城墙不同朝向的数据分开存储便于后续数据增强时进行旋转操作而不破坏真实结构关系。

更多文章