Horn–Schunck光流算法[1]是一种全局方法估算光流场。

参考博文:https://blog.csdn.net/hhyh612/article/details/79216021

假设条件:

HS算法除了需要满足LK光流前两个假设之外,增加了一个假设条件:

  场景中属于同一物体的像素形成光流场向量应当十分平滑,只有在物体边界的地方才会出现光流的突变,但这只占图像的一小部分,总体上来看图像的光流场应当是平滑的。

数学原理推导:

  仍然是两帧图像I(x, y, t), 和I(x+δx, y+δy, z+δz, t+δt )。要求他们之间的光流场V(u, v):

 首先定义一个能量函数, 如下:

  

  这个能量函数的前半部分是灰度变化因子,如下:

  

  后半部分是平滑因子,如下:

  

  理想的光流场,应该使这两项的值最小:即灰度变化小(亮度恒定)并且速度变化小(小运动)。

  这是一个泛函的极值问题,可以用欧拉-拉格朗日方程求解。对应上式的是双变量双函数一阶导数的欧拉-拉格朗日方程组

          

  其中上式中:

    

  求导, 得到下式:

    

  上式中Δ是拉普拉斯算子操作:

      

  实际计算中可以用下面的式子代替拉普拉斯操作:

      

  拉普拉斯操作替换后化简为下式:

      

  这是一个线性方程组,但是首先要求取u,v的均值,然而u, v的均值也是未知的,因此可以继续化简上式,分别消去u和v,得到下面的迭代公式:

         

  有了迭代公式后,u, v均值的初始值为0,计算出u, v值,然后依次迭代。直到满足如下条件,退出迭代,得到光流u, v值:

    

  其中:

    

源码及效果:

  源码链接:https://blog.csdn.net/xiaoyufei117122/article/details/53693627

  效果如下:

  

[1]  B.K.P. Horn and B.G. Schunck, “Determining optical flow.” 1981

最新文章

  1. animate.css(第三方动画使用方法)
  2. <十一>JDBC_事务的处理+隔离
  3. SharePoint 2013 必备组件之 Windows Server AppFabric 安装错误
  4. directive中的参数详解
  5. VisualVM 性能分析概述
  6. 学习Mongodb(一)
  7. 16.按要求编写Java应用程序。 编写一个名为Test的主类,类中只有一个主方法; 在主方法中定义一个大小为50的一维整型数组,数组名为x,数组中存放着{1, 3,5,…,99}输出这个数组中的所有元素,每输出十个换一行;在主方法中定义一 个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’;输出这个数组中的所有元素。
  8. eclipse : java项目中的web.xml( Deployment Descriptor 部署描述文件 )配置说明
  9. Mina自定义协议简单实现
  10. ActiveReports 6:如何升级旧版本的项目
  11. CentOS下安装XAMPP详细教程(转)
  12. Android查缺补漏(IPC篇)-- 款进程通讯之AIDL详解
  13. nginx之七:nginx path(root)文件路径配置
  14. ARC 086 E - Smuggling Marbles(dp + 启发式合并)
  15. openshift 容器云从入门到崩溃之四《配置用户验证》
  16. 客户端验证、tcp协议中多个客户端的同时在线
  17. Using promises
  18. NodeJS链接MySql数据库
  19. Oracle JDBC连接服务名、SID和tnsnames.ora配置的多种方式
  20. nodejs服务器部署教程四

热门文章

  1. boost asio 学习(六) 定时器
  2. 解决win10系统无法安装.NET Framework 3.5
  3. Cmd控制台修改编码方法
  4. sas通过IMPORT过程读取外部文件数据
  5. Log4J日志整合及配置详解
  6. Win7 64位使用IDA Pro 6.8调试64位exe程序
  7. 源码管理工具Git-windows平台使用Gitblit搭建Git服务器
  8. 【转】comparable Interface
  9. kmp循环节
  10. Spark中的Phoenix Dynamic Columns