open3d之点云异常值去除(笔记5)

  • Post author:
  • Post category:其他

从扫描设备收集数据时,生成的点云往往包含人们想要去除的噪声和伪影。

使用 voxel_down_sample (在体素下采样已经做过详细笔记)加载和下采样点云。

或者,使用 uniform_down_sample 通过收集每 n 个点来对点云进行下采样。

open3d.geometry.PointCloud

uniform_down_sample(self, every_k_points)

函数功能:

将输入点云统一下采样到输出点云的功能。样本按点的顺序执行,始终选择第 0 个点,而不是随机选择

参数:

every_k_points (int)采样率,所选点索引为 [0, k, 2k, …]

返回:

open3d.geometry.PointCloud

 辅助函数使用select_by_index(在点云距离已经做过笔记),它采用二进制掩码仅输出选定的点。选定的点和未选定的点被可视化。


统计异常值去除

与点云的平均值相比,remove_statistical_outlier 会删除距离其邻居较远的点。

open3d.geometry.PointCloud

remove_statistical_outlier(self, nb_neighbors, std_ratio, print_progress=False)

函数功能:

删除距离其邻居较远的点

参数:

nb_neighbors (int)目标点周围的点数。它指定考虑多少邻居来计算给定点的平均距离。

std_ratio (float)标准差比率。它允许根据跨点云的平均距离的标准偏差设置阈值级别。这个数字越低,过滤器就越激进。

print_progress (bool, optional, default=False)设置为 True 以打印进度条

返回:

Tuple[open3d.geometry.PointCloud, List[int]]


半径异常值去除

remove_radius_outlier 删除周围给定球体中几乎没有邻居的点。

open3d.geometry.PointCloud

remove_radius_outlier(selfnb_pointsradiusprint_progress=False)

函数功能:

删除给定半径的给定球体中小于 nb_points 的点的函数

参数:

nb_points (int)半径内的点数。它允许您选择球体应包含的最少点数

radius (float)球体半径。它定义了将用于计算邻居的球体的半径

print_progress (bool, optional, default=False)设置为 True 以打印进度条

返回:

Tuple[open3d.geometry.PointCloud, List[int]]

 Open3D文档中还有一个从点云中删除非有限点的函数。

open3d.geometry.PointCloud

remove_non_finite_points(selfremove_nan=Trueremove_infinite=True)

函数功能:

从点云中删除非有限点

参数:

remove_nan (bool, optional, default=True)从 PointCloud 中删除 NaN 值

remove_infinite (bool, optional, default=True)从点云中删除无限值

返回:

open3d.geometry.PointCloud