Open3D 删除点云中重叠的点(方法二)

目录

一、概述

1.1原理

1.2应用

二、代码实现

三、实现效果

3.1原始点云

3.2处理后点云

3.3数据对比


一、概述

在点云处理中,重叠点(即重复点)可能会对数据分析和处理的结果产生负面影响。因此,删除重叠点是点云预处理中常见且重要的步骤。

1.1原理

删除重叠点的常见方法是使用体素下采样(Voxel Downsampling)技术。体素下采样通过将三维空间划分为固定大小的立方体(体素),并在每个体素中保留一个代表点,从而去除重复点和减少点云数据量。具体步骤如下:

  1. 体素划分:将点云空间划分为固定大小的立方体网格(体素)。
  2. 点的分配:将每个点分配到相应的体素中。
  3. 体素代表点:对于每个非空体素,计算该体素内所有点的质心或选择其中一个点作为代表点。
  4. 生成下采样后的点云:以这些代表点构成新的点云,从而删除重叠点和减少点云数据量。

1.2应用

  • 数据压缩:通过删除重叠点,减少点云数据量,从而降低存储和处理的成本。
  • 提高计算效率:删除重叠点后,点云数据量减少,可以显著提高后续处理算法的效率,如点云配准、表面重建等。
  • 噪声过滤:重叠点可能是由传感器噪声或重复扫描引起的,通过删除重叠点,可以改善点云数据质量。
  • 三维建模:在三维重建和建模中,删除重叠点有助于生成更光滑和准确的模型。

二、代码实现

python 复制代码
import copy
import open3d as o3d

# 删除点云中的重叠点
def remove_duplicates(pcd, voxel_size=0.01):
    pcd2 = copy.deepcopy(pcd)
    # 通过体素下采样删除重叠点
    pcd2 = pcd2.voxel_down_sample(voxel_size)
    return pcd2


pcd = o3d.io.read_point_cloud("test.pcd")
o3d.visualization.draw_geometries([pcd])

# 删除重叠点
pcd_without_duplicates = remove_duplicates(pcd)
print("原始点云个数:", pcd)
print("去重之后:", pcd_without_duplicates)
pcd.paint_uniform_color([1, 0, 0])
pcd_without_duplicates.paint_uniform_color([0, 1, 0])
o3d.visualization.draw_geometries([pcd,pcd_without_duplicates])

三、实现效果

3.1原始点云

3.2处理后点云

3.3数据对比

python 复制代码
原始点云个数: PointCloud with 2400 points.
去重之后: PointCloud with 1999 points.
相关推荐
海里的鱼2022几秒前
yolov11配置环境,实现OBB带方向目标检测
人工智能·yolo·目标检测·计算机视觉
道友老李14 分钟前
【自然语言处理(NLP)】介绍、发展史
人工智能·自然语言处理
查理零世24 分钟前
【算法】经典博弈论问题——巴什博弈 python
开发语言·python·算法
神探阿航29 分钟前
第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
java·算法·蓝桥杯
皮肤科大白1 小时前
如何在data.table中处理缺失值
学习·算法·机器学习
有Li1 小时前
基于深度学习的微出血自动检测及解剖尺度定位|文献速递-视觉大模型医疗图像应用
人工智能·深度学习
熙曦Sakura1 小时前
【深度学习】微积分
人工智能·深度学习
qq_254674411 小时前
如何用概率论解决真实问题?用随机变量去建模,最大的难题是相关关系
人工智能·神经网络
汤姆和佩琦1 小时前
2025-1-21-sklearn学习(43) 使用 scikit-learn 介绍机器学习 楼上阑干横斗柄,寒露人远鸡相应。
人工智能·python·学习·机器学习·scikit-learn·sklearn
远洋录1 小时前
AI Agent的记忆系统实现:从短期对话到长期知识
人工智能·ai·ai agent