导航:首页 > 源码编译 > outlier的算法

outlier的算法

发布时间:2022-09-14 11:43:01

A. 对于异常值的检测

离群点,是一个数据对象,它显着不同于其他数据对象,与其他数据分布有较为显着的不同。有时也称非离群点为“正常数据”,离群点为“异常数据”。

离群点跟噪声数据不一样,噪声是被观测变量的随机误差或方差。一般而言,噪声在数据分析(包括离群点分析)中不是令人感兴趣的,需要在数据预处理中剔除的,减少对后续模型预估的影响,增加精度。

离群点检测是有意义的,因为怀疑产生它们的分布不同于产生其他数据的分布。因此,在离群点检测时,重要的是搞清楚是哪种外力产生的离群点。

常见的异常成因:

通常,在其余数据上做各种假设,并且证明检测到的离群点显着违反了这些假设。如统计学中的假设检验,基于小概率原理,对原假设进行判断。一般检测离群点,是人工进行筛选,剔除不可信的数据,例如对于房屋数据,面积上万,卧室数量过百等情况。而在面对大量的数据时,人工方法耗时耗力,因此,才有如下的方法进行离群点检测。

统计学方法是基于模型的方法,即为数据创建一个模型,并且根据对象拟合模型的情况来评估它们。大部分用于离群点检测的统计学方法都是构建一个概率分布模型,并考虑对象有多大可能符合该模型。

离群点的概率定义:离群点是一个对象,关于数据的概率分布模型,它具有低概率。这种情况的前提是必须知道数据集服从什么分布,如果估计错误就造成了重尾分布。

a. 参数法:

当数据服从正太分布的假设时在正态分布的假定下,u±3σ区域包含99.7%的数据,u±2σ包含95.4%的数据,u±1σ包含68.3%的数据。其区域外的数据视为离群点。

当数据是非正态分布时,可以使用切比雪夫不等式,它对任何分布形状的数据都适用。根据 切比雪夫不等式 ,至少有(1-1/k 2 )的数据落在±k个标准差之内。所以,有以下结论:

计算得到:通过绘制箱线图可以直观地找到离群点,或者通过计算四分位数极差(IQR)定义为Q3-Q1。比Q1小1.5倍的IQR或者比Q3大1.5倍的IQR的任何对象都视为离群点,因为Q1-1.5IQR和Q3+1.5IQR之间的区域包含了99.3%的对象。

涉及两个或多个属性或变量的数据称为多元数据。核心思想是把多元离群点检测任务转换成一元离群点检测问题。

- 卡方统计量的多元离群点检测 :正态分布的假定下,卡方统计量也可以用来捕获多元离群点,对象 ,卡方统计量是: , 是 在第i维上的值, 是所有对象在第i维上的均值,而n是维度。如果对象的卡方统计量很大,则该对象是离群点。

b. 非参数法:

构造直方图
为了构造一个好的直方图,用户必须指定直方图的类型和其他参数(箱数、等宽or等深)。最简单的方法是,如果该对象落入直方图的一个箱中,则该对象被看做正常的,否则被认为是离群点。也可以使用直方图赋予每个对象一个离群点得分,比如对象的离群点得分为该对象落入的箱的容积的倒数。但这个方法很难选择一个较好的直方图参数。

注意
传统的观点都认为孤立点是一个单独的点,然而很多的现实情况是异常事件具有一定的时间和空间的局部性,这种局部性会产生一个小的簇.这时候离群点(孤立点)实际上是一个小簇(图下图的C1和C3)。

一个对象是异常的,如果它远离大部分点。这种方法比统计学方法更一般、更容易使用,因为确定数据集的有意义的邻近性度量比确定它的统计分布更容易。不依赖统计检验,将基于邻近度的离群点看作是那些没有“足够多“邻居的对象。这里的邻居是用 邻近度(距离) 来定义的。最常用的距离是绝对距离(曼哈顿)和欧氏距离等等。

一个对象的离群点得分由到它的k-最近邻的距离给定。离群点得分对k的取值高度敏感。如果k太小,则少量的邻近离群点可能导致离群点较少;如果K太大,则点数少于k的簇中所有的对象可能都成了离群点,导致离群点过多。为了使该方案对于k的选取更具有鲁棒性,可以使用k个最近邻的平均距离。

