HS 光流法详解
前言
本文较为详细地介绍了一种经典的光流法 - HS 光流法。
光流法简介
当人的眼睛与被观察物体发生相对运动时,物体的影像在视网膜平面上形成一系列连续变化的图像,这一系列变化的图像信息不断 "流过" 视网膜,好像是一种光的 "流",所以被称为光流。
光流是基于像素点定义的,所有光流的集合称为光流场。通过对光流场进行分析,可以得到物体相对观察者的运动场。在这过程中分析的算法称为光流法。
HS 光流法的推导
HS光流计算基于物体移动的光学特性的两个假设:
1. 运动物体的灰度在很短的间隔时间内保持不变
2. 给定邻域内的速度向量场变化是缓慢的
由 1 可得:
(1)
上式右边在 x y 处泰勒展开,得:
(2)
ε 是包含有 δx,δy 和 δt 的二阶和更高阶项。两边减去 I(x,y,t),再除以δt有:
(3)
O (δt) 是含δt的一个小量。在极限中当δt->0时,上式变成:
(4)
令 u = dx/dt v = dy / dt,得:
(5)
这条式子就是光流约束方程,它反映了灰度与速度的一个对应关系。
但,一个式子中有两个变量:u 和 v,显然不能将速度解出,因此需要引入一个新的条件:光流的全局平滑约束条件。
即 u 和 v 随着像素点移动而发生的改变是缓慢的,局部区域的变化不大,尤其是在目标做无变形刚体运动时,局部区域速度的空间变化率为0。
因此,引入以下速度平滑项:
(6)
对于所有的像素点,需要满足上式和最小。
综合光流约束条件 (5) 和速度平滑约束条件 (6),可建立以下的极小化方程:
(7)
式中的 α 是平滑权重系数,表示速度光滑项所占的权重。
即:
(8)
采用变分计算,根据欧拉方程,
(9)
(10)
得到:
(11)
(12)
式中,拉普拉斯算子可以用某一点的速度与其周围速度平均值之差来近似,有:
(13)
(14)
化简 (13) 和 (14),可得: ( 这一步运算量比较大 )
(15)
(16)
这样便可以考虑使用迭代法进行求解了,但在此之前,还需要明确其中几个量的求法。
对于 u 和 v 的均值,采用九点差分格式进行计算:
(17)
(18)
而对于其中的灰度梯度,可以采用以下方法近似计算:
(19)
(20)
(21)
至此,所有的量都已明确下来,输入前后两帧灰度进行迭代运算便可以得到速度场了,下面是具体的执行过程。
HS光流法执行流程图

