使用PDAL进行点云去噪

时间:2018-07-17 08:39:34

标签: python-3.x point-clouds pdal

我有一个非常密集的单返回点云,它是由地面激光雷达收集的,由大约700平方米的800万个点组成。它包含我要删除的噪声点。我在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()

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

1 个答案:

答案 0 :(得分:0)

这很简单。如果您再看一下documentation,则会发现以下小片段:

  

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

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

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

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