这两种滤波非常有用,一定要用好; 半径滤波: 半径滤波器比较简单粗暴。以某点为中心画一个圆计算落在该圆中点的数量,当数量大于给定值时,则保留该点,数量小于给定值则剔除该点。此算法运行速度快,依序迭代留下的点一定是最密集的,但是圆的半径和圆内点的数目都需要人工指定; 统计滤波过滤: 第一次扫描:对每个点,我们计算它到它的所有临近N个点的平均距离。计算出这些距离的均值和标准差 第二次扫描:平均距离在M个标准差范围(由全局距离平均值和方差定义〉之外的点,可被定义为离群点并可从数据集中去除掉。 代码如下:
# coding:utf-8
import copy # 点云深拷贝
import open3d as o3d
# -------------------------- 加载点云 ------------------------
print("->正在加载点云... ")
point_cloud = o3d.io.read_point_cloud("gongjian1.pcd")
pcd_ty = copy.deepcopy(point_cloud).translate((0, 1200, 0))
cl, ind = point_cloud.remove_statistical_outlier(nb_neighbors=60,std_ratio=1)
# cl, ind = point_cloud.remove_radius_outlier(nb_points=50, radiu