Lucas-Kanade算法廣泛用於圖像對齊、光流法、目標追蹤、圖像拼接和人臉檢測等課題中。
一、核心思想
給定一個模板和一個輸入
,以及一個或多個變換
,求一個參數最佳的變換
,使得下式最小化
在求最優解的時候,該算法假設目前的變換參數已知,並迭代的計算
的增量
,使得更新后的
能令上式比原來更小。則上式改寫為:
二、算法流程
1.初始化參數向量
2.計算及其關於
導數,求得參數增量向量
3.更新,
4.若小於某個小量,即當前參數向量
基本不變化了,那么停止迭代,否則繼續2,3兩步驟。
三、具體做法
對做一階泰勒級數展開,則目標函數變為:
對其求導,並令導數為0,得到下式:
對上式中的求解即可,得到的是
的解析解:
其中,
四、Lucas-Kanade算法(前向加性算法)
迭代:
1) 利用,將
中各個像素點的坐標對應到
中的相應的像素點的坐標,得到
。即
和的
大小尺寸(像素個數和長寬)相同。
2) 計算,獲得誤差圖像。
3) 計算中與
經過
變換對應的像素點的梯度圖像
,即計算
中各個點在
中的梯度。利用
,將
中各個像素點的坐標對應到
的梯度圖像
中各個點的坐標。
4) 計算在設定下的Jacobian
。即代入當前參數
,計算
。如果
是二維坐標,即
,也就是說每行是對
中每個分量對於
的每個參數分量的導數:
5) 計算最速梯度下降圖。即利用
與
中每個像素點相乘。
6) 利用上述提到的公式計算Hessian矩陣
7) 利用上面步驟計算得到的值,計算
8) 利用上述提到的公式計算參數向量的增量
9) 更新,
五、Baker-Matthews算法(逆向組成算法)
預處理:
1) 計算模板的梯度圖像
2) 計算在設定下的Jacobian
3) 計算最速梯度下降圖。即利用
與
中每個像素點相乘。
4) 利用公式計算Hessian矩陣
迭代:
5) 利用,將
中各個像素點的坐標對應到
中的相應的像素點的坐標,得到
。即
和
的大小尺寸(像素個數和長寬)相同。
6) 計算,獲得誤差圖像。
7) 利用上面步驟計算得到的值,計算
8) 利用上述提到的公式計算參數向量的增量
9) 更新,
。即將原有
的矩陣與
矩陣的逆相乘。
六、參考文獻和資料
[1]Matthews I, Baker S. Active appearance models revisited[J]. International Journal of Computer Vision, 2004, 60(2): 135-164.
[2]Cootes T F, Edwards G J, Taylor C J. Active appearance models[J]. IEEE Transactions on pattern analysis and machine intelligence, 2001, 23(6): 681-685.
[3]Baker S, Matthews I. Lucas-kanade 20 years on: A unifying framework[J]. International Journal of Computer Vision, 2004, 56(3): 221-255.
[4]利用L-K算法實現的圖像對齊程序:http://www.codeproject.com/Articles/24809/Image-Alignment-Algorithms