主要内容

pcsegdist

基于欧氏距离将点云分割成簇

描述

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

例子

标签,numClusters= pcsegdist(ptCloud,minDistance还返回集群的数量。

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

例子

全部折叠

创建两个同心球体,并结合它们。

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

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

minDistance = 0.5;

分割点云。

[labels,numClusters] = pcsegdist(ptCloud,minDistance);

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

pcshow(ptCloud.Location,labels) colormap(hsv(numClusters)) title(“点云团”

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

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

检测地平面。距离以米为单位。

maxDistance = 0.9;referenceVector = [0 0 1];[~,inliers,outliers] = pcfitplane(ld.ptCloud,maxDistance,referenceVector);

移除地平面点。

ptCloudWithoutGround = select(ld.ptCloud,outliers);

集群点云,每个集群至少有10个点。

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

删除标签值为的点0

idxValidPoints = find(labels);labelColorIndex =标签(idxValidPoints);segmentedPtCloud = select(ptCloudWithoutGround,idxValidPoints);

绘制标记结果。

figure colormap(hsv(numClusters)) pcshow(segmentedPtCloud.Location,labelColorIndex) title(“点云团”

输入参数

全部折叠

点云,指定为apointCloud对象。

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

数据类型:|

名称-值参数

例子:ParallelNeighborSearch设置ParallelNeighborSearch

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

每个簇中的最小和最大点数,指定为一个标量或形式为[的2元素向量]minPoints,maxPoints].当你指定NumClusterPoints作为一个标量,群集中的最大点数是不受限制的。函数集标签0当集群不在指定范围时。

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

并行邻居搜索可以提高一些数据集的分割速度。属性的值决定了改进的速度minDistance输入。

输出参数

全部折叠

集群标签,作为下列之一返回。

  • 如果点云,ptCloud,门店点位为无组织那么是-by-3矩阵标签是一个1的向量。

  • 如果点云,ptCloud,门店点位置作为一个有组织的——- - - - - -N那么是-by-3矩阵标签是一个——- - - - - -N矩阵。

点云中的每个点都有一个簇标签,由中对应的元素指定标签.每个标签的值是一个整数0到有效点簇的数量,numClusters.的值0为无效的点保留,例如带坐标。

数据类型:uint32

集群数,以正整数形式返回。集群数不包括标签值0,这是为无效点保留的。函数返回numClusters作为一个的值时的数据类型位置的属性ptCloud对象是.否则,函数返回值为a数据类型。

数据类型:|

扩展功能

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

版本历史

在R2018a中引入