Python ICP迭代最近點演算法

2021-08-13 22:15:02 字數 1245 閱讀 4896

點雲配準指將兩個不同視點的點群三維資料整合到乙個統一的座標系的過程。

迭代最近點法(icp, iterative closest points)的思路為:根據某種幾何特性對資料進行匹配,並設這些匹配點為假想的對應點,然後根據這種對應關係求解運動引數。再利用這些運動引數對資料進行變換。並利用同一幾何特徵,確定新的對應關係,重複上述過程進行迭代,使得資料中的重疊部分充分吻合。icp方法中使用的幾何特性即點在空間中的距離。

(下面一段公式太多直接貼圖了。。好懶)

本演算法基於python語言實現,使用geomagic studio或者matplotlib作為視覺化工具,具體實現的步驟如下:

使用geomagic studio將點雲檔案進行粗配準;

在點集中隨機選取指定數量(使用者可自定義)的點作為控制點,用於調節icp演算法的計算效率和配準精度;

在另乙個點集中根據歐幾里得距離找到每個點的對應點;

利用控制點和其對應點計算旋轉矩陣和位移向量;

將計算出來的旋轉位移量應用到點集上,並迭代進行2、3、4步驟。

優化方法:

icp進行匹配的過程中有一些可以優化的細節:

刪除點雲資料中在採集時產生的雜訊,例如明顯偏離物體很遠的點,減少異常值產生的影響;

使用kd-tree這一資料結構對查詢最近點對的過程進行優化,可以節省很多時間。

圖 1和圖 3分別為點雲的粗配準和icp配準後的結果,可以看到,圖 1原始的點雲兩種顏色分別佔據了大塊的面積,尤其從圖 2的視角可以看出,粗配準的結果下兩個點集依然有較大的距離。

圖 3兩種顏色互相融合,說明配準取得了一定效果。

圖 1 點雲粗配準結果

圖 2 點雲粗配準(誤差較大)

圖 3 配準結果

icp演算法作為點雲配準的經典方法,實現簡單,但有諸多細節需要考慮,如控制點的選取,異常值的處理,距離的度量方法等。而且icp方法需要有較好的初值,否則也難以得到好的結果。

(五)迭代最近點(ICP)

icp演算法 從這裡開始,筆者便秉承恩師的教誨,用一些比較規範的寫法來介紹演算法原理。已知條件 匹配的一組三維點雲 p p dots,p q q dots,q tips 這堆點雲一般是根據兩幀影象的特徵點進行匹配,再利用匹配的畫素位置在深度圖中查詢深度值,利用相機內參以及深度值進行計算相機座標系下的...

icp點雲匹配迭代最近鄰演算法

一 含義 1.icp演算法能夠使兩個不同座標系下的點集匹配到乙個座標系中,這個過程就是配準,配準的操作就是找到從座標系1變換到座標系2的剛性變換。2.icp的本質就是配準,但有不同的配準方案,icp演算法本質是基於最小二乘的最優配準方法。該方法重複進行選擇對應關係對,計算最優剛體變換,直到滿足正確配...

迭代器 可迭代物件 迭代器物件

今天的學習內容有 迭代器 可迭代物件 迭代器物件 for迴圈內部原理 生成器和生成器表示式 面向過程程式設計 迭代就是指更新換代的過程,要重複進行,而且每次的迭代都必須基於上一次的結果。我們使用for迴圈的時候就是把元素從容器裡乙個個取出來,這種過程其實就是迭代。迭代器 迭代取值的工具。迭代器的作用...