Редактирование облака точек LiDAR для удаления шума / выбросов, присутствующих под и над землей?

10

У меня есть «грязные» данные LiDAR, содержащие первые и последние данные, а также неизбежные ошибки на уровне поверхности и над ним. (Скриншот)

введите описание изображения здесь

У меня под рукой есть SAGA, QGIS, ESRI и FME, но нет реального метода. Какой будет хороший рабочий процесс для очистки этих данных? Есть ли полностью автоматизированный метод, или я бы как-то удалял вручную?

Роберт Бакли
источник
Имеются ли в ваших данных облака точек данные о низком / высоком уровне шума (классы 7 и 8 из las specs 1.4 R6)?
Аарон
Что вы пробовали с любым из этих программных продуктов, и где вы застряли с ним? Вы, кажется, хотите обсудить варианты, а не задавать сфокусированный вопрос. Обсуждать варианты всегда хорошо в Чате ГИС.
PolyGeo
1
Голосование возобновить, так как модератор ошибочно отвечает на вопросы, которые требуют программного обеспечения, с вопросами, которые запрашивают методы / способы что-то сделать. Ответы, которые только перечисляют программное обеспечение, не являются реальными ответами в этом контексте. Я лучше объясняю свой POV в gis.meta.stackexchange.com/questions/4380/… .
Андре Сильва
1
Кроме того, кажется, что «слишком широкое» одностороннее закрытие использовалось чрезмерно: gis.meta.stackexchange.com/questions/4816/… . Я думаю, что дело здесь применимо. Что делает вопрос единственным, так это наличие всех типов выбросов в облаке точек.
Андре Сильва

Ответы:

9

Вы, кажется, имеют выбросы:

  • и) под поверхностью земли;
  • ii) над поверхностью земли и вертикально среди других надземных реальных объектов;
  • iii) над земными точками, высота которых превышает все представляющие интерес объекты, например объекты, вызванные облаками или птицами (это не показано на рисунке, но я предполагаю, что это также может иметь место).

Для «i» вариант состоит в том, чтобы использовать алгоритм наземного фильтра, который может учитывать «отрицательные ошибки», чтобы получить чистое облако наземных точек LiDAR. См. Алгоритм классификации многомасштабной кривизны (MCC) от Evans and Hudak (2007). На странице 4 сказано:

Отрицательные грубые ошибки - обычное явление в данных LiDAR, которое может быть вызвано рассеянием фотонов в возвращенном лазерном импульсе. Рассеяние удлиняет время возврата излучаемого лазерного импульса к датчику самолета, увеличивая расчет пройденного расстояния, что приводит к ошибке измерения, когда высота поверхности ошибочно записывается как находящаяся ниже окружающих измерений. Следует отметить, что подходы к классификации кривизны потенциально могут удалить действительные возвратные значения, окружающие отрицательные грубые ошибки, которые могут расширить краевой артефакт вокруг отрицательного грубого промаха, чтобы создать отчетливый эффект «кратера бомбы». Чтобы устранить отрицательные ошибки, Хаугеруд и Хардинг предложили установить параметр допуска на кривизну в четыре раза больше интерполированного размера ячейки и выбрать возврат, превышающий этот порог отрицательной кривизны. Однако следует отметить, что при определенных обстоятельствах возвраты, которые кажутся отрицательными ошибками, могут фактически быть действительными доходами (например, провалы в грунте). Следовательно, предыдущее предложение по устранению потенциальных отрицательных ошибок может быть реализовано в качестве необязательного последнего модельного цикла, который можно использовать по усмотрению пользователя, если это необходимо.

Ниже приведен пост с примером использования MCC-LIDAR:

Если у вас есть точное наземное облако точек LiDAR для создания точной матрицы высот, можно нормализовать облако точек и исключить точки, которые находятся ниже поверхности матрицы высот (с отрицательными значениями). Используя тот же подход, можно также обратиться к точке с номером «iii», удалив точки выше некоторого фиксированного порога. Смотрите, например:

Затем он оставляет нам «ii», на который отвечает ответ Алекса, рекомендованный lasnoiseLAStools. Он также будет обрабатывать «iii» и, возможно, часть «i» (LAStools требует лицензии). Здесь были упомянуты другие инструменты, специально созданные для проверки / удаления выбросов: filters.outlierинструмент PDAL в ответе Чарли Парра, в котором есть подробное объяснение того, как работает инструмент, и с преимуществом, что PDAL является свободным программным обеспечением.

Затем то, что осталось от автоматизированного процесса (если есть выбросы), может быть удалено вручную. Например:


Эванс, Джеффри С .; Hudak, Andrew T. 2007. Алгоритм кривизны с несколькими масштабами для классификации дискретного возврата LiDAR в лесных средах . IEEE Сделки по геонауке и дистанционному зондированию. 45 (4): 1029-1038.

Андре Силва
источник
3

Я рекомендую 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 м GeoTIFF. Статистический фильтр выполняет вычисление среднего расстояния ближайшего соседа, чтобы проверить, находится ли точка «слишком далеко» от своих соседей и, следовательно, от выброса.

Из документации :

введите описание изображения здесь

