简介:《CloudCompare使用教程》面向地质、建筑、工程等领域的三维点云处理初学者和进阶用户,以课程资源形式梳理软件从基础操作到高级应用的学习路径,帮助解决点云导入、显示、处理与分析中的常见问题。压缩包内共1个文件,为1份PDF,整体约4.95MB,适合在电脑端查阅并按章节随用随查。内容结合网络资料与作者个人使用经验,覆盖File/Display/Save设置、Primitive Factory几何体创建、颜色渲染、法线估计与精细化、八叉树优化、网格与标量域操作、插件扩展、汉化方法,以及ICP配准、cloud distance、降采样和merge等常用工具,便于读者建立较完整的操作框架。目前已有1469人学习,可作为课程配套阅读和CloudCompare入门至进阶的参考手册。
1. 从下载到跑通第一条点云:这份 CloudCompare 教程适合谁
手上有一份 CloudCompare 使用教程,从 File 菜单一路列到 Plugins 插件,条目完整得像操作手册的目录。但真正把一份 LAS 点云拖进软件时,多数人还是会卡在三个问题:坐标太大导致显示成一条线、法线算出来是黑的、配准跑完对不齐。这份教程的价值在于把导入、预处理、配准到测量这条主线上的关键操作整理到一起,并配上现成的案例截图,让人能在半天内跑通第一条完整链路;它会把每个菜单翻译一遍。它适合做测绘、地质、建筑扫描和逆向工程的从业者,也适合课程资源里需要交点云处理作业的学生;如果你要做点云算法二次开发,这份教程只能当操作参考,源码和接口文档还得另找。它解决的是“知道有这个功能但不知道怎么点”的问题,不解决“算法怎么写”的问题。
2. 点云预处理三件套:八叉树、统计滤波与体素降采样的参数边界
点云预处理这一步,容易出问题的往往在参数怎么定,不在操作本身。同一份扫描数据,体素尺寸差一个数量级,后面配准的 RMS 能差出几倍。这一章把八叉树、统计滤波和降采样这三件套拆开讲,重点在“参数为什么这么设”和“设错了会看到什么”。
2.1 八叉树先算清楚:体素尺寸与内存的取舍
八叉树的原理不复杂:把整个点云包围盒当作根节点,沿 X、Y、Z 三个方向各切一刀,分成 8 个子立方体,每个子立方体继续递归切分,直到每个体素里的点数低于设定阈值。CloudCompare 用这棵树来加速邻域查询,法线估计、曲率计算、距离查询、下采样都依赖它。很多人以为八叉树是“自动的”,确实在某些操作里 CC 会隐式建树,但显式算一次能看到体素分布,也能避免重复建树带来的卡顿。
操作路径是 Edit > Octree > Compute。弹窗里有两个关键参数:最大点数(Max point per cell)和体素尺寸(Cell size)。最大点数默认值通常是 100000,意思是当一个体素里的点数低于这个值时停止细分;体素尺寸可以留空让软件按包围盒自动推算,也可以手动填。
体素尺寸怎么定?先测点间距。Tools > Other > Density 能估点云密度,或者直接看属性面板里的点数和包围盒尺寸,用包围盒对角线除以点数的立方根粗略估。工程上常用的经验值是平均点间距的 1 到 2 倍:点间距 1 cm,体素就取 1 到 2 cm。体素太小,树深得很,内存和时间都上去了;体素太大,每个体素里堆几千个点,邻域查询并不比暴力搜索快多少。
注意:点云坐标很大时(比如带投影坐标的 LAS),建树前先处理 Global shift,否则包围盒的浮点精度会让体素边界对不齐。
手动算完八叉树后,属性面板里能看到层级数和叶子节点数。如果叶子节点数远大于点数除以最大点数,说明体素设得太细,可以回头调大再算一次。这一步不是必须每次做,但在做降采样、法线估计和大规模距离计算之前,我一般会先算一次,把体素尺寸记下来,后面几个操作复用同一个尺度。
2.2 统计滤波 SOR:K 近邻与标准差倍数的设置逻辑
统计滤波(Statistical Outlier Removal,SOR)是去噪里最常用的一个。原理是:对每个点,找它最近的 K 个邻居,算这 K 个邻居到它的平均距离;然后对全体点的平均距离做统计,得到均值 μ 和标准差 σ;平均距离落在 μ ± n·σ 之外的点被视为离群点删掉。CloudCompare 的实现会先算一个叫“平均距离”的标量域,滤波时按这个域做筛选。
操作路径是 Tools > Clean > SOR filter。参数两个:K 近邻数(Knn)和标准差倍数(Std ratio)。Knn 一般取 6 到 20,点数多、噪声分散时取大一点;标准差倍数 1.0 到 3.0 之间,1.0 最激进,删得最多,3.0 比较保守。
怎么判断参数合不合适?滤波完会生成一个标量域,用 Edit > Scalar fields > Show histogram 看分布。正常点云的平均距离应该近似高斯分布,长尾在右边;如果直方图左侧也被切掉一块,说明阈值设得太严,把正常点也删了。我一般先用 Knn=6、Std=1.0 跑一遍,看剩余点数——如果删掉超过 5%,就调回 1.5 或 2.0 再跑。
SOR 和低通滤波(Noise filter)的区别要分清:SOR 按邻域平均距离筛,适合去掉孤立的飞点;低通滤波按局部拟合面的偏差筛,适合去掉贴合表面的小噪声。数据里两种噪声都有时,先 SOR 再低通,顺序反了低通会把飞点当成真实点拟合进去。
2.3 三种降采样方式对比:随机、体素、八叉树
降采样是控制数据量的常规手段,CloudCompare 里有三条路径,选错了会丢掉后面要用的几何特征。
| 方式 | 入口 | 保留规则 | 适用场景 | 注意点 |
|---|---|---|---|---|
| 随机采样 | Edit > Subsample > Random | 随机保留指定数量的点 | 快速预览、做配准的粗样本 | 点数少时分布不均 |
| 体素采样 | Edit > Subsample > Space | 每个体素保留一个点(默认第一个) | 统一密度、控制总量 | 保留的是原始点,不是质心 |
| 八叉树下采样 | Edit > Octree > Resample | 每个体素用所有点的质心替代 | 平滑几何、保留结构 | 质心会偏移,尖角处被抹平 |
随机采样填的是目标点数,适合把几百万点砍到几十万点做粗配准。体素采样填的是体素尺寸,和 2.1 里的八叉树体素是同一个概念,但保留的是体素内的原始点不是质心,所以点云外观变化小。八叉树下采样生成的是新点云,每个点都是质心,几何上更平滑,做网格重建前用得多一些,但原始点被替换后就不能再用来做逐点对比了。
提示:降采样前先 Clone 一份原始点云,CC 的部分操作不可撤销,血泪经验是重要数据先备份。
三条路径的共同点是都依赖八叉树,所以先按 2.1 把体素尺寸定下来,三种方式用同一个尺度对比,结果才有可比性。做形变对比或体积测量时,参考点云和测试点云要用相同的降采样参数,否则密度差会直接反映到距离统计里。
3. 配准链路从粗到精:包围盒对齐、点对选取与 ICP 收敛判断
配准是 CloudCompare 里被问得最多的功能,也是容易出问题最多的一步。ICP 本身不复杂,难的是“什么时候该用 ICP、初始位置差多少还能救、跑完怎么判断结果对不对”。这一章按粗配准到精配准的顺序拆开讲。
3.1 配准前先做量纲与坐标系检查
拿到两份点云先别急着点 ICP,先看三件事:单位是否一致、坐标系是否接近、重叠区域够不够。单位不一致是最隐蔽的坑——一份是米、一份是毫米,包围盒尺度差 1000 倍,ICP 怎么迭代都收敛不了。CloudCompare 加载时会读文件头里的单位信息,但 ASCII 点云没有单位,只能靠包围盒尺寸反推。
坐标系接近的判断方法是同时选中两份点云,看 3D 视图里它们是不是大致叠在一起。如果一份在原点附近、另一份在几万公里外,先做 Global shift 把坐标平移到一个局部原点,再谈配准。重叠区域一般要求不低于 30%,低于这个比例 ICP 的对应点对里错误匹配占多数,RMS 会虚低。
还有一个容易被忽略的检查:两份点云的点数是否在同一量级。一份 10 万点、一份 1000 万点,ICP 默认的采样策略会让小点云被大点云“淹没”,结果偏向大点云。这种情况先用 Subsample 把大点云降采样到相近量级,配准完再把变换矩阵应用到原始大点云上。
3.2 粗配准:包围盒中心对齐与点对选取的操作细节
粗配准的目标是把两份点云拉到 ICP 能收敛的距离内,CloudCompare 提供两个入口。
第一个是 Tools > Registration > Match bounding-box centers。选中两份点云,执行后软件会把它们的包围盒中心平移到同一点。这个方法适合两份点云形状相近、只是位置错开的情况,比如同一栋建筑两次扫描。缺点是只平移不旋转,如果两份点云有旋转关系,中心对齐后仍然对不上。
第二个是 Tools > Registration > Align (point pairs picking)。在弹出的对话框里,先在参考点云上点一个特征点,再在测试点云上点对应的位置,至少点三对,软件会算一个刚体变换。三对点不能共线,否则旋转矩阵退化。实际操作时选角点、边缘交点这类几何特征明显的点,点的顺序要一一对应——先点参考再点测试,每对点确认后再点下一对。
点对选取的精度直接决定粗配准质量。3D 视图里用鼠标点,误差几个像素很正常,所以选点时把视图放大到特征附近,用 Point picking 工具读出坐标再对照。粗配准完看一眼 RMS,三对点的情况下 RMS 在点间距量级以内就算合格,超过一个数量级说明点对选错了。
3.3 ICP 精配:参数、收敛信号与失败判断
精配准入口是 Tools > Registration > Fine registration (ICP)。对话框里几个参数要调:迭代次数(默认 20 左右)、最小误差变化(收敛阈值)、最终重叠率(Final overlap)。迭代次数不够会提前停,太大则浪费时间;重叠率是告诉 ICP“两份点云大概有多少比例是重叠的”,设得太高会把非重叠区域也硬配进去。
参考点云(Reference)和测试点云(Test)的角色不能搞反:ICP 把测试点云往参考点云上靠,变换矩阵作用在测试点云上。配准完会输出一个 4×4 变换矩阵和 RMS,矩阵可以保存下来,应用到同一批数据的其他点云上。
判断 ICP 是否收敛,看三个信号。第一,RMS 是否单调下降后趋于平稳;如果 RMS 先降后升,说明迭代过头了,把迭代次数调小重跑。第二,最终重叠率是否接近设定值;差得远说明初始位置还是太偏,回去做粗配准。第三,3D 视图里两份点云是否贴合;如果一份明显穿模或者反向,检查法线方向或者点对选取时有没有把顺序搞反。
注意:ICP 跑完不会自动保存变换矩阵,对话框关掉就没了,跑之前先想好要不要导出。
失败最常见的原因是初始位置差太远。ICP 是局部优化,初始旋转超过 30 度或者平移超过点云尺度的 20%,基本救不回来,这时候必须回退到点对选取。另一个原因是重叠区域里有大量重复结构(比如两面平行的墙),对应点对会匹配到错误的墙上,RMS 看起来很低但结果完全错,这种情况只能手动裁掉非重叠区域再配。
4. 法线与网格的实操路径:Delaunay、平滑与体积测量的可复现步骤
法线和网格是点云从“看得见”到“算得出”的分水岭。法线方向错了,渲染是黑的;网格建错了,体积测量能差出百分之几十。这一章把法线估计、Delaunay 三角化和网格后处理串成一条可复现的路径。
4.1 法线估计与方向精细化:MST 与快速行进法
法线估计入口是 Edit > Normals > Compute。核心参数是邻域半径或者 K 近邻数,二选一。半径法适合密度均匀的点云,K 近邻法适合密度变化大的数据。半径一般取点间距的 3 到 6 倍,太小法线抖动,太大把细节抹平。K 近邻一般取 10 到 30,和 SOR 的 Knn 是同一个量级。
算完法线后 3D 视图里点云会变暗,因为默认光照按法线方向打。法线朝向不一致时,朝后的点显示为黑色,看起来很乱。这时候需要做方向精细化,CloudCompare 提供两个算法:Normals > Orient Normals > With Minimum Spanning Tree(最小生成树)和 With Fast Marching(快速行进法)。
MST 的思路是把点云当成图,点与点之间按距离连边,先建一棵最小生成树,再从
本文还有配套的精品资源,点击获取