文章转载自:https://blog.csdn.net/sgfmby1994/article/details/68489944
光流是图像亮度的运动信息描述,这种运动模式指的是由一个观察者(比如摄像头),在一个视角下,一个物体、表面、边缘和背景之间形成的明显移动。评估两幅图像的变形。
光流计算基于物体移动的光学特性提出了2个假设:
(1)运动物体在很短的时间内灰度保持不变
(2)给定邻域内速度向量场变化是缓慢的
这就是基本的光流约束方程,但是基本的光流约束方程的约束只有一个,而需要求出x,y方向的速度u和v(两个未知变量)。一个方程两个未知量无法求解,因此LK光流算法考虑到像素点的邻域,将问题变成计算某些点集的光流,联立多个方程,解决该问题。
Lk-光流算法的假设:
(1)亮度恒定,图像场景中的目标的像素在帧间运动时外观保持不变。用于得到光流法的基本方程。
(2)时间连续或者运动是小运动,图像随时间的运动比较缓慢,实际中指的是时间变化相对图像中的运动的比例要足够小,这样灰度才能对位置求偏导(小运动情况下才能用前后帧之间单位位置变化引起的灰度变化去对位置求偏导数),这也是光流不可或缺的假设
(3)邻域内光流一致。一个场景中的同意表面的局部内具有相识的运动,在图像平面上的投影也在邻近区域,且邻近点的速度一致(认为邻域内所有像素的运动是一致的)。如果第三条假设满足意味着可以联立n个基本的光流方程求取x,y方向的速度。
LK光流法是一种稀疏光流法。它假设光流在像素点内的局部邻域是一个常数 , 然后使用最小二乘法对邻域中的所有像素点求解基本的光流方程。从而计算两帧在时间间隔内每个像素点位置的移动。
上面提到LK-光流法是小运动,可是运动快速的时候怎么处理了?两帧物体运动位移较大时,算法的误差较大,因此需要减少两帧之间的位移即缩放原图像,400x400 位移为 16x16 --→ 200x200 位移为 8x8,图像缩放很多后LK算法又变得适用了。
基于上面的描述,Bouguet想到利用金字塔分层的方式,将原图像逐层分解,即上层金字塔(低分辨率)中的一个像素可以代表下层的两个像素。这样,利用金字塔的结构自上而下的修正运动量。
算法的具体步骤:
(1)首先,对每一帧建立一个高斯金字塔,最低分辨率图像在最顶层,原始图片在底层。
(2)从顶层开始,通过最小化每个点的邻域范围内的匹配误差和,得到顶层图像中每个点的光流。
(3)顶层的计算结果(位移情况)反馈到Lm-1层,作为该层的初始时的光流值的估计g
(4)这样沿着金字塔向下反馈,重复估计动作,直到金字塔的底层(即原图像)。
详细过程及公式推导见原文即:文章转载自:https://blog.csdn.net/sgfmby1994/article/details/68489944

