1. 程式人生 > >NDT 算法和一些常見配準算法

NDT 算法和一些常見配準算法

for 便宜 sla 硬件 明顯 tar 特征值 分解 變體

原文鏈接:http://ghx0x0.github.io/2014/12/30/NDT-match/

目前三維配準中用的較多的是ICP叠代算法,需要提供一個較好的初值,同時由於算法本身缺陷,最終叠代結果可能會陷入局部最優。本文介紹的是另一種比較好的配準算法,NDT配準。這個配準算法耗時穩定,跟初值相關不大,初值誤差大時,也能很好的糾正過來。

緒論:

  • 采樣:
    • 3d點雲數據在離相機近處點雲密度大,遠處密度小,所以在下采樣時采用統一的采樣方法還是會保留密度不均勻;
      一種方法是將空間劃分格子,在每個格子內的點雲隨機取點,點數足夠了即可。
    • 短波將會產生更高的分辨率和較少的鏡面反射。采用多個深度相機會產生串擾的問題,尤其是鏡面反射很厲害的時候。

可以采集圖像深度的相機:

  1. 雷達radio
  2. 激光雷達lidar
    • 三角測量法
    • TOF飛行時間法
    • 相位差法
  3. 聲吶
  4. 雙目視覺
    • 雙目視覺是一個被動的三角測量;
      缺點:
      A.雙目視覺只有能被檢測出來的特征點才能檢測出深度,在低對比度的環境中,只有很少的特征點能夠檢測出;
      B.雙目視覺的另一個缺點是歲兩個相機之間的距離增大,深度精度減少,盲區增大,主要面向幾米遠的長距離測量。
      C.對於沒有紋理的表面檢測不出來。
  5. 投影光三角測量
  6. TOF深度相機
    • 實際上是采用相位偏移法測量;
      TOF深度相機相比lidar的TOF是 采集速度快,硬件便宜
      缺點是噪點很明顯,並且需要標定,並且受外界光和本身主動光的影響。 而且曝光時間不容易確定

視圖匹配(配準):

  1. ICP
    缺點:
     A.要剔除不合適的點對(點對距離過大、包含邊界點的點對)
     B.基於點對的配準,並沒有包含局部形狀的信息
     C.每次叠代都要搜索最近點,計算代價高昂
    
    存在多種優化了的變體算法,如八叉樹等
  2. IDC
     ICP的一種改進,采用極坐標代替笛卡爾坐標進行最近點搜索匹配
    
  3. PIC
     考慮了點雲的噪音和初始位置的不確定性
    
  4. Point-based probabilistic registration
     需要首先建立深度圖的三角面片
    
  5. NDT——正態分布變換:
     計算正態分布是一個一次性的工作(初始化),不需要消耗大量代價計算最近鄰搜索匹配點   
     概率密度函數在兩幅圖像采集之間的時間可以離線計算出來  
    
  6. Gaussian fields
     和NDT正態分布變換類似,利用高斯混合模型考察點和點的距離和點周圍表面的相似性
    
  7. Quadratic patches
  8. Likelihood-field matching——隨機場匹配
  9. CRF匹配
     缺點: 運行速度慢,在3d中實時性能不好,誤差大。
    
  10. Branch-and-bound registration
  11. Registration using local geometric features

NDT算法:

  1. 將空間(reference scan)劃分成各個格子cell
  2. 將點雲投票到各個格子
  3. 計算格子的正態分布PDF參數

    技術分享

  4. 將第二幅scan的每個點按轉移矩陣T的變換

  5. 第二幅scan的點落於reference的哪個 格子,計算響應的概率分布函數

    技術分享

  6. 求所有點的最優值,目標函數為

技術分享

PDF可以當做表面的近似表達,協方差矩陣的特征向量和特征值可以表達表面信息(朝向、平整度)
格子內少於3個點,經常會協方差矩陣不存在逆矩陣,所以只計算點數大於5的cell,涉及到下采樣方法。
  • NDT的優化:
    格子參數最重要,太大導致精度不高,太小導致內存過高,並且只有兩幅圖像相差不大的情況才能匹配
  1. 固定尺寸
  2. 八叉樹建立,格子有大有小
  3. 叠代,每次使用更精細的格子
  4. K聚類,有多少個類就有多少個cell,格子大小不一
  5. Linked-cell
  6. 三線插值 平滑相鄰的格子cell導致的不連續,提高精度
    缺點:插值導致時間是普通的4倍
    優點:可以提高魯棒性

ICP算法:

  1. 給定參考點集P和數據點集Q(在給定初始估計RT時)
  2. 對Q中的每一個點尋找P中的對應最近點,構成匹配點對
  3. 對匹配點對求歐氏距離和作為誤差目標函數error
  4. 利用SVD分解求出R和T,使得error最小
  5. 將Q按照R和T旋轉變化,並以此為基準回到1 重新尋找對應點對
NDT 耗時穩定,跟初值相關不大,初值誤差大時,也能很好的糾正過來;  
ICP耗時多,容易陷入局部最優;  

可以根據格子cell的PDF的協方差矩陣計算特征向量特征值,每個格子有球形狀、平面、線型三種類型,根據朝向作以統計,得到局部或者一幅圖像的特征直方圖  

文章來自於Martin Magnusson的The Three-Dimensional Normal-Distributions Transform— an Efficient Representation for Registration,Surface Analysis, and Loop Detection。 作者詳細介紹了NDT在各個條件下的配準效果及與其他配準方法的詳細實驗對比,並利用NDT算法配準礦洞內三維場景,同時完成SLAM任務。
技術分享
技術分享

NDT 算法和一些常見配準算法