pcfitcuboid

Подходящий кубоид по облаку точек

Описание

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

пример

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

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

Примеры

свернуть все

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

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

data = load('drivingLidarPoints.mat');

Задайте и обрежьте видимую область (ROI) от облака точек. Визуализируйте выбранный 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

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

свернуть все

Модель Cuboid, возвращенная как cuboidModel объект.

Ссылки

[1] Сяо Чжан, Вэньда Сюй, Чиюй Дун и Джон М. Долан, "Эффективная L-форма, соответствующая обнаружению транспортного средства Используя лазерные сканеры", IEEE интеллектуальный симпозиум транспортных средств, июнь 2018

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

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

Смотрите также

Функции

Объекты

Введенный в R2020b