Lucas-Kanade 前向加性算法原理

核心思想

给定一个模板 T T T和一个输入 I I I,以及一个或多个变换 W W W, 求一个参数最佳的变换 W W W,使得下式最小化:
min ⁡ x ∑ [ I ( W ( x → , p → ) ) − T ( x → ) ] 2 \min_{x} \sum[I(W(\overrightarrow x,\overrightarrow p ))-T(\overrightarrow x)]^2 xmin[I(W(x ,p ))T(x )]2
在求最优解的时候,该算法假设目前的变换参数 p → \overrightarrow p p 已知,并迭代的计算的增量,使得更新后的
p → = p → + Δ p → \overrightarrow p=\overrightarrow p+\Delta \overrightarrow p p =p +Δp 能令上式比原来更小。
则上式改写为:
min ⁡ x ∑ [ I ( W ( x → , p → + Δ p → ) ) − T ( x → ) ] 2 \min_{x} \sum[I(W(\overrightarrow x,\overrightarrow p+\Delta \overrightarrow p ))-T(\overrightarrow x)]^2 xmin[I(W(x ,p +Δp ))T(x )]2

算法流程

1.初始化参数向量 p → \overrightarrow p p
2.计算下式
∑ x [ I ( W ( x → , p → ) ) − T ( x → ) ] 2 \sum_x[I(W(\overrightarrow x,\overrightarrow p ))-T(\overrightarrow x)]^2 x[I(W(x ,p ))T(x )]2
及其关于 p → \overrightarrow p p 导数,求得参数增量向量 Δ p → \Delta \overrightarrow p Δp

3.更新 p → \overrightarrow p p p → = p → + Δ p → \overrightarrow p=\overrightarrow p+\Delta \overrightarrow p p =p +Δp
4.若 Δ p → \Delta \overrightarrow p Δp 小于某个小量,即当前参数向量 p → \overrightarrow p p 基本不变化了,那么停止迭代,否则继续2,3两步骤。

具体做法

