DBSCAN聚类算法,是基于密度的聚类算法。该算法需要两个参数。

labels = np.array(pcd.cluster_dbscan(eps=0.02, min_points=10, print_progress=True))


入参:

  • eps: 定义到聚类邻居的距离
  • min_points: 定义形成聚类所需的最小点数。

出参:

  • 该函数返回一个标签,其中标签-1表示噪音。

该算法定义以选中的点开始蔓延,邻居点距离<=0.02米,最小有10个点就可以构成一个簇;适用于原始点云分隔的比较开的,有明显界限的点云。

原始点云被分成了10个聚簇,每个聚簇不同的颜色,只有3个聚簇的点数比较巨大,明显一些。另外右边角落有一块比较小的片段。

官方例子算法效果:

输出:

Format = auto
Extension = ply
geometry::PointCloud with 196133 points.
[Open3D DEBUG] Precompute Neighbours
[Open3D DEBUG] Done Precompute Neighbours
[Open3D DEBUG] Compute Clusters
Precompute Neighbours[========================================] 100%
[Open3D DEBUG] Done Compute Clusters: 10
point cloud has 10 clusters

源代码:

# <DBSCAN聚类算法,是基于密度的聚类算法。>
# 该算法需要两个参数。
# -eps: 定义到聚类邻居的距离
# -min_points: 定义形成聚类所需的最小点数。
# 该函数返回一个标签,其中标签-1表示噪音。>import open3d as o3d
import matplotlib.pyplot as plt
import numpy as nppath =  "../pcds/fragment.ply"
print(path)pcd = o3d.io.read_point_cloud(path)
print(pcd)# 定义以选中的点开始蔓延,邻居点距离0.02米的,最小有10个点,可以构成一个簇;适用于点云分隔的比较开的,一块一块的点云。
with o3d.utility.VerbosityContextManager(o3d.utility.VerbosityLevel.Debug) as cm:labels = np.array(pcd.cluster_dbscan(eps=0.02, min_points=10, print_progress=True))max_label = labels.max()
print(f"point cloud has {max_label + 1} clusters")
colors = plt.get_cmap("tab20")(labels / (max_label if max_label > 0 else 1))colors[labels < 0] = 0
pcd.colors = o3d.utility.Vector3dVector(colors[:, :3])
o3d.visualization.draw_geometries([pcd], "Open3D dbscanclusting")

参考:

http://www.open3d.org/docs/release/tutorial/Basic/pointcloud.html#Access-estimated-vertex-normal

Open3D DbScanClustering聚类算法相关推荐

  1. 机器学习-无监督学习-聚类:聚类方法(二)--- 基于密度的聚类算法【DBSCAN文本聚类算法,密度最大值文本聚类算法】

    密度聚类方法的指导思想是,只要样本点的密度大于某阀值,则将该样本添加到最近的簇中. 基于密度的聚类算法假设聚类结构能够通过样本分布的紧密程度确定,以数据集在空间分布上的稠密程度为依据进行聚类,即只要一 ...

  2. K-means 方法实现3D点云的聚类算法

    K-means 方法实现3D点云的聚类算法 import numpy as np import open3d as o3d import copy import random from matplot ...

  3. 最小化局部边际的合并聚类算法(中篇)

    作者:钱烽 三.合并聚类算法 基于定义2所提出的相似度定义,我们在图2中给出最小化局部边际的合并聚类算法详细执行过程.首先,针对数据集中可能存在的噪声数据,我们对所有样本点进行孤立点检测.然后,作为A ...

  4. java iris_利用K-Means聚类算法实现对iris.data.ulab

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 利用K-Means聚类算法实现对iris.data.ulabel数据的聚类,这是在网上找到如果要换成我的iris.date iris.date.ulabl ...

  5. 机器学习中的聚类算法(1):k-means算法

    一文详解激光点云的物体聚类:https://mp.weixin.qq.com/s/FmMJn2qjtylUMRGrD5telw 引言: Q:什么是聚类算法? 现在我们在做的深度学习当中,比如图像的识别 ...

  6. 基于梯度方向、极化变换和聚类算法的图像主特征直线检测

    基于梯度方向.极化变换和聚类算法的图像主特征直线检测 基于机器学习和图像处理的直线检测 代码主要思路: 1)借助类LSD直线检测,提取图像各个方向梯度:2)对像素中的各个梯度方向做极化变换:3)对计划 ...

  7. 【点云论文速读】点云分层聚类算法

    点云PCL免费知识星球,点云论文速读. 标题:PAIRWISE LINKAGE FOR POINT CLOUD SEGMENTATION 作者:Lu, Xiaohu and Yao, Jian and ...

  8. K-Means聚类算法原理

    来自:https://www.cnblogs.com/pinard/p/6164214.html K-Means算法是无监督聚类算法,它有很多变体.包括初始化优化K-Means++,距离计算优化elk ...

  9. 关于机器学习中山峰聚类算法的说明

    前言 在之前关于聚类算法的文章中,笔者主要涉及的内容均是和参数求解相关的,如C均值(包括模糊C均值).混合高斯模型等,而对于一些无参数密度估计的算法尚未讨论,而且一般基于参数密度估计的算法均是建立在假 ...

最新文章

  1. 在ElasticSearch之下(图解搜索的故事)
  2. (49)逆向分析KiSystemService/KiFastCallEntry调用内核函数部分(SST,SSDT,SSPT)
  3. excel打开后灰色不显示内容_Excel二维表转换,一分钟就够
  4. artcore html5,值得收藏的25款免费响应式网页模板_CSS_网页制作
  5. java sql merge_sql merge用法
  6. java ssm框架做增删改查,使用SSM框架组合实现增删改查的功能
  7. LeetCode: Substring with Concatenation of All Words
  8. 清晰的史密斯圆图 wiki上的
  9. Exploring and Distilling Posterior and Prior Knowledge for Radiology Report Generation
  10. 缅甸文字库 缅甸语字库 缅甸字库算法
  11. python中exchange函数使用_Python下使用rabbitmq之exchange属性
  12. 用Python爬取网页数据,手把手教会你!
  13. sap服务器之间文件复制,sap跨服务器客户端复制
  14. VScode 直接运行ts文件
  15. ps4 虚拟服务器 设置,谁说PS VR只能适配PS4主机? 大神来教你完美认证PC
  16. sql server 全文检索 使用
  17. 解决nvme m2硬盘睡眠/休眠掉盘问题
  18. 短视频发展高峰论坛召开 爱奇艺号开放打通短视频创作、分发、货币化中枢
  19. 从零开始学习CANoe(十九)—— Diagnostics
  20. AndroidWear官方文档总结05 - 手持设备与穿戴设备的通知同步

热门文章

  1. 【CV】吴恩达机器学习课程笔记 | 第1-15章
  2. mysql navicat导入bcp_SQL Server中BCP导入导出用法详解
  3. RecyclerView 刷新的时候出现阴影的处理方法
  4. android setAlpha 与 getBackground().setAlpha
  5. Android switchCompat. 和 Switch
  6. go系列(5)- beego自己写controller
  7. Django --ORM常用的字段和参数 多对多创建形式
  8. Linux安全基础:shell及一些基础命令
  9. Xcode中如何解决无法使用svn命令行的问题
  10. Expect 教程中文版