
简介这份PDF文献面向测绘、遥感与空间数据处理的从业者及研究者聚焦机载LiDAR点云后处理中的滤波分类难题帮助读者理解如何借助Terrasolid软件完成粗差剔除、滤波分类与精度评定。资源为单个PDF文件压缩包约577KB内容源自《城市勘测》期刊论文结构完整、便于检索阅读。文中系统梳理了移动窗口法、数学形态滤波、迭代线性最小二乘内插、地形坡度滤波及移动曲面拟合等主流滤波方法并重点讲解基于不规则三角网TIN渐进加密的滤波思路涉及地形坡度角、迭代角、迭代距离等关键参数设置。同时结合ISPRS第三工作组提供的森林地区机载LiDAR数据演示低位与高位粗差的噪声剔除流程并通过两类误差公式对比不同阈值下的滤波精度给出最佳参数经验值。目前已有899人学习适合需要掌握点云滤波分类实操与精度分析方法的读者参考。1. 机载 LiDAR 点云后处理从原始脚点到 DEM 的滤波分类实战拿到一组机载 LiDAR 点云很多人第一反应是直接丢进软件点“分类”按钮结果地面点里混着低矮灌木建筑物边缘被削掉一半回头检查才发现滤波阈值根本没调对。这份 2013 年发表在《城市勘测》上的技术文献核心就是讲清楚一件事在 Terrasolid 软件里怎么通过粗差剔除、渐进加密 TIN 滤波、植被分层这几步把原始激光脚点变成可用的数字地面高程模型。它适合做测绘、遥感、三维重建的从业者尤其是手头有 MicroStation 环境、需要处理海量点云但不想被黑匣子算法牵着走的人。文献用的是 ISPRS 第三工作组提供的森林地区机载 LiDAR 数据参数设置和精度评定方法都有具体数值不是空谈原理。2. 机载 LiDAR 对地定位与 Terrasolid 滤波原理为什么选渐进加密 TIN2.1 从斜距到三维坐标点云是怎么算出来的机载激光雷达系统获取的原始数据是地面点的三维坐标但这个坐标不是直接测出来的而是一系列坐标转换的结果。测距仪先测出斜距 ρ这个斜距所在的坐标系作为初始坐标系惯性导航系统 INS 测定飞行器的精确姿态信息包括侧滚角、倾斜角、航向角GPS 提供飞行器位置信息。把这三组数据联合起来通过已知 GPS 坐标加坐标旋转矢量的方法才能求出每个地面激光脚点的精确三维坐标 (X, Y, Z)。这个原理决定了点云精度受三个因素制约测距精度、姿态测量精度、GPS 定位精度。实际作业中如果发现点云整体偏移或分层优先查这三项而不是急着调滤波参数。常见做法是先用检查点验证绝对精度确认坐标转换没问题再进入后处理流程。2.2 滤波和分类是两件事别混着做机载 LiDAR 数据后处理主要进行滤波和分类两个操作。滤波的目标是从激光脚点数据点云中提取数字地面高程模型 DEM/DTM需要把地物数据脚点去掉分类则是区分植被数据点、人工地物点为地物提取和三维重建做准备。很多人把这两步混在一起结果地面点提取不干净植被分类也乱套。正确的顺序是先做粗差剔除把明显错误的噪声点清掉再做滤波分离地面点和非地面点最后做分类把非地面点细分为植被、建筑物等。Terrasolid 软件以 MicroStation 为平台开发TerraScan 模块负责点云分类TerraModeler 负责构建表面模型TerraPhoto 处理影像各模块分工明确。2.3 渐进加密 TIN 滤波Axelsson 算法的关键参数文献采用的滤波方法是 Axelsson 于 2000 年提出的基于不规则三角网 TIN 的渐进加密。算法逻辑是先寻找每个格网中的最低点将其作为初始种子点生成一个稀疏的 TIN然后对其他各点进行判断如果某点到 TIN 表面的距离和角度在阈值范围内就加入地面点集重新构建 TIN迭代这个过程直到没有新点加入。这个算法的关键参数有三个地形坡度角、迭代角、迭代距离。地形坡度角决定 TIN 面片允许的最大坡度迭代角控制新点加入时的角度阈值迭代距离控制新点加入时的距离阈值。文献明确指出选择稍大一点的迭代角和迭代距离可以有效地保存真实地形特征尤其是在地形断裂处和曲面不连续的区域。这个算法最大的优势就是能有效保留地面断裂特征适用于密集分布的城区。注意迭代角和迭代距离不是越大越好。太大建筑物边缘的点会被误判为地面点太小真实的地形起伏会被抹平。文献建议根据经验选择合适的参考值并通过精度评定来验证。3. 粗差剔除与滤波分类实操参数怎么设、步骤怎么走3.1 噪声剔除低位粗差和高位粗差分开处理常见的噪声包括低位粗差和高位粗差。低位粗差是测量中多路径误差导致的极低点比如激光打到水面或玻璃上产生的异常低点高位粗差是低空飞行物影响提前反射信号产生的较大误差比如飞鸟、电线。Terrasolid 的粗差剔除算法逻辑是用一个中心点的高程值与给定距离范围内每一个点的高程值比较如果中心点明显低于或高于周围点就判定为噪声。实际操作中低位粗差和高位粗差要分开设参数因为它们的成因和分布特征不同。# TerraScan 粗差剔除典型参数设置以森林地区数据为例 # 低位粗差剔除 Classify by height: From: -9999 To: -0.5 # 低于地面参考面 0.5 米以上的点 Action: Classify as 7 # 7 为低点类 # 高位粗差剔除 Classify by height: From: 30 To: 9999 # 高于地面参考面 30 米以上的点 Action: Classify as 8 # 8 为高点类参数说明低位粗差的阈值取决于测区最大建筑物高度和地形起伏一般设 -0.5 到 -1.0 米高位粗差的阈值取决于测区最高地物森林地区可以设 30 米城区要设 100 米以上。跑完粗差剔除后一定要用剖面视图检查确认没有误删真实地面点。3.2 地面点滤波渐进加密 TIN 的参数配置粗差剔除完成后进入地面点滤波。TerraScan 的 Ground 分类例程就是基于渐进加密 TIN 算法。文献中的实验参数设置如下参数实验 1实验 2实验 3最大建筑物尺寸60 m80 m100 m地形坡度角88°88°88°迭代角6°8°10°迭代距离1.2 m1.5 m2.0 m实验 1 的参数常作为人们长期实践得到的适应地形条件的标准参数使用。实验 2 和实验 3 逐步增大迭代角和迭代距离目的是验证是否能更有效地保存真实地形特征。从误差结果看选择稍大一点的迭代角和迭代距离确实可以减少第 I 类误差拒绝了本属于地形表面的激光脚点但第 II 类误差接受了不属于地形表面的激光脚点会略有增加。# 精度评定用 C# 程序比较实验地面点与真实地面点 # 文献中的核心逻辑用 Python 重写如下 class Point: def __init__(self, x, y, z): self.X x self.Y y self.Z z def read_points(filepath): 读取点云数据文件每行格式为 X Y Z points [] with open(filepath, r) as f: for line in f: parts line.strip().split() if len(parts) 3: points.append(Point(float(parts[0]), float(parts[1]), float(parts[2]))) return points # 读取真实地面点、真实地物点、实验地面点、实验地物点 RGP read_points(RealGroundPoint.txt) # 参考地面点 RFP read_points(RealFeaturePoint.txt) # 参考地物点 TGP read_points(TestGroundPoint.txt) # 实验地面点 TFP read_points(TestFeaturePoint.txt) # 实验地物点 # 第 I 类误差真实地面点被误分为地物点 # 即实验地物点与真实地面点的交集占真实地面点的比例 first_type_error len(set(TFP) set(RGP)) / len(RGP) # 第 II 类误差真实地物点被误分为地面点 # 即实验地面点与真实地物点的交集占真实地物点的比例 second_type_error len(set(TGP) set(RFP)) / len(RFP) # 总误差 total_error (len(set(TFP) set(RGP)) len(set(TGP) set(RFP))) / (len(RGP) len(RFP)) print(f第 I 类误差: {first_type_error:.2%}) print(f第 II 类误差: {second_type_error:.2%}) print(f总误差: {total_error:.2%})逻辑说明这段代码的核心是比较实验分类结果与参考数据的交集。第 I 类误差是“拒绝了本属于地形表面的激光脚点”对应公式 B/(AB)第 II 类误差是“接受了不属于地形表面的激光脚点”对应公式 C/(CD)。参数说明RGP 和 RFP 是 ISPRS 提供的参考数据TGP 和 TFP 是 Terrasolid 跑出来的实验结果。实际作业中如果没有参考数据可以用人工编辑的检查区代替。3.3 植被点分类按高程分层地面点滤波完成后非地面点还需要进一步分类。文献中的做法是按高程分层蓝色区域表达地面点层绿色代表低矮植被层黄色代表中度植被层红色代表高植被层。这样分层可以直观感受地形变化和特征。# TerraScan 植被分类典型参数 Classify by height from ground: From: 0.5 To: 2.0 # 低矮植被 Action: Classify as 3 # 3 为低植被类 Classify by height from ground: From: 2.0 To: 10.0 # 中度植被 Action: Classify as 4 # 4 为中植被类 Classify by height from ground: From: 10.0 To: 9999 # 高植被 Action: Classify as 5 # 5 为高植被类参数说明分层阈值取决于测区植被类型。森林地区低矮植被层可以设 0.5 到 2 米中度植被 2 到 10 米高植被 10 米以上。城区绿化带一般只分低矮植被和中度植被两层。分类完成后用 TerraModeler 构建地面模型检查是否有异常凸起或凹陷。4. 避坑与排查点云滤波分类中最容易翻车的五个地方4.1 地面点里混着低矮灌木DEM 出现“鼓包”现象生成的 DEM 在灌木丛区域出现异常凸起剖面视图看地面点里混着大量低矮植被点。原因迭代角或迭代距离设得太大算法把低矮灌木误判为地面点。或者是粗差剔除时低位粗差阈值设得太小没有把灌木底部点清掉。解决先检查粗差剔除的低位阈值森林地区建议设 -0.5 米再减小迭代角到 6° 以下迭代距离到 1.0 米以下重新跑地面点滤波。跑完后用剖面视图逐段检查手动剔除残留的灌木点。4.2 建筑物边缘被削掉DEM 出现“台阶”现象建筑物边缘的地面点被误分为地物点DEM 在建筑物周围出现明显台阶。原因最大建筑物尺寸设得太小算法把建筑物边缘误判为地形断裂。或者是迭代距离设得太大TIN 面片跨越了建筑物边缘。解决增大最大建筑物尺寸到实际最大建筑物边长以上城区建议设 100 米减小迭代距离到 1.0 米以下。如果建筑物密集可以先用 TerraScan 的建筑物检测例程把建筑物点单独分类再跑地面点滤波。4.3 高位粗差没清干净植被分类出现“飞点”现象植被分类结果中出现孤立的红色高点明显是噪声点。原因高位粗差剔除阈值设得太大飞鸟或电线产生的异常高点没有被清掉。解决降低高位粗差阈值森林地区建议设 30 米城区建议设 100 米。跑完粗差剔除后用 TerraScan 的“按类别显示”功能单独查看高点类确认没有误删真实地物点。4.4 精度评定结果和目视检查不一致现象程序算出来的第 I 类误差很小但目视检查发现地面点里明显混着地物点。原因参考数据本身有问题或者实验数据和参考数据的坐标基准不一致。文献中用的是 ISPRS 提供的参考数据实际作业中如果参考数据是人工编辑的可能存在漏编或错编。解决先检查参考数据和实验数据的坐标范围是否一致再抽查参考数据的分类质量。如果参考数据不可靠改用人工编辑的检查区做精度评定。4.5 Terrasolid 源代码不公开参数设置靠经验现象换了测区后原来的参数完全不适用不知道该怎么调。原因Terrasolid 的功能算法由生产厂家单独封装保密提供用户看不到具体算法步骤无法根据自身应用需求对数据做出更精确的操作。解决文献的做法是基于该软件开发了一个精度估算功能将实验结果与参考数据比较为实验参数的设置提供技术参考。实际作业中建议每个测区先跑一组不同参数的对比实验用检查区做精度评定选出最优参数后再批量处理。常见做法是建立参数经验库按地形类型城区、森林、丘陵分类存储最优参数。5. 精度评定与参数调优用两类误差公式反推最佳阈值精度评定的核心是两类误差公式。第 I 类误差 [B/(AB)]×100%其中 A 是正确分类的地面点B 是真实地面点被误分为地物点第 II 类误差 [C/(CD)]×100%其中 C 是真实地物点被误分为地面点D 是正确分类的地物点总误差 (BC)/(ABCD)×100%。文献的实验结果表明最大建筑物尺寸、最大地形角、迭代角的选择对地表面构建有着很重要的参考价值。实验 1 中的参数常作为人们长期实践得到的适应地形条件的标准参数使用。选择稍大一点的迭代角和迭代距离可以有效地保存真实地形特征但第 II 类误差会略有增加。实际调优时我一般会按以下步骤走第一步固定最大建筑物尺寸和地形坡度角只调迭代角和迭代距离。迭代角从 6° 开始每次增加 2°迭代距离从 1.0 米开始每次增加 0.5 米跑一组对比实验。第二步用检查区计算两类误差。第 I 类误差优先控制因为地面点里混着地物点对 DEM 影响更大。第 I 类误差控制在 5% 以内后再看第 II 类误差。第三步如果第 I 类误差达标但第 II 类误差偏大说明迭代角或迭代距离偏大适当回调。如果两类误差都偏大说明粗差剔除没做干净先回去查粗差剔除参数。第四步选出最优参数后用 TerraModeler 构建地面模型再用剖面视图逐段检查。目视检查发现异常的区域单独调参数重跑不要一刀切。提示文献中的精度评定程序是用 C# 写的核心逻辑是比较实验地面点与真实地面点的交集。实际作业中可以用 Python 或 MATLAB 重写关键是参考数据要可靠。从那以后我每次处理新测区的点云都强制走一遍“粗差剔除 → 地面点滤波 → 植被分类 → 精度评定”的完整流程绝不跳过精度评定直接出 DEM。参数经验库也是每个项目结束后必须更新的下次遇到类似地形直接调出来用省得从头试。希望帮到你。本文还有配套的精品资源点击获取