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' отметьте к истине, которая удаляет наземную плоскость из облака точки ввода перед обработкой.

Примеры

свернуть все

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

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' отметьте к истине, которая удаляет наземную плоскость из облака точки ввода перед обработкой.

Кластеризация порога для двух смежных точек в виде разделенной запятой пары, состоящей из '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 ложь) или 1 TRUE).

Нормальная из плоскости принята, чтобы быть выровненной с положительным направлением z - ось со ссылочным векторным [0 0 1].

Типы данных: логический

Отобразите функциональный прогресс в виде разделенной запятой пары, состоящей из 'Verbose' и логический 0 ложь) или 1 TRUE).

Типы данных: логический

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

свернуть все

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

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

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

Введенный в R2020b