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

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

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

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®or датчик лидара, хранятся как организованное облако точек.

Типы данных: 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-by-N-by-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];

Создайте объект облака точек с набором свойства цвета к цветовой гамме 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