使用统计异常消除滤波器来消除异常

激光扫描可以生成很多点云的数据集。并且,测量误差会导致一些稀疏的异常值使得结果更差。这使得局部点云特征估计变得更加的复杂,产生一些错误的值,使得点云的识别失败。有些不规则的数据可以通过数理统计的方法来消除。我们稀疏异样消除是以计算输入集的点的近邻分布来进行的。我们假设分布是标准正太分布,所有在分布区间外的点都被当成异常点。下面的图展示了稀疏异常分析与消除,原来的数据集在左边,结果在右边。下面的图显示了在滤波之前的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>);// Fill in the cloud datapcl::PCDReader reader;// Replace the path below with the path where you saved your filereader.read<pcl::PointXYZ> ("table_scene_lms400.pcd", *cloud);std::cerr << "Cloud before filtering: " << std::endl;std::cerr << *cloud << std::endl;// Create the filtering objectpcl::StatisticalOutlierRemoval<pcl::PointXYZ> sor;sor.setInputCloud (cloud);sor.setMeanK (50);sor.setStddevMulThresh (1.0);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);
}

我们创建了一个pcl::StatisticalOutlierRemoval这个滤波器。每个点的近邻分析的数量被设置为50,标准差是1.这意味着,只要有一个点的距离大于1个标准差的平均距离,这个点就会被当成异样点并被去除。

// Create the filtering objectpcl::StatisticalOutlierRemoval<pcl::PointXYZ> sor;sor.setInputCloud (cloud);sor.setMeanK (50);sor.setStddevMulThresh (1.0);sor.filter (*cloud_filtered);

并把正常的点存储到磁盘里面

  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);


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么有的网站要改服务器才能打开吗,为什么有些网站进不了,怎样设置DNS才能进 – 手机爱问...

2006-12-24从22号起就进不了游戏。 按照官方的DNS地址也不行。 有没有广东深圳罗湖区的朋友能进的 麻烦把你们的DNS地址发给我 谢谢对于上述无法登陆游戏的玩家&#xff0c;《神泣》中国运营团队建议您尝试以下方式&#xff0c;通过修改个人电脑的DNS解析服务器地址&#xff0c…

用一个参数化的模型来投影点

这次我们将学着怎么通过一个参数化的模型进行投影。这个参数化的模型是通过一系列的系数---在这里是平面&#xff0c;相当于axbyczd0 下面是代码 #include <iostream>#include <pcl/io/pcd_io.h>#include <pcl/point_types.h>#include <pcl/ModelCoeffi…

云 文件 服务器 只存,云 文件 服务器只存

云 文件 服务器只存 内容精选换一换用户通过管理控制台创建或者导入密钥对后&#xff0c;在购买弹性云服务器时&#xff0c;登录方式选择密钥对&#xff0c;并选择创建或者导入的密钥对。用户购买弹性云服务器成功后&#xff0c;可使用密钥对的私钥登录弹性云服务器。使用的登录…

pcl从一个点云里面导出下标

我们这次将学着使用ExtractIndices滤波器来从一个分割算法中导出点的下标。为了不把这个项目复杂化&#xff0c;我们不会在这里解释分割算法。 我们先建一个extract_indices.cpp 代码 #include <iostream>#include <pcl/ModelCoefficients.h>#include <pcl/i…

sr650服务器cpu型号,至强Gold 联想ThinkSystem SR650评测

今年7月&#xff0c;英特尔发布了至强可扩展处理器。面对新的处理器架构、新的AVX512指令集&#xff0c;需要新的服务器来匹配&#xff0c;需要更新机器&#xff0c;并提供新的软件、管理等套件。联想ThinkSystem SR650与至强可扩展处理器响应而出并被誉为“性能最高的服务器”…

使用一个环境的或者半径异样消除器来进行异样消除

这个文档显示了在滤波模型里面如何使用几个不同的方法来消除点云里面的异常。 第一步我们将使用一个环境消除滤波器来消除不满足环境条件的点云。然后我们将学会如何使用一个RadiusOutlierRemoval滤波器来消除在指定范围内没有达到指定数量邻居的点。 代码 #include <iost…

trailmakers未能连接服务器,Trailmakers联机版

《Trailmakers联机版》是一款可以联机进行的精美3D沙盒世界以创造为核心玩法的动作手游&#xff0c;这款游戏上手起来挺简单轻松的&#xff0c;诸多趣味内容&#xff0c;将让各位玩家们收获到极致的快感&#xff0c;非常的赞&#xff0c;不想错过任何欢乐与趣味的话&#xff0c…

lga775服务器cpu系列,【LGA775处理器 多的不仅是针脚】- 中关村在线

继发布新一代平台后&#xff0c;Intel推出了LGA775封装的P4处理器。这场被业界称为跨越性的技术革命&#xff0c;究竟能为用户带来什么样的变化和感受&#xff1f;它与Socket 478的处理器有何区别呢&#xff1f;● 何为LGA775LGA(Land Grid Array&#xff0c;栅格阵列封装)即So…

pcl点云PCD文件

csdn离线状态下不能保存&#xff0c;白写了。 然后我把官网链接发给你们&#xff0c;自己看吧&#xff0c;累觉不爱..... 点击打开链接

点云文件的操作

读取点云文件 #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h>int main (int argc, char** argv) {pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);if (pcl::io::loadPCDFile…

通过八叉树进行空间分割和搜索

一个octree是一个以树基础为的管理稀疏3-D数据的数据结构。每个中间的节点有8个子节点。在这次&#xff0c;我们将学习怎么使用octree进行稀疏分割和近邻搜索。尤其&#xff0c;我们将解释如何操作"体元近邻搜索"&#xff0c;和"最近邻搜索"和"半径近…

从一个点云里面创建一个深度图

这次&#xff0c;我们将显示如何从一个点云和一个给定的传感器来创造深度图。下面的代码&#xff0c;创建了一个在观察者前面的矩形。 #include <pcl/range_image/range_image.h>int main (int argc, char** argv) {pcl::PointCloud<pcl::PointXYZ> pointCloud;//…

从深度图里面导出边界

这次我们将学着怎么从一个深度图里面导出边界。我们对3种不同种类的点很感兴趣:物体的边框的点&#xff0c;阴影边框点&#xff0c;和面纱点(在障碍物边界和阴影边界)&#xff0c;这是一个很典型的现象在通过雷达获取的3D深度。 下面是代码 /* \author Bastian Steder */#incl…

以相关组为基础的3D物体识别

这次我们要解释如何以pcl_recognition模块来进行3D物体识别。特别地&#xff0c;它解释了怎么使用相关组算法为了聚类那些从3D描述器算法里面把当前的场景与模型进行匹配的相关点对点的匹配。(长难句)。对于每一次聚类&#xff0c;描绘了一个在场景中的可能模型实例&#xff0c…

隐式形状模型

在这次我们将学会隐式形状模型算法通过pcl::ism::ImplicitShapeModel这个类来实现。这个算法是把Hough转换和特征近似包进行结合。有训练集&#xff0c;这个算法将计算一个确定的模型用来预测一个物体的中心。 这个算法由两部分组成&#xff0c;第一部分是训练&#xff0c;第二…

3D物体识别的假设检验

3D物体识别的假设验证 这次目的在于解释如何做3D物体识别通过验证模型假设在聚类里面。在描述器匹配后&#xff0c;这次我们将运行某个相关组算法在PCL里面为了聚类点对点相关性的集合&#xff0c;决定假设物体在场景里面的实例。在这个假定里面&#xff0c;全局假设验证算法将…

怎么样递增的注册成对的点云

这次我们将使用Iterative Closest Point algorithm来递增的注册一系列的点云。 这个主意来自于把所有的点云转换成第一个点云的框架&#xff0c;通过找到每个连续点云间最好的装换&#xff0c;并且计算整个点云的转换。 你的数据集应该由重新排列的&#xff0c;在一个相同的框…

qt入门

&#xfeff;&#xfeff;qt入门 1.首先我们先创建一个qt的空项目 1.这会生成两个文件 xx.pro xx.pro.user xx.pro文件是qt的工程文件&#xff0c;有点类似于vc的prj文件&#xff0c;或者sln文件。xx.pro.user是这个当前环境下的工程文件。(移植的时候这个文件没啥用) 以…

新手博客,开博立言_Youcans2021

这是我的第一篇博客。 今后我会将我的学习心得和总结在这里发布&#xff0c;与大家共享&#xff0c;共勉。

qt输入框

&#xfeff;&#xfeff;qt里面的输入框是QLineEdit这个类来实现的。 下面是代码 /* 应用程序抽象类 */ #include <QApplication>/*窗口类*/ #include <QWidget> #include <QCompleter> #include <QLineEdit>int main(int argc, char* argv[]) {QAp…