pointCloud

Объект для хранения 3-D облака точек

Описание

The pointCloud объект создает данные облака точек из набора точек в 3-D системе координат Точки обычно представляют x, y и z геометрические координаты выборок поверхности или окружения. Каждая точка также может быть представлена с дополнительной информацией, такой как цвет RGB. Данные облака точек хранятся как объект со свойствами, перечисленными в Свойствах. Используйте Функции объекта для извлечения, выбора и удаления требуемых точек из данных облака точек.

Создание

Описание

ptCloud = pointCloud(xyzPoints) возвращает объект облака точек с координатами, заданными xyzPoints.

пример

ptCloud = pointCloud(xyzPoints,Name,Value) создает pointCloud объект со свойствами, заданными как один или несколько Name,Value аргументы в виде пар. Для примера, pointCloud(xyzPoints,'Color',[0 0 0]) устанавливает Color свойство точечной xyzPoints как [0 0 0]. Заключайте каждое имя свойства в кавычки. Все неопределенные свойства имеют значения по умолчанию.

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

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

3-D координатные точки, заданные как M -by-3 список точек или M -by N -by-3 массив для организованного облака точек. Координатные точки 3-D задают x, y и z положения точки в 3-D координатном пространстве. Первые две размерности организованного облака точек соответствуют порядку сканирования с таких датчиков, как RGBD или лидар. Этот аргумент устанавливает Location свойство.

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

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

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

Облако точек, возвращаемое как pointCloud объект со свойствами, перечисленными в разделе «Свойства».

Свойства

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

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

Положение точек в координатном пространстве 3-D заданное как M -by-3 или M -by N -by-3 массив. Каждая запись задает x, y и z координаты точки в 3-D координатном пространстве. Вы не можете задать это свойство как пару "имя-значение". Используйте xyzPoints входной параметр.

  • Для неорганизованных облаков точек, Location должен быть задан как массив M -by-3, где M общее число точек в облаке точек.

  • Для организованных облаков точек, Location должен быть задан как M -by- N -by-3 массив. Три канала представляют x, y и z координаты точек. Точки, полученные от проективной камеры, такой как Kinect®или датчик лидара, сохраняются как организованное облако точек.

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

Цвет облака точек, заданный как M -by-3 или M -by N -by-3 массив. Используйте это свойство, чтобы задать цвет точек в облаке точек. Каждая запись задает цвет RGB точки в данных облака точек. Поэтому можно задать один и тот же цвет для всех точек или другой цвет для каждой точки.

  • Указанные значения RGB должны находиться в области значений [0, 1], когда вы задаете тип данных для Color как single или double.

  • Указанные значения RGB должны находиться в области значений [0, 255], когда вы задаете тип данных для Color как uint8.

КоординатыДопустимое назначение Color
M массив -by-3M массив -by-3, содержащий значения RGB для каждой точки

M массив -by- N -by-3M массив -by N -by-3, содержащий значения RGB для каждой точки

Типы данных: uint8

Нормали поверхности, заданные как M -by-3 или M -by N -by-3 массив. Используйте это свойство, чтобы задать вектор normal относительно каждой точки в облаке точек. Каждая запись в нормали поверхности задает x, y и z компонент нормального вектора.

КоординатыНормали к поверхности
M массив -by-3M массив -by-3, где каждая строка содержит соответствующий вектор нормали.
M массив -by- N -by-3M массивом <reservedrangesplaceholder0>-by-3, содержащим нормальный вектор 1 на 1 на 3 для каждой точки.

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

Интенсивность серого в каждой точке, заданная как вектор M -by-1 или M -by- N матрица. Функция преобразует каждое значение интенсивности в значение цвета в текущей палитре.

КоординатыИнтенсивность
M массив -by-3M вектор -by-1, где каждая строка содержит соответствующее значение интенсивности.
M массив -by- N -by-3M -by - N матрица, содержащая значение интенсивности для каждой точки.

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

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

Число точек в облаке точек, сохраненное в виде положительного целого числа.

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

Область значений координат вдоль оси x, сохраненный как вектор 1 на 2 .

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

Область значений координат вдоль оси y, сохраненный как вектор 1 на 2.

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

Область значений координат вдоль оси z, сохраненный как вектор 1 на 2 .

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

findNearestNeighborsНайти ближайших соседей точки в облаке точек
findNeighborsInRadiusПоиск соседей в радиусе точки в облаке точек
findPointsInROIПоиск точек в необходимую область в облаке точек
removeInvalidPointsУдаление недопустимых точек из облака точек
selectВыберите точки в облаке точек
copyСкопируйте массив указателя объектов

Примеры

свернуть все

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

load('xyzPoints');

Создайте объект облака точек из координат входной точки.

ptCloud = pointCloud(xyzPoints);

Смотрите свойства объекта облака точек.

ptCloud
ptCloud = 
  pointCloud with properties:

     Location: [5184x3 single]
        Count: 5184
      XLimits: [-3 3.4338]
      YLimits: [-2 2]
      ZLimits: [0.0016 3.1437]
        Color: []
       Normal: []
    Intensity: []

Отображение облака точек при помощи pcshow.

pcshow(ptCloud)

Figure contains an axes. The axes contains an object of type scatter.

Изменение цвета данных облака точек

Создайте цветовой массив RGB такого же размера, как и размер данных облака точек. Установите красный цвет точки.

cmatrix = ones(size(ptCloud.Location)).*[1 0 0];

Создайте объект облака точек с цветом, набором свойств к цветовому массиву RGB.

ptCloud = pointCloud(xyzPoints,'Color',cmatrix);
pcshow(ptCloud)

Figure contains an axes. The axes contains an object of type scatter.

Добавьте нормали поверхности к данным облака точек

Вычислите нормали поверхности, соответствующие данным облака точек, используя pcnormals.

normals = pcnormals(ptCloud);

Создайте объект облака точек из координат входной точки. Добавьте вычисленные нормали поверхности к объекту облака точек.

ptCloud = pointCloud(xyzPoints,'Normal',normals);

Отобразите облако точек и постройте график нормалей поверхности.

pcshow(ptCloud)
x = ptCloud.Location(:,1);
y = ptCloud.Location(:,2);
z = ptCloud.Location(:,3);
u = normals(:,1);
v = normals(:,2);
w = normals(:,3);
hold on
quiver3(x,y,z,u,v,w);
hold off

Figure contains an axes. The axes contains 2 objects of type scatter, quiver.

Совет

The pointCloud объект является handle объект. Если вы хотите создать отдельную копию облака точек, можно использовать MATLAB® copy способ.

ptCloudB = copy(ptCloudA)

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

ptCloud = pcFunction (ptCloud)

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

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

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