Сегмент земли из данных лидара с помощью алгоритма SMRF
сегментирует входное облако точек, groundPtsIdx
= segmentGroundSMRF(ptCloud
)ptCloud
и возвращает логическую матрицу или вектор groundPtsIdx
. Функция устанавливает индексы наземной точки равными true
и true
для нетронутых точек.
дополнительно задает размерность элемента сетки.groundPtsIdx
= segmentGroundSMRF(ptCloud
,gridResolution
)
[
дополнительно возвращает точки заземления и точки без заземления как индивидуальные groundPtsIdx
,nonGroundPtCloud
,groundPtCloud
] = segmentGroundSMRF(___)pointCloud
объекты. Используйте этот синтаксис с любыми комбинациями входных аргументов в предыдущих синтаксисах.
[___] = segmentGroundSMRF(___,
задает опции, используя один или несколько аргументов имя-значение. Для примера, Name,Value
)'ElevationThreshold',0.4
устанавливает порог повышения для идентификации нетронутых точек равным 0,4.
Алгоритм [1] простого морфологического фильтра (SMRF) сегментирует данные облака точек в наземные и неземные точки. Алгоритм разделен на три этапа:
Создайте минимальную поверхность повышения из данных облака точек.
Сегментируйте поверхность в заземленные и неземные элементы сетки.
Сегментируйте исходные данные облака точек.
Минимальное создание поверхности
Разделите данные облака точек на сетку по размеру xy- (вид птичьего глаза). Задайте размерность элемента сетки используя gridResolution
.
Найдите самое низкое значение повышения (Zmin) для каждого элемента сетки (пикселя).
Объедините все значения Zmin в матрицу 2-D (растровое изображение), чтобы создать минимальную карту поверхности повышения.
Сегментация карты поверхности
Применить морфологическую операцию открытия на карте минимальной поверхности. Для получения дополнительной информации о морфологическом открытии см. «Типы морфологических операций».
Используйте дискообразный элемент структурирования с радиусом 1 пиксель. Для получения дополнительной информации см. раздел «Структурирование элементов».
Вычислите уклон между минимальной поверхностью и открытыми картами поверхностей для каждого элемента сетки. Если различие больше, чем порог повышения, классифицируйте пиксель как не-заземленный.
Выполните шаги с 1 по 3 итерационно. Увеличьте радиус элемента структурирования на 1 пиксель в каждой итерации, пока он не достигнет максимального радиуса, заданного MaxWindowRadius
.
Конечным результатом процесса итерации является двоичная маска, где каждый пиксель классифицируется как заземленный или не заземленный.
Сегментация облака точек
Примените двоичную маску на исходной карте минимальной поверхности, чтобы исключить сетки без заземления.
Заполните незаполненные сетки с помощью методов интерполяции изображений, чтобы создать предполагаемую модель повышения.
Вычислите различие повышений между каждой точкой в исходном облаке точек и предполагаемой моделью повышения. Если различие больше ElevationThreshold
, классифицируйте пиксель как не-заземленный.
[1] Pingel, Thomas J., Keith C. Clarke, and William A. McBride. «Улучшенный простой морфологический фильтр для классификации наземных данных о ЛИДАРЕ в воздухе». ISPRS Journal of Photogrammetry and Remote Sensing 77 (March 2013): 21-30. https://www.sciencedirect.com/science/article/abs/pii/S0924271613000026? via%3Dihub.