当前位置: 首页 > 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

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

相关文章:

  • 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 海量模型加载性能优化指南
  • 页表:从虚拟内存到物理内存的转换
  • 团购的网站扣佣金分录怎么做/磁力吧ciliba
  • 绥化做网站/如何做百度免费推广
  • 深圳有做公司网站/建站优化
  • 国外做的好的医疗网站设计/网站维护
  • 网站开发和c语言/上海seo排名
  • 潍坊自动seo/seo网络推广报价