0

我用地面激光雷达收集了非常密集的单返回点云,由大约 700 平方米的超过 8 000 000 个点组成。它由我想删除的噪声点组成。我在 Python 3.6 的 PDAL 管道中使用 filters.outlier。

json = """{
  "pipeline":[
    {
      "type":"readers.las",
      "filename":"/LASfiles/9A-1B_subset15m.las"
    },
    {
      "type":"filters.outlier",
      "method":"radius",
      "radius":1.0,
      "min_k":4
    },
    {
      "type":"writers.las",
      "filename":"/LASfiles/9A-1B_sub15m_denoise.las"
    }
  ]
}"""

import pdal
pipeline = pdal.Pipeline(json)
pipeline.validate() 
pipeline.execute()

代码运行良好,但创建的点云与原始点云相同,我尝试更改半径的值,但得到相同的结果。如果有人提示我出了什么问题,我将不胜感激。

4

1 回答 1

0

这很容易。如果你再看一下文档,你会发现这个小片段:

值得注意的是,两种过滤方法都只是将分类值 7 应用于噪声点(根据 LAS 规范)。要完全去除噪声点,用户可以在离群值过滤器下游的管道中添加范围过滤器。

尝试在离群值过滤器之后将以下内容添加到您的管道中。

{
    "type":"filters.range",
    "limits":"Classification![7:7]"
}

这将通过分类值不等于 7(表示噪声)的每个点,并丢弃所有其他点。

于 2018-07-17T17:37:51.520 回答