介绍open3d各种点云下采样的方法及区别, 以及使用场景

方法介绍

1. 均匀下采样(Uniform Downsampling)

原理
  • 按固定间隔选取点,例如设置 every_k_points=5,则保留索引为 0, 5, 10, ... 的点。

  • 直接根据点的顺序进行采样,不依赖空间分布。

代码示例

python

down_pcd = pcd.uniform_down_sample(every_k_points=5)
特点
  • 优点:计算速度快,适合有序点云(如激光雷达按行/列排列的数据)。

  • 缺点:对无序点云效果差,可能导致采样不均匀或丢失局部细节。

  • 输出点数:原始点数 / every_k_points(向下取整)。

适用场景
  • 有序点云(如深度相机、激光雷达数据)。

  • 快速预览或低精度任务(如粗略配准)。

2. 体素下采样(Voxel Downsampling)

原理
  • 将点云空间划分为 体素网格(Voxel Grid),每个体素内保留一个点(通常取中心点或随机点)。

  • 通过 voxel_size 控制网格大小,体素越大,降采样越激进。

代码示例

python

voxel_size = 0.05  # 单位:米
down_pcd = pcd.voxel_down_sample(voxel_size)
特点
  • 优点:保持空间分布均匀,适合无序点云,能有效保留几何特征。

  • 缺点:计算量略高于均匀下采样,体素大小需手动调整。

  • 输出点数:取决于体素大小和点云密度。

适用场景
  • 通用场景(如点云配准、重建、分类)。

  • 需要平衡数据量与几何信息保留的任务

 

3. 随机下采样(Random Downsampling)

原理
  • 随机丢弃点,保留指定比例的点。

  • Open3D 未直接提供 API,但可通过 NumPy 实现。

代码示例

python

ratio = 0.2  # 保留20%的点
points = np.asarray(pcd.points)
indices = np.random.choice(len(points), int(len(points) * ratio))
down_pcd = pcd.select_by_index(indices)
特点
  • 优点:实现简单,计算极快。

  • 缺点:可能丢失关键区域数据,破坏空间结构。

  • 输出点数:原始点数 × ratio

适用场景
  • 快速测试或对数据分布无要求的任务(如简单可视化)。

4. 曲率/法线下采样(Curvature/Normal-Based Sampling)

原理
  • 根据点云的 曲率 或 法线方向 保留特征点(如边缘、角点)。

  • 需要先计算法线或曲率,再按阈值筛选。

代码示例(曲率筛选):

python

复制

# 计算曲率(需先计算法线)
pcd.estimate_normals()
curvatures = np.asarray(pcd.normals)[:, 3]  # 假设曲率存储在法向量的第四维
threshold = 0.1
indices = np.where(curvatures > threshold)[0]
down_pcd = pcd.select_by_index(indices)
特点
  • 优点:保留几何特征,适合需要细节的任务。

  • 缺点:计算复杂,依赖法线/曲率估计的准确性。

  • 输出点数:取决于特征点数量。

适用场景
  • 特征提取、细节重建(如工业零件检测)。

  • 需要突出边缘或曲率变化的分析任务

 

5. 最远点采样(Farthest Point Sampling, FPS)

原理
  • 迭代选择距离已选点最远的点,确保采样点覆盖整个空间。

  • 常用于深度学习中的点云特征学习。

代码示例(需手动实现或借助库):

python

复制

def farthest_point_sample(points, num_samples):
    # 自定义或使用 PyTorch3D 等库实现
    pass
down_points = farthest_point_sample(np.asarray(pcd.points), 1024)
down_pcd = o3d.geometry.PointCloud()
down_pcd.points = o3d.utility.Vector3dVector(down_points)
特点
  • 优点:空间覆盖均匀,适合深度学习模型输入。

  • 缺点:计算复杂度高(O(N^2)),不适用于实时任务。

  • 输出点数:固定为 num_samples

适用场景
  • 点云深度学习(如 PointNet、点云分割)。

  • 需要均匀空间采样的任务。

方法对比总结

方法速度特征保留空间均匀性适用数据典型场景
均匀下采样⚡⚡⚡依赖点顺序有序点云快速预览、低精度配准
体素下采样⚡⚡中高任意点云通用任务(配准、重建)
随机下采样⚡⚡⚡任意点云快速测试
曲率下采样高细节点云特征提取、工业检测
最远点采样中高深度学习输入点云分类、分割

 

选择建议

  1. 通用场景:优先使用 体素下采样(平衡速度与质量)。

  2. 有序点云:使用 均匀下采样(如激光雷达数据)。

  3. 深度学习:选择 最远点采样 或 体素下采样

  4. 特征保留:使用 曲率下采样 或 法线筛选

  5. 极速降采样:选择 随机下采样(牺牲质量换速度)。

参考资料

1.deepseek

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值