主要内容

pointCloud

用于存储三维点云的对象

描述

pointCloud对象从三维坐标系中的一组点创建点云数据。点一般表示xy,z样品在表面或环境上的几何坐标。每个点还可以用其他信息表示,比如RGB颜色。中列出的属性将点云数据存储为对象属性.使用对象的功能从点云数据中检索、选择和删除所需的点。

创建

描述

ptCloud= pointCloud (xyzPoints返回具有指定坐标的点云对象xyzPoints

ptCloud= pointCloud (xyzPoints颜色=颜色还设置点云的颜色。

例子

ptCloud= pointCloud (___名称=值除前面的语法外,使用一个或多个名称-值参数设置属性。例如,数= 5184设置点云中的点数为5148

输入参数

全部展开

三维坐标点,指定为-by-3的点列表或——- - - - - -N-by-3数组用于有组织的点云。三维坐标点指定xy,z点在三维坐标空间中的位置。有组织的点云的前两个维度对应于RGBD或激光雷达等传感器的扫描顺序。此参数设置位置财产。

数据类型:|

点云颜色,指定为RGB值之一,颜色字符串,1 × 3向量,或3或——- - - - - -N3矩阵。——- - - - - -N指定点云的尺寸。每个条目指定点云数据中一个点的RGB颜色。因此,您可以为所有点指定相同的颜色,也可以为每个点指定不同的颜色。

  • 数据类型,颜色RGB值必须在[0,1]范围内指定。

  • uint8数据类型,颜色RGB值必须在[0,255]范围内指定。

  • uint16数据类型,颜色RGB值必须在[0,65535]范围内指定。

  • 函数存储颜色值为3或——- - - - - -N3。如果将颜色指定为字符串或1 × 3向量,则该函数将其转换为这些维度之一。

颜色 格式 例子
为所有点指定一种颜色

字符串标量或字符向量

“r”

“红色”

1×3向量

[255 0 0]1乘3网格,列分别标记为r,g,b。

为每个点指定一种颜色

字符向量的单元格数组

(“红”、“黄”“蓝”)

-by-3矩阵,作为RGB值的列表

255 0 0 255 0 0 0 255 255
m × 3网格,列分别标记为r、g、b。

——- - - - - -N-by-3矩阵是一个有组织的点云,包含每个点的RGB值,其中——- - - - - -N是点云的维数。

m × n × 3网格,3个m × n矩阵分别标记为r g b。

数据类型:uint8|uint16

输出参数

全部展开

点云,返回为apointCloud中列出的属性属性

属性

全部展开

此属性是只读的。

点在三维坐标空间中的位置,指定为3或——- - - - - -N3数组。每个条目都指定xy,z点在三维坐标空间中的坐标。的xyzPointsInput参数设置此属性。为减少内存使用,可以将点位置存储为数据类型。

  • 对于杂乱无章的点云,位置必须指定为-by-3数组,其中是总点数,和数组提供的xyz每个点的坐标。

  • 对于有组织的点云,位置必须指定为——- - - - - -N-by-3数组,其中N是总点数,和数组提供的xyz每个点的坐标。从投影相机(如Kinect)中获得的点®或者一个激光雷达传感器,都存储为一个有组织的点云。一个有组织的点云被布置成一个类似于图像结构的2-D点数组。

数据类型:|

点云的颜色,指定为3或——- - - - - -N3矩阵。——- - - - - -N指定点云的尺寸。每个条目指定点云数据中一个点的RGB颜色。属性设置此属性颜色输入参数。对象将该输入设置的颜色格式转换为-by-3或者an——- - - - - -N3矩阵。方法中的颜色输入选项表,详细说明如何设置颜色颜色输入描述。

数据类型:uint8|uint16

表面法线,指定为a3或——- - - - - -N3数组。使用此属性指定点云中每个点的法向量。曲面法线中的每一项都指定xy,z法向量的分量。

坐标 表面法线
3组 -by-3数组,其中每行包含一个对应的法向量。
——- - - - - -N3组 ——- - - - - -N-by-3数组,每个点包含一个1 × 1 × 3的法向量。

数据类型:|

每个点的灰度强度,指定为-by-1向量或——- - - - - -N矩阵。该函数将每个强度值映射到当前颜色图中的颜色值。

坐标 强度
3组 -by-1向量,其中每一行包含一个相应的强度值。
——- - - - - -N3组 ——- - - - - -N矩阵包含每个点的强度值。

数据类型:||uint8|uint16

此属性是只读的。

点云中的点数,存储为正整数。

此属性是只读的。

沿的坐标范围x-轴,存储为1 × 2向量。

此属性是只读的。

沿的坐标范围y-轴,存储为1 × 2向量。

此属性是只读的。

沿的坐标范围z-轴,存储为1 × 2向量。

对象的功能

findNearestNeighbors 在点云中寻找一个点的最近邻居
findNeighborsInRadius 在点云的一个点的半径内寻找邻居
findPointsInROI 在点云中感兴趣的区域内找到点
removeInvalidPoints 从点云中移除无效点
选择 选择点云中的点
复制 点云对象的拷贝数组

例子

全部折叠

将3-D坐标点读入工作区。

负载(“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]颜色:[]Normal:[]强度:[]

通过使用显示点云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 =法线(:,1);V = normals(:,2);W = normals(:,3);持有quiver3 (x, y, z, u, v, w);持有

提示

pointCloud对象是处理对象。如果你想创建一个单独的点云副本,你可以使用MATLAB®复制方法。

ptCloudB复制ptCloudA

如果您希望保留点云的单个副本(可以由点云函数修改),请为输入和输出使用相同的点云变量名。

ptCloudpcFunctionptCloud

扩展功能

C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。

版本历史

在R2015a中引入

全部展开