从基于密度的观点来说,离群点是在低密度区域中的对象。一个对象的离群点得分是该对象周围密度的逆。基于密度的离群点检测与基于邻近度的离群点检测密切相关,因为密度通常用邻近度定义。

定义密度
一种常用的定义密度的方法是,定义密度为到k个最近邻的平均距离的倒数 。如果该距离小,则密度高,反之亦然。

另一种密度定义是使用DBSCAN聚类算法使用的密度定义,即一个对象周围的密度等于该对象指定距离d内对象的个数。 需要小心的选择d,如果d太小,则许多正常点可能具有低密度,从而离群点较多。如果d太大,则许多离群点可能具有与正常点类似的密度(和离群点得分)无法区分。 使用任何密度定义检测离群点具有与基于邻近度的离群点方案类似的特点和局限性。特殊地,当数据包含不同密度的区域时,它们不能正确的识别离群点。

定义相对密度
为了正确的识别这种数据集中的离群点,我们需要与对象邻域相关的密度概念,也就是定义相对密度。常见的有两种方法:
(1)使用基于SNN密度的聚类算法使用的方法;
(2)用点x的密度与它的最近邻y的平均密度之比作为相对密度。使用相对密度的离群点检测( 局部离群点要素LOF技术 ):

一种利用聚类检测离群点的方法是丢弃远离其他簇的小簇。这个方法可以和其他任何聚类技术一起使用,但是需要最小簇大小和小簇与其他簇之间距离的阈值。这种方案对簇个数的选择高度敏感。使用这个方案很难将离群点得分附加到对象上。

一种更系统的方法,首先聚类所有的点,对某个待测点评估它属于某一簇的程度。(基于原型的聚类可用离中心点的距离来评估,对具有目标函数(例如kmeans法时的簇的误差平方和)的聚类技术,该得分反映删除对象后目标函数的改进),如果删去此点能显着地改善此项目标函数,则可以将该点定位为孤立点。

基于聚类的离群点:一个对象是基于聚类的离群点,如果该对象不强属于任何簇。离群点对初始聚类的影响:如果通过聚类检测离群点,则由于离群点影响聚类,存在一个问题:结构是否有效。为了处理该问题,可以使用如下方法:

对象是否被认为是离群点可能依赖于簇的个数(如k很大时的噪声簇)。该问题也没有简单的答案。一种策略是对于不同的簇个数重复该分析。另一种方法是找出大量小簇,其想法是(1)较小的簇倾向于更加凝聚,(2)如果存在大量小簇时一个对象是离群点,则它多半是一个真正的离群点。不利的一面是一组离群点可能形成小簇而逃避检测。

根据已有训练集检测新样本是否异常

异常检测根据原始数据集的不同可分为两类:
novelty detection: 训练集中没有异常样本
outlier detection: 训练集中有异常样本

异常样本:
数量少,比较分散

novelty detection和outlier detection的区别:

Sklearn异常检测模型一览

5.1 奇异点检测(Novelty Detection)
奇异点检测,就是判断待测样本到底是不是在原来数据的概率分布内。概率学上认为,所有的数据都有它的隐藏的分布模式,这种分布模式可以由概率模型来具象化。

5.1 离群点检测(Outlier Detection)
不同与奇异点检测是,现在我们没有一个干净的训练集(训练集中也有噪声样本)。下面介绍的三种离群点检测算法其实也都可以用于奇异点检测。

如果我们认为,可达密度小的目标样本点就是异常点,这样未尝不可。但是,LOF算法更进一步。

LOF可以用来判断经纬度的异常。

使用python进行异常值(outlier)检测实战:KMeans + PCA + IsolationForest + SVM + EllipticEnvelope

文章引用: 数据挖掘:数据清洗——异常值处理

B. 如何理解Local Outlier Factor算法

http://download.csdn.net/download/icyrain1987/6815011
答题不易,互相帮助,手机提问的朋友在客户端右上角评价点满意即可.
如认可我的回答,请点击采纳为满意回答按钮.

