exponenta event banner

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 ROI как пары 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-by-N логический вектор. N - количество облаков входных точек. A true значение указывает, что функция обнаружила прямоугольную плоскость в соответствующем облаке точек. A false значение указывает, что функция не обнаружила прямоугольную плоскость.

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

Представлен в R2020b