1. 程式人生 > >ICP演算法綜述(一)

ICP演算法綜述(一)

《A review of point cloud registration algorithms fro mobile robotics》
正如論文標題,這篇綜述將icp演算法在移動機器人學中的應用。
大多數綜述分為3個部分:回顧歷史、具體形式和應用場景。本文首先介紹第一部分。

1 回顧歷史
ICP演算法的目的是為了通過把不同座標系中的點,通過最小化配準誤差,變換到一個共同的座標系中。
在這裡插入圖片描述
上圖中,綠色為參考點雲,藍色為需要匹配的點雲。左圖為兩個點雲的初始位置,其實在這個圖中,兩個點雲已經位於同一個座標系(由我們指定的初始值).中圖紅色直線為匹配的誤差. 右圖為配準後的點雲.

由上圖表明,ICP演算法就是幹這種活的。

在這裡插入圖片描述
這個是關於ICP論文的數量變化曲線,藍色代表一個數據庫的,綠色代表另一個數據庫的。說明ICP演算法的繁榮發展。

有很多大牛對ICP演算法進行了改進,這裡不介紹。下面介紹一下演算法的整體思路:

幾何配準的目的:
The aim of geometric registration is to be able to represent a shape,called reading, in the same coordinate frame as another, called reference. This is equivalent to finding the transformation of reading that best aligns it to reference

論文裡的兩個點雲分別叫做reference和reading。目的是把reading匹配到reference上。

形狀shape是啥呢?

形狀是一個點集合。這個點集合包括幾何和非幾何資訊。

幾何資訊就是能夠被空間變換影響的。點的這部分維度叫做特徵。如點的座標、曲面法線、切向量。

非幾何資訊資訊不能被空間變換影響。這部分維度叫做描述子。例如,顏色、溫度等。

舉個例子:例如一個點雲中的點的型別為XYZRGB,那麼這裡的幾何資訊就是點的座標XYZ,而RGB為非幾何資訊。

我們知道,點雲的數量非常巨大,並且含有噪聲,所以需要濾波。
濾波就是從帶有噪聲中提取有用的資訊。文中介紹了兩種形式。

第一種方式是去除不能為匹配帶來有用資訊的點。
第二種方式是對點雲進一步抽象,例如提取區域性的法線資訊或曲率。

下圖給出了ICP的數學形式表示
在這裡插入圖片描述
這個公式的思想很好理解,我們要估計的是變換矩陣T。T的含義是把A系中的點變換到B系中。問題是error怎麼定義呢?

通常,這個誤差定義在兩個關聯的點上進行度量。
那麼會有兩個問題,1 如何查詢關聯點 2 如何對誤差度量

如何查詢關聯點呢?
ICP叫做迭代最近點,就是簡單的認為與一個點最近的點就是關聯點。理想情況是,匹配後的兩個點雲的關聯點應該是最近點。尋找關聯點的問題也叫作資料關聯、點匹配、對應點查詢。

關聯可以通過特徵或者描述子完成。
找到匹配點後,可以計算誤差。
在這裡插入圖片描述

此外,可以通過加權的方式,來減少異常值的影響
在這裡插入圖片描述

由於有噪聲或者錯誤的資料關聯,所以我們希望最小化誤差
在這裡插入圖片描述
i 和i+1代表迭代時的變換矩陣的指標。
在這裡插入圖片描述
在這裡插入圖片描述
這裡就是不斷的合成變換矩陣,得到最終估計的變換矩陣。
注意這裡是左乘矩陣。

演算法
在這裡插入圖片描述
在這裡插入圖片描述

小結:
ICP叫做迭代最近點,我們從名字可以看出,包括迭代和查詢最近點(資料關聯)。
迭代是需要初始值的,所以我們需要提供初始值。
然後不斷的重複迭代最近點的過程,直至收斂。

上述的演算法只是一個框架,沒有明確指出:
1 如何資料關聯
2 誤差函式怎麼定義。
這應該就是各種ICP演算法的不同所在吧