pcfitcuboid

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

Описание

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

пример

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

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

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

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')

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

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

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

свернуть все

Облако точек в виде pointCloud объект.

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

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

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

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

Пример: 'AzimuthRange',[-75 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