Python实现点云Kmeans、欧式和DBSCAN聚类

        本节我们分享点云处理中的三种常见聚类方法,分别是K-means、欧氏与 DBSCAN聚类。具体介绍如下:

1. K-means 聚类

        定义:一种基于距离度量的无监督学习算法,将数据划分为 K 个紧凑的簇,使簇内数据相似度高、簇间差异大。

        算法流程
1)初始化:随机选取 K 个点作为初始质心。
2)分配:计算每个样本到质心的欧氏距离,将其归入最近簇。
3)更新:重新计算各簇的质心(簇内样本的均值)。
4)迭代:重复步骤 2-3,直至质心不变或达到最大迭代次数。

        特点:计算高效、收敛快,但对初始质心敏感,仅适用于凸形簇。

        典型应用:图像分割、客户分群、模式识别。

2. 欧氏聚类(基于欧氏距离的密度聚类)

        定义:通过欧氏距离阈值(eps)和最小邻居数(min_points)分割点云数据,识别密集区域。

        算法流程
1)初始化:所有点标记为未访问。
2)扩展簇:
- 任选未访问点,检索其 eps 邻域内的所有点(含自身)。
- 若邻居数 ≥ min_points,则标记为新簇,并递归检查邻居的邻居。
3)终止:所有点被访问后,孤立点(邻居数 < min_points)标记为噪声。

        特点:无需预设簇数,可识别任意形状簇,但对参数(eps、min_points)敏感。

        典型应用
三维点云分割:如建筑扫描中分离房间或自动驾驶中区分车辆/行人。
噪声过滤:剔除孤立点或小簇,提升数据质量。

3. DBSCAN 聚类(Density-Based Spatial Clustering of Applications with Noise)

        定义:基于密度的聚类算法,可发现任意形状簇并自动标记噪声。

        核心概念
1)核心点:某点的 ε 邻域内至少包含 min_points个点。
2)密度直达:若点 q 在核心点 p 的 ε 邻域内,则 q 从 p 密度直达。
3)密度可达:若存在点链使相邻点满足密度直达关系,则链首尾两点密度可达。
4)聚类形成:从任一核心点出发,递归合并所有密度可达的点,形成簇。
5)噪声点:未被任何簇包含的点。

        特点:抗噪声、无需预设簇数,但对高维数据性能下降。

总结对比

算法核心思想形状适应性噪声处理参数需求
K-means距离优化(质心迭代)凸形簇需预设簇数 K
欧氏聚类密度阈值(eps + min_points)任意形状标记噪声需调参 eps/min_points
DBSCAN密度可达性任意形状自动识别噪声需调参 ε/min_points

本次使用的数据依然是我们的兔砸!!!!!!!!(破音)

一、Kmeans、欧式和DBSCAN聚类程序

from moviepy.editor import VideoFileClip
import os
import math
import subprocessdef mp4_to_gif(src_file, target_file):# 使用VideoFileClip加载MP4文件video_clip = VideoFileClip(src_file)# 调整视频的尺寸,如果需要的话video_size_w = math.ceil(video_clip.size[0] / 0.9)video_size_h = math.ceil(video_clip.size[1] / 0.9)video_clip = video_clip.resize((video_size_w, video_size_h))# 将视频转换为GIFvideo_clip.write_gif(target_file, fps=10)  # 设置帧率,可以根据需要调整# 关闭视频剪辑对象video_clip.close()def shrink_gif(file):# subprocess.run(["D:/gifsicle/gifsicle.exe", "-b", "-O2", "--lossy=40", "--colors=256", file])subprocess.run(["D:/gif_ya_suo/gifsicle-1.95-win64/gifsicle.exe","-b", "-O2", "--lossy=40","--colors=256", file])# video_path = 'E:/CSDN/视频/1_点云读写/随机颜色_1.mp4'
# target_folder = 'E:/CSDN/视频/1_点云读写/随机颜色_1.gif'original_folder = 'E:/CSDN/视频/23_Kmeans+ou+DBSCAN聚类/1'
target_folder = original_folder
for filename in os.listdir(original_folder):# 检查文件名是否包含旧字符串if '.mp4' in filename:src_filepath = os.path.join(original_folder, filename)target_filepath = os.path.join(target_folder, filename.replace('mp4', 'gif'))print(src_filepath)mp4_to_gif(src_filepath, target_filepath)  # 将mp4转为gifshrink_gif(target_filepath)  # 压缩gif# break
print("All files done.")

        记得运行上述程序是需要安装库的哦,不是程序里面的sklearn,是scikit-learn。不知道怎么安装的同学可以看往期的分享,这里就不着重说了。