C. outlier的含义及具体解释

1. 离开本体的部分;分离物
2. 露宿者
3. 局外人;门外汉

D. 用于数据挖掘的聚类算法有哪些

一部专着的篇幅。即使是做综述性的介绍,一篇三五十页的论文也可以写成了。所以我一直想怎么能从头到尾把这个问题logically串连起来。正好这段时间我在修改我做的交易策略里面关于聚类的部分。就我的理解而言,如果想全面的了解聚类算法并对其进行区别和比较的话,最好能把聚类的具体算法放到整个聚类分析的语境中理解。那我接下来主要谈谈我的理解,就不搬弄教科书里的概念了。相似性衡量(similarity measurement)相似性衡量又可以细分为直接法和间接:直接法是直接求取input data的相似性,间接法是求取data中提取出的features的相似性。但无论是求data还是feature的相似性,方法都是这么几种:距离。距离主要就是指Minkovski距离。这个名字虽然听起来陌生,但其算法就是Lp norm的算法,如果是L1 norm,那就是绝对值/曼哈顿距离(Manhattan distance);如果是L2 norm,那就是着名的欧式距离(Euclidean distance)了,也是应用最广泛的;如果,supremum距离,好像也有叫切比雪夫距离的,但就很少有人用了。另外,还有Mahalanobis距离,目前来看主要应用于Gaussian Mixture Model(GMM),还有Lance&Williams距离等等,但几乎没见过求距离的时候会专门用这个的。相似系数。主要有夹角余弦和相关系数。相关系数的应用也非常广泛,其主要优势是它不受原线性变换的影响,而且可以轻松地转换为距离,但其运算速度要比距离法慢得多,当维数很高的时候。

E. 聚类算法的聚类要求

许多聚类算法在小于 200 个数据对象的小数据集合上工作得很好;但是,一个大规模数据库可能包含几百万个对象,在这样的大数据集合样本上进行聚类可能会导致有偏的结果。
我们需要具有高度可伸缩性的聚类算法。 (high dimensionality)
一个数据库或者数据仓库可能包含若干维或者属性。许多聚类算法擅长处理低维的数据,可能只涉及两到三维。人类的眼睛在最多三维的情况下能够很好地判断聚类的质量。在高维空间中聚类数据对象是非常有挑战性的,特别是考虑到这样的数据可能分布非常稀疏,而且高度偏斜。 用户希望聚类结果是可解释的,可理解的,和可用的。也就是说,聚类可能需要和特定的语义解释和应用相联系。应用目标如何影响聚类方法的选择也是一个重要的研究课题。
记住这些约束,我们对聚类分析的学习将按如下的步骤进行。首先,学习不同类型的数据,以及它们对聚类方法的影响。接着,给出了一个聚类方法的一般分类。然后我们详细地讨论了各种聚类方法,包括划分方法,层次方法,基于密度的方法,基于网格的方法,以及基于模型的方法。最后我们探讨在高维空间中的聚类和孤立点分析(outlier analysis)。

F. 人工智能算法简介

人工智能的三大基石—算法、数据和计算能力,算法作为其中之一,是非常重要的,那么人工智能都会涉及哪些算法呢?不同算法适用于哪些场景呢?

一、按照模型训练方式不同可以分为监督学习(Supervised Learning),无监督学习(Unsupervised Learning)、半监督学习(Semi-supervised Learning)和强化学习(Reinforcement Learning)四大类。