光流 LK 金字塔的更多相关文章

  1. Opencv光流运动物体追踪

    光流的概念是由一个叫Gibson的哥们在1950年提出来的.它描述是空间运动物体在观察成像平面上的像素运动的瞬时速度,利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存 ...

  2. Tracking-Learning-Detection (TLD算法总结)

    一.TLD算法简介 TLD(Tracking-Learning-Detection)是英国萨里大学的一个捷克籍博士生ZdenekKalal在2012年7月提出的一种新的单目标长时间跟踪算法.该算法与传 ...

  3. 视觉slam十四讲

    对这个的学习一直都在,感觉到了这本书很强大呀!!! ch2---安装ubuntu:安装kdevelop. ch3---安装eigen3---几何模块:安装Pangolin可视化. ch4---安装So ...

  4. OpenCV Using Python——基于SURF特征提取和金字塔LK光流法的单目视觉三维重建 (光流、场景流)

    https://blog.csdn.net/shadow_guo/article/details/44312691 基于SURF特征提取和金字塔LK光流法的单目视觉三维重建 1. 单目视觉三维重建问题 ...

  5. LK光流算法:提高计算精度和增加搜索范围

    LK光流算法:提高计算精度和增加搜索范围 关于LK算法的基本理论,见:http://www.cnblogs.com/dzyBK/p/4960630.html 这里主要阐述如何提高LK算法的计算精度和在 ...

  6. LK光流算法公式详解

    由于工程需要用到 Lucas-Kanade 光流,在此进行一下简单整理(后续还会陆续整理关于KCF,PCA,SVM,最小二乘.岭回归.核函数.dpm等等): 光流,简单说也就是画面移动过程中,图像上每 ...

  7. LK 光流法简介

    前言 若假定一个局部区域的像素运动是一致的,则可以用这个新的约束条件替代前文中提到的全局速度平滑约束条件.这种光流算法就叫做 LK 光流法. LK 光流法的推导 首先,需要推导出光流约束方程. 这一步 ...

  8. 光流法详解之一(LK光流)

    Lucas–Kanade光流算法是一种两帧差分的光流估计算法.它由Bruce D. Lucas 和 Takeo Kanade提出 [1]. LK光流法有三个假设条件: 1. 亮度恒定:一个像素点随着时 ...

  9. OpenCV LK光流法测试

    OpenCV版本: 3.2.0 例程文件目录/samples/cpp/lkdemo.cpp 原始程序是采集相机数据,台式机没有摄像头,用Euroc测试集,偷ORB_SLAM2 /Examples/Mo ...

随机推荐

  1. U-net图像分割

    [Keras]基于SegNet和U-Net的遥感图像语义分割 2014 年,加州大学伯克利分校的 Long 等人提出全卷积网络(FCN),这使得卷积神经网络无需全连接层即可进行密集的像素预测,CNN ...

  2. AngularJS的ng-repeat显示表格

    代码下载:https://files.cnblogs.com/files/xiandedanteng/angualrJSngRepeatTable.rar 代码: <!DOCTYPE HTML ...

  3. Hibernate中的session和load延迟载入矛盾问题,怎样解决?

    假设延迟载入出现session close的情况下 方法1.在web.xml中配置spring的openSessionInViewFilter <filter>  <filter-n ...

  4. C#数据类型与数据库字段类型对应

    数据库 C#程序 int int32 text string bigint int64 binary System.Byte[] bit Boolean char string datetime Sy ...

  5. Spring Boot 测试时的日志级别

    1.概览 该教程中,我将向你展示:如何在测试时设置spring boot 日志级别.虽然我们可以在测试通过时忽略日志,但是如果需要诊断失败的测试,选择正确的日志级别是非常重要的. 2.日志级别的重要性 ...

  6. canvas 星空插件

    (function(a){ a.fn.starBg=function(p){ var p=p||{}; var w_w=p&&p.window_width?p.window_width ...

  7. #include &lt;sys/socket.h&gt;找不到头文件

    ubuntu下socket编程涉及到头文件sys/socket.h 和sys/types.h.我是用的codeblocks编辑器,当我想查看socket,h头文件时编辑器提示找不到头文件. 我就想可能 ...

  8. Cocos2d-x3.1FileUtilsTest使用

    Cocos2d-x3.1中FileUtils的使用:本使用教程是基于HelloWorld的.仅仅需在HelloWorld的init()函数中加入例如以下代码 //头文件 #include " ...

  9. EasyDarwin添加自定义的服务模块EasyMyModule

    EasyDarwin模块的要求 每个QTSS模块必须实现两个方法函数: 一个Main入口函数,服务器在启动的时候将调用这个方法函数,来对您开发的模块所在的QTSS stub库进行初始化. 一个Disp ...

  10. Grid++Report设置显示固定行数

    一.要实现的功能打印的报表显示固定的行数,并且设置字段的文字可以自动换行二.设置步骤1.鼠标左键单击“明细网格”栏,在右侧属性窗口中设置“追加空白行”属性值为:是:“追加空白行在后”属性值为:是.2. ...