从扫描设备收集数据时,生成的点云往往包含人们想要去除的噪声和伪影。
使用 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(self, nb_points, radius, print_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(self, remove_nan=True, remove_infinite=True) |
函数功能: 从点云中删除非有限点 |
参数: remove_nan (bool, optional, default=True):从 PointCloud 中删除 NaN 值 remove_infinite (bool, optional, default=True):从点云中删除无限值 |
返回: open3d.geometry.PointCloud |