当前位置: 首页 > news >正文

【编程实践】利用open3d对点云进行聚类并可视化

功能:对点云进行DBSCAN聚类,可视化聚类结果并统计噪声比例。
输入:DungouCut.pcd点云文件。
输出:聚类数量、噪声比例及彩色可视化结果。
注意:eps和min_points需根据点云密度调整。
调优方向:通过average_distance动态设置eps,或网格搜索最佳参数组合。

# -*- coding: utf-8 -*-
"""
Created on Jan 27 16:39 2025@author: zhiyang
"""
import open3d as o3d
import numpy as np
import matplotlib.pyplot as plt
cloud_in = o3d.io.read_point_cloud('data_input\\DungouCut.pcd')
cloud_points = np.asarray(cloud_in.points)
kdtree = o3d.geometry.KDTreeFlann(cloud_in)
distances = []for i in range(len(cloud_points)):[_, idx, d] = kdtree.search_knn_vector_3d(cloud_in.points[i], 2)diatance = np.sqrt(d[1])distances.append(diatance)
average_distance = np.mean(distances)eps = 10 * average_distance
min_points = 10
labels = np.array(cloud_in.cluster_dbscan(eps = eps, min_points = min_points, print_progress = True))
max_label = labels.max()
print(f"聚类数量:{max_label+1}")
print(f"噪声比例:{np.sum(labels == -1) / len(labels):.3f}")
colors = plt.get_cmap("tab20")(labels / (max_label if max_label > 0 else 1))
colors[labels < 0] = [0,0,0,1]
cloud_in.colors = o3d.utility.Vector3dVector(colors[:, :3])
o3d.visualization.draw_geometries([cloud_in])

运行所需要依赖第三方库如下:

# reqiurements.txt
matplotlib==3.7.5
numpy==1.24.3
numpy==1.24.4
open3d==0.17.0
pyvista==0.44.2
scikit_learn==1.3.2

运行结果如下:
在这里插入图片描述

http://www.dtcms.com/a/212434.html

相关文章:

  • Kotlin IR编译器插件开发指南
  • 互联网大厂Java求职面试:短视频平台大规模实时互动系统架构设计
  • Eigen 库实现最小二乘算法(Least Squares)
  • Unity基础学习(九)Resources资源同步与异步加载
  • 如何在 Linux 系统中永久禁用交换分区 ?
  • 实验绘图参考-0525版(自用)
  • PostgreSQL 与 MongoDB:为您的数据项目选择合适的数据库
  • 记录第一次正式收到SCI期刊论文的审稿
  • Ubantu22.04离线安装、卸载mysql8.0.39并设置开机自启
  • 深入理解 Linux 的 set、env 和 printenv 命令
  • 使用粘滞键修改windows密码
  • 医学写作供应商管理全流程优化
  • 前端课设Web2
  • 微服务——网关
  • 第九章 云平台开发
  • 测试工程师如何通俗理解和入门RAG:从“查资料”到“写答案”的智能升级
  • 如何使用Webpack实现异步加载?
  • OC语言学习——Foundation框架回顾及考核补缺
  • Three.js 海量模型加载性能优化指南
  • 页表:从虚拟内存到物理内存的转换
  • 11.8 LangGraph生产级AI Agent开发:从节点定义到高并发架构的终极指南
  • 资源-又在网上淘到金了-三维模型下载
  • 【AI论文】QuickVideo:通过系统算法协同设计实现实时长视频理解
  • window 显示驱动开发-Direct3D 呈现性能改进(四)
  • 11|省下钱买显卡,如何利用开源模型节约成本?
  • 分库分表深度解析
  • 基于RedisBloom的JWT黑名单管理方案
  • ISO 20000体系:需求管理与容量管理含义与解释
  • DeepSeek 驱动智能交通调度:从传统到智慧的跃迁之路
  • 前端绘图基础——SVG详解