文章转载自: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. 如何给redis设置密码

    如何给redis设置密码 学习了:https://blog.csdn.net/qq_35357001/article/details/56835919

  2. sql_视图和函数

    创建视图: create view xxx as select * from userinfo; 删除视图: drop view xxx 修改视图: alter view xxx as selete ...

  3. LINUX下GDB反汇编和调试

    Linux下的汇编与Windows汇编最大的不同就是第一个操作数是原操作数,第二个是目的操作数.而Windows下却是相反. 1. 基本操作指令 简单的操作数类型说明.一般有三种. (1)马上数操作数 ...

  4. vue2.0 自定义过滤器

    2.0中已经废弃了过滤器,需要我们自定义 <div id="app"> {{message|uppercase}} </div> //过滤器 Vue.fil ...

  5. C结构体之位域(位段)(转)

    有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位.例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可.为了节省存储空间,并使处理简便,C语言又提供了一种数据结构 ...

  6. Path SumI、II——给出一个数,从根到子的和等于它

    I.Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up a ...

  7. Hive merge(小文件合并)

    当Hive的输入由非常多个小文件组成时.假设不涉及文件合并的话.那么每一个小文件都会启动一个map task. 假设文件过小.以至于map任务启动和初始化的时间大于逻辑处理的时间,会造成资源浪费.甚至 ...

  8. Django-celery分布式任务

    昨天一个很好的面试官问我你在python中怎么实现定时任务呢?我没回答好,我问了下原来有个叫celery的东西,感觉挺好用的 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它 ...

  9. PHP网站加网站访问量统计

    新建cnt.php <?php $n=file_get_contents('cnt.txt'); $n++; file_put_contents('cnt.txt',$n); echo &quo ...

  10. 安卓版本6.0打开uiautomator报错

    可能是appium打开了,被占用:或者是找不到手机