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個鄰居,那麼黃色和綠色的點都將從點雲中刪除。
球半徑濾波器與統計濾波器相比更加簡單粗暴。
以某點為中心畫一個球計算落在該球內的點的數量,當數量大於給定值時,
則保留該點,數量小於給定值則剔除該點。
此演算法運行速度快,依序迭代留下的點一定是最密集的,
但是球的半徑和球內點的數目都需要人工指定。