1. 程式人生 > >pcl點雲的濾波與特徵點學習筆記

pcl點雲的濾波與特徵點學習筆記

參考連結:

點雲資料時不可避免的存在噪聲,或者離群點(離主體點雲即被測物體點雲較遠的離散點)。

濾波是點雲資料處理流程中的第一步,往往對後續處理管道影響很大,只有在濾波預處理中將噪聲點、離群點、孔洞、資料壓縮等按照後續處理定製,才能夠更好的進行配準、特徵提取、曲面重建、視覺化等後續應用處理。

濾波處理

點雲濾波模組有多種濾波處理演算法:雙邊濾波、高斯濾波、條件濾波、直通濾波、基於隨機取樣一致性濾波等。本工具中實現了直通濾波、體素化網格下采樣、移除離群點、

體素化網格下采樣

名詞解釋

體素化(Voxelization)是將物體的幾何形式表示轉換成最接近該物體的體素表示形式,產生體資料集,其不僅包含模型的表面資訊,而且能描述模型的內部屬性。表示模型的空間體素跟表示影象的二維畫素比較相似,只不過從二維的點擴充套件到三維的立方體單元,而且基於體素的三維模型有諸多應用。

原理解釋

使用VoxelGrid濾波器對點雲進行下采樣,即減少點的數量 減少點雲資料,並同時儲存點雲的形狀特徵,在提高配準,曲面重建,形狀識別等演算法速度中非常實用,PCL是實現的VoxelGrid類通過輸入的點雲資料建立一個三維體素柵格,容納後每個體素內用體素中所有點的重心來近似顯示體素中其他點,這樣該體素內所有點都用一個重心點最終表示,對於所有體素處理後得到的過濾後的點雲,這種方法比用體素中心逼近的方法更慢,但是對於取樣點對應曲面的表示更為準確。

原始點雲與濾波後的點雲視覺化結果,明顯的可以看出來,點的密度大小與整齊程度不同,處理後的資料量大大減小,很明顯所含有的形狀特徵和空間結構資訊與原始點雲差不多。

引數解釋:

引數

含義

LeafSize_x

體素立方體邊長x、y、z,三個引數都為0.1的話,就表示體素體積為1cm的立方體,值越大,最終保留的點數越少。大場景建議最小設定到10

YCY不成熟的建議值:10、10、10(對應1立方米)。太小的值精度太高計算也就很久,1G那份資料會崩可能跟這個精度預設1立方厘米有關。太大的值濾波結果會留下很少的點。

LeafSize_y

LeafSize_z

移除離群點

名詞解釋(應用場景)

使用統計分析技術,從一個點雲資料中集中移除測量噪聲點(也就是離群點)比如:鐳射掃描通常會產生密度不均勻的點雲資料集,另外測量中的誤差也會產生稀疏的離群點,使效果不好,估計區域性點雲特徵(例如取樣點處法向量或曲率變化率)的運算複雜,這會導致錯誤的數值,反過來就會導致點雲配準等後期的處理失敗。

原理解釋

每個點的鄰域進行一個統計分析,並修剪掉一些不符合一定標準的點,稀疏離群點移除方法基於在輸入資料中對點到臨近點的距離分佈的計算,對每一個點,計算它到它的所有臨近點的平均距離,假設得到的結果是一個高斯分佈,其形狀是由均值和標準差決定,平均距離在標準範圍之外的點,可以被定義為離群點並可從資料中去除。

引數解釋

"MeanK"

The number of points to use for mean distance estimation

平均距離估計的點數,在進行統計時考慮查詢點臨近點數

對每個點分析的臨近點的個數設定為50 ,並將標準差的倍數設定為1  這意味著如果一個點的距離超出了平均距離一個標準差以上,則該點被標記為離群點,並將它移除,儲存起來

"stddev_mult"

設定判斷是否為離群點的閥值

投影濾波

原理解釋

將點投影到一個引數化模型上(平面或者球體等),對於平面來說使用其等式形式,本工具中使用的引數化模型為ax+by+cz+d=0平面模型,假設a=b=d=0,c=1 也就表明投影到X-Y平面,投影之後,xy的值都沒有改變,z值都變為0

引數解釋

A

ax+by+cz+d=0的係數

1.0.0.0:x=0平面

0.0.1.0:z=0 平面

B

C

D

直通濾波

直通濾波器對原始點雲資料進行濾波處理。通過直通濾波器可以將某一軸向上的,比如Z軸方向上範圍之外的點濾除(在背景與前景有一定距離的情況下,可以除掉背景)

特徵點提取

常見的三維點雲關鍵點提取演算法有一下幾種:ISS3D、Harris3D、NARF、SIFT3D這些演算法在PCL庫中都有實現,其中NARF演算法是用的比較多的。

邊緣點

引數解釋:

arg_kNearest = 30;//一般這裡的數值越高,最終邊界識別的精度越好

arg_Angle = 144;//角度值,0-360

Harris

角點:水平、豎直方向上變化均較大的點

對比而言,邊緣是僅在水平或者僅在豎直方向上有較大的變化,平坦地區則是水平、豎直變化均較小。

一般來說特徵檢測都會對曲率變化比較劇烈的點更敏感。Harris演算法是影象檢測識別演算法中非常重要的一個演算法,其對物體姿態變化魯棒性好,對旋轉不敏感,可以很好的檢測出物體的角點

原理解釋:

  1.在影象中取一個窗 w (矩形窗,高斯窗等)

  2.獲得在該窗下的灰度 I

  3.移動該窗,則灰度會發生變化,平坦區域灰度變化不大,邊緣區域沿邊緣方向灰度變化劇烈,角點處各個方向灰度變化均劇烈

4.依據3中條件選出角點

引數解釋

//角解析度

float angularResolution = (float) (  1.0f * (M_PI/180.0f));  //   1.0 degree in radians

//phi可以取360°

  float maxAngleWidth     = (float) (360.0f * (M_PI/180.0f));  // 360.0 degree in radians

//a180°

  float maxAngleHeight    = (float) (180.0f * (M_PI/180.0f));  // 180.0 degree in radians

//半圓掃一圈就是整個影象了

"radius"

radius       the radius for normal estimation as well as for non maxima suppression       

"threshold”

threshold the threshold to filter out weak corners

ISS

名詞解釋

ISS演算法的全稱是Intrinsic Shape Signatures,使用區域性座標系建模分析,這種區域性座標系建模分析的方法是基於特徵值分析的特徵點提取的方法。

原理描述:

1、      第一步,建模

a.把pi和周圍點pj的座標相減:本質上這生成了許多從pi->pj的向量, 理想情況下pi的法線應該是垂直於這些向量的

b.利用奇異值分解求這些向量的0空間,擬合出一個儘可能垂直的向量,作為法線的估計

2.第二步,其利用特徵值之間關係來形容該點的特徵程度。

顯然這種情況下的特徵值是有幾何意義的,特徵值的大小實際上是橢球軸的長度。

橢球的的形態則是對鄰近點分佈狀態的抽象總結。

試想,如果臨近點沿某個方向分佈緻密則該方向會作為橢球的第一主方向,  稀疏的方向則是第二主方向,法線方向當然是極度稀疏(只有一層),那麼則作為第三主方向。

 如果某個點恰好處於角點,則第一主特徵值,第二主特徵值,第三主特徵值大小相差不會太大。

如果點雲沿著某方向緻密,而垂直方向係數則有可能是邊界。總而言之,這種區域性座標系建模分析的方法是基於特徵值分析的特徵點提取

更詳細的描述如下:

SS關鍵點檢測器在場景中的每個點周圍找到支援區域的協方差矩陣的特徵值M1,M2和M3(以遞減幅度)。

假設存在值iss_gamma_21 _和iss_gamma_32_,計算方法如下所示。

iss_gamma_21_ = M2/M1

iss_gamma_32_ = M3/M2  

估計的iss_gamma_21_和iss_gamma_32_小於使用者設定閾值的點,然後將這些點傳遞到下一階段,其中基於最小特徵值估計顯著性,並且執行非最大抑制以找到最終關鍵點集合。

現在,如果我們將閾值iss_gamma_21 _和iss_gamma_32_設定為0.9之類比較高的值,則所有點都通過第一階段的提取的點,這是基於使用者設定的閾值。 這是因為很可能M2 / M1 <0.9且M3 / M2 <0.9,這樣無法提供有效提取策略“This does not offer efficient pruning strategy of unreliable points”。

因此這些不可靠的點才通過了第一階段。接下來,從這些點集中,通過non-maximum檢測可以最終確定的一組關鍵點。

雖然這些點在鄰域方差和結構測試中提供了良好的效能,但它並沒有轉化為具有稀疏深度測量的良好姿態估計。

總結:

基本上,ISSKeypoint3D detector.可以執行兩種不同的模式:沒有邊界估計和隨著邊界估計。

 引數

model_resolution:一個基數。是程式中用到的兩個引數的基數

salient_radius:the radius of the spherical neighborhood。6 * model_resolution

Set the radius for the application of the non maxima supression algorithm

均為必須的引數:salient radius (嚴格為正)、maxima suppression radius (嚴格為正)、border radius (邊界半徑,預設值0.0)

SIFT

名詞解釋

