pcl离群点删除 方法2
来源:互联网 发布:php 执行shell命令 编辑:程序博客网 时间:2024/04/30 05:34
使用ConditionalRemoval或RadiusOutlierRemoval移除离群点
原理 http://www.pclcn.org/study/shownews.php?lang=cn&id=73
#include <iostream>#include <pcl/point_types.h>#include <pcl/filters/radius_outlier_removal.h>#include <pcl/filters/conditional_removal.h>intmain(int argc, char** argv){ if (argc != 2) { std::cerr << "please specify command line arg '-r' or '-c'" << std::endl; exit(0); } pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered(new pcl::PointCloud<pcl::PointXYZ>); // 填入点云数据 cloud->width = 10; cloud->height = 1; cloud->points.resize(cloud->width * cloud->height); for (size_t i = 0; i < cloud->points.size(); ++i) { cloud->points[i].x = rand() / (RAND_MAX + 1.0f); cloud->points[i].y = rand() / (RAND_MAX + 1.0f); cloud->points[i].z = rand() / (RAND_MAX + 1.0f); } cloud->points[0].z = 2.0; cloud->points[3].z = -2.0; cloud->points[6].z = 4.0; if (strcmp(argv[1], "-r") == 0){ pcl::RadiusOutlierRemoval<pcl::PointXYZ> outrem; // 创建滤波器 outrem.setInputCloud(cloud); outrem.setRadiusSearch(0.8); outrem.setMinNeighborsInRadius(2); // 应用滤波器 outrem.filter(*cloud_filtered); } else if (strcmp(argv[1], "-c") == 0){ // 创建环境 pcl::ConditionAnd<pcl::PointXYZ>::Ptr range_cond(new pcl::ConditionAnd<pcl::PointXYZ>()); range_cond->addComparison(pcl::FieldComparison<pcl::PointXYZ>::ConstPtr(new pcl::FieldComparison<pcl::PointXYZ>("z", pcl::ComparisonOps::GT, 0.0)));//此方法只保留z在0.8-2之间的点云 range_cond->addComparison(pcl::FieldComparison<pcl::PointXYZ>::ConstPtr(new pcl::FieldComparison<pcl::PointXYZ>("z", pcl::ComparisonOps::LT, 0.8))); // 创建滤波器 pcl::ConditionalRemoval<pcl::PointXYZ> condrem; condrem.setCondition(range_cond); condrem.setInputCloud(cloud); condrem.setKeepOrganized(true); // 应用滤波器 condrem.filter(*cloud_filtered); } else{ std::cerr << "please specify command line arg '-r' or '-c'" << std::endl; exit(0); } std::cerr << "Cloud before filtering: " << std::endl; for (size_t i = 0; i < cloud->points.size(); ++i) std::cerr << " " << cloud->points[i].x << " " << cloud->points[i].y << " " << cloud->points[i].z << std::endl; // 显示滤波后的点云 std::cerr << "Cloud after filtering: " << std::endl; for (size_t i = 0; i < cloud_filtered->points.size(); ++i) std::cerr << " " << cloud_filtered->points[i].x << " " << cloud_filtered->points[i].y << " " << cloud_filtered->points[i].z << std::endl; return (0);}
0 0
- pcl离群点删除 方法2
- pcl 学习 离群点删除
- pcl点云的离群点去除
- 离群点检测方法
- 离群点检测方法
- 离群点检测方法综述
- 离群点检测方法综述
- 离群点
- 离群点(孤立点、异常值)检测方法
- 离群点过滤
- 数据挖掘-离群点检测
- 数据挖掘--离群点检测
- ConditionalRemoval移除离群点
- 离群点检测Outlier Detection
- Python箱型图处理离群点
- PCL点云分割(2)
- 离群点(孤立点)检测
- 数据挖掘(五)离群点检测
- hiho一下 第144周 机会渺茫
- 2017.04.01 愚人的愚人节比赛
- 2017CVTE嵌入式研发岗实习生面经
- 2016蓝桥杯javaA组第5题
- 一个在线学习正则表达式的网站
- pcl离群点删除 方法2
- 题目1043:Day of Week 九度OJ
- 用Express和MongoDB实现一个简单的图片存储应用
- zepto之tap事件点透问题分析及解决方案
- Mybatis初步建立与实现
- metlab 4
- scala--9--内部类
- ubuntu: apt-get update的时候遇到“Hash Sum mismatch”错误
- u-boot详细解析