简介:《CloudCompare使用教程》是一份面向点云处理初学者与工程应用人员的PDF课程资料,围绕三维点云导入、显示、几何体创建、编辑与高级分析展开,帮助读者建立从基础操作到配准、去噪、分割、拟合等流程的系统认识。压缩包内仅含1个PDF文件,大小约4.95MB,便于在电脑端随时查阅并对照软件界面学习。教程结合网络资料与作者实践经验,内容涵盖File与Display设置、Primitive Factory建模、颜色渲染与法线估计、八叉树计算、点云配准ICP、降采样、合并及插件扩展等模块,并补充汉化方法与实用技巧,适合地质、建筑、工程等场景下需要快速上手CloudCompare的读者。目前已有1459人学习,可作为软件入门、功能查阅和操作思路梳理的参考材料。
1. 一堆密密麻麻的点,凭什么值得花一个下午
你拿到一份三维扫描数据,双击打开,屏幕上是一团白花花、密密麻麻的点:没有面,没有颜色,转两下还卡。多数人第一次见到点云都是这个反应:这玩意儿是坏的?其实不是,三维扫描就是用激光把实物打成无数个小点,再由软件把这些点还原成形状、距离和偏差。这份 CloudCompare 教程要讲的主角,就是专门用来打开、看清、整理这类点云的一款软件。它免费、开源、体积不大,测绘、地质、建筑、机械、文物扫描这些行当里都在用。这份课程资源偏动手,不偏理论,所以下面不背概念,直接带你把第一个例子跑出来。
2. 装好并认路:半小时跑通第一个例子
2.1 下载与汉化:先把界面变成你看得懂的样子
去软件的发布页面下载压缩包,解压后直接运行主程序,它不需要安装,也不写注册表,这一点对新手非常友好,装坏了删掉整个文件夹就干净了。第一次打开是英文界面,别急着硬啃。在 Display(显示)菜单里找到 Language Translation(语言转换),点开后在语言列表里选简体中文,界面就会切换成中文。部分版本在设置对话框里提供同样的选项,名字类似,找一下就能看到。
提示:汉化之后菜单名会和网上大量英文截图对不上,比如别人说 Octree,你界面上写「八叉树」。建议第一周保持中英对照记,把常用菜单的英文原词记在小本子上,后面看教程、查资料都靠它。
汉化不是一劳永逸的事。不同版本翻译进度不一样,偶尔会出现半句中文半句英文,甚至个别菜单没翻译。这不影响使用,看到夹生的条目就切回英文对照一次,点两遍就记住了。真正麻烦的是有人汉化完就再也找不到菜单,以为软件出毛病,其实只是把 File 翻译成了「文件」而已。
2.2 打开文件前,先看懂 Global shift 这个对话框
File 菜单下第一项就是 Open。选中你的点云文件,常见格式有 LAS、PLY、PCD、XYZ、ASC、TXT 这几种,软件会自动识别。如果你的数据是从测绘仪器导出的,坐标值可能非常大,比如某个点写成 (3 8 00000, 3 4 5 0000, 42),这种六位七位的数字在单精度浮点里会丢掉小数精度,显示出来的模型表面会一层层抖动,像水面上的波纹。
这时软件会弹出一个 Global shift/scale(全局平移与缩放)对话框,问你这些坐标要不要挪一下。它内部干的事很简单:把整份数据的原点平移到离零点不太远的地方,模型形状完全不变,只是坐标系换了个起点。对话框里通常能看到两个量,一个叫最大绝对坐标(Max absolute coordinate),决定坐标保留几位精度;一个叫最大实体对角线(Max entity size),用于估算模型的整体尺度。
| 参数 | 它管什么 | 新手怎么处理 |
|---|---|---|
| Max absolute coordinate | 坐标平移后允许保留的最大数值量级 | 默认值一般够用,别手动调到极大 |
| Max entity size | 模型的整体尺寸量级 | 让它自动建议即可 |
| Suggested shift | 软件算好的一次性平移量 | 直接接受建议值 |
实操上就一句话:弹窗出现时点「是」,接受它给出的平移建议。真正会翻车的情况是手滑点了「否」,你会看到模型抖得像噪点,或者所有点挤成一个球。真发生了也不难处理,把文件关掉重开一次,弹窗再出来时选对就好。反过来,如果你就是要保留原始大地坐标做后续测量,那就该点「否」,前提是你清楚自己在做什么。新手先把模型看清楚,比纠结坐标系更重要。
2.3 用 Primitive Factory 造一个球,再从球上采出一份点云
手上没有扫描数据也能立刻开始练。File 菜单里有个 Primitive Factory(基本体工厂),能把最基础的几何形状直接生成出来。点开后你会看到一个面板,里面排着平面、立方体、球体、圆柱体、圆锥体、圆环体、碟形和坐标轴这几类。选球体,然后在参数区改尺寸,主要就是半径,再改一个叫「初始精度」的量,它控制这个球由多少个三角面片拼成。数值越大,球越圆,文件也越重。改完点 Create,模型就出现在左边的实体树里,面板不会自己关,你可以接着创建第二个、第三个,全部造完再点 Close。
注意:初始精度别一上手就拉到特别高。一个球给你几十万个三角形,随之而来的旋转、着色都会变慢,新手很容易以为自己电脑不行。先给中等精度,看清楚、练熟练,再往上加。
接下来这步是关键:把网格变成点云。在左侧实体树里选中刚生成的球体,点 Edit 菜单,往下找 Mesh 这一组,里面有 Sample points(网格采样)。在弹窗里设定采样点数或者采样密度,确认后,软件会在球体表面随机撒出一层点,生成一个新的点云实体。
到这里你手上就有了两样东西:一个网格球,一份结构清晰、密度均匀、没有任何噪声的点云。别小看这个自制的练习数据,它比真实扫描数据好用得多。真实数据有遮挡、有噪声、有空洞,出错的时候你分不清是操作错了还是数据本身脏;用自己造的球练,每一步的结果都是可预期的,点歪了就是你手点歪了,判断起来干净利落。我第一次学的时候拿真实工地数据硬上,折腾一下午都没搞明白法线为什么一半黑一半白,换成球体之后十分钟就懂了。
采样出来的点云还能再细调。如果真的想做实验,可以在采样后改变球体半径再采一次,你会得到两份大小不同、位置相同的点云,后面练配准、练距离计算时正好用得上。
2.4 保存这件事,最好在动手之前就想清楚
File 菜单里有两个动词要分清楚:Save 和 Export。Save 保存的是一个 .bin 工程文件,它记住的是你当前整个工作区的状态,包括实体树里的每一个点云、网格、标量域、颜色、法线,下次打开能原样接上,不用重来。Export 走的是另一条路,它把你选中的某个实体转成通用格式,比如 ASC、PLY、LAS,方便交给别的软件,但只带走被选中的那一个,颜色和标量域能不能保留取决于格式本身。
这里有个血泪经验:很多人第一次用,做了一小时的颜色和法线,关软件时才想起来没存,再打开一切归零。软件的工程文件就是那颗后悔药,养成习惯,进文件先另存一个 .bin 工程,后面每做完一步大操作就按一次保存。代价是一点硬盘空间,省下的是整段周末下午。
3. 新手三件套:颜色、法线、八叉树
3.1 先上色:让一坨白点看出高低起伏
软件里的点云默认是纯白或单一颜色,扁平得看不出任何结构。Edit 菜单下 Colors 这一组,就是给点云上色的工具集,用得最多的几个是:
- Set Unique:给整个实体刷成同一种颜色,适合对比两组数据时区分你我。
- Height Ramp:按高度做颜色渐变,形状是线形、梯形还是环形可选,能把高低差直接画成深浅。
- Levels:调柱形图来控制颜色分布,适合把主要颜色集中在中间那一段。
- Convert to Scalar Field:把 RGB 颜色转成标量域,方便后面按数值筛选或统计。
- Clear:清掉颜色,回到默认状态。
新手最容易卡在 Height Ramp 上。点上之后会弹一个配色面板,里面有个色阶,色阶的两端分别对应高度最小值与最大值。如果色阶被拉到超出实际高度范围,模型会变成一片死色,看着像坏了。遇到这种情况,把色阶重新拉回到数据实际的范围,或者在 Scalar fields 里看直方图确认最小值和最大值,再回来调。上色的目的不是好看,而是用颜色替你判断哪里高、哪里凹、哪里缺了一块,后面做配准验收和距离检查都靠它。
3.2 法线估计:为什么你的模型一半黑一半白
法线是垂直于表面、指向外侧的方向。CloudCompare 渲染时要靠法线判断光线打在哪、多亮,所以没有法线的点云看起来发平,而有法线但方向乱掉的点云会出现一片黑一片白,像被谁泼了墨。这不是显示坏了,是朝向反了。
操作路径在 Edit 菜单的 Normals 组里。Normals > Compute 计算法线,弹窗里要定局部邻域的算法,一般可以选按半径或者按最近点数两种,新手先用点数模式,选个几十个邻居就能看出效果。算完之后,如果出现大块发黑,用 Normals > Invert 反一下方向。数据稍微复杂些的,可以走 Orient Normals 里的两种精细化方法,一种叫 With Minimum Spanning Tree(最小生成树),一种叫 With Fast Marching(快速行进),它们的作用是把点的朝向统一成一致的一侧,别东倒西歪。
法线算得糙不糙,直接影响后面的网格化和体积计算,也影响观感。判断标准很朴素:转动模型,亮面和暗面的过渡应该是连续的,凡是突然出现整齐的一块黑,多半是那一片的法线反了。真拿不准,可以先把法线转成 HSV 颜色字段看一眼,色相分布均匀就说明方向基本一致。这个玄学步骤,多试两次就心里有数了。
3.3 八叉树:把点云装进抽屉里再降采样
八叉树听着吓人,其实就是一个空间分割的抽屉。想象一个立方体盒子包住整份点云,把它横竖各切一刀,变成八个小盒子;每个小盒子再切八份,一直切下去。每个点最后落在某一个小盒子里,这样软件找点、找邻居就不用一个个扫全量数据了。点云动辄上千万个点,不建索引,几乎所有运算都会慢到让你怀疑人生。
在 Edit 菜单里找到 Octree > Compute,就能给选中的实体算一次八叉树,界面上会显示分割到了第几层。层数越高,格子越细,索引占的内存也越多。真正好用的地方在 Octree > Resample:它把每个最下层的单元格里所有的点,用一个点代替,位置取这些点的重心。这就是最直接的降采样,一千万个点可能一下变成五十万个,形状基本还在,后面旋转、配准、算距离全都快起来。
提示:降采样别一次降太狠。降到只剩几千个点时,球面上的细节和噪声的区别就消失了,你没法判断哪里是真特征。稳妥做法是先降到原来的三分之一到五分之一,看效果,不够再降。
除了八叉树,Edit 菜单里的 Subsample 也提供采样功能,可以按随机、按空间距离、按八叉树几种方式抽点。它们的区别是:八叉树重采样让点分布更均匀,空间距离采样能保证任意两点之间不小于设定距离,随机采样最快但分布不均匀。练手阶段三种都试一遍,感受一下差别,比看十页说明书管用。
3.4 顺手把点连成面:Delaunay 2.5D 一次尝鲜
点的下一步往往是面。Edit 菜单里的 Mesh 组中,Delaunay 2.5D 能把点云三角剖分成网格,方向有两种,一种按 XY 平面投影,一种按最佳拟合平面。平面上铺开的数据,比如桌面扫描、地形片,用这个功能能快速得到一个薄壳模型,导出到别的软件里做展示。
它也会翻车:如果点云不是平面状的,或者有竖直的墙面,投影剖分出来的网格会拉出一堆长三角形,像蜘蛛网。这不是算法错了,是 2.5D 本身就假设数据大致平铺。碰到这种数据,要么换更适合的三维重建路子,要么就先分割出平面区域再做。新手把它当作「点能变面」的第一次体验就好,别指望一步到位。
4. 两份点云怎么对齐:配准从粗到精的四步
4.1 动手之前,先确认这三件事
配准就是把两份点云挪到同一个坐标系里,让它们重合。CloudCompare 里最强的工具是 ICP,但它在三种情况下会直接失效,新手往往不看前提就点按钮,结果越配越歪。
第一,两份点云大体要挨在一起。ICP 是局部优化算法,它只会从当前位置往附近找最优,如果两份数据一开始差了十几米,它根本不知道该往哪挪。第二,两份数据描述的得是同一个对象,或者至少有一致的形状,拿一堵墙去配一棵树,算法算到最后也是乱来。第三,两份数据要有足够的重叠区域,重叠不到三成,能用来约束的信息就不够。
所以在点 ICP 之前,先做两件小事:把两份点云都上一个不同颜色,目视看它们大概错开多少;再量一下包围盒中心之间的距离,心里有个数。这一步花两分钟,能省掉后面半小时的反复重来。
4.2 粗配准:包围盒中心先靠拢,再用三点定方向
Tools 菜单下的 Registration 组,是配准工具的集合。最省事的粗配准叫 Match bounding-box centers,选中两份点云,执行一次,它把两个实体的包围盒中心挪到同一个位置。适合那种大小相近、只是整体偏了一段距离的数据。
更可控的是 Align (point pairs picking),也就是常说的三点对齐。做法是:在两份点云上各挑至少三个位置对应的点,软件根据这些点对算出一个刚性变换。挑点有三个讲究——三点不能共线,最好分散在模型的三个方向;尽量挑特征明显的位置,比如角落、凸起、孔洞边缘;两份数据挑的位置要真是一回事,别把 A 的球心对到 B 的球面上。
注意:三点对齐本质上是手工作业,结果好坏取决于你挑点的准头。挑完先看一眼软件的拟合残差,数值明显偏大就说明点挑歪了,删掉重点,别硬着头皮往下走。
三点对齐的好处是它不要求两份数据已经挨得很近,只要你能认出对应位置,差多远都能拉回来。这也是新手最该先学会的粗配准手法,工具虽然朴素,但稳。
4.3 精配准 ICP:谁当参考,谁被挪动
位置大致对上之后,就可以上 ICP 了,位置在 Tools > Registration > Fine registration (ICP)。弹窗里的第一个问题就是角色分配:一个实体当 Reference(参考,站着不动),另一个当 Aligned(被对齐,被挪过去)。这个顺序很多人第一次会设反,设反了结果其实差不多,但你后面做距离计算、做误差分析时就容易把两个对象搞混。
弹窗里还有几个参数值得看一眼。最大迭代次数控制它最多算多少轮,默认值一般够用,数据特别复杂时可以调高。最小误差变化决定什么时候收工,两轮之间误差几乎不再下降就停。最终重叠率需要你根据实际情况填,填得比真实重叠还高,算法会为了凑数把点硬拽过去,结果反而变形。
跑完之后,软件会在控制台输出一组数字,包括迭代次数、最终误差和重叠点数。别忽略这行输出,它是判断配准是否收敛的第一手证据。误差在迭代过程中应该单调下降并趋于稳定,如果一路震荡或者最后还很大,说明前面的粗配准没做到位,或者两份数据根本就不该配。
4.4 验收:用 Cloud/Cloud 距离给配准结果打分
配准做完不能只看两张云是否「看起来重合了」,得有个量化结论。Tools 菜单下 Distances 组里的 Cloud/Cloud dist.(点云间距离)就是干这个的。选一份当参考、一份当被比较,执行后软件会生成一个标量域,里面记录着每个点到对方最近点的距离。
拿到这个标量域之后,走 Edit > Scalar fields > Show histogram,看距离的分布。理想情况下,分布是一个集中在零附近的尖峰,两侧迅速衰减;如果分布很宽、明显偏一边,就说明存在系统性错位,某个方向被拉偏了。再配合色阶给点云上色,偏差大的区域会以明显颜色跳出来,哪里错了一眼就能看到。
这一套流程配下来,你会得到一个心里有底的结论:配准误差大概是什么量级,主要偏在哪个区域。这比凭感觉说「差不多了」靠谱得多,也是从「会点按钮」到「能出结果」的分水岭。
5. 避坑与排查:五个最容易翻车的地方
5.1 打开就抖、模型像水面波纹
现象:文件打开后模型表面出现一层层平行波纹,放大缩小都在闪,怎么看都不像实体。
原因:坐标值太大,单精度浮点存不下小数部分,精度被吃掉了。常见于直接从测绘成果导出的数据。
解决:关掉文件重新打开,在 Global shift/scale 弹窗出现时接受平移建议。如果数据已经打开且没弹窗,可以在属性里手动加一次平移,把原点挪到模型附近。以后凡是坐标带六七位整数的数据,打开前先做好心理准备。
5.2 模型一半是黑的
现象:点云或网格转起来,一侧正常,另一侧像被墨涂了,边缘还挺整齐。
原因:法线方向不统一,朝里的那些点在光照下就是黑的。也可能是光照方向刚好逆着法线。
解决:先试 Display 里 Lights 这一组的切换,看看换个光照是否恢复;如果还是黑,去 Normals > Invert 翻一下方向,或者重跑一次 Orient Normals 里的最小生成树方法把朝向统一。别急着怀疑显卡。
5.3 ICP 跑完,错位反而更严重
现象:配准前只是整体偏了一点,配准后两份点云像被拧过的麻花,局部完全对不上。
原因:初始位置差太远,或者两份数据形状本来就不一致,ICP 在局部找了个错误的最优解。
解决:撤销这一步,回到粗配准,用三点对齐把人能认出来的位置先对上,再跑 ICP。同时检查重叠率参数是否填得过大。记住 ICP 只负责精修,它不负责把两份数据从很远的地方拉回来。
5.4 软件卡死、转圈、点一下就未响应
现象:导入一个大文件后,每次旋转都要等好几秒,稍微点个功能就白屏。
原因:点云点数太多,没有做任何降采样,也没建空间索引,所有操作都是全量遍历。
解决:先用 Edit > Subsample 或者 Octree > Resample 把点数降到能流畅操作的量级,再去做配准、拟合这些重活。原始文件保留一份不动的,处理都在副本上做。这个习惯能让你少丢很多次进度。
5.5 汉化之后菜单对不上教程
现象:跟着资料找 Octree,界面上翻遍了也没有这个单词,怀疑自己下错了版本。
原因:界面已经是中文,菜单名被翻译成了「八叉树」「标量域」这类词,和英文截图自然对不上。
解决:把 Display 里的语言临时切回英文,对照着操作一遍,把常用菜单的英文原词记下来,再切回中文。中长期看,记英文原词比记中文翻译更省事,因为绝大多数资料和插件说明都是英文写的。
6. 下一步学什么:从看得懂到能出结果的三级台阶
练完上面这些,你已经能打开数据、看清结构、把两份点云对上,这大概相当于学会了开车挂挡和打方向。接下来往哪走,按台阶来最不容易迷路。
| 台阶 | 练什么 | 用什么练 | 练成的标志 |
|---|---|---|---|
| 第一级 | 数据整理:降采样、去噪、分割、裁剪 | 自己造的点云加一份真实扫描数据 | 能把一份脏数据清成可用的干净数据 |
| 第二级 | 测量与分析:距离、拟合、统计、切片 | 两组有重叠的扫描数据 | 能给出一个带数字的结论,比如偏差多少毫米 |
| 第三级 | 批量与自动化:批处理、插件 | 多份同类型文件 | 能让软件一次处理一批,而不是一一点开 |
第一级里最值得先啃的是去噪和分割。Tools 菜单下的 Clean 组提供两种滤波,SOR filter 按统计规律剔除离群点,Noise filter 更适合平滑细碎噪声;Segmentation 组里的 Cross Section 能用一个可调方向的框把点云切开看剖面,Label Connected Components 则按最小距离把点云拆成互不相连的块。这些功能不难,难的是判断「清到什么程度算干净」,这个判断力只能靠对比着看积累。
第二级开始有产出。Fit > Plane 拟合平面会输出拟合误差、倾角、倾向这些量,Distances 里的点云间距离能给出偏差分布,Statistics 里还能算统计分布参数。到了这一步,你交付的不再是截图,而是一组能写进报告的数字。第三级是效率问题,软件支持命令行模式,可以把一长串操作写进脚本,一次处理一批文件。比如下面这条:
# -SILENT 不弹图形界面;-O 打开输入文件 # -C_EXPORT_FMT 指定导出格式,-EXT 指定扩展名,-SAVE_CLOUDS 保存处理后的点云 CloudCompare -SILENT -O input.las -C_EXPORT_FMT ASC -EXT txt -SAVE_CLOUDS参数说明就三句:-SILENT让软件在后台跑,不抢你的鼠标;-O后面跟要处理的文件;-C_EXPORT_FMT配合-EXT决定输出成什么格式。不同版本的参数名可能略有出入,跑之前先用-H看一眼帮助,别照抄。这条命令本身干不了什么大事,它的价值在于让你意识到:点一下按钮的每一步,其实都能写成一行文字,批量处理的门就是这样推开的。
我自己的教训是,早年间贪快,跳过降采样直接对着一份超大点云跑 ICP,机器转了四十分钟,出来一个歪掉的结果,全部推翻重来。从那以后我每次动手前都强制走一遍:先另存工程、再降采样、再上色看清结构,最后才碰配准按钮。这套顺序看着慢,实际是最快的路。希望帮到你。
本文还有配套的精品资源,点击获取