1. 读取雷达拼图数据并初始化
2. 计算求解点的灰度梯度
3. 设定速度平滑权重系数( 一般设为1 ),初始速度( 一般设为0 ),迭代误差等。
4. 计算 k-1 次速度平均值
5. 计算 k 次迭代的速度值
6. 计算两次迭代光流值的误差,如果小于给定误差阈值,或者者迭代次数超过迭代次数,则计算过程结束,否则进行k+1次迭代。
HS 光流法详解的更多相关文章
- HS光流算法详解<转载>
HS 光流法详解 前言 本文较为详细地介绍了一种经典的光流法 - HS 光流法. 光流法简介 当人的眼睛与被观察物体发生相对运动时,物体的影像在视网膜平面上形成一系列连续变化的图像,这一系列变化的图像 ...
- 光流法详解之一(LK光流)
Lucas–Kanade光流算法是一种两帧差分的光流估计算法.它由Bruce D. Lucas 和 Takeo Kanade提出 [1]. LK光流法有三个假设条件: 1. 亮度恒定:一个像素点随着时 ...
- 光流法详解之二(HS光流)
Horn–Schunck光流算法[1]是一种全局方法估算光流场. 参考博文:https://blog.csdn.net/hhyh612/article/details/79216021 假设条件: H ...
- RAII惯用法详解
[1]什么是RAII惯用法? RAII是Resource Acquisition Is Initialization的缩写,意为“资源获取即初始化”. 它是C++之父Bjarne Stroustrup ...
- SLAM入门之视觉里程计(6):相机标定 张正友经典标定法详解
想要从二维图像中获取到场景的三维信息,相机的内参数是必须的,在SLAM中,相机通常是提前标定好的.张正友于1998年在论文:"A Flexible New Technique fro Cam ...
- KKT条件和拉格朗日乘子法详解
\(\frac{以梦为马}{晨凫追风}\) 最优化问题的最优性条件,最优化问题的解的必要条件和充分条件 无约束问题的解的必要条件 \(f(x)\)在\(x\)处的梯度向量是0 有约束问题的最优性条件 ...
- 扩展欧几里得算法详解(exgcd)
一.前言 本博客适合已经学会欧几里得算法的人食用~~~ 二.扩展欧几里得算法 为了更好的理解扩展欧几里得算法,首先你要知道一个叫做贝祖定理的玄学定理: 即如果a.b是整数,那么一定存在整数x.y使得$ ...
- lca(最近公共祖先(在线)) 倍增法详解
转自大佬博客 : https://blog.csdn.net/lw277232240/article/details/72870644 描述:倍增法用于很多算法当中,通过字面意思来理解 LCA是啥呢 ...
- 后缀数组 DC3构造法 —— 详解
学习了后缀数组,顺便把DC3算法也看了一下,传说中可以O(n)复杂度求出文本串的height,先比较一下倍增算法和DC3算法好辣. DC3 倍增法 时间复杂度 O(n)(但是常数很大) O(nlo ...
随机推荐
- 第45章 DCMI—OV2640摄像头—零死角玩转STM32-F429系列
第45章 DCMI—OV2640摄像头 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com ...
- 基于Jquery的原生态dialog弹出窗口-zapWindow
看到boss系统搓B的填出窗口,不忍直视,坚决的换掉! 采用zapwindow(来源不清楚了,总之是前人留下的),做了修改,当前支持三类弹出类型: 1. 指定url 2. 自定义html 3. 指定D ...
- 九九乘法表(Python实现)
a = 1 #while实现 while a: b = 1 while b: print(str(b)+'*'+str(a),end='=') print(a*b,end=' ') if b == a ...
- 关于package.json学习
1.如果要下载npm包,必须有package.json文件,不然会报错,如果缺少必要字符报错,参考报错信息 2.license,指定用户权限,可以不写,不会报错 3.devDependencies,依 ...
- windows 编译安卓iconv 库
由于NDK r15后,谷歌要统一将来的设备都要支持64位,而iconv只支持32位,后续的ndk都会去除iconv的支持,所以只能在iconv的官网下载源码编译库文件使用, 下载地址:https:// ...
- Logger日志配置级别说明及设置方法、说明
日志记录器(Logger)是日志处理的核心组件.log4j具有5种正常级别(Level).日志记录器(Logger)的可用级别Level (不包括自定义级别 Level), 以下内容就是摘自log4j ...
- PHP 7.1版本 微信安全模式消息接受
token 验证就不多讲了 重点说一下PHP7.1版本的加密解密算法 php7.1发布后新特性吸引了不少PHPer,大家都在讨论新特性带来的好处与便利. 但是从php7.0 升级到 php7.1 废弃 ...
- linux基础命令2(ls,cd)
ls:显示文件内的文件和目录 文件的类型: -普通文件 d目录文件(directory) l链接文件(symbolic link file) c 字符设备文件(char) b 块设备文件(block) ...
- Visual Stutio 2015激活密钥
Visual Stutio 2015 专业版激活密钥:HMGNV-WCYXV-X7G9W-YCX63-B98R2 Visual Stutio 2015 企业版激活密钥:HM6NR-QXX7C-DFW2 ...
- C++基础 匿名对象
以下几种情况又会匿名对象 (1)对象构造 与 匿名对象 Test t1 = Test(); 这时,Test()会构造匿名对象,并且是调用无参构造函数,然后 t1 将匿名对象扶正. (2)对象赋值 与 ...