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