我有一个非常密集的单返回点云,它是由地面激光雷达收集的,由大约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()
代码运行良好,但是创建了与原始代码相同的点云,我尝试更改半径的值,但得到的结果相同。如果有人提示我出了什么问题,我将不胜感激。
答案 0 :(得分:0)
这很简单。如果您再看一下documentation,则会发现以下小片段:
值得注意的是,两种滤波方法仅将7的分类值应用于噪声点(根据LAS规范)。要完全消除噪声点,用户可以在离群值过滤器下游的管道中添加一个范围过滤器。
尝试在离群值过滤器之后将以下内容添加到您的管道中。
{
"type":"filters.range",
"limits":"Classification![7:7]"
}
这将使分类值不等于7(表示噪声)的每个点通过,并丢弃所有其他点。