传统机器学习聚类的方法有很多种,并且很多都能够应用在点云上。这是由于聚类方法一般是针对于通用样本,只是样本的维度有所不同。对于三维点云来说,其样本的维度为3。这里主要介绍几种典型的方法及其实现方式,包括DBSCAN、KMeans等聚类方法,采用python open3d和skit-learn来实现。

1 DBSCAN点云聚类

DBSCAN聚类是一种基于密度的聚类算法,大体思想是根据样本点的密度和连通性,将密度满足要求且密度可达的点设置为同一类。

open3d中DBSCAN聚类方法的函数为cluster_dbscan。第一个参数eps表示DBSCAN算法确定点密度时和邻近点的距离大小,即考虑eps距离范围内的点进行密度计算。min_points表示组成一类最少需要多少个点。print_progress可以用来显示运行的进度。labels返回聚类成功的类别,-1表示没有分到任何类中的点,原始点云中每个点都会分别得到一个类别标签。

labels=pcd.cluster_dbscan(eps, min_points, print_progress=False)
#labels返回聚类成功的类别,-1表示没有分到任何类中的点

2 python open3d程序

pcd文件请参考:pcd格式点云样例文件-深度学习文档类资源-CSDN下载。

# -*- coding: utf-8 -*-
"""
乐乐感知学堂公众号
@author: https://blog.csdn.net/suiyingy
"""import open3d as o3d
import numpy as npif __name__ == '__main__':file_path = 'rabbit.pcd'pcd = o3d.io.read_point_cloud(file_path)pcd.paint_uniform_color([0.5, 0.5, 0.5])#指定显示为灰色print(pcd)#labels返回聚类成功的类别,-1表示没有分到任何类中的点labels = np.array(pcd.cluster_dbscan(eps=0.25, min_points=16, print_progress=True))#最大值相当于共有多少个类别max_label = np.max(labels)print(max(labels))#生成n+1个类别的颜色,n表示聚类成功的类别,1表示没有分类成功的类别colors = np.random.randint(255, size=(max_label+1, 3))/255.colors = colors[labels]#没有分类成功的点设置为黑色colors[labels < 0] = 0 pcd.colors = o3d.utility.Vector3dVector(colors[:, :3])# 点云显示o3d.visualization.draw_geometries([pcd], #点云列表window_name="DBSCAN聚类",point_show_normal=False,width=800,  # 窗口宽度height=600)  # 窗口高度

3 DBSCAN效果

labels返回聚类成功的类别,-1表示没有分到任何类中的点,最大值相当于共有多少个类别。

python三维点云从基础到深度学习_Coding的叶子的博客-CSDN博客_3d点云 python从三维基础知识到深度学习,将按照以下目录持续进行更新。https://blog.csdn.net/suiyingy/article/details/124017716

八种点云聚类方法(一)— DBSCAN相关推荐

  1. 八种点云聚类方法(二)— KMeans

    传统机器学习聚类的方法有很多种,并且很多都能够应用在点云上.这是由于聚类方法一般是针对于通用样本,只是样本的维度有所不同.对于三维点云来说,其样本的维度为3.这里主要介绍几种典型的方法及其实现方式,包 ...

  2. 八种点云聚类方法(三)

    本文为博主原创文章,未经博主允许不得转载. 本文为专栏<python三维点云从基础到深度学习>系列文章,地址为"https://blog.csdn.net/suiyingy/ar ...

  3. 综述:激光雷达全景分割的传统点云聚类方法的技术总结

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨paopaoslam 来源丨泡泡机器人SLAM 标题:A Technical Survey an ...

  4. 点云处理需要多大的计算机,一种点云数据处理方法、装置、计算机设备和存储介质与流程...

    技术特征: 1.一种点云数据处理方法,其特征在于,包括: 获取雷达采集的点云数据.预设的量化精度以及初始量化比特位数: 基于所述量化精度和所述初始量化比特位数,确定目标量化比特位数:所述目标量化比特位 ...

  5. 聚类方法:DBSCAN算法研究

    DBSCAN聚类算法三部分: 1.        DBSCAN原理.流程.参数设置.优缺点以及算法: http://blog.csdn.net/zhouxianen1987/article/detai ...

  6. 聚类方法:DBSCAN算法研究(1)--DBSCAN原理、流程、参数设置、优缺点以及算法

    DBSCAN聚类算法三部分: 1.        DBSCAN原理.流程.参数设置.优缺点以及算法: http://blog.csdn.net/zhouxianen1987/article/detai ...

  7. windows7没pdf打印机_公司中常见的八种打印机故障解决方法

    前面我们学习了打印机共享的基础知识.怎么共享打印机,可是在使用过程中却发现经常会出现无法打印的情况,这是什么原因导致的了,来跟我一起了解下公司中八种常见的打印机无法打印的故障现像与处理方法吧,这是在公 ...

  8. selenium第三课(selenium八种定位页面元素方法)

    selenium webdriver进行元素定位时,通过seleniumAPI官方介绍,获取页面元素的方式一共有以下八种方式,现按照常用→不常用的顺序分别介绍一下. 官方api地址:https://s ...

  9. 聚类方法:DBSCAN算法研究(2)--matlab代码实现

    DBSCAN聚类算法三部分: 1.        DBSCAN原理.流程.参数设置.优缺点以及算法: http://blog.csdn.net/zhouxianen1987/article/detai ...

  10. 两种点云分割(一)— RANSAC分割平面

    点云分割的目的是将点云中属于不同部分的点加以区分.最直接的点云分割方法就是聚类,八种点云聚类方法(一)- DBSCAN_Coding的叶子的博客-CSDN博客这个在前面几节之中已经进行了详细介绍.本节 ...

最新文章

  1. 在Windows 2003 64位下ASP无法连接Access数据库的解决办法
  2. 你需要了解的 C++ 17 Top 19 新特性(附精彩评论)
  3. 关于方法论的对话之二敏捷与方法论
  4. OpenCV中的神器Image Watch
  5. 跟随美国博导12年,我学到最深刻的不是科研,而是这个。。。
  6. 基于注意力机制的seq2seq网络
  7. Python的类成员函数、静态函数和成员的函数的比较
  8. android 长截图拼接,Android拼接合并图片生成长图
  9. 关关采集器规则编写教程(最详细的教程)
  10. 绕过卡巴斯基dump进程lsass.exe内存
  11. 谈谈我们熟悉但未必了解的磁带库
  12. bios修改服务器密码是什么,怎么修改BIOS的通用密码
  13. 【Python打卡2019】20190421之52周存钱挑战
  14. django2.1.7从0开始搭建一个个人博客网站第5天
  15. 2021-02-15:给定一个整型数组arr,代表数值不同的纸牌排成一条线。玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿。但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪
  16. 使用路由守卫来写登录效果
  17. 从零开始的Java笔记01
  18. Python中numpy库中 axis=0,axis= 1轴的详解
  19. minio分布式解决方案
  20. django入门(超详细)

热门文章

  1. List<实体>转json
  2. kali下一键破解wifi密码
  3. html新的页面打开新页面,javascript如何打开新窗口?
  4. 包头市计算机一级考试培训机构,2021上半年内蒙古自治区包头市计算机等级考试时间...
  5. Java开源框架Netty
  6. 正确使用ViewStub
  7. 【GIS】GIS矢量空间分析(上)
  8. 最新华为悦盒V9_V9U_V9E_V9A_V8通用傻瓜式破解
  9. 汉字转换拼音及首字母
  10. MarkdownPad-显示Awesomium 已停止工作,This view has carshed!错误