常见的监督学习算法包含以下几类:
(1)人工神经网络(Artificial Neural Network)类:反向传播(Backpropagation)、波尔兹曼机(Boltzmann Machine)、卷积神经网络(Convolutional Neural Network)、Hopfield网络(hopfield Network)、多层感知器(Multilyer Perceptron)、径向基函数网络(Radial Basis Function Network,RBFN)、受限波尔兹曼机(Restricted Boltzmann Machine)、回归神经网络(Recurrent Neural Network,RNN)、自组织映射(Self-organizing Map,SOM)、尖峰神经网络(Spiking Neural Network)等。
(2)贝叶斯类(Bayesin):朴素贝叶斯(Naive Bayes)、高斯贝叶斯(Gaussian Naive Bayes)、多项朴素贝叶斯(Multinomial Naive Bayes)、平均-依赖性评估(Averaged One-Dependence Estimators,AODE)
贝叶斯信念网络(Bayesian Belief Network,BBN)、贝叶斯网络(Bayesian Network,BN)等。
(3)决策树(Decision Tree)类:分类和回归树(Classification and Regression Tree,CART)、迭代Dichotomiser3(Iterative Dichotomiser 3, ID3),C4.5算法(C4.5 Algorithm)、C5.0算法(C5.0 Algorithm)、卡方自动交互检测(Chi-squared Automatic Interaction Detection,CHAID)、决策残端(Decision Stump)、ID3算法(ID3 Algorithm)、随机森林(Random Forest)、SLIQ(Supervised Learning in Quest)等。
(4)线性分类器(Linear Classifier)类:Fisher的线性判别(Fisher’s Linear Discriminant)
线性回归(Linear Regression)、逻辑回归(Logistic Regression)、多项逻辑回归(Multionmial Logistic Regression)、朴素贝叶斯分类器(Naive Bayes Classifier)、感知(Perception)、支持向量机(Support Vector Machine)等。

常见的无监督学习类算法包括:
(1) 人工神经网络(Artificial Neural Network)类:生成对抗网络(Generative Adversarial Networks,GAN),前馈神经网络(Feedforward Neural Network)、逻辑学习机(Logic Learning Machine)、自组织映射(Self-organizing Map)等。
(2) 关联规则学习(Association Rule Learning)类:先验算法(Apriori Algorithm)、Eclat算法(Eclat Algorithm)、FP-Growth算法等。
(3)分层聚类算法(Hierarchical Clustering):单连锁聚类(Single-linkage Clustering),概念聚类(Conceptual Clustering)等。
(4)聚类分析(Cluster analysis):BIRCH算法、DBSCAN算法,期望最大化(Expectation-maximization,EM)、模糊聚类(Fuzzy Clustering)、K-means算法、K均值聚类(K-means Clustering)、K-medians聚类、均值漂移算法(Mean-shift)、OPTICS算法等。
(5)异常检测(Anomaly detection)类:K最邻近(K-nearest Neighbor,KNN)算法,局部异常因子算法(Local Outlier Factor,LOF)等。

常见的半监督学习类算法包含:生成模型(Generative Models)、低密度分离(Low-density Separation)、基于图形的方法(Graph-based Methods)、联合训练(Co-training)等。

常见的强化学习类算法包含:Q学习(Q-learning)、状态-行动-奖励-状态-行动(State-Action-Reward-State-Action,SARSA)、DQN(Deep Q Network)、策略梯度算法(Policy Gradients)、基于模型强化学习(Model Based RL)、时序差分学习(Temporal Different Learning)等。

常见的深度学习类算法包含:深度信念网络(Deep Belief Machines)、深度卷积神经网络(Deep Convolutional Neural Networks)、深度递归神经网络(Deep Recurrent Neural Network)、分层时间记忆(Hierarchical Temporal Memory,HTM)、深度波尔兹曼机(Deep Boltzmann Machine,DBM)、栈式自动编码器(Stacked Autoencoder)、生成对抗网络(Generative Adversarial Networks)等。

二、按照解决任务的不同来分类,粗略可以分为二分类算法(Two-class Classification)、多分类算法(Multi-class Classification)、回归算法(Regression)、聚类算法(Clustering)和异常检测(Anomaly Detection)五种。
1.二分类(Two-class Classification)
(1)二分类支持向量机(Two-class SVM):适用于数据特征较多、线性模型的场景。
(2)二分类平均感知器(Two-class Average Perceptron):适用于训练时间短、线性模型的场景。
(3)二分类逻辑回归(Two-class Logistic Regression):适用于训练时间短、线性模型的场景。
(4)二分类贝叶斯点机(Two-class Bayes Point Machine):适用于训练时间短、线性模型的场景。(5)二分类决策森林(Two-class Decision Forest):适用于训练时间短、精准的场景。
(6)二分类提升决策树(Two-class Boosted Decision Tree):适用于训练时间短、精准度高、内存占用量大的场景
(7)二分类决策丛林(Two-class Decision Jungle):适用于训练时间短、精确度高、内存占用量小的场景。
(8)二分类局部深度支持向量机(Two-class Locally Deep SVM):适用于数据特征较多的场景。
(9)二分类神经网络(Two-class Neural Network):适用于精准度高、训练时间较长的场景。

解决多分类问题通常适用三种解决方案:第一种,从数据集和适用方法入手,利用二分类器解决多分类问题;第二种,直接使用具备多分类能力的多分类器;第三种,将二分类器改进成为多分类器今儿解决多分类问题。
常用的算法:
(1)多分类逻辑回归(Multiclass Logistic Regression):适用训练时间短、线性模型的场景。
(2)多分类神经网络(Multiclass Neural Network):适用于精准度高、训练时间较长的场景。
(3)多分类决策森林(Multiclass Decision Forest):适用于精准度高,训练时间短的场景。
(4)多分类决策丛林(Multiclass Decision Jungle):适用于精准度高,内存占用较小的场景。
(5)“一对多”多分类(One-vs-all Multiclass):取决于二分类器效果。

回归
回归问题通常被用来预测具体的数值而非分类。除了返回的结果不同,其他方法与分类问题类似。我们将定量输出,或者连续变量预测称为回归;将定性输出,或者离散变量预测称为分类。长巾的算法有:
(1)排序回归(Ordinal Regression):适用于对数据进行分类排序的场景。
(2)泊松回归(Poission Regression):适用于预测事件次数的场景。
(3)快速森林分位数回归(Fast Forest Quantile Regression):适用于预测分布的场景。
(4)线性回归(Linear Regression):适用于训练时间短、线性模型的场景。
(5)贝叶斯线性回归(Bayesian Linear Regression):适用于线性模型,训练数据量较少的场景。
(6)神经网络回归(Neural Network Regression):适用于精准度高、训练时间较长的场景。
(7)决策森林回归(Decision Forest Regression):适用于精准度高、训练时间短的场景。
(8)提升决策树回归(Boosted Decision Tree Regression):适用于精确度高、训练时间短、内存占用较大的场景。

聚类
聚类的目标是发现数据的潜在规律和结构。聚类通常被用做描述和衡量不同数据源间的相似性,并把数据源分类到不同的簇中。
(1)层次聚类(Hierarchical Clustering):适用于训练时间短、大数据量的场景。
(2)K-means算法:适用于精准度高、训练时间短的场景。
(3)模糊聚类FCM算法(Fuzzy C-means,FCM):适用于精确度高、训练时间短的场景。
(4)SOM神经网络(Self-organizing Feature Map,SOM):适用于运行时间较长的场景。
异常检测
异常检测是指对数据中存在的不正常或非典型的分体进行检测和标志,有时也称为偏差检测。
异常检测看起来和监督学习问题非常相似,都是分类问题。都是对样本的标签进行预测和判断,但是实际上两者的区别非常大,因为异常检测中的正样本(异常点)非常小。常用的算法有:
(1)一分类支持向量机(One-class SVM):适用于数据特征较多的场景。
(2)基于PCA的异常检测(PCA-based Anomaly Detection):适用于训练时间短的场景。

常见的迁移学习类算法包含:归纳式迁移学习(Inctive Transfer Learning) 、直推式迁移学习(Transctive Transfer Learning)、无监督式迁移学习(Unsupervised Transfer Learning)、传递式迁移学习(Transitive Transfer Learning)等。

算法的适用场景:
需要考虑的因素有:
(1)数据量的大小、数据质量和数据本身的特点
(2)机器学习要解决的具体业务场景中问题的本质是什么?
(3)可以接受的计算时间是什么?
(4)算法精度要求有多高?
————————————————

原文链接: https://blog.csdn.net/nfzhlk/article/details/82725769

G. 数学统计学里面的极端数什么意思. outlier.中文意思.怎么算法.

outlier中文意思:离群值
当比对数据较少时,应先利用格拉布斯检验法对离群值进行剔除,同时要考虑方法标准或产品标准规定的允许误差,然后对余下的数据用经典统计法进行分析和评价.

H. 请教:统计学里处理outlier(偏值)的方法有哪些

我觉得这个可能使用Boxplot(箱线图)来分析,例如如下28个数据.
进行做箱线图,此组数据的outlier值是-2,15
-2, 1, 2, 3, 3, 4, 4, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 12, 15

Boxplot里会显示出outlier的值,及四分位数区间,95%置信区间,那您可以使用去掉outlier点的数据进行分析,也可使用1,3分位数区间里的,也可使用95%置信区间里的数据进行分析,具体用哪部份数据还要自已把握,或者三种都分析后比较之间的差异,然后做出不同的解释.

I. 点云滤波相关

复制于:https://zhuanlan.hu.com/p/102748557

介绍

主要方法

直通滤波(PassThrough 滤波)

VoxelGrid滤波器对点云进行下采样

均匀采样

增采样

statisticalOutlierRemoval滤波器移除离群点

使用参数化模型投影点云

ConditionalRemoval

RadiusOutlinerRemoval 移除离群点

从一个点云中提取索引 根据点云索引提取对应的点云

介绍

点云滤波,顾名思义,就是滤掉噪声。原始采集的点云数据往往包含大量散列点、孤立点,在获取点云数据时 ,由于设备精度,操作者经验环境因素带来的影响,以及电磁波的衍射性,被测物体表面性质变化和数据拼接配准操作过程的影响,点云数据中讲不可避免的出现一些噪声。在点云处理流程中滤波处理作为预处理的第一步,对后续的影响比较大,只有在滤波预处理中将噪声点 ,离群点,孔洞,数据压缩等按照后续处理定制,才能够更好的进行配准,特征提取,曲面重建,可视化等后续应用处理。其类似于信号处理中的滤波,

点云滤波方法主要有:

1. 直通滤波器pcl::PassThrough<pcl::PointXYZ> pass

2. 体素格滤波器pcl::VoxelGrid<pcl::PCLPointCloud2> sor;

3. 统计滤波器    pcl::StatisticalOutlierRemoval<pcl::PointXYZ> sor;

4. 半径滤波器    pcl::RadiusOutlierRemoval<pcl::PointXYZ> outrem;

5. 双边滤波  pcl::BilateralFilter<pcl::PointXYZ> bf;

      该类的实现利用的并非XYZ字段的数据进行,而是利用强度数据进行双边滤波算法的实现,所以在使用该类时点云的类型必须有强度字段,否则无法进行双边滤波处理,双边滤波算法是通过取临近采样点和加权平均来修正当前采样点的位置,从而达到滤波效果,同时也会有选择剔除与当前采样点“差异”太大的相邻采样点,从而保持原特征的目的 。

6. 高斯滤波    pcl::filters::GaussianKernel< PointInT, PointOutT > 

    是基于高斯核的卷积滤波实现  高斯滤波相当于一个具有平滑性能的低通滤波器

7. 立方体滤波 pcl::CropBox< PointT>   

  过滤掉在用户给定立方体内的点云数据

8. 封闭曲面滤波 pcl::CropHull< PointT> 

    过滤在给定三维封闭曲面或二维封闭多边形内部或外部的点云数据       

9. 空间剪裁:

        pcl::Clipper3D<pcl::PointXYZ>

        pcl::BoxClipper3D<pcl::PointXYZ>

        pcl::CropBox<pcl::PointXYZ>

        pcl::CropHull<pcl::PointXYZ> 剪裁并形成封闭曲面   

10. 卷积滤波:实现将两个函数通过数学运算产生第三个函数,可以设定不同的卷积核

        pcl::filters::Convolution<PointIn, PointOut>

        pcl::filters::ConvolvingKernel<PointInT, PointOutT> 

11. 随机采样一致滤波

    等,

    通常组合使用完成任务。

PCL中点云滤波的方案

点云数据密度不规则需要平滑

因为遮挡等问题造成离群点需要去除

大量数据需要下采样

噪声数据需要去除

对应的方案如下

按照给定的规则限制过滤去除点

通过常用滤波算法修改点的部分属性

对数据进行下采样

去除噪音

