PCSEGDIST.

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

描述

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

例子

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

例子

全部折叠

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

[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))标题(“点云集群”

加载一个有组织的激光雷达点云ptCloud

负载(“drivingLidarPoints.mat”) pcshow (ptCloud)标题(“未聚集的点云”

检测接地面并存储点内围层.距离的单位是米。

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

聚集点,忽略地面平面点。在簇之间指定最小欧几里德距离为0.5米。

ptcloudwithoutground = select(ptcloud,异常值,“OutputSize”'满的');Distthreshold = 0.5;[标签,numflusters] = pcsegdist(ptcloudwithoutground,distthreshold);

请为接地点添加附加标签。

numClusters = numClusters + 1;标签(窗)= numClusters;

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

LabelColorIndex =标签+ 1;pcshow(ptcloud.location,labelcolorIndex)Colormap([HSV(Numflusters); [0 0 0]])标题(“点云集群”

输入参数

全部折叠

点云,指定为apointCloud目的。

来自两个不同群集的点之间的最小欧几里德距离,指定为正标量。

数据类型:|

输出参数

全部折叠

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

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

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

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

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

扩展功能

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

介绍了R2018a