主要内容

pcsegdist

基于欧几里得距离将点云分割成簇

描述

标签= pcsegdist (ptCloudminDistance将点云分割成簇,最小的欧氏距离为minDistance不同簇的点之间。pcsegdist为点云中的每个点分配一个整数集群标签,并返回标签所有的点。

例子

标签numClusters) = pcsegdist (ptCloudminDistance也返回集群的数量。

___) = pcsegdist (___名称=值使用名称-值参数设置属性。例如,标签= pcsegdist (ptCloudminDistanceNumClusterPoints =[1,正])设置每个集群中的最小和最大点数为(1正)

例子

全部折叠

创建两个同心球体并将它们结合起来。

[X, Y, Z] =球(100);loc1 = [X (:), Y(,)、Z (:));loc2 = 2 * loc1;ptCloud = pointCloud ([loc1; loc2]);pcshow (ptCloud)标题(“点云”

图中包含一个轴对象。标题为“点云”的轴对象包含一个散点类型的对象。

设置集群之间的最小欧氏距离。

minDistance = 0.5;

分割点云。

[标签,numClusters] = pcsegdist (ptCloud minDistance);

绘制标记的结果。这些点被分成两组。

pcshow (ptCloud.Location、标签)colormap (hsv (numClusters))标题(“点云集群”

图中包含一个轴对象。标题为Point Cloud Clusters的轴对象包含一个类型为scatter的对象。

在工作区中加载一个有组织的激光雷达点云。

ld =负载(“drivingLidarPoints.mat”);

检测接地面。距离的单位是米。

maxDistance = 0.9;referenceVector = [0 0 1];[~,内围层,离群值]= pcfitplane (ld.ptCloud, maxDistance referenceVector);

拆除接地点。

ptCloudWithoutGround =选择(ld.ptCloud、异常值);

对点云进行聚类,每个聚类至少有10个点。

minDistance = 2;minPoints = 10;[标签,numClusters] = pcsegdist (ptCloudWithoutGround minDistance,“NumClusterPoints”, minPoints);

删除标号值为的点0

idxValidPoints =找到(标签);labelColorIndex =标签(idxValidPoints);segmentedPtCloud =选择(ptCloudWithoutGround idxValidPoints);

绘制标记的结果。

figure colormap(hsv(numClusters)) pcshow(segmenttedptcloud . location,labelColorIndex) title(“点云集群”

图中包含一个轴对象。标题为Point Cloud Clusters的轴对象包含一个类型为scatter的对象。

输入参数

全部折叠

点云,指定为pointCloud对象。

两个不同簇点之间的最小欧氏距离,指定为正标量。

数据类型:|

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名和价值为对应值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

例子:ParallelNeighborSearch设置ParallelNeighborSearch

每个聚类中最小和最大的点数,指定为形式为[minPointsmaxPoints].当你指定NumClusterPoints作为一个标量,集群中的最大点数是不受限制的。函数集标签0当集群超出指定范围时。

并行邻域搜索分割点云数据,指定为真正的.将此属性设置为真正的当您期望大约有50个或更多的集群,每个集群少于100个点时。

并行近邻搜索可以提高某些数据集的分割速度。改进的速度取决于数据集和值minDistance输入。

输出参数

全部折叠

集群标签,返回为以下内容之一。

  • 如果点云,ptCloud,存储点位置为无组织3矩阵,然后标签是一个1的向量。

  • 如果点云,ptCloud,商店点位置作为一个有组织的——- - - - - -N3数组,然后标签是一个——- - - - - -N矩阵。

点云中的每个点都有一个集群标签,由中的对应元素指定标签.每个标签的值是一个整数0到有效点的簇数,numClusters.的值0是保留无效积分,如积分与坐标。

集群的数量,返回为正整数。集群数不包括无效点对应的集群,不包括标签值,0,为无效分数保留。

扩展功能

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

介绍了R2018a