exponenta event banner

pointCloud

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

Описание

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]. Заключите каждое имя свойства в кавычки. Все неопределенные свойства имеют значения по умолчанию.

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

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

3D координационные пункты, определенные как список M-3 пунктов или множество M на Н на 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-3 массивМассив M-by-3, содержащий значения RGB для каждой точки

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

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

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

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

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

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

КоординатыИнтенсивность
M-by-3 массивM-by-1 вектор, где каждая строка содержит соответствующее значение интенсивности.
M-by-N-by-3 массивМатрица M-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];

Создайте объект-облако точек со свойством color, установленным в цветовой массив 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.

Совет

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

ptCloudB = copy(ptCloudA)

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

ptCloud = pcFunction (ptCloud)

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

..
Представлен в R2015a