PCL學習筆記二:Registration (ICP算法)


原文:http://blog.csdn.net/u010696366/article/details/8941938

PCL Registration API

Registration:不斷調整,把不同角度的3D點數據整合到一個完整的模型中。
它的目的在於在一個全局坐標系下找到不同視角的定位與定向(兩個視角交叉部分重疊完好為最優)。這就是KinectFusion論文中所提到的ICP( Iterative Closest Point )算法。給定輸入數據集,首先做一個估計,然后通過旋轉和平移變換一個數據集,找到一個正確的點集對應方式完美匹配。下面幾頁PPT是ICP很好的解釋。


PCL提供了很多算法,多組點集對應估計,剔除壞對應,穩健的變換估計等。下面詳細解釋。

Pairwise registration

兩個點集的對應,輸出通常是一個4×4剛性變換矩陣:代表旋轉和平移,它應用於源數據集,結果是完全與目標數據集匹配。下圖是“雙對應”算法中一次迭代的步驟:

對兩個數據源a,b匹配運算步驟如下:

  • 從其中一個數據源a出發,分析其最能代表兩個數據源場景共同點的關鍵點k
  • 在每個關鍵點ki處,算出一個特征描述子fi
  • 從這組特征描述子{fi}和他們在a和b中的XYZ坐標位置,基於fi和xyz的相似度,找出一組對應
  • 由於實際數據源是有噪的,所以不是所有的對應都有效,這就需要一步一步排除對匹配起負作用的對應
  • 從剩下的較好對應中,估計出一個變換

匹配過程中模塊

Keypoints(關鍵點)

關鍵點是場景中有特殊性質的部分,一本書的邊角,書上印的字母P都可以稱作關鍵點。PCL中提供的關鍵點算法如NARF,SIFT,FAST。你可以選用所有點或者它的子集作為關鍵點,但需要考慮的是按毎幀有300k點來算,就有300k^2種對應組合。

Feature descriptors(特征描述子)

根據選取的關鍵點生成特征描述。把有用信息集合在向量里,進行比較。方法有:NARF, FPFH, BRIEF 或SIFT.

Correspondences estimation(對應關系估計)

已知從兩個不同的掃描圖中抽取的特征向量,找出相關特征,進而找出數據中重疊的部分。根據特征的類型,可以選用不同的方法。

點匹配(point matching, 用xyz坐標作為特征),無論數據有無重組,都有如下方法:

  • brute force matching(強制匹配),
  • kd-tree nearest neighbor search (FLANN)(kd樹最近鄰搜索),
  • searching in the image space of organized data(在圖像空間搜索有組織的數據), 
  • searching in the index space of organized data(按索引搜索有組織的數據).

特征匹配(feature matching, 用特征做為特征),只有下面兩種方法:

  • brute force matching (強制匹配)
  • kd-tree nearest neighbor search (FLANN)(kd樹最近鄰搜索).

除了搜索法,還有兩種著名對應估計:

  • 直接估計對應關系(默認),對點雲A中的每一點,搜索在B中的對應關系
  • “Reciprocal” 相互對應關系估計,只用A,B重疊部分,先從A到B找對應,再從B到A找對應。
Correspondences rejection(剔除錯誤估計)

剔除錯誤估計,可用 RANSAC 算法,或減少數量,只用一部分對應關系。有一種特殊的一到多對應,即模型中一個點對應源中的一堆點。這種情況可以用最短路徑對應或檢查附近的其他匹配過濾掉。

Transformation estimation(最后一步,計算變換)
  • 基於上述匹配評估錯誤測量值;
  • 評估相機不同pose之間所作的剛性變換(運動估計),使錯誤測量值最小化;
  • 優化點雲結構;
  • E.g, - SVD 運動估計; - Levenberg-Marquardt用不同內核作運動估計;
  • 用剛性變換旋轉/平移源數據到目標位置,可能需要對所有點/部分點/關鍵點內部運行ICP迭代循環;
  • 迭代,直到滿足某些收斂標准。

匹配流程總結


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM