zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    Windows下的RabbitMQ安装:RabbitMQ_Service安装
    [Java]private, public,protected,friendly的区别(转载)一下子就记住了
    mysql的一些sql用法
    set(string str)变量传参为int的问题
    eclipse插件开发常见的问题及解决办法
    eclipse 内存溢出
    如何在一台机器上运行2个Tomcat
    eclipse svn使用
    eclipse遇到的异常
    oracle学习
  • 原文地址:https://www.cnblogs.com/hrlnw/p/3600291.html
Copyright © 2011-2022 走看看