文档

pcsegdist

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

描述

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

例子

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

例子

全部折叠

创建两个同心圆,并将它们组合成一个点云。

[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(“点云团”

加载一个命名为ptCloud

负载(“drivingLidarPoints.mat”pcshow(ptCloud) title(“非聚类点云”

检测地平面并将点存储在内围层.距离以米为单位。

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

聚类点,忽略地平面点。指定集群之间的最小欧氏距离为0.5米。

ptCloudWithoutGround = select(ptCloud,outliers,“OutputSize”“全部”);distThreshold = 0.5;[labels,numClusters] = pcsegdist(ptCloudWithoutGround,distThreshold);

为接地平面添加额外的标签。

numClusters = numClusters+1;labels(inliers) = numClusters;

绘制标记的结果。接地平面用黑色显示。

labelColorIndex = labels+1;pcshow(ptCloud.Location,labelColorIndex) colormap([hsv(numClusters);[0 0 0]]) title(“点云团”

输入参数

全部折叠

点云,指定为pointCloud对象。

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

数据类型:|

输出参数

全部折叠

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

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

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

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

集群数,返回为正整数。簇数不包括无效点对应的簇。

扩展功能

在R2018a中介绍