pip install scikit-learn

二、Kmeans、欧式和DBSCAN聚类结果

        从结果来看,三个兔砸可以正常的分割。换其他点云的时候记得调节参数啊,前面表格里有详细的说明。就酱,下次见^-^

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93554.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93554.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java后端】MyBatis-Plus 原理解析

MyBatis-Plus 原理解析 其实 MyBatis-Plus 的 Service 层设计就是为了让开发者不用重复写很多样板代码。我们来一点点剖析 UserServiceImpl、IService、UserService、ServiceImpl 之间的关系和调用链。1. 类/接口关系图IService<T>▲│UserService (接口) <-- 自定义…

Nacos 注册中心学习笔记

&#x1f389; Alibaba微服务组件 Nacos 注册中心超详细学习笔记 &#x1f389; &#x1f4cc; 写在前面&#xff1a;本文基于官方PDF文档与实战经验&#xff0c;整理了Nacos注册中心的核心知识点、部署流程与实战技巧&#xff0c;力求图文并茂、通俗易懂&#xff0c;适合收藏反…

java 策略模式 demo

策略模式介绍策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一系列算法&#xff0c;将每个算法封装起来并使它们可相互替换。策略模式让算法的变化独立于使用算法的客户端&#xff0c;从而实现灵活的算法切换。核心角色&#xff1…

SAP Valuation Category在制造业成本核算中的使用场景与配置方案

Valuation Category在制造业成本核算中的使用场景与配置方案一、核心使用场景&#xff08;制造业特有&#xff09;1. 内制 vs 外购成本分离业务需求&#xff1a;同一物料可能通过内部生产&#xff08;成本含料工费&#xff09;或外部采购&#xff08;成本含采购价运费&#xff…

我的 LeetCode 日记:Day 36 - 动态规划,背包问题的千变万化

昨天&#xff0c;我初步掌握了 0/1 背包问题的理论基础和标准解法。今天&#xff0c;我将这种思想应用到了更广泛的场景中。今天的几道题&#xff0c;乍一看和背包没什么关系&#xff0c;但通过巧妙的数学转化&#xff0c;它们的核心都变成了 0/1 背包问题。 这让我深刻体会到…

本地处理不上传!隐私安全的PDF转换解决方案

PDF能锁定排版、字体、图片位置&#xff0c;无论在什么设备打开都保持一致。它是无广告、简洁高效的专业PDF处理工具。功能丰富&#xff0c;支持批量操作&#xff1a;只需将文件拖入界面&#xff0c;选择目标格式&#xff08;如Word、PPT、Excel、图片等&#xff09;&#xff0…

Docker build创建镜像命令入门教程

一、核心概念Dockerfile 定义镜像构建步骤的文本文件&#xff0c;包含一系列指令和配置&#xff0c;用于自动化创建镜像。镜像层&#xff08;Layer&#xff09; Docker 镜像由多层只读层叠加而成&#xff0c;每个指令&#xff08;如 RUN、COPY&#xff09;会生成一个新的层。层…

Redis 是单线程模型吗?

最近在面试中经常被问到这个问题&#xff1a;"Redis是单线程的吗&#xff1f;"很多同学都会脱口而出&#xff1a;"是的&#xff01;"但其实这个答案并不完全正确。今天我们就来聊聊Redis的线程模型&#xff0c;把这个问题彻底搞清楚。 先说结论 Redis的线程…

Hologres实战:路径分析函数

前言 Hologres提供了一套高效的路径分析函数&#xff0c;包括路径明细计算和结果解析功能&#xff0c;能够帮助用户深入理解用户行为路径&#xff0c;并通过桑基图实现数据可视化。 一、核心功能 路径明细计算&#xff1a;精确记录用户在产品或功能中的完整访问路径结果解析…

