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 object. The axes object 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 object and an object of type uipanel. The axes object 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 object. The axes object 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 имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

Кластеризация порога для двух смежных точек в виде разделенной запятой пары, состоящей из 'MinDistance' и положительная скалярная величина в метрах. Процесс кластеризации основан на Евклидовом расстоянии между смежными точками. Если расстояние между двумя смежными точками меньше кластеризирующегося порога, обе точки принадлежат тому же кластеру. С низким разрешением лидары требуют более высокого '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