光流法的目標是完成圖像點的跟蹤, 因此這裏假設存在一個輸入圖像I, 以及要跟蹤的點x, 存在另外一個圖像塊T, 我們的目標是完成圖像塊T到輸入圖像I的匹配.
文章針對Lucas-Canade光流法做了一個總結,
文章對lucas-canade (Forward Additive, FA)算法做了簡介, 引入了Compositional算法以及Inverse方法. 因此對應組合形成4種方法分別是Forward Additive(FA), Forward Compositional(FC)以及新提出的Inverse Compositional(IC)算法, Inverse Additive(IA)算法. 對這4種方法文章分別從算法的目標, 算法的推導, 算法對wrap矩陣的要求, 算法計算複雜度以及算法與其他方法的等效情況.
除了四種方法的原理, 文章還介紹了幾種優化方法如何實現上述光流的計算. 從高斯牛頓開始介紹, 文章介紹了牛頓法的原理以及對牛頓法的改進. 高斯牛頓法是對牛頓法的一種近似. 當牛頓法中的Hessian矩陣使用雅克比近似時, 牛頓法變爲高斯牛頓. 當Hessian矩陣使用c*I(對角爲c, 其他元素爲0)的矩陣, 牛頓法變爲梯度下降法.
Lucas-Kanade 光流法簡介
直接法使用光度值不變約束,可以表示爲
如果是一個仿射變換
這裏有6個參數表示了一個仿射變換。
爲了讓上述問題可解。Lucas等引入FAIA(Forward Additional Image Alignment)方法使用單一的運動模型代替獨立像素位移差,其中運動模型的額參數依賴於運模型的建立。之後研究者在其上做了拓展分別是FCIA(Forward Composition Image Alignment),ICIA(Inverse Compositional Image Alignment)和IAIA(Inverse Additional Image Alignment)\cite{baker2004lucas}。其中ICIA使用於直接法SVO中塊匹配方法,
看到上面一堆名詞,有點暈了,可以看到他們都是圍繞Image Alignment來的,那麼爲什麼使用LK光流法呢,LK是這四個中的FAIA。那是因爲原始的光流法算起來太慢,然後我們吧光流用在了運動估計上,因此可以根據運動模型降低光流法的計算量。
增量方式\更新方式 | forward | inverse |
---|---|---|
additive | FAIA | IAIA |
compositional | FCIA | ICIA |
前向與後向的對比
前向方法對於輸入圖像進行參數化(包括仿射變換及放射增量). 後向方法則同時參數輸入圖像和模板圖像, 其中輸入圖像參數化仿射變換, 模板圖像參數參數化仿射增量. 因此後向方法的計算量顯著降低. 由於圖像灰度值和運動參數非線性, 整個優化過程爲非線性的.
參數化過程主要要計算: 圖像的梯度, 位置對運動參數導數, 運動參數增量. 前向方法中Hessian是運動參數的函數. 提高效率的主要思想是交換模板圖像和輸入圖像的角色.
後向方法在迭代中Hessian是固定的.
前向方法和後向方法在目標函數上不太一樣,一個是把運動向量
舉例:
FAIA的目標函數(前向方法)
ICIA的目標函數(後向方法)
如果使用一階泰勒展開FAIA(前向方法)的目標函數變爲
ICIA(後向方法)的泰勒展開爲
而雅克比矩陣爲
只和xy有關,圖像I的梯度是要在
Compositional 與 Additive對比
通過增量的表示方式來區分方法. 迭代更新運動參數的時候,如果迭代的結果是在原始的值(6個運動參數)上增加一個微小量,那麼稱之爲Additive,如果在仿射矩陣上乘以一個矩陣(增量運動參數形成的增量仿射矩陣),這方法稱之爲Compositional。兩者理論上是等效的,而且計算量也差不多。
算法的目標
FAIA:
FCIA:
ICIA以及,IAIA:
對於warp的要求
FAIA:
FCIA: warp集合包含identitywarp, warp集合包含在Composition操作上是閉的(semi-group), 其中包括Homograph, 3D rotation等.
ICIA: semi-group, 另外要求增量warp可逆, 其中包括Homograph, 3D rotation等, 但不包括piece wise affine.
IAIA: 適用於2D平移, 2D相似, 2D仿射等.
算法簡介
FAIA
目標函數爲
更新的方式爲
步進的計算方法爲
算法每個步驟中的時間複雜度
僞代碼
FCIA
目標函數爲
更新方式爲
步進的計算
ICIA
爲了避免花費很多時間來計算hessian矩陣,如果該矩陣是恆定的,那麼只需要計算一次.然後事實上Hessian矩陣是關於
文章給出了前向和反向的方法是等效的,並給出了證明.
對比IAIA發現ICIA的迭代中不需要對圖像梯度進行wrap, 另外計算Hessian中同樣如此.
IAIA
仍然是交換I和T. 這樣可以避免每個迭代中計算梯度圖像.
update
實際上這種方法能夠使用的運動很少, 對於warp的要求很高, 因此不常用. 文中之後給出了the Inverse Additive 和 Compositional Algorithms 方法在 Affine Warps中的等效性.
總結
- 兩個前向方法的計算複雜度相似,後向方法幾乎相等.後向方法的速度遠比前向方法要快.
- 前向additive可以用於任何變形(warp),
- 反向compositional只能用於warps that form groups.
- 反向additive 可以用於simple 2D linear warps such as translations and affine warps.
如果不進考慮效率的話可以使用兩種前向方法.前向compositional的方法中Jacobian是常量,因此有一定的優勢.
如果效率很重要的話,那麼後向compositional方法是首選,推導很簡單,很容易確定.
雅克比矩陣和殘差計算的方式有關, 由於 compositional 計算誤差的方式會使得雅克比矩陣爲常數,通常採用compositional的形式
梯度下降方法的近似
文章介紹了4種方法分別是高斯牛頓, LM, 梯度下降和Hessian矩陣對角近似. 對這些方法文章分別進行了分step性能, iteration性能等的測試.
牛頓法中通過對Hessian使用雅克比矩陣近似可以得到高斯牛頓.
Algorithm | order of the Taylor approximations | Hessian | work better at |
---|---|---|---|
The Gauss-Newton Algorithm | first order | approximations to the Hessian | |
The Newton Algorithm | sendond order | ||
Steepest Descent | - | indentity matrix | furhter away from lcoal local minima |
The Levenberg-Marquardt Algorithm | combine diagonal and full Hessian | error gets worse |
結論
- Gauss-Newton 和 Levenberg-Marquardt的收斂性能類似, 但跟另外2種方法稍好.
- Levenberg-Marquardt實現的效率和Gauss-Newton接近, 並且不好好於高斯牛頓.
算法的選擇
- 噪聲,如果圖像的噪聲比較大,那麼最好使用反向算法,反之使用前向方法.
- 關於效率的已經討論過了.