Lucas-Kanade算法总结

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

 

你可能感兴趣的:(cas)