StatisticalOutlierRemoval 过滤器去除异常值
StatisticalOutlierRemoval 过滤器去除异常值
统计滤波原理:
对每一点的邻域进行统计分析,基于点到所有邻近点的距离分布特征,过滤掉一些不满足要求的离群点。该算法对整个输入进行两次迭代:在第一次迭代中,它将计算每个点到最近k个近邻点的平均距离,得到的结果符合高斯分布。接下来,计算所有这些距离的平均值 μ 和标准差 σ 以确定距离阈值 thresh_d ,且 thresh_d = μ + k·σ。 k为标准差乘数。在下一次迭代中,如果这些点的平均邻域距离分别低于或高于该阈值,则这些点将被分类为内点或离群点。
代码
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/filters/statistical_outlier_removal.h>int main (int argc, char** argv)
{pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered (new pcl::PointCloud<pcl::PointXYZ>);// 填入点云数据pcl::PCDReader reader;// 把路径改为自己存放文件的路径reader.read<pcl::PointXYZ> ("table_scene_lms400.pcd", *cloud);std::cerr << "Cloud before filtering: " << std::endl;std::cerr << *cloud << std::endl; //打印点云数据的基本信息// 创建滤波器对象pcl::StatisticalOutlierRemoval<pcl::PointXYZ> sor;sor.setInputCloud (cloud);//每个点要分析的邻居数设置为50,标准差乘数为1。这意味着所有距离查询点的平均距离大于1个标准差的点都将被标记为离群值并删除。sor.setMeanK (50);sor.setStddevMulThresh (1.0);// 输出被计算并存储在 cloud_filtered 中sor.filter (*cloud_filtered);std::cerr << "Cloud after filtering: " << std::endl;std::cerr << *cloud_filtered << std::endl;//保存结果到文件pcl::PCDWriter writer;writer.write<pcl::PointXYZ> ("table_scene_lms400_inliers.pcd", *cloud_filtered, false);sor.setNegative (true);sor.filter (*cloud_filtered);writer.write<pcl::PointXYZ> ("table_scene_lms400_outliers.pcd", *cloud_filtered, false);return (0);
}
运行结果:
处理之前:
处理之后
去掉的异常点
通过结果可看出,去除异常值的效果比较理想,只是在桌子边缘部分的点云密度偏低的情况下,可能会删除部分稀疏的正常点云数据。
ps:
纯c++实现
https://blog.csdn.net/taifyang/article/details/117606055
StatisticalOutlierRemoval 过滤器去除异常值相关推荐
- 数据处理——拉伊达法则去除异常值(Python实现)
数据处理--拉伊达法则去除异常值(Python实现) 背景: 题目出自2020年中国研究生数学建模竞赛B题 代码及附件 上传时间:2020.12.24 1 数据采集 原始数据采集来自于中石化高桥石化实 ...
- 怎样用excel剔除异常数据_excel如何去除异常值?(excel表格数据异常丢失)
急!!!java用poi导出excel文件,打开导出的文件时报错"文件错误,数据可能丢失" 我遇到过这个问题后调查发现两个原因: 1.你的excel模版本身有问题,可以尝试新建一个 ...
- R使用Z分数和四分位数区间法去除异常值(outlier)
R使用Z分数和四分位数区间法去除异常值(outlier) 目录 R使用正太分布法和分位数法去除异常值(outlier) 四分位数范围(箱图ÿ
- r语言三倍标准差法去除异常值,再计算平均值标准差
博主自己没能找到好的函数去除异常值,于是自己写好了一个简单实用的包.可以通过三倍标准差法删去每一行的异常值,然后计算出平均值标准差. 函数总共四个参数: file= 要计算的文件路径,在工作目录可以 ...
- 【Vue】vue先转化文章内容再去除标签 vue filters过滤器去除标签 js提取文字内容
问题描述 渲染页面的时候,往往会遇到富文本编辑器里面的文章.文章内容有排版.字体样式,等等. 但是我们要提取其中前三行作为展示内容,里面又有标签内容.如下图 原因分析: 如果我们要让页面自己识别其中的 ...
- python中去除异常值_在Python中获取异常值
如果我有那个代码: try: some_method() except Exception, e: 如何获得此Exception值(字符串 代表我的意思)? 使用str try: some_metho ...
- 基于python批量统计表格中的某一列去除异常值后的平均值
当我们需要对多个表格表格中的某一列进行统计时,且该列数据存在异常极端值,可通过百分位数的方法将极端值筛选掉,在本次案例将小于5%的分位数和大于95%分位数的数值去掉,统计的5%~95%内的数据的平均值 ...
- 如何去除NDVI异常值
大家好,今天和大家分享一下去除NDVI异常值. 我们都知道,NDVI是属于-1到1之间的,如果你所提取的数据偏大或者偏小,原因有很多,如 主要包括为进行辐射定标,为进行大气校正,导致数据误差较大. 如 ...
- 拉依达准则去除异常数据
1.Concept 拉依达准侧(Pau'ta Criteron)是先假设一组数据中只含有随机误差,首先按照一定准侧计算标准偏差,按照一定概率确定一定区间,认为不在这个区间的为异常值. 使用数据类型:数 ...
最新文章
- Retrofit2.0+ .Net MVC4(WebApi) 上传多张图片
- 针对不同的Cookie做页面缓存
- 代码中设置excel自定义格式为[红色]的处理方法
- 十三、开多线程,咱们一起来斗图
- Java 程序优化:字符串操作、基本运算方法等优化策略
- 上海j计算机一级分值,计算机一级考试内容及分值
- 推荐系统中的矩阵分解演变方式
- linux pam模块 cron,Linux-PAM 1.1.2 中文文档 - 6.32. pam_tally-登录计数器(统计)模块 | Docs4dev...
- mysql fpmmm_zabbix配fpmmm(mpm)数据传送不了问题解决
- 采油工计算机试题库,数字化采油工试题库.doc
- JMH性能测试,试试你代码的性能如何
- python2与python3在windows下共存
- OpenCV之IplImage详解
- 【物联网开发基础】plc简介
- 前端 Vue 浏览器调试工具 Vue.js devtools 安装
- C/C++中文帮助手册
- Coding沙龙之vbs脚本
- Pytorch系列(四):猫狗大战1-训练和测试自己的数据集
- 天津地铁行业建设现状与运营状况分析报告2022版
- C语言常见复试面试问题