
简介
隧道点云通常难以清理。管状结构内部有大量噪声点或无用的点(通风管、线缆、灯具……)需要剔除。如果你要对隧道做精确检查,这一流程是必需的。
练习概述
在本练习中,我们将学习如何直接由整份点云创建隧道的网格。这些计算需要 Survey 或 AEC 许可。
本练习包含若干步骤:
- 不使用 Neutral Axis 命令来创建一条中性轴;
- 提取隧道点云;
- 改善隧道点云,以创建精确的隧道网格。
本教程使用的文件是 TunnelExtraction.3dr(下载)。
概览
该文件包含一条隧道的点云以及一个中性轴示例。此处点云以 Real Color(真彩色) 表示模式显示,因为每个点都带有颜色测量值。不过隧道相当昏暗,因此如有必要可以更改表示模式。
手动创建一条中性轴
对于噪声较大的点云,自动中性轴检测可能给出错误结果,甚至完全失效。因此我们将介绍另一种方法:用一条 CAD 曲线作为轴线来完成隧道提取。
切换到正交视图,以便做更精确的选择。
只显示 Tunnel cloud,按键盘上的 Z 键显示俯视图。然后启动 Draw 命令,在隧道顶部绘制一条 CAD 曲线。使用 Highest Point 模式可以更容易地避免选取到地面上的点。按需添加顶点,以沿近似轴线走。
现在,把 CAD 曲线两端从内向外延伸(图 1)。你需要用到以下 3 个命令:
- 选中该 CAD 曲线并将其转换为多段线:From CAD Curve or Wire。
- 然后使用 Edit Polyline 拖放两个端点。
- 最后用 From Polyline 把多段线转回 CAD 曲线。

图 1:在俯视图中绘制一条自由手绘轴线
选中该 CAD 曲线并平移它,使其在竖直方向上落入隧道内部(-4.25 m)。

图 2:竖直平移

图 3:CAD 曲线轴线
最终你得到一条光滑的轴线,可以据此继续本练习。你也可以直接使用浏览器树 CAD 分组中的 BSpline axis。
提取隧道点云
选中点云 Tunnel cloud 与 BSpline axis,启动 Clean-up Tunnel 命令。
- 把 Extraction step parameter(提取步长参数) 设为 0.5 m。
- 取消勾选 Try to keep details 与 Tunnel Mesh 选项。
- 勾选 On the tunnel 与 NOT on the tunnel 两个选项。
- 单击 Preview 计算结果。几秒后会显示出两份点云。蓝色的是 On the tunnel(在隧道上) 的点云,红色的是 NOT on the tunnel(不在隧道上) 的点云。你可以隐藏一份点云以查看另一份。
- 单击 OK 确认结果。

图 4:结果
可以看到,算法可能会把部分墙体或地面归入错误的点云:存在少量信息损失。
在本例中这些部分都很小。如果你减小提取步长,这些部分会越来越小。因此,如果你需要快速得到结果,可以在单击 OK 之前勾选 Tunnel mesh 选项,直接用蓝色点云计算网格。我们将在最后一节试用这种方法。
做一些改进
现在,我们来看看如何做一些改进,以保留更多原始测量的信息。
- 只显示 Tunnel cloud: Points NOT on the tunnel 并选中它。
- 启动 Distance 命令。
- 把 Segmentation distance(分割距离) 设为默认值(使用距离字段中的恢复默认值按钮)。选择 Filter small sub-clouds(过滤小子点云),并把值设为 100 个点。
- 单击 Preview 计算结果。
将创建 1000 个部分或子点云。要删除这么多部分可能要花很长时间。你应该提高 Delete small pieces 的阈值。例如,把阈值设为 1000 个点,以保留较少的部分,然后单击 OK。

图 5:炸开后的点云
现在,我们可以判断哪些子点云有意义、哪些没有意义。为此,你可以:
- 继续使用正交视图,
- 或者选中 BSpline axis 并使用沿曲线的 Quick Slice,
- 或者切换到透视模式,在隧道中走一遍(图 6)。
在本例中,透视模式是最合适的选择。以对比色(白色或灰色)显示 Tunnel cloud: Points on the tunnel,沿中性轴在隧道中穿行。

图 6:红绿灯、小灌木丛、限高架

图 7:通风机、灯具、线缆、测量设备、测量人员
一旦移除了主要的多余点云,你就可以手动完成最后的清理工作。隐藏 Tunnel cloud: Points on the tunnel,把相机改为正交,并启动 Clean / Separate。

图 8:用智能对象分割工具做最终清理
注意,Real Colors 可能是移除灯具的一种高效方式。
选中所有点云并启动 Merge Clouds 命令。然后你就可以创建非常精确的网格了。例如,可以试试以下流程:
- 3D Mesh 选择 Regular sampling,average distance between points 填 "0.1 m",并勾选 Try to keep only the external border;
- Refine Mesh from Cloud,Deviation error 设为 1 cm,No noise reduction;
- Global Smoothing:Smoothing intensity: Low,并勾选 Improve curvature areas。

图 9:精确的网格