本文为博主原创文章,未经博主允许不得转载。
本文为专栏《python三维点云从基础到深度学习》系列文章,地址为“https://blog.csdn.net/suiyingy/article/details/124017716”。
离群点一般是指偏离大部分数据的点,可能是由于随机误差造成异常点。离群点剔除的方法有很多种,例如基于统计、邻近度、密度、方差等方法。这里主要介绍open3d中实现的三种点云离群点的剔除方法,包括无效值剔除、统计方法、半径滤波法。
1 无效值剔除
无效值包括空值和无限值。空值一般用NaN表示。open3d中对应的剔除函数为remove_non_finite_points。当remove_nan为True时,剔除空值。当remove_infinite为True时表示去除无限值。
remove_non_finite_points(self, remove_nan=True, remove_infinite=True)
2 统计方式剔除
open3d中基于统计的方式剔除点云中离群点的函数是remove_statistical_outlier。该函数含有三个参数。第一个参数nb_neighbors是目标点的相邻点个数。std_ratio是标准差。该离群点剔除方法是指。在一个点周围选择若干个点,计算它们距离的统计参数,如果某个点偏离平均值超过stdio_ratio倍的方差则认为是离群点,并进行删除。std_ratio实际上是指偏离标准差的倍数。因此,这种方法也可以称为邻域滤波。第三个参数print_progress为True时,可以显示处理进度。
remove_statistical_outlier(nb_neighbors,std_ra