产品开发实践(常见的软硬结合方式)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】前面说过&#xff0c;传统的纯软件开发&#xff0c;在国内的大背景下面是很难存活的。但是如果是把软件&#xff0c;构建在硬件基础之上&#xff0c…

Linux | i.MX6ULL网络通信-套字节 UDP(第十八章)

01 Linux | i.MX6ULL网络通信-套字节 TCP(第十七章) 02 iTOP-IMX6ULL 实现基于 UDP 的 socket 编程。

学习嵌入式第三十天

文章目录进程和线程&#xff08;续&#xff09;线程1.线程传参2.线程属性3.线程间通信1.概念2.方式3.互斥锁4.死锁5.信号量习题 进程和线程&#xff08;续&#xff09; 线程 1.线程传参使用第四个参数实现对线程内部的传参 代码实现&#xff1a; #include <stdio.h> #inc…

GaussDB 数据库架构师修炼(十三)安全管理(3)-行级访问控制

1 背景行级访问控制特性将数据库的访问控制精确到数据表行级别 &#xff0c;只允许用户查看 、更新或删除特定的行数据。2 实例场景实例以医生只能看到治疗的病人&#xff0c;不能看其它医生的病人为例&#xff1a;1)医院病人的信息表pat_info&#xff1a;csdn> set search_…

Wi-Fi 与蜂窝网络(手机网络)的核心区别,以及 Wi-Fi 技术未来的发展方向

在日常生活中&#xff0c;我们既离不开家里的 Wi-Fi&#xff0c;也离不开手机的 4G/5G 网络。它们都能把我们连接到互联网&#xff0c;但底层的工作方式却大不相同。一、设计初衷的不同Wi-Fi诞生于 1997 年的 IEEE 802.11 标准&#xff0c;定位是局域网无线替代。它的目标是让电…

C++编程实战:高效解决算法与数据结构问题

个人主页 &#xff1a; zxctscl 专栏 【C】、 【C语言】、 【Linux】、 【数据结构】、 【算法】 如有转载请先通知 题目1. 数字统计2. 两个数组的交集3. 牛牛的快递4. 点击消除5. 最小花费爬楼梯6. 简写单词1. 数字统计 BC153 数字统计 #include <iostream> using na…

《零基础入门AI:深度学习中的视觉处理(卷积神经网络(CNN)进阶)》

一、卷积知识扩展 1. 二维卷积 单通道版本 对于单通道输入图像 III (尺寸 HWH \times WHW) 和卷积核 KKK (尺寸 FFF \times FFF)&#xff0c;输出特征图 OOO 的计算公式为&#xff1a; O(i,j)∑m0F−1∑n0F−1I(im,jn)⋅K(m,n)O(i,j) \sum_{m0}^{F-1} \sum_{n0}^{F-1} I(im, j…

pyecharts可视化图表-pie:从入门到精通(进阶篇)

欢迎来到pyecharts饼图系列教程的进阶篇&#xff01;在上一篇基础教程中&#xff0c;我们学习了饼图的基本概念和简单实现。在本文中&#xff0c;我们将深入探索pyecharts中饼图的六种高级用法和自定义选项&#xff0c;包括环形饼图、富文本标签饼图、滚动图例饼图、环形图、嵌…

【JAVA 核心编程】面向对象高级:类变量与方法 抽象类与接口

一、类变量与类方法&#xff08;静态变量&#xff09; 1&#xff09;类变量 class Child{private String name;//定义一个变量count&#xff0c;是一个类变量&#xff08;静态变量&#xff09;static静态//该变量最大的特点就是会被Child 类的所有对象访问public static int co…

【Java基础面试题】数据类型

Java面试高频总结&#xff1a;基本数据类型深度解析 &#x1f4ca; 八种基本数据类型详解数据类型关键字字节数位数默认值取值范围核心特性字节型byte180-128 ~ 127最小整数类型短整型short2160-32,768 ~ 32,767较少使用整型int4320-2 ~ 2-1 (约21亿)最常用整数类型长整型long8…

攻防世界—unseping(反序列化)

一.审题<?php highlight_file(__FILE__);class ease{private $method;private $args;function __construct($method, $args) {$this->method $method;$this->args $args;}function __destruct(){if (in_array($this->method, array("ping"))) {call_u…