pcfitcuboid

Подгонка кубоида по облаку точек

Описание

model = pcfitcuboid(ptCloudIn) подходит для кубоида над входными данными облака точек. Функция сохраняет свойства кубоида в cuboidModel объект, model.

пример

model = pcfitcuboid(ptCloudIn,indices) подходит к кубоиду по выбранному набору точек, indices, во входном облаке точек.

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

Примеры

свернуть все

Подгонка кубоидных ограничивающих рамок вокруг кластеров в облаке точек.

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

data = load('drivingLidarPoints.mat');

Задайте и обрезайте видимую область (ROI) из облака точек. Визуализируйте выбранный информация только для чтения облака точек.

roi = [-40 40 -6 9 -2 1];
in = findPointsInROI(data.ptCloud,roi);
ptCloudIn = select(data.ptCloud,in);
hcluster = figure;
panel = uipanel('Parent',hcluster,'BackgroundColor',[0 0 0]);
ax = axes('Parent',panel,'Color',[0 0 0]); 
pcshow(ptCloudIn,'MarkerSize',30,'Parent',ax)
title('Input Point Cloud')

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

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

maxDistance = 0.3;
referenceVector = [0 0 1];
[~,inliers,outliers] = pcfitplane(ptCloudIn,maxDistance,referenceVector);
ptCloudWithoutGround = select(ptCloudIn,outliers,'OutputSize','full');
hSegment = figure;
panel = uipanel('Parent',hSegment,'BackgroundColor',[0 0 0]);
ax = axes('Parent',panel,'Color',[0 0 0]); 
pcshowpair(ptCloudIn,ptCloudWithoutGround,'Parent',ax)
legend('Ground Region','Non-Ground Region','TextColor', [1 1 1])
title('Segmented Ground Plane')

Figure contains an axes and an object of type uipanel. The axes with title Segmented Ground Plane contains 2 objects of type scatter. These objects represent Ground Region, Non-Ground Region.

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

distThreshold = 1;
[labels,numClusters] = pcsegdist(ptCloudWithoutGround,distThreshold);
labelColorIndex = labels;
hCuboid = figure;
panel = uipanel('Parent',hCuboid,'BackgroundColor',[0 0 0]);
ax = axes('Parent',panel,'Color',[0 0 0]); 
pcshow(ptCloudIn.Location,labelColorIndex,'Parent',ax)
title('Fitting Bounding Boxes')
hold on

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

for i = 1:numClusters
    idx = find(labels == i);
    model = pcfitcuboid(ptCloudWithoutGround,idx);
    plot(model)
end

Figure contains an axes and an object of type uipanel. The axes with title Fitting Bounding Boxes contains 4 objects of type scatter, patch.

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

свернуть все

Облако точек, заданное как pointCloud объект.

Индексы выбранных допустимых точек, заданные как вектор положительных целых чисел.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

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

Пример: 'AzimuthRange',[25 75] устанавливает угловую область значений для азимутальных углов функции.

Область значений углов азимута, над которыми можно идентифицировать ориентацию кубоида, заданный как разделенная запятыми пара, состоящая из 'AzimuthRange' и двухэлементный вектор-строка вещественных значений в область значений [0, 90].

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

Размер шага окна поиска, заданный как разделенная разделенными запятой парами, состоящая из 'Resolution' и положительная скалярная величина. Заданное значение должно быть меньше или равно расстоянию между верхней и нижней границами области значений углов азимута. Для примера, если область значений углов азимута [0, 90], заданное значение должно быть меньше или равным 90.

Примечание

Уменьшение разрешения увеличит время расчета и объем памяти.

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

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

свернуть все

Кубоидная модель, возвращенная как cuboidModel объект.

Ссылки

[1] Xiao Zhang, Wenda Xu, Chiyu Dong и John M. Dolan, «Effective L-Shape Fitting for Vehicle Detection Using Laser Scanners», IEEE Intelligent Vehicles Symposium, июнь 2018

Расширенные возможности

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.

См. также

Функции

Объекты

Введенный в R2020b