我有“脏”的LiDAR数据,其中包含第一个和最后一个返回值,并且在表面以下和上方不可避免地会出现错误。(截图)
我手头有SAGA,QGIS,ESRI和FME,但没有真正的方法。清理此数据的最佳工作流程是什么?有全自动的方法还是我会以某种方式手动删除?
我有“脏”的LiDAR数据,其中包含第一个和最后一个返回值,并且在表面以下和上方不可避免地会出现错误。(截图)
我手头有SAGA,QGIS,ESRI和FME,但没有真正的方法。清理此数据的最佳工作流程是什么?有全自动的方法还是我会以某种方式手动删除?
Answers:
您似乎有异常值:
对于“ i”,选项是使用地面滤波器算法,该算法可以考虑“负错误”以获得干净的LiDAR地面点云。参见Evans和Hudak(2007)的多尺度曲率分类(MCC)算法。在第4页上说:
负错误是LiDAR数据中的常见现象,这可能是由返回的激光脉冲中的光子散射引起的。散射会延长发射的激光脉冲返回飞机传感器的时间,从而扩大了行进距离的计算范围,从而导致测量误差,其中表面海拔被错误记录为低于周围的测量值。应当注意的是,曲率分类方法可能会消除负错误周围的有效收益,这会扩大负错误周围的边缘伪影,从而产生独特的“炸弹坑”效应。为解决负错误,Haugrud和Harding建议将曲率容差参数设置为内插像元大小的四倍,并选择超过此负曲率阈值的返回值。但是,应注意,在某些情况下,看起来是负错误的收益实际上可以是有效收益(例如,坑洞)。因此,前面提出的消除潜在负面错误的建议可以实现为可选的最后一个模型循环,如果需要,可以由用户自行决定是否采用。
以下是带有使用MCC-LIDAR的示例的帖子:
一旦有了准确的LiDAR地面点云以进行精确的DEM,就可以对点云进行归一化,并排除DEM表面以下的点(具有负值的点)。使用相同的方法,还可以解决点编号“ iii”,以除去高于某个固定阈值的点。参见,例如:
然后,将“ ii”留给我们,AlecZ的lasnoise
LAStools 推荐答案就是“ ii” 。它还将处理“ iii”,也可能处理“ i”的一部分(尽管LAStools需要许可证)。这里还引用了专门为检查/删除异常值而创建的其他工具:Charlie Parr回答中的 PDAL filters.outlier
工具,其中详细说明了该工具的工作方式,并且PDAL是免费的软件。
然后,可以手动删除自动化过程中剩余的内容(如果有异常值)。例如:
埃文斯,杰弗里·S。Hudak,Andrew T.2007。 一种多尺度曲率算法,用于在森林环境中对离散返回LiDAR进行分类。IEEE地球科学与遥感学报。45(4):1029-1038。
我将推荐PDAL点数据抽象库。对于类似的过滤问题,使用PDAL取得了成功。我喜欢PDAL,因为它是开源的,提供Python支持,并且使我易于重现处理并跟踪我的过滤参数。我也喜欢它,因为它具有“管道”,您可以在其中将多个步骤链接在一起(例如,裁剪然后过滤然后导出)并立即执行它们。请注意,如果您真的有非常大的点云PDAL,可能不如其他解决方案(LASTools,QTM等)那么快。
您可以使用类似于以下内容的PDAL管道解决离群点的问题:
{
"pipeline": [
"input_utm.las",
{
"type":"filters.crop",
"bounds":"([401900,415650],[7609100,7620200])"
},
{
"type":"filters.outlier",
"method":"statistical",
"mean_k":12,
"multiplier":2.0
},
{
"type":"filters.range",
"limits":"Classification![7:7]"
},
{
"filename":"output.tif",
"resolution":1.0,
"output_type":"mean",
"radius":3.0,
"bounds":"([401900,415650],[7609100,7620200])",
"type": "writers.gdal"
}
]
}
该管道读取LAS,将其裁剪到指定的UTM范围,然后执行过滤器以标记所有离奇点,然后执行第二个过滤器以仅保留非离奇点(即,分类标记!= 7),然后导出到1 m分辨率的GeoTIFF。统计过滤器正在执行最近邻居平均距离计算,以测试一个点是否与其邻居“离得太远”,从而离奇。
从文档中:
由于OP并没有将解决方案限制于开源,所以我建议使用Quick Terrain Modeler(QT Modeler)。它确实需要许可证。将点云加载到QT中,然后基本上将其倾斜以获取所需的纵断面图,对要删除的集群进行橡皮筋处理,然后单击Delete。
我很幸运,只是在插值栅格上使用焦点方差。然后,您将方差值分配给您的点,并使用阈值去除局部高方差,这代表与局部内核估计值的较大偏差。
您必须确保插值曲面的分辨率足够小,以至于可以捕获某个点水平上的局部变化。内核的大小也会产生影响,但对于单个异常值,3x3的窗口就足够了。您可能会听到一些额外的问题,但有了激光雷达,您有足够的数据可以保留。
Lastools恰恰提供了您所需要的-自动化脚本将为您删除所有这些要点。但是,这需要一定的许可成本,但是如果您希望将此过程作为常规任务快速执行,则使用其工具集中的lasnoise脚本是一个理想的选择。
正如@Andre Silva指出的那样,ArcGIS具有一个las工具集,您可以在运行“创建LAS数据集”地理处理工具后使用该工具集。从那里,您可以手动进入以重新分类或删除这些噪声点。缺点是它不像QT Modeler(@auslander建议)那样直观,有效,它可能不是手动可视化/分析/操纵las文件的最佳程序,而且还需要支付许可费用。在编辑点云时,ArcMap将限制可见点的数量,这意味着您可能必须放大具有噪点的区域,将其删除或重新分类,然后作为手动清理过程的一部分进行浏览。但这将完成工作。
正如安德烈·席尔瓦(Andre Silva)所说,MCC-LIDAR是提取地面点的好选择,但是根据我的经验,如果您拥有很大的点云(5亿点甚至更少),它将非常困难。换句话说,即使您更改设置(比例和曲率参数),它也会返回错误并且不会运行算法。而且,根据我的经验,它在数据中保留了一些“负错误”。
我的替代方法是反转点云(地下的点将上升,而地面上的点将下降)。为此,我将数据加载到R中并反转高度,然后运行MCC-LIDAR并重新反转数据。您可能可以在QGIS或ArcGIS中执行此操作,但是根据数据集的大小,可能要花一些时间。
PDAL工具地面也是一个不错的选择,因为它可以在较大的数据集上更好地工作,但是,下面的一些点仍然可以保留。反转数据集将再次帮助解决此问题。
对于地面上的问题,我最好的方法是手动清理,而我发现最好的开源工具是CloudCompare。您将Segment
在顶部栏菜单中选择,然后可以删除所选的点或所有其他点。我在(lasview
工具)之前使用过LAStools,但是3D界面的工作方式并不那么用户友好。
作为“开放源代码”选项,“ 3D森林”提供了一些不错的工具来自动过滤,还有手动工具来清理点云。您可能必须尝试使用不同的过滤器参数才能获得所需的结果。即使它是针对森林点云的,许多工具也可以在任何点云中使用。