I ( W ( x → , p → + Δ p → ) I(W(\overrightarrow x,\overrightarrow p+\Delta \overrightarrow p ) I(W(x ,p +Δp )做一阶泰勒级数展开,
则目标函数变为:
∑ x [ I ( W ( x → , p → ) ) + Δ I ∂ W ∂ p → Δ p → − T ( x → ) ] 2 \sum_x[I(W(\overrightarrow x,\overrightarrow p )) + \Delta I \frac{\partial{W}}{\partial \overrightarrow p}\Delta \overrightarrow p-T(\overrightarrow x)]^2 x[I(W(x ,p ))+ΔIp WΔp T(x )]2
对其求导,并令导数为0,得到下式:
2 ∑ x [ Δ I ∂ W ∂ p → ] T [ I ( W ( x → , p → ) ) + Δ I ∂ W ∂ p → Δ p → − T ( x → ) ] = 0 2\sum_x[\Delta I \frac{\partial{W}}{\partial \overrightarrow p}]^T[I(W(\overrightarrow x,\overrightarrow p )) + \Delta I \frac{\partial{W}}{\partial \overrightarrow p}\Delta \overrightarrow p-T(\overrightarrow x)]=0 2x[ΔIp W]T[I(W(x ,p ))+ΔIp WΔp T(x )]=0

对上式中的 Δ p → \Delta \overrightarrow p Δp 求解即可,得到 Δ p → \Delta \overrightarrow p Δp 的是的解析解:
Δ p → = H − 1 ∑ x [ Δ I ∂ W ∂ p → ] T [ T ( x → ) − I ( W ( x → , p → ) ) ] \Delta \overrightarrow p=H^{-1}\sum_x[\Delta I \frac{\partial{W}}{\partial \overrightarrow p}]^T [T(\overrightarrow x) - I(W(\overrightarrow x,\overrightarrow p ))] Δp =H1x[ΔIp W]T[T(x )I(W(x ,p ))]
其中
H = ∑ x [ Δ I ∂ W ∂ p → ] T [ Δ I ∂ W ∂ p → ] H=\sum_x[\Delta I \frac{\partial{W}}{\partial \overrightarrow p}]^T[\Delta I \frac{\partial{W}}{\partial \overrightarrow p}] H=x[ΔIp W]T[ΔIp W]

Lucas-Kanade算法(前向加性算法)

迭代

  1. 利用变换关系 W ( x → , p → ) W(\overrightarrow x,\overrightarrow p ) W(x ,p ),将 T T T中各个像素点的坐标对应到 I I I中的相应的像素点的坐标,得到 I ( W ( x → , p → ) ) I(W(\overrightarrow x,\overrightarrow p )) I(W(x ,p ))
    T T T I ( W ( x → , p → ) ) I(W(\overrightarrow x,\overrightarrow p )) I(W(x ,p ))的大小尺寸(像素个数和长宽)相同。

  2. 计算 T ( x → ) − I ( W ( x → , p → ) ) T(\overrightarrow x) - I(W(\overrightarrow x,\overrightarrow p )) T(x )I(W(x ,p )),获得误差图像。

  3. 计算 I I I中与 T T T经过 W ( x → , p → ) W(\overrightarrow x,\overrightarrow p ) W(x ,p )变换对应的像素点的梯度图像 Δ I \Delta I ΔI
    即计算 I ( W ( x → , p → ) ) I(W(\overrightarrow x,\overrightarrow p )) I(W(x ,p ))中各个点在 I I I中的梯度。
    利用 W ( x → , p → ) W(\overrightarrow x,\overrightarrow p ) W(x ,p ),将 T T T中各个像素点的坐标对应到 I I I的梯度图像 Δ I \Delta I ΔI中各个点的坐标。

  4. 计算在 ( x → , p → ) (\overrightarrow x,\overrightarrow p ) (x ,p )设定下的Jacobian ∂ W ∂ p → \frac{\partial{W}}{\partial \overrightarrow p} p W,
    即代入当前参数 p → \overrightarrow p p ,计算 ∂ W ∂ p → \frac{\partial{W}}{\partial \overrightarrow p} p W
    如果 x x x是二维坐标,即 ∂ W ∂ p → = [ ] \frac{\partial{W}}{\partial \overrightarrow p}=[] p W=[],也就是说每行是对 W W W中每个分量对于 p → \overrightarrow p p 的每个参数分量的导数:
    W ( x → , p → ) = ( W x ( x → , p → ) , W y ( x → , p → ) ) T W(\overrightarrow x,\overrightarrow p )=(W_x(\overrightarrow x,\overrightarrow p ),W_y(\overrightarrow x,\overrightarrow p ))^T W(x ,p )=(Wx(x ,p ),Wy(x ,p ))T

  5. 计算最速梯度下降图 Δ I ∂ W ∂ p → \Delta I \frac{\partial{W}}{\partial \overrightarrow p} ΔIp W,
    即利用 ∂ W ∂ p → \frac{\partial{W}}{\partial \overrightarrow p} p W与$ Δ I \Delta I ΔI中每个像素点相乘。

  6. 利用上述提到的公式计算Hessian矩阵
    H = ∑ x [ Δ I ∂ W ∂ p → ] T [ Δ I ∂ W ∂ p → ] H=\sum_x[\Delta I \frac{\partial{W}}{\partial \overrightarrow p}]^T[\Delta I \frac{\partial{W}}{\partial \overrightarrow p}] H=x[ΔIp W]T[ΔIp W]

  7. 利用上面步骤计算得到的值,计算
    ∑ x [ Δ I ∂ W ∂ p → ] T [ T ( x → ) − I ( W ( x → , p → ) ) ] \sum_x[\Delta I \frac{\partial{W}}{\partial \overrightarrow p}]^T [T(\overrightarrow x) - I(W(\overrightarrow x,\overrightarrow p ))] x[ΔIp W]T[T(x )I(W(x ,p ))]

  8. 利用上述提到的公式计算参数向量的增量
    Δ p → = H − 1 ∑ x [ Δ I ∂ W ∂ p → ] T [ T ( x → ) − I ( W ( x → , p → ) ) ] \Delta \overrightarrow p=H^{-1}\sum_x[\Delta I \frac{\partial{W}}{\partial \overrightarrow p}]^T [T(\overrightarrow x) - I(W(\overrightarrow x,\overrightarrow p ))] Δp =H1x[ΔIp W]T[T(x )I(W(x ,p ))]

  9. 更新 p → \overrightarrow p p p → = p → + Δ p → \overrightarrow p=\overrightarrow p+\Delta \overrightarrow p p =p +Δp

转载自

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值