光流法详解之二(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
光流法详解之二(HS光流)的更多相关文章
- HS 光流法详解
前言 本文较为详细地介绍了一种经典的光流法 - HS 光流法. 光流法简介 当人的眼睛与被观察物体发生相对运动时,物体的影像在视网膜平面上形成一系列连续变化的图像,这一系列变化的图像信息不断 &quo ...
- 光流法详解之一(LK光流)
Lucas–Kanade光流算法是一种两帧差分的光流估计算法.它由Bruce D. Lucas 和 Takeo Kanade提出 [1]. LK光流法有三个假设条件: 1. 亮度恒定:一个像素点随着时 ...
- HS光流算法详解<转载>
HS 光流法详解 前言 本文较为详细地介绍了一种经典的光流法 - HS 光流法. 光流法简介 当人的眼睛与被观察物体发生相对运动时,物体的影像在视网膜平面上形成一系列连续变化的图像,这一系列变化的图像 ...
- 【转】logback logback.xml常用配置详解(二)<appender>
原创文章,转载请指明出处:http://aub.iteye.com/blog/1101260, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...
- logback 常用配置详解(二) <appender>
logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写 ...
- OutputCache属性详解(二)一 Location
目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...
- 【three.js详解之二】渲染器篇
[three.js详解之二]渲染器篇 本篇文章将详细讲解three.js中渲染器(renderer)的设置方法. three.js文档中渲染器的分支如下: Renderers CanvasRend ...
- RAII惯用法详解
[1]什么是RAII惯用法? RAII是Resource Acquisition Is Initialization的缩写,意为“资源获取即初始化”. 它是C++之父Bjarne Stroustrup ...
- 安卓集成发布详解(二)gradle
转自:http://frank-zhu.github.io/android/2015/06/15/android-release_app_build_gradle/ 安卓集成发布详解(二) 15 Ju ...
随机推荐
- 无法解析的外部命令gethostname
使用gethostname需要连接lib: #include <winsock2.h> #pragma comment(lib, "WS2_32.lib")
- 牛客练习赛42 C 反着计算贡献
https://ac.nowcoder.com/acm/contest/393/C 题意 给你一个矩阵, 每次从每行挑选一个数,组成一个排列,排列的和为不重复数字之和,求所有排列的和(n,m<= ...
- 1.8 新特性之 Lambda Expressions
Lambda expressions are allowed only at source level 1.8 or above The target type of this expression ...
- ajax 删除数据无刷新
//html页面 <!doctype html><head> <title></title> <meta http-equiv="Con ...
- Android-Java-构造函数间调用&this内存图
构造函数间调用: 描述Person对象: package android.java.oop08; // 描述Person对象 public class Person { public String n ...
- .net core mvc发布项目到IIS上出现500错误
如题,我把.net core mvc项目以应用程序方式挂到IIS默认网站下,结果出现了如下错误:HTTP Error 500.0 - ANCM In-Process Handler Load Fail ...
- Java学习笔记54(反射详解)
反射概念: java反射机制是在运行状态中,对于任意一个类,都能知道所有属性和方法 对于任意一个对象都能调用它的任意一个方法和属性,这种动态获取和调用的功能称为java的反射机制 实际作用: 已经完成 ...
- 再次理解HTTP请求过程[概念原理篇]
我曾多次阅读http协议,但是理解依然不深,在此,再次阅读,再次理解.加深两点:解析头部信息\r\n,分解头部和主体用\r\n\r\n.之所以一次请求会看到网络里有很多请求,是因为浏览器代替访问了多次 ...
- CentOS第一次安装MySQL的完整步骤
文章来自:http://www.jianshu.com/p/4a41a6df19a6,我自己调整了下 1.官方安装文档 http://dev.mysql.com/doc/mysql-yum-repo- ...
- java项目使用mvn打包时,出现数据库连接错误
原因: maven在install的时候会默认去执行test包下的test示例,导致打包失败,只需要把测试注释掉就可以了包括类上的注解,或者在install的时候跳过测试,install -Dmave ...