Чарли Парр
источник
1
@AndreSilva отредактировано! по сути, он спрашивает, что является «нормальным» расстоянием для точки, которая будет образовывать ее (mean_k) соседей, и если расстояние для точки слишком велико (больше, чем (множитель) * сигма выше среднего расстояния), то оно помечается как выброс
Чарли Парр,
1

Поскольку OP не ограничивал решения с открытым исходным кодом, я бы предложил Quick Terrain Modeler ( QT Modeler ). Это требует лицензии. Загрузите облако точек в QT, и вы по существу наклоните его, чтобы получить желаемое представление профиля, наложите резинку на кластер, который хотите удалить, и просто нажмите «Удалить».

Ауслендер
источник
1

Мне повезло, просто используя фокусную дисперсию на интерполированном растре. Затем вы присваиваете значения отклонений вашим точкам и используете порог для удаления локально высоких отклонений, представляющих большие отклонения от оценки локального ядра.

Вы должны убедиться, что разрешение интерполированной поверхности достаточно малое, чтобы уловить локальные изменения на уровне точек. Размер ядра также окажет влияние, но для одиночных выбросов должно хватить окна 3х3. Вы можете потерять несколько дополнительных очков, но с лидаром у вас есть достаточно данных, чтобы сэкономить.

Джеффри Эванс
источник
1

Lastools предоставляет именно то, что вам нужно - автоматизированные скрипты, которые уберут все эти пункты за вас. Однако для этого существует стоимость лицензирования, но если это процесс, который вы хотите быстро выполнить как обычную задачу, использование сценария lasnoise из их набора инструментов является идеальным вариантом.

Как заметил @Andre Silva, ArcGIS имеет набор инструментов las, который вы можете использовать после запуска инструмента геообработки Создать набор данных LAS. Оттуда вы можете войти вручную, чтобы реклассифицировать или удалить эти точки шума. Недостатком является то, что это не такой интуитивный или эффективный процесс, как QT Modeler (предложенный @auslander), вероятно, лучшая программа для визуализации / анализа / манипулирования файлами las вручную, а также с затратами на лицензию. ArcMap будет ограничивать количество видимых точек при редактировании облака точек, а это означает, что вам, вероятно, придется увеличивать области с шумом, удалять или реклассифицировать их, а затем перемещаться в рамках процесса ручной очистки. Но это сделает работу.

AlecZ
источник
1

Как сказал Андре Сильва , MCC-LIDAR - это хороший вариант для извлечения базовых точек, но, по моему опыту, он будет испытывать трудности, если у вас очень большое облако точек (500 миллионов точек или даже меньше). Другими словами, он вернет ошибку и не запустит алгоритм, даже если вы измените настройки (параметры масштаба и кривизны). Кроме того, по моему опыту, он сохраняет некоторые «негативные ошибки» в данных.

Моя альтернатива для этого - инвертировать облако точек (точки под землей поднимутся, а над землей опустятся). Чтобы получить это, я загружаю данные в R и инвертирую высоту, затем запускаю MCC-LIDAR и заново инвертирую данные. Возможно, вы могли бы сделать это в QGIS или ArcGIS, но в зависимости от размера вашего набора данных это может занять некоторое время.

Инструмент PDAL земля также вариант хорош , как это лучше работает с большими наборами данных , но, опять же , некоторые из точек сильфонные земля будет по- прежнему сохраняется. Инвертирование набора данных снова поможет решить эту проблему.

Для точек над землей мой лучший подход - это ручная очистка, а лучший инструмент с открытым исходным кодом, который я нашел для этого, находится в CloudCompare. Вы выберете Segmentв верхней панели меню, и вы можете удалить выбранные точки или все остальные. Я использовал LAStools прежде ( lasviewинструмент) для этого, но способ работы 3D-интерфейса не так удобен для пользователя.

Andre
источник
Интересный подход, инвертирующий облако точек для устранения негативных ошибок. Легко ли было загрузить 500 миллионов очков pointcloud в R?
Андре Сильва
Это может занять пару минут. Я обычно загружаю из файла ASCII, используя fread из пакета разработки data.table, где я могу поиграть с количеством используемых потоков.
Андре
1

Я - техническая поддержка со стороны GreenValley International, утилита Outlier Removal в нашем флагманском программном обеспечении LiDAR360 может использоваться для максимально возможного устранения этих ошибок и, следовательно, для улучшения качества данных.

Алгоритм сначала ищет соседние точки каждой точки в определенной пользователем окрестности и вычисляет среднее расстояние от точки до соседних точек. Затем рассчитывается среднее и стандартное отклонение этих средних расстояний для всех точек. Если среднее расстояние точки до ее соседей больше максимального расстояния (максимальное расстояние = среднее + n * стандартное отклонение, где n - это определенное пользователем множественное число), оно будет считаться выбросом и будет удалено из исходного облако точек.

введите описание изображения здесь

chenlh
источник
-1

В качестве опции с открытым исходным кодом, 3D Forest имеет несколько хороших инструментов для автоматической фильтрации, а также ручные инструменты для очистки облаков точек. Возможно, вам придется попробовать разные параметры фильтра, чтобы получить нужный результат. Несмотря на то, что он ориентирован на облака точек леса, многие инструменты полезны в любом облаке точек.

A_NeriWinter
источник