介绍

CANUPO套件是一款简单高效的点云自动分类工具。用户既可自定义分类器(通过小样本训练实现),也能逐个分类器处理点云数据,从而将其划分为两个子集。该工具还会为每个点输出分类置信度值,帮助用户快速识别异常案例(通常出现在类别边界区域)。

虽然插件使用起来很简单,但最好还是先阅读一些关于CANUPO的更多信息:
 原文由N. Brodu和D. Lague(Geosciences Rennes)撰写:
http://www.geosciences.univ-rennes1.fr/spip.php?article1284
 原始命令行工具的教程:
http://www.geosciences.univ-rennes1.fr/IMG/pdf/Point_cloud_classification_user_guide_v1-2.pdf

获取一个可工作的分类器

使用现有“.prm”文件
分类器存储在独立的“.prm”文件中。只要点云的单位与分类器一致,就可以将其应用于任何点云。如果分类器是使用0.05到0.3之间的常规采样尺度 训练的(例如隐含的米制单位),则您的点云坐标必须使用相同的单位表示(即此处的米制单位)。
因此,任何人都可以与他人共享分类器。您可以首先查看:
 作者现有分类器的网页,可能适合您的需求(链接在上方-请参见“示例数据、分类器和批处理文件”部分)
 或在CloudCompare论坛的专用线程上:
http://www.cloudcompare.org/forum/viewtopic.php?t=808

训练自己的分类器
准备数据
得到一个工作分类器真的很容易(得到一个准确的可能要长一点,但不是很多)。
您只需手动分割代表每个类别的点群(使用CloudCompare的剪刀工具)。对于每个类别,您需要选取几个典型的点子集,并将它们重新组合成一个云图(使用CloudCompare的编辑>合并方法)。
尽量对每个类别中可能遇到的各种情况进行详尽的抽样。同时确保所有子集都具有大致相同的点数(或者至少相对数量能代表它们在数据中的出现频率)。


提示:确保两个名称都是唯一且清晰的,以便在后续操作中区分它们(键入F2重新命名所选云)。

训练分类器
创建了代表每个类别的两个云后,即可调用插件的“训练分类器”方法(“插件> qCANUPO > 训练分类器”)。

在类别#1和类别#2组合框中选择对应的云层。接着输入多尺度描述符的缩放范围(更多参数设置技巧可参考canupo原版教程及文章 )。您既可以选择标准渐变模式(缩放值会在指定区间内均匀分布),也可以输入自定义缩放列表(用空格分隔,例如“0.05 0.1 0.2 0.5 1.0”)。

注意:设置的尺度越多,结果可能越有辨别力,但计算也越长(特别是如果最大的尺度相对于云密度是宽的)。
可选地,您可以在对话框的下部设置更高级的参数:
 将要计算的描述符类型(目前仅提供“维度”——正如Brodu和Lague在原始CANUPO论文中提出的)
 从输入云中随机提取的核心点的最大数量(在大多数情况下,10或20千个应该足够了)
 您可以指定使用原始云(而非分割后的云)来计算描述符(根据其大小,计算时间会稍长一些——但对边界区域能获得更好的结果)
 最终,您可以指定另一个云,该云将用于显示分类器行为(请参见下文)
准备就绪后,点击“确定”按钮即可开始训练。插件将开始计算每个云的描述符,并尝试在自定义的二维空间中找到最佳分类边界。
分类器行为的表示方式是将分类空间中的所有描述符投影到中间的分类边界(以品红色线条表示)。如果设置了自定义云来显示分类器行为,则其所有描述符将以灰色表示。否则,第一类对应的描述符将以蓝色显示,其余的则以红色显示。

从这一点开始,用户可以执行以下操作:
 您可以减少用于训练分类器的尺度数量(默认情况下,首先移除最大的尺度)。这使您能够调整分类器,使其尽可能少地使用尺度(采用最小的尺度半径,从而减少描述符的计算时间),同时保持足够的区分能力。
 您还可以调整边界位置。边界线的顶点支持以下操作:右键+按住不放可移动顶点;点击任意位置(顶点会添加到最近端点)或精确点击线段(顶点会生成在鼠标光标附近 );删除顶点时左键点击(当线段超过两个顶点时有效 )。点击“重置边界”按钮可随时恢复初始状态。
完成后,可以将分类器保存到.prm文件中。该文件将用作“分类”方法(见下文)的输入。不要犹豫分享你自己的分类器(要么与Dimitri Lague本人分享——他可能会建立一个专门的网页来存储最好的分类器——要么在CloudCompare论坛的专门帖子上)。

在云上应用分类器

一旦您有了一个有效的分类器文件(参见上文),您就可以在任何云上应用它(只要它的单元与分类器一致——参见上文 )。选择要分类的云,并调用插件的“分类”方法(“插件> qCANUPO >分类”)。


首先加载分类器文件(使用文件 字段旁边的“…”按钮)。
接下来需要选定计算的核心点:在实际操作中,并非必须使用云图中的所有数据点进行处理(毕竟耗时较长)。因此,特别是初次尝试时,可以通过两种方式减少数据点数量:一是对原始云图进行子采样,二是提供自定义核心点(例如输入云图的栅格化版本)。您甚至可以直接打开由尼古拉斯·布罗迪开发的CANUPO套件生成的“.msc”文件。
无论您最终选择何种核心点,所有数据点都将被分类。每个核心点的分类结果都会传播到其最近邻节点。因此,使用核心点而非整个云图可能在边界区域的精度会稍逊一筹(等您对结果满意后,可以对云图中的每个点重复同样的分类流程…然后去喝杯咖啡放松一下啦;)

请注意,插件始终会在输入云上生成一个带有“置信度”分类的附加标量场:

致谢

该插件的创建由布列塔尼欧洲大学和法国国家科学研究中心资助

作者:刘浩男  创建时间:2025-09-23 14:52
最后编辑:刘浩男  更新时间:2025-09-24 14:07