cuboidModel

Параметрическая кубоидная модель

Описание

The cuboidModel объект хранит параметры параметрической кубоидной модели. После создания cuboidModel объект, можно извлечь кубоидные угловые точки и точки внутри кубоида с помощью функций объекта. Кубоидные модели используются для хранения выходных данных pcfitcuboid функция. Это функция подбора кривой формы, которая подходит для кубоида над облаком точек.

Создание

Описание

пример

model = cuboidModel(params) создает параметрическую кубоидную модель из входного вектора 1 на 9, params.

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

пример

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

Для получения дополнительной информации о том, как использовать эту функцию, посетите pcfitcuboid страница с описанием функции.

Свойства

расширить все

Это свойство доступно только для чтения.

Параметры модели Cuboid, сохраненные как вектор - строка с девятью элементами формы [x центр y центр z гниль центра <reservedrangesplaceholder5> len <reservedrangesplaceholder4> len <reservedrangesplaceholder3> len <reservedrangesplaceholder2> y гниль z гниль].

  • x ctr, y ctr и z ctr определяют центр кубоида.

  • x len, y len и z len определяют длину кубоида вдоль оси x -, y - и z - соответственно до применения вращения.

  • x гниль, y гниль и z гниль определяют углы поворота кубоида вдоль оси x -, y - и z - соответственно. Эти углы являются положительными по часовой стрелке при взгляде в прямом направлении их соответствующих осей.

Рисунок показывает, как эти значения определяют положение кубоида.

Эти параметры заданы params входной параметр.

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

Это свойство доступно только для чтения.

Центр кубоида, сохраненный как трехэлементный вектор-строка вида [x ctr y ctr z ctr]. Вектор содержит 3-D координаты кубоидного центра в x -, y - и z - оси, соответственно.

Это свойство определяется из Parameters свойство.

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

Это свойство доступно только для чтения.

Размерности кубоида, сохраненные как трехэлементный вектор-строка вида [x len y len z len]. Вектор содержит длину кубоида вдоль оси x -, y - и z - соответственно.

Это свойство определяется из Paramareters свойство.

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

Это свойство доступно только для чтения.

Ориентация кубоида, сохраненная как трехэлементный вектор-строка вида [x rot y rot z rot], в степенях. Вектор содержит вращение кубоида вдоль оси x -, y - и z - соответственно.

Это свойство определяется из Paramareters свойство.

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

Функции объекта

getCornerPointsПолучите угловые точки кубоидной модели
findPointsInsideCuboidНайти точки, заключенные в кубоидную модель
plotПостройте кубоидную модель

Примеры

свернуть все

Обнаружение кубоида в облаке точек с помощью pcfitcuboid функция. Функция сохраняет кубоидные параметры как cuboidModel объект.

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

ptCloud = pcread('highwayScene.pcd');

Поиск облака точек в пределах заданной видимой области (ROI). Создайте облако точек только для обнаруженных точек.

roi = [-30 30 -20 30 -8 13];
in = findPointsInROI(ptCloud,roi);
ptCloudIn = select(ptCloud,in);

Постройте график облака точек обнаруженных точек.

   figure
   pcshow(ptCloudIn.Location)
   xlabel('X(m)')
   ylabel('Y(m)')
   zlabel('Z(m)')
   title('Detected Points in ROI')

Найдите индексы точек в заданном информация только для чтения в облаке точек.

roi = [9.6 13.8 7.9 9.3 -2.5 3];
sampleIndices = findPointsInROI(ptCloudIn,roi);

Подбор кубоида к выбранному набору точек в облаке точек.

 model = pcfitcuboid(ptCloudIn,sampleIndices);
  figure
  pcshow(ptCloudIn.Location)
  xlabel('X(m)')
  ylabel('Y(m)')
  zlabel('Z(m)')
  title('Detect a Cuboid in a Point Cloud')

Постройте график кубоидного прямоугольника в облаке точек.

hold on
plot(model)

Отображение внутренних свойств cuboidModel объект.

model
model = 
  cuboidModel with properties:

     Parameters: [11.4873 8.5997 -1.6138 3.6713 1.3220 1.7576 0 0 0.9999]
         Center: [11.4873 8.5997 -1.6138]
     Dimensions: [3.6713 1.3220 1.7576]
    Orientation: [0 0 0.9999]

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

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

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.

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

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

.
Введенный в R2020b