SIFTKeypoint是將二維影象中的SIFT運算元調整後移植到3D空間的SIFT運算元的實現,SIFT(Scale-invariant feature transform)是一種檢測區域性特徵的演算法,該演算法通過求一幅圖中的特徵點(interest points,or corner points)及其有關scale 和 orientation 的描述子得到特徵並進行影象特徵點匹配

這個演算法具有比較良好的尺度不變性和旋轉不變形

原理描述

通俗一點說,SIFT演算法利用DoG(差分高斯)來提取關鍵點(或者說成特徵點),DoG的思想是用不同的尺度空間因子(高斯正態分佈的標準差σ)對影象進行平滑,然後比較平滑後圖像的區別,差別大的畫素就是特徵明顯的點,即可能是特徵點。對得到的所有特徵點,我們剔除一些不好的,SIFT運算元會把剩下的每個特徵點用一個128維的特徵向量進行描述。由上,易知,一幅影象經過SIFT演算法後可以表示為一個128維的特徵向量集。  

SIFT具有以下特徵:

1、SIFT特徵,對旋轉、尺度縮放、亮度變化等保持不變性,對視角變換、仿射變化、噪聲也保持一定程度的穩定性,是一種非常優秀的區域性特徵描述演算法;

2、獨特性好,資訊量豐富,適用於海量特徵庫進行快速、準確的匹配;

3、多量性,即使是很少幾個物體也可以產生大量的SIFT特徵;

4、高速性,經優化的SIFT匹配演算法甚至可以達到實時性的要求;

5、擴充套件性,可以很方便的與其他的特徵向量進行聯合。

1、SIFT特徵檢測的步驟

尺度空間的極值檢測:搜尋所有高斯尺度空間上的影象,通過高斯差分函式(DoG)來識別潛在的對尺度和選擇不變的興趣點。

關鍵點的定位和過濾:在每個候選的位置上,通過一個擬合精細模型來確定位置尺度,關鍵點的選取依據他們的穩定程度。

特徵方向賦值:基於影象區域性的梯度方向,分配給每個關鍵點位置一個或多個方向,後續的所有操作都是對於關鍵點的方向、尺度和位置進行變換,從而提供這些特徵的不變性。

特徵點描述:在每個特徵點周圍的鄰域內,在選定的尺度上測量影象的區域性梯度,這些梯度被變換成一種表示,這種表示允許比較大的區域性形狀的變形和光照變換。

2、尺度空間

在一定的範圍內,無論物體是大還是小,人眼都可以分辨出來。然而計算機要有相同的能力卻不是那麼簡單的事情,在未知的場景中,計算機視覺並不能提供物體的尺度大小,其中的一個方法就是把物體不同尺寸下的影象都提供給機器,讓機器能夠對物體再不同的尺度下有一個統一的認知。在建立統一認知的過程中,要考慮的就是影象在不同的尺度下都存在的特徵點。

引數解釋

輸入帶有XYZ座標值和強度的點雲,輸出為點雲中的SIFT關鍵點,其關鍵函式的說明如下:

min_scale

在點雲體素尺度空間中標準偏差

nr_octaves

檢測關鍵點時體素空間尺度的數目

nr_scales_per_octave

每一個體素空間尺度下計算高斯空間的尺度所需要的引數

min_contrast

候選關鍵點對應的對比度下限

NARF

名詞解釋:

NARF(Normal Aligned Radial Feature)關鍵點是為了從深度影象中識別物體而提出的,對NARF關鍵點的提取過程有以下要求:

a)提取的過程考慮邊緣以及物體表面變化資訊在內;

b)在不同視角關鍵點可以被重複探測;

c)關鍵點所在位置有足夠的支援區域,可以計算描述子和進行唯一的估計法向量。

計算原理:

  (1) 遍歷每個深度影象點,通過尋找在近鄰區域有深度變化的位置進行邊緣檢測。

  (2) 遍歷每個深度影象點,根據近鄰區域的表面變化決定一測度表面變化的係數,及變化的主方向。

  (3) 根據step(2)找到的主方向計算興趣點,表徵該方向和其他方向的不同,以及該處表面的變化情況,即該點有多穩定。

  (4) 對興趣值進行平滑濾波。

  (5) 進行無最大值壓縮找到的最終關鍵點,即為NARF關鍵點。

引數:

"angular_resolution"

角座標解析度,模擬的深度感測器的角度解析度,即深度影象中一個畫素對應的角度大小

"maxAngleWidth"

模擬的深度感測器的水平最大采樣角度

"maxAngleHeight"

模擬感測器的垂直方向最大采樣角度

"noise_level"

noise_level獲取深度影象深度時,近鄰點對查詢點距離值的影響水平

"min_range "

min_range設定最小的獲取距離,小於最小獲取距離的位置為感測器的盲區

“border_size”

border_size獲得深度影象的邊緣的寬度

"support_size"

//感興趣點的尺寸(球面的直徑)