detectRectangularPlanePoints

Обнаружение прямоугольной плоскости заданных измерений в облаке точек

Описание

ptCloudPlanes = detectRectangularPlanePoints(ptCloudIn,planeDimensions) обнаруживает и извлекает прямоугольную плоскость, ptCloudPlanes, из заданных измерений, planeDimensions, из облака входных точек ptCloudIn.

[ptCloudPlanes,ptCloudUsed] = detectRectangularPlanePoints(ptCloudArray,planeDimensions) обнаруживает прямоугольные плоскости из набора облаков точек, ptCloudArray. В сложение функция возвращает логический вектор, ptCloudUsed, что указывает облака точек, в которых он обнаружил прямоугольную плоскость.

[___] = detectRectangularPlanePoints(ptCloudFileNames,planeDimensions) обнаруживает прямоугольные плоскости из набора файлов облака точек, ptCloudFileNames, и возвращает любую комбинацию выходных аргументов из предыдущих синтаксисов.

[ptCloudPlanes,ptCloudUsed,indicesCell] = detectRectangularPlanePoints(___) возвращает индексы к точкам в обнаруженной прямоугольной плоскости в каждом облаке точек, в дополнение к любой предыдущей комбинации аргументов.

пример

[___] = detectRectangularPlanePoints(___,Name,Value) задает опции, используя один или несколько аргументы пары "имя-значение". Для примера, 'RemoveGround',true устанавливает 'RemoveGround' флаг до true, который удаляет наземную плоскость из входного облака точек перед обработкой.

Примеры

свернуть все

Загрузите данные облака точек в рабочую область. Визуализация облака точек.

ptCloud = pcread('pcCheckerboard.pcd');
pcshow(ptCloud)
title('Input Point Cloud')
xlim([-5 10])
ylim([-5 10])

Figure contains an axes. The axes with title Input Point Cloud contains an object of type scatter.

Установите размерности поиска для прямоугольной плоскости.

boardSize = [729 810];

Поиск прямоугольной плоскости в облаке точек. Визуализируйте обнаруженную прямоугольную плоскость.

lidarCheckerboardPlane = detectRectangularPlanePoints(ptCloud,boardSize, ...
    'RemoveGround',true);
hRect = figure;
panel = uipanel('Parent',hRect,'BackgroundColor',[0 0 0]);
ax = axes('Parent',panel,'Color',[0 0 0]); 
pcshow(lidarCheckerboardPlane,'Parent',ax)
title('Rectangular Plane Points')

Figure contains an axes and an object of type uipanel. The axes with title Rectangular Plane Points contains an object of type scatter.

Визуализируйте обнаруженную прямоугольную плоскость на входном облаке точек.

figure
pcshowpair(ptCloud,lidarCheckerboardPlane)
title('Detected Rectangular Plane')
xlim([-5 10])
ylim([-5 10])

Figure contains an axes. The axes with title Detected Rectangular Plane contains 2 objects of type scatter.

Входные параметры

свернуть все

Облако точек, заданное как pointCloud объект. Функция ищет в этом облаке точек прямоугольную плоскость.

Массив облака точек, заданный как P -by-1 массив pointCloud объекты. P - количество pointCloud объекты в массиве. Функция ищет в каждом облаке точек прямоугольную плоскость.

Имена файлов облака точек, заданные как вектор символов или массив ячеек векторов символов. Если задается несколько имен файлов, необходимо использовать массив ячеек из векторов символов.

Типы данных: char | cell

Прямоугольные размерности, заданные как двухэлементный вектор положительных вещественных чисел. Элементы задают ширину и длину прямоугольной плоскости соответственно в миллиметрах. Функция ищет входное облако точек для плоскости с такими же размерностями, как planeDimensions.

Типы данных: single | double

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'RemoveGround',true устанавливает 'RemoveGround' флаг до true, который удаляет наземную плоскость из входного облака точек перед обработкой.

Порог кластеризации для двух смежных точек, заданный как разделенная разделенными запятой парами, состоящая из 'MinDistance' и положительная скалярная величина в метрах. Процесс кластеризации основан на евклидовом расстоянии между смежными точками. Если расстояние между двумя смежными точками меньше порога кластеризации, обе точки принадлежат одному и тому же кластеру. Лидары с низким разрешением требуют более высокой 'MinDistance' пороговое значение и наоборот.

Типы данных: single | double

Видимая область (ROI) для обнаружения, заданная как разделенная запятой пара, состоящая из 'ROI' и вектор формы [xmin, xmax, ymin, ymax, zmin, zmax]. Вектор определяет x, y, и z пределы информации только для чтения как пары xmin и xmax, ymin и ymax, zmin и zmax соответственно.

Типы данных: single | double

Допуск на неопределенность в прямоугольной плоскости размерностей, заданный как разделенная запятой пара, состоящий из 'DimensionTolerance' и положительная скалярная величина в область значений [0 1]. Более высокий 'DimensionTolerance' указывает более допустимую область значений для прямоугольной плоскости размерностей.

Типы данных: single | double

Удалите плоскость земли из облака точек, заданную как разделенная разделенными запятой парами, состоящая из 'RemoveGround' и логический 0 (false) или 1 (true).

Нормаль плоскости принята выровненной по положительному направлению оси z с помощью опорного вектора [0 0 1].

Типы данных: logical

Отобразите прогресс функции, заданный как разделенная разделенными запятой парами, состоящая из 'Verbose' и логический 0 (false) или 1 (true).

Типы данных: logical

Выходные аргументы

свернуть все

Обнаруженные прямоугольные плоскости, возвращенные как pointCloud объект или 1-by- P массив pointCloud объекты, где P задает количество входа облаков точек, в которых была обнаружена прямоугольная плоскость.

Флаг обнаружения шаблона, возвращенный как 1-байтовый N логический вектор. N - количество входных облаков точек. A true значение указывает, что функция обнаружила прямоугольную плоскость в соответствующем облаке точек. A false значение указывает, что функция не обнаружила прямоугольную плоскость.

Индексы обнаруженных прямоугольных плоскостей, возвращенные как массив ячеек 1 P байта, где P - количество облаков входных точек, в которых была обнаружена прямоугольная плоскость. Каждая камера содержит логический вектор, который задает индексы соответствующего облака точек, в котором функция обнаружила прямоугольную плоскость. Индексы могут использоваться, чтобы извлечь обнаруженную плоскость из данных облака точек.

Введенный в R2020b