cuboidModel

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

Описание

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

Создание

Описание

пример

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

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

пример

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

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

Свойства

развернуть все

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

Параметры модели кубоида, сохраненные как вектор-строка с девятью элементами из формы [центр x центр y центр z x len y len z len гниль x гниль y гниль z].

  • Центр x, центр y и центр z задают центр кубоида.

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

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

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

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

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

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

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

Это свойство выведено из Parameters свойство.

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

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

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

Это свойство выведено из Paramareters свойство.

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

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

Ориентация кубоида, сохраненного как трехэлементный вектор-строка из формы, [гниль x гниль y гниль z], в градусах. Вектор содержит вращение кубоида вдоль 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 в облаке точек.

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 облака точек.

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

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

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

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

Функции

Объекты

Введенный в R2020b