资讯动态

无人机LAS点云生成DEM全流程:分类、插值与实操指南

发布时间:2026/9/15 18:51:00 来源:尧图企业网站定制
1. 拿到las点云之后先别急着生成DEM做航测内业这些年我收到最多的数据不是正射影像而是无人机激光雷达扫出来的las点云。很多刚从外业转内业、或者第一次接触点云的人拿到las后的第一个问题几乎都是同一个这玩意儿怎么变成DEM说实话这个流程看着简单实际上从数据检查、点云分类、插值到精度验证每一步都有坑等着你。我见过太多人跳过检查直接把所有点云塞进软件最后生成的DEM上盖满“帽子”——屋顶和树冠都成了地形的一部分高程错得离谱。这篇文章把我自己处理航测无人机las点云生成DEM的完整流程和心得整理出来目标读者就是刚接触点云处理、或者已经被分类参数绕晕的同行。我尽量不堆术语把每个环节背后“为什么要这么做”讲清楚再给可以直接抄作业的参数和步骤。1.1 点云是一堆三维坐标DEM是一张规则网格先说本质区别。las点云里的每一个点本质就是一组(X, Y, Z)三维坐标激光雷达扫描时给地面“撒”了一堆离散的点这些点之间没有拓扑关系它们只是一个个独立的信息原子。而DEM是数字高程模型它是一张规则排列的栅格每一个像元都有一个确定的高程值像一张铺在地形上的渔网每个网眼里存一个海拔数。从“一堆点”到“一张网”中间要经历两个核心动作一是把非地表信息去掉也就是分类二是把离散点转成连续表面这叫插值或栅格化。很多新手一上来就做第二步忽略了第一步结果自然不对。脱离“分类”谈“插值”就是拿着混着屋顶、树冠、水面杂波的原始点云硬建模最后得到的只是另一个形态的“表面模型”而不是真正的地形模型。1.2 DEM和DSM别把屋顶树冠算进去这里必须把DEM和DSM的差别说透。DSM是数字表面模型它记录的是最上层地物的高程包括建筑物楼顶、树冠表面、桥梁护栏这些“地表以上”的东西。DEM是数字高程模型只描述裸露的地形表面也就是地表土壤和岩石的高程。可以这样理解假如你在房间里铺了一块地毯再在毯子上放一个纸箱和一盆绿植DSM就是直接测量纸箱顶部和绿植叶面得到的高度DEM则是你先搬走纸箱和绿植再量地毯表面的高度。无人机激光雷达扫描时不会自动区分房顶和地面它只负责“打到什么就记什么”。如果直接把las点云全部转成栅格高层建筑密集区会隆起一个“台地”茂密林地会变成高低起伏的“云团”。这种成果拿去算洪涝淹没范围、做土方量、修路桥设计必然出严重事故。所以行业里生成DEM的标准前提是先做点云分类把地面点分离出来后面的插值只吃地面点。2. 预处理做不好后面全是白费功夫点云处理有一句话垃圾进垃圾出。数据本身的质量决定DEM成果的天花板。很多人在这一步缺乏耐心拿到las直接套参数分类结果分类器被噪声点带偏地面点提取得一塌糊涂。泥水工不会不筛沙子就砌墙处理las也一样预处理这步躲不掉。2.1 las文件里到底藏了哪些信息las是目前点云存储的行业标准格式不同版本字段有差别但核心信息就几类三维坐标、回波强度、回波次数、扫描角度和分类码。坐标系这类元数据记录在文件头里处理前一定要先确认。分类码尤其关键它用数字标记每个点属于什么对象。常见的情况是这样的分类码含义对DEM的价值0从未分类大多数原始las刚拿到都是0必须做分类2地面点生成DEM主要吃这一类点3~5低、中、高植被必须剔除不能参与DEM插值6建筑物屋顶必须剔除9水域水位点要谨慎处理容易把高程拉低17桥梁或桥面看项目需求桥体不等于地形我看过不少人在分类前不检查分类码结果原始las里可能带了厂商预分类好的ground点集也可能全是一堆0。这两种情况的处理策略完全不同搞错了很浪费时间。2.2 拿到点云先查这四项坐标、密度、噪声、漏洞第一查坐标单位。有的las文件里X、Y是经纬度单位是度有的已经投影成米制坐标。如果拿经纬度直接去做栅格化一个像元里塞了几百个点另一个像元空着因为单位尺度完全不对。第二查密度。在CloudCompare里加载las后可以算一下Average distance也就是点间距的平均值。密度直接影响后面DEM的分辨率我后面会专门给对应表。第三查噪声。把点云按高程着色如果看到几颗“流星”一样的点悬在空中或者几个点扎进地下几十米那就是噪声点要先剔除。第四查漏洞。通过统计每个网格里的点数密度可以快速发现哪个区域没扫到漏洞区后面DEM会变成黑洞。2.3 坐标系和高程基准这一步错了全白干坐标系统是最容易被忽略、又最容易出致命问题的环节。无人机激光雷达直接解算出的点云坐标通常带有原始投影信息常见的是WGS84经纬度高程是椭球高。而DEM项目要求的一般是国家坐标系或地方坐标系下的“平面坐标海拔高/正常高”两者在平面和高程基准上可能差出几十米甚至更多。具体常见的坑有三个一是点云是经纬度坐标没做投影就直接插值二是高程用的是椭球高没转成正常高个别区域偏差会随地形起伏变化三是航测成果在一个坐标系DEM成果却在另一个坐标系叠加时整体错位。坐标转换建议在分类之前完成因为很多分类算法和后续的栅格化工具对投影坐标的支持比经纬度友好得多。国内项目常用的做法是统一到CGCS2000坐标系的3度带或6度带投影再配合本地似大地水准面模型把椭球高转成正常高。3. 地面点分类能不能做出“干净”地形全看这里如果说DEM是一幅画那分类就是在做草稿和选区。分类质量不达标后面插值、平滑、填洞做得再漂亮也只是在错误底色上涂颜色。举个例子一片密林区域激光可能只有不到20%的点能穿透树冠砸到地面如果分类时把大量树冠点当成地形点林区DEM比真实地面高出一大截是常有的事。3.1 主流分类思路形态学、TIN渐进加密、布料模拟点云分类在地形方面的主流方法有三类。第一类是数学形态学滤波它通过不断膨大或缩小的窗口模拟地形变化把低于局部基准面的点保留为地面点第二类是渐进加密TIN先选少量低点构建初始三角网然后不断把符合阈值的新点加入并重建TIN逐步逼近真实地表第三类是近年来很火的布料模拟滤波CSF它想象一块柔性布料从上方落到倒置的点云上布料最终形状就是地形表面的近似。CSF的原理不深奥但效果在很多场景都很好它也是目前免费开源工具里最容易上手的地面点分类方式。实际项目中我常用CSF做第一轮分类再用TIN渐进加密或手工编辑处理复杂场景。自动分类算法解决90%的常规地形没问题但在建筑物墙角、陡崖、水域边缘这些地方程序经常会“犯迷糊”这时就需要人工收尾。3.2 CSF布料模拟参数怎么给小白也能直接抄CSF里最关键的参数有三个网格分辨率(Cloth resolution)、地形类别(缓坡/陡峭)、最大迭代次数。我的经验是网格分辨率和你要生成的DEM分辨率保持一致或略细一档比如目标DEM是1mCSF网格就设0.5m到1m。如果网格设得太粗山脊和沟谷的细节会被磨平设得太细计算时间长而且容易把低矮植被的缝隙误判成地形起伏。地形类别选“缓坡”还是“陡峭”取决于测区最大坡度一般平原、低丘、建筑区选缓坡模式山区或大高差区域选陡峭模式。软件里对应的是两个预设参数组“陡峭”其实就是让布料更“硬”、能跨越小的低矮植被平原则让布料更“软”、贴合微小起伏。迭代次数默认500一般够用遇到复杂城市区域我会提到800到1000。处理完成后一定要把分类结果显示出来在高程着色、真彩色显示之间来回切换目视检查地面点是否把房顶、树冠排除干净。3.3 自动分类之后为什么还要人工修编我见过不少项目赶工期自动分类完直接把裸地面点拿去生成DEM检查成果时才发现问题。最常见的误分有两类一类是建筑密集区的屋顶被当成地面另一类是茂密树冠下地面点稀少导致林区山脊线像被狗啃过一样塌陷。前者会让DEM在建筑区鼓包后者会让山脊看起来像锯齿状豁口。人工修编的常用工具是TerraScan或者CloudCompare的选择工具。在剖面视图里框选误分点云后重新赋分类码比在俯视图里修要准得多。修编量一般在总数据量的2%~5%但带来的精度提升非常可观。我自己的习惯是“分类后必剖视、剖视后必踏勘”。就是说在电脑上剖切几个横纵断面看看地面点是否贴地如果条件允许抽几个GPS实测点去现场复核高程。别小看这一步很多项目后期的高程纠纷都是这里没把好关。3.4 别忘了点云清洗噪声点会让DEM变成“麻子脸”分类只能把“地物点”剔掉但“噪声点”是另一码事。所谓噪声是那种明显不符合周围点高程规律的点飞到天上的鸟、在传感器下方扑腾的无人机桨叶扬尘、被水面反射后计算错误的异常点。它们在空间上表现为孤立的离群点如果不清理插值后会在DEM表面形成一个个突兀的小坑或小包像一张麻子脸。清洗噪声点有两种常见手段。一是用统计滤波SOR它计算每个点到邻域内k个点的平均距离距离超过整体均值若干倍标准差的点会被剔除二是用半径离群剔除设置一个搜索半径和最少点数周围点太少的孤立点就删掉。两种方法原理相似效果也有重叠实际处理时先做一遍SOR再人工再检查一遍“飞点”基本能把主要噪声清干净。还有一种情况是水面区域由于镜面反射水面的点经常大幅偏低这时候要么删掉水面点要么根据水位统一赋值。4. DEM生成插值方法、分辨率与细节处理分类完成、地面点准备就绪之后才算正式进入“生成DEM”的阶段。这一步看似是软件点几下鼠标的事但决定DEM最终形态的背后是插值方法和分辨率的取舍。4.1 四种常见插值方法对比从地面点构建连续表面有几种常用方法插值方法原理适用场景主要缺点反距离加权IDW未知点取值是周围点按距离倒数的加权平均快速出结果、点密度较高容易产生“牛眼”状伪圈自然邻域法用泰森多边形做局部加权插值点只用邻居节点密度均匀的点云成果较平滑计算量大边缘点处理较慢克里金法利用变异函数量化空间自相关后插值稀疏点云、精度要求高的项目参数调起来复杂非专业容易翻车TIN线性插值以点为顶点构建三角网每个三角面线性插值高密度点云、地形特征线明显三角面棱线有时太“硬”需要平滑实际项目里最稳妥的组合是“TIN线性插值生成原始表面再根据成果要求做适度平滑”。TIN能自然保留地形特征线比如山脊、沟谷、陡坎而IDW和克里金更适合数学上“好看”但可能抹掉地形细节的成果。高密度无人机las点云其实没有太大必要用克里金反而是TIN线性插值最贴近真实地形。4.2 分辨率和点云密度怎么匹配DEM分辨率不是想设多细就设多细。分辨率越高每个像元需要覆盖的点数就越少如果点密度撑不起来就会出现空洞和异常值。经验公式很简单平均点间距多大DEM分辨率就定在它的2~3倍以上。点云平均间距点云密度建议DEM分辨率0.1m约100点/平方米0.2m ~ 0.5m0.3m约10点/平方米0.5m ~ 1.0m0.5m约4点/平方米1.0m ~ 2.0m1.0m约1点/平方米2.0m ~ 3.0m为什么不能等比缩太多因为一个像元里至少要有几个点参与计算才可靠如果平均点间距是0.5m、你却硬要输出0.2m的DEM那大半像元都在靠算法脑补精度无从谈起。反过来如果设成10m那地形细节全被抹平了山沟都被填了也没意义。所以选分辨率前先算一下点云密度这是基本功。4.3 空洞、平滑、填洼这些后处理想让DEM更稳就得做点云不管多密总会有覆盖不到的地方。水面镜面反射、茂密树冠遮挡、建筑底部阴影区都会造成地面点缺口。生成DEM后这些缺口就成了NoData区域。填充空洞的方法一般是利用周围有效像元做插值ArcGIS里有Nibble、Focal statisticsQGIS里可以用填充NoData工具。但补洞时得清醒插值出来的高程永远是估计值精度低于真实扫描区域如果测区里存在大面积水域最好把水域单独圈出来按统一水位处理而不是让算法在水面上编造地形。平滑处理也容易走极端。很多新手喜欢把DEM过一遍低通滤波结果山脊线变圆了、陡坎被磨平了反倒失真。轻度平滑可以消除栅格化带来的微小锯齿但过度平滑就是毁灭地形细节。还有填洼水文分析前确实需要先填洼让水流能连续往下走但如果只是做地形展示或土方计算填洼会改变真实高程反而有害。我的建议是后处理手段必须跟用途绑定先搞清楚DEM要拿去干什么再决定要不要平滑、要不要填洼。4.4 一条可以直接套用的免费工作流不想花大价钱买商业软件的话用开源工具也能完整走通“las点云→DEM”的流程。我常用的是CloudCompare QGIS组合。在CloudCompare中打开las点云加载后先目视检查、SOR去噪使用CSF插件做地面点分类通过标量字段过滤只保留地面点对地面点执行Tools Projection Rasterize栅格化模式选择“Interpolated通过Delaunay三角网插值”设置网格步长为目标DEM分辨率导出GeoTIFF把GeoTIFF拉进QGIS检查NoData区域、填洞、可选轻度平滑用检查点做高程精度误差统计。这套流程完全免费对新人来说比花大价钱学商业软件心理负担小得多而且每一步都能看到中间结果哪一步出问题都能及时回头修。5. 实操案例一块“建筑林地水面”混合区怎么出DEM光讲理论容易飘我拿一个实际处理过的测区当例子完整走一遍流程。测区约0.6平方公里用无人机激光雷达扫完后得到约8000万个点的las文件平均点密度约25点/平方米整体平均点间距约0.2m包含一片多层住宅区、一片有密林的山坡、还有一段水面。5.1 原始数据情况拿到文件后我先看了文件头坐标是CGCS2000 / 3度带投影高程是正常高尺度正确可以直接用。把点云拖进CloudCompare按高程着色后肉眼可见住宅区屋顶点比周围明显高出十几米林区点云从树冠到地表分层不明显颜色渐变水面区域有一小片点的高程异常低比附近河岸低了2米多这是水面镜面反射导致的错误点。这版数据里还有不少孤立的“飞点”分布在建筑区上空10米左右明显是无人机在建筑物旁悬停或多路径反射造成的错误回波。以及几个点扎到地下10米以下属于典型低噪点。为了不让这些点干扰后面的地面点分类我第一步就先用SOR统计滤波去噪设置邻域搜索点为16、标准差倍数为3清掉了一批离群飞点。5.2 用CloudCompare完成分类和栅格化的完整步骤去噪完成后进入CSF插件分类。我设置参数如下网格分辨率0.5m地形类别选“缓坡”最大迭代次数600。选择缓坡模式是因为测区虽然有山坡但坡度整体不超过30度缓坡模式能让布料更贴合地面微起伏。分类结果出来后我用剖面工具切了几刀发现林区还有一部分树冠被当成地面点建筑区墙角也有零星屋顶点漏进来。我手动把这些误分点选中重新归类为非地面点大约花了一个半小时。接下来只保留地面点执行Rasterize。步长(step)设置为1.0m因为点密度虽然达到每平米25点但考虑到山坡阴影区地面点密度明显下降1m更稳妥。输出模式选“Interpolated”也就是用地面点先构TIN再内插到每个网格节点这样比单纯取最低值或平均值更能还原地形形态。导出为GeoTIFF后我在QGIS里打开发现河面区域因为原始错误点被删后留下几十个像元的空洞用填充NoData工具按周边平均值填补掉。5.3 精度验证与DEM派生产品成果不能直接用要做精度验证。我在测区里用测距仪实测了30个地面高程检查点均匀覆盖住宅、林地、草地和水边把检查点高程与DEM提取值逐一对比计算出RMSE约为0.13m。对1m分辨率DEM来说这个误差在合理范围内。如果是农田平整区或城市道路区RMSE通常能控制在0.1m以内如果是陡峭山地误差会大一些属正常现象。精度验证没问题后我又利用DEM生成了等高线和坡度图。等高线间距设0.5m导入CAD用来辅助设计坡度图叠加到正射影像上用于识别潜在的水土流失区域。另外还把DEM导出成OBJ格式喂给三维平台做地形场景展示这也就是热词里常被问到的“点云转三维模型”的一种更实用路线不是直接把点云转OBJ而是先生成DEM再做网格模型数据量小得多也能直接放进常见的三维引擎里统一加载。6. 常见问题排查与效率心得每个项目的点云数据都不一样容易踩的坑也不尽相同。这一章我把从业以来最常遇到的问题整理成速查表再分享几个工作习惯上的心得帮你省点试错时间。6.1 典型问题速查表现象可能原因解决建议DEM局部区域有明显的“鼓包”屋顶或树冠点被误分成地面点检查分类结果剔除误分点后重新插值DEM表面有一片“坑坑洼洼”存在未清除的噪声点或水面错误点先做SOR去噪再检查水面区域生成DEM后出现大片NoData点云存在漏洞区地面点缺失用填洞工具补全必要时补飞航线DEM边缘出现“锯齿”点云覆盖不完全或分类边缘抖动裁掉边缘只保留完整覆盖区多个航带拼接处出现明显错位航带间点云配准误差较大先做航带平差必要时做ICP/特征配准插值结果让人感觉“磨得太圆”平滑过度或插值方法不适合改用TIN线性插值减少后处理平滑次数DEM高程整体偏高没有剔除植被和建筑点回查分类确认只保留地面点DEM高程整体偏差呈系统性趋势高程基准不对椭球高没转正常高检查文件头与项目坐标系统要求这张表看着简单但每一条我都实打实踩过。尤其是“高程整体偏高”这个问题最容易在茂密林地项目里翻车因为树冠遮挡导致地面点严重不足地面点其实是树基附近混着的稀疏点位整体被抬高了0.5米到1米。6.2 两个容易忽视但能省大时间的工作习惯第一个习惯是分类完成后先做“可视化预检”再做精度验收。我一般会在点云里随便切几条横纵剖面在高程着色模式下沿着剖面扫一遍看看地面点是否贴着地面走。这一步能提前发现90%的分类问题等DEM生成后再发现问题返工成本就高了。第二个习惯是永远保留处理链条中的中间文件。每次去噪、分类、抽稀后的点云都单独存一个版本并命名清楚比如01_raw.las、02_denoised.las、03_ground.las。这样如果在DEM成果上发现问题可以快速定位是哪个环节出的错而不是把原始数据翻出来重新跑一遍全流程。这个习惯救过我很多次强烈建议你也养成。还有一个细节值得提做任何点云处理前先复制一份原始文件到单独的文件夹里别在原始数据上直接改。点云不像普通文档有“撤销”按钮很多操作一旦覆盖保存就找不回来了。等整个项目完工再统一归档、清理中间过程文件既安全又省存储空间。我自己做航测las点云生成DEM这些年最大的体会是这个活儿没有多深奥但特别考验流程意识和耐心。分类、插值、成图每一步都有标准做法难的是每次都不偷懒、不跳步地把这些标准做到位。对于刚开始接触点云的同行我的建议就是先用小范围数据把流程跑通每一步都亲眼看看中间结果长什么样再通过几个不同地形的测区积累经验。等这些流程都形成肌肉记忆了你就不会再被“las怎么生成DEM”这个问题难住反而会开始思考下一层的问题——比如这个DEM应该用什么精度验收、该不该做填洼、要不要输出成BIM里能用的地形格式。点云数据的乐趣和价值也正是在这些持续深入的问题里一点点展开的。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价