直通滤波(PassThrough 滤波)

最简单的一种滤波器,它的作用是过滤掉在指定维度方向上取值不在给定值域内的点。直通滤波器的实现原理如下:首先,指定一个维度以及该维度下的值域,其次,遍历点云中的每个点,判断该点在指定维度上的取值是否在值域内,删除取值不在值域内的点,最后,遍历结束,留下的点即构成滤波后的点云。直通滤波器简单高效,适用于消除背景等操作。

#include <pcl/filters/passthrough.h>

  如果使用线结构光扫描的方式采集点云,必然物体沿z向分布较广,

  但x,y向的分布处于有限范围内。

  此时可使用直通滤波器,确定点云在x或y方向上的范围,

  可较快剪除离群点,达到第一步粗处理的目的。

结果:

VoxelGrid滤波器对点云进行下采样

使用体素化网格方法实现下采样,即减少点的数量 减少点云数据,并同时保存点云的形状特征,在提高配准,曲面重建,形状识别等算法速度中非常实用,PCL是实现的VoxelGrid类通过输入的点云数据创建一个三维体素栅格,容纳后每个体素内用体素中所有点的重心来近似显示体素中其他点,这样该体素内所有点都用一个重心点最终表示,对于所有体素处理后得到的过滤后的点云,这种方法比用体素中心(注意中心和重心)逼近的方法更慢,但是对于采样点对应曲面的表示更为准确。

在网格内减少点数量保证重心位置不变

下采样 同时去除 NAN点

  如果使用高分辨率相机等设备对点云进行采集,往往点云会较为密集。

  过多的点云数量会对后续分割工作带来困难。

  体素格滤波器可以达到向下采样同时不破坏点云本身几何结构的功能。

  点云几何结构 不仅是宏观的几何外形,也包括其微观的排列方式,

  比如横向相似的尺寸,纵向相同的距离。

  随机下采样虽然效率比体素滤波器高,但会破坏点云微观结构.

  使用体素化网格方法实现下采样,即减少点的数量 减少点云数据,

  并同时保存点云的形状特征,在提高配准,曲面重建,形状识别等算法速度中非常实用,

  PCL是实现的VoxelGrid类通过输入的点云数据创建一个三维体素栅格,

  容纳后每个体素内用体素中所有点的重心来近似显示体素中其他点,

  这样该体素内所有点都用一个重心点最终表示,对于所有体素处理后得到的过滤后的点云,

  这种方法比用体素中心(注意中心和重心)逼近的方法更慢,但是对于采样点对应曲面的表示更为准确。

结果:

结果不太明显,换一个:

均匀采样 pcl::UniformSampling

这个类基本上是相同的,但它输出的点云索引是选择的关键点,是在计算描述子的常见方式。

  原理同体素格 (正方体立体空间内 保留一个点(重心点))

  而 均匀采样:半径求体内 保留一个点(重心点)

  #include <pcl/filters/uniform_sampling.h>//均匀采样

增采样 setUpsamplingMethod

增采样是一种表面重建方法,当你有比你想象的要少的点云数据时,

  增采样可以帮你恢复原有的表面(S),通过内插你目前拥有的点云数据,

  这是一个复杂的猜想假设的过程。所以构建的结果不会百分之一百准确,

  但有时它是一种可选择的方案。

  所以,在你的点云云进行下采样时,一定要保存一份原始数据!

statisticalOutlierRemoval滤波器移除离群点

作用是去除稀疏离群噪点。在采集点云的过程中,由于测量噪声的影响,会引入部分离群噪点,它们在点云空间中分布稀疏。在估算点云局部特征(例如计算采样点处的法向量和曲率变化率)时,这些噪点可能导致错误的计算结果,从而使点云配准等后期处理失败。统计滤波器的主要思想是假设点云中所有的点与其最近的k个邻居点的平均距离满足高斯分布,那么,根据均值和方差可确定一个距离阈值,当某个点与其最近k个点的平均距离大于这个阈值时,判定该点为离群点并去除。统计滤波器的实现原理如下:首先,遍历点云,计算每个点与其最近的k个邻居点之间的平均距离;其次,计算所有平均距离的均值μ与标准差σ,则距离阈值dmax可表示为dmax=μ+α×σ,α是一个常数,可称为比例系数,它取决于邻居点的数目;最后,再次遍历点云,剔除与k个邻居点的平均距离大于dmax的点。

#include <pcl/filters/statistical_outlier_removal.h>

  统计滤波器用于去除明显离群点(离群点往往由测量噪声引入)。

  其特征是在空间中分布稀疏,可以理解为:每个点都表达一定信息量,

  某个区域点越密集则可能信息量越大。噪声信息属于无用信息,信息量较小。

  所以离群点表达的信息可以忽略不计。考虑到离群点的特征,

  则可以定义某处点云小于某个密度,既点云无效。计算每个点到其最近的k(设定)个点平均距离

  。则点云中所有点的距离应构成高斯分布。给定均值与方差,可剔除n个∑之外的点

  激光扫描通常会产生密度不均匀的点云数据集,另外测量中的误差也会产生稀疏的离群点,

  此时,估计局部点云特征(例如采样点处法向量或曲率变化率)时运算复杂,

  这会导致错误的数值,反过来就会导致点云配准等后期的处理失败。

  解决办法:对每个点的邻域进行一个统计分析,并修剪掉一些不符合标准的点。

  具体方法为在输入数据中对点到临近点的距离分布的计算,对每一个点,

  计算它到所有临近点的平均距离(假设得到的结果是一个高斯分布,

  其形状是由均值和标准差决定),那么平均距离在标准范围之外的点,

  可以被定义为离群点并从数据中去除。

使用参数化模型投影点云

使用参数化模型投影点云

  如何将点投影到一个参数化模型上(平面或者球体等),

  参数化模型通过一组参数来设定,对于平面来说使用其等式形式。

  在PCL中有特定存储常见模型系数的数据结构。

投影前的Z轴都不为0 ,投影之后,打印的结果表明,xy的值都没有改变,z都变为0。所以该投影滤波类就是输入点云和投影模型,输出为投影到模型上之后的点云。

ConditionalRemoval 或 RadiusOutlinerRemoval 移除离群点

ConditionalRemoval 滤波器的理解

可以一次删除满足对输入的点云设定的一个或多个条件指标的所有的数据点

删除点云中不符合用户指定的一个或者多个条件的数据点

RadiusOutlierRemoval移除离群点

一个比较简单常用的方法就是根据空间点半径范围临近点数量来滤波,对应的类名是 RadiusOutlinerRemoval,这个很容易理解,它的滤波思想非常直接,就是在点云数据中,设定每个点一定半径范围内周围至少有足够多的近邻,不满足就会被删除。比如你指定了一个半径d,然后指定该半径内至少有1个邻居,那么下图中只有黄色的点将从点云中删除。如果指定了半径内至少有2个邻居,那么黄色和绿色的点都将从点云中删除。

  球半径滤波器与统计滤波器相比更加简单粗暴。

  以某点为中心画一个球计算落在该球内的点的数量,当数量大于给定值时,

  则保留该点,数量小于给定值则剔除该点。

  此算法运行速度快,依序迭代留下的点一定是最密集的,

  但是球的半径和球内点的数目都需要人工指定。

阅读全文

与outlier的算法相关的资料

热点内容
安卓手机怎么用爱思助手传文件进苹果手机上 浏览:834
安卓怎么下载60秒生存 浏览:794
外向式文件夹 浏览:226
dospdf 浏览:421
怎么修改腾讯云服务器ip 浏览:378
pdftoeps 浏览:484
为什么鸿蒙那么像安卓 浏览:728
安卓手机怎么拍自媒体视频 浏览:178
单片机各个中断的初始化 浏览:715
python怎么集合元素 浏览:471
python逐条解读 浏览:823
基于单片机的湿度控制 浏览:490
ios如何使用安卓的帐号 浏览:875
程序员公园采访 浏览:803
程序员实战教程要多长时间 浏览:966
企业数据加密技巧 浏览:126
租云服务器开发 浏览:805
程序员告白妈妈不同意 浏览:328
攻城掠地怎么查看服务器 浏览:593
android开机黑屏 浏览:569