Облако точек снимает шум с помощью PDAL

У меня очень плотное облако единичных точек возврата, собранное наземным лидаром и состоящее из более чем 8 000 000 точек на площади около 700 квадратных метров. Он состоит из точек шума, которые я хотел бы удалить. Я использую filters.outlier в конвейере PDAL в Python 3.6.

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 ответ

Это довольно легко. Если вы еще раз посмотрите на документацию, вы найдете этот небольшой фрагмент:

Стоит отметить, что оба метода фильтрации просто применяют значение классификации 7 к точкам шума (согласно спецификации LAS). Чтобы полностью удалить точки шума, пользователи могут добавить фильтр диапазона в свой конвейер ниже по потоку от фильтра выбросов.

Попробуйте добавить следующее в свой конвейер, следуя фильтру выбросов.

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

Это пройдет каждую точку со значением классификации, не равным 7 (что указывало бы на шум), и отбросит все остальные.

Другие вопросы по тегам