pointCloud

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

Описание

Объект pointCloud создает данные об облаке точек из набора точек в 3-D системе координат. Данные об облаке точек хранятся как объект со свойствами, перечисленными в Свойствах. Используйте Функции объекта, чтобы получить, выбрать и удалить желаемые точки из данных об облаке точек.

Создание

Синтаксис

ptCloud = pointCloud(xyzPoints)
ptCloud = pointCloud(xyzPoints,Name,Value)

Описание

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 координатном пространстве. Этот аргумент устанавливает свойство Location.

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

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

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

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

Свойства

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

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

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

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

Цвет облака точек, заданный как 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

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

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

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

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

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

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

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

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

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

findNearestNeighborsНайдите самых близких соседей точки в облаке точек
findNeighborsInRadiusНайдите соседей в радиусе точки в облаке точек
findPointsInROIНайдите точки в видимой области в облаке точек
removeInvalidPointsУдалите недопустимые точки из облака точек
selectВыберите точки в облаке точек

Примеры

свернуть все

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

load('xyzPoints');

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

ptCloud = pointCloud(xyzPoints);

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

ptCloud
ptCloud = 
  pointCloud with properties:

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

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

pcshow(ptCloud)

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

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

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

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

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

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

Вычислите поверхностные нормали, соответствующие данным об облаке точек с помощью 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

Советы

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

ptCloudB = copy (ptCloudA)

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

ptCloud = pcFunction (ptCloud)

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

Представленный в R2015a