MATLAB点云处理:欧式聚类分割

Posted 没事就要敲代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB点云处理:欧式聚类分割相关的知识,希望对你有一定的参考价值。

1 欧式聚类分割函数 pcsegdist

pcsegdist — 基于欧式距离实现点云分割。

MATLAB提供了2种重载方式

labels = pcsegdist(ptCloud,minDistance)

将点云分割为多个聚类,不同聚类的点之间的最小欧几里德距离为minDistance

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

将点云分割为多个聚类,不同聚类的点之间的最小欧几里德距离为minDistance,同时返回聚类个数numClusters,要求numClusters为正整数

2 代码实现

无组织点云的欧式聚类分割

代码:

clc;
clear;

% 加载点云
ptCloud_in = pcread('trees.pcd');

% 最小聚类欧式距离
minDist = 1.0;

% 执行欧式聚类分割
[labels,numClusters] = pcsegdist(ptCloud_in,minDist);

% 显示分割结果
pcshow(ptCloud_in.Location,labels);
colormap(hsv(numClusters));
title('欧式聚类分割');
xlabel('X(m)');
ylabel('Y(m)');
zlabel('Z(m)');

结果展示:

3 输出参数 labels

labels — Cluster labels

聚类标签,作为以下内容之一返回。

  • 如果点云ptCloud将点位置存储为无组织的M×3矩阵,则标签是M×1向量。
  • 如果点云ptCloud将点位置存储为有组织的M-by-N-by-3数组,则标签是M-by-N矩阵。

点云中的每个点都有一个聚类标签,由标签中相应的元素指定。每个标签的值是一个从0到有效聚类数numClusters的整数。值0是为无效点,例如具有Inf或NaN坐标的点。


4 参考链接

https://ww2.mathworks.cn/help/vision/ref/pcsegdist.html#d123e189157

以上是关于MATLAB点云处理:欧式聚类分割的主要内容,如果未能解决你的问题,请参考以下文章

点云处理技术之PCL点云分割算法1——平面模型分割圆柱模型分割和欧式聚类提取(含欧式聚类原理)

3D,点云分割,不要割个寂寞

3D,点云分割,不要割个寂寞

基于欧式聚类的车载路面点云扫描线提取

激光点云处理--聚类(Clustering)

PCL:基于区域生长的点云分割——保存分割结果