Open3d学习计划——高级篇 1(点云离群点移除)

Open3d学习计划——高级篇 1(点云离群点移除)

当我们从扫描设备获取点云数据时,数据会包含人想除去的噪声和伪影。这篇教程将会介绍如何使用Open3d除去离群点。

数据预处理

使用 voxel_downsample 去采样得到点云。

print("Load a ply point cloud, print it, and render it")
pcd = o3d.io.read_point_cloud("../../TestData/ICP/cloud_bin_2.pcd")
o3d.visualization.draw_geometries([pcd])

print("Downsample the point cloud with a voxel of 0.02")
voxel_down_pcd = pcd.voxel_down_sample(voxel_size=0.02)
o3d.visualization.draw_geometries([voxel_down_pcd])

Load a ply point cloud, print it, and render it

在这里插入图片描述

Downsample the point cloud with a voxel of 0.02

在这里插入图片描述
为了比较,uniform_down_sample 通过每n个点来降采样点云。
在这里插入图片描述

选则点

select_down_sample 函数通过二进制mask去只输出被选中的点。选中的点和未选中的点被可视化。


def display_inlier_outlier(cloud, ind):
    inlier_cloud = cloud.select_by_index(ind)
    outlier_cloud = cloud.select_by_index(ind, invert=True)

    print("Showing outliers (red) and inliers (gray): ")
    outlier_cloud.paint_uniform_color([1, 0, 0])
    inlier_cloud.paint_uniform_color([0.8, 0.8, 0.8])
    o3d.visualization.draw_geometries([inlier_cloud, outlier_cloud])

统计式离群点移除

statistical_outlier_removal函数删除与点云的距离比起其他邻域的平均距离远的点,他有两个输入参数:

  • nb_neighbors:用于指定邻域点的数量,以便计算平均距离。
  • std_ratio:基于点云的平均距离的标准差来设置阈值。阈值越小,滤波效果越明显。
print("Statistical oulier removal")
cl, ind = voxel_down_pcd.remove_statistical_outlier(nb_neighbors=20,
                                                    std_ratio=2.0)
display_inlier_outlier(voxel_down_pcd, ind)

Statistical oulier removal
Showing outliers (red) and inliers (gray):

在这里插入图片描述

半径式离群点剔除

radius_outlier_removal 会删除在给定半径的球体周围几乎没有邻域点的点。他也有两个输入参数:

  • nb_points:选择球体中最少点的数量。
  • radius:用来计算点的邻域点的数量的球的半径。
print("Radius oulier removal")
cl, ind = voxel_down_pcd.remove_radius_outlier(nb_points=16, radius=0.05)
display_inlier_outlier(voxel_down_pcd, ind)

Radius oulier removal
Showing outliers (red) and inliers (gray):

在这里插入图片描述

关于翻译大家有更好的意见欢迎评论一起学习!!!

欢迎大家加入知识星球一起学习。

在这里插入图片描述

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值