文章转载自: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. iOS GCD使用

    Grand Central Dispatch(GCD)是异步运行任务的技术之中的一个. 一般将应用程序中记述的线程管理用的代码在系统级中实现.开发人员仅仅须要定义想运行的任务并追加到适当的Dispat ...

  2. Use the command of tar to multi-part archive method.

    We usually meet the package too large to upload internat space when upload have a limited .So we nee ...

  3. 从主机给VM Copy文件

    不能从主机给VM 复制文件,在VM里,setting --->option--->shareFolder-->enable-->add(要share的文件路径) then=== ...

  4. leetCode 104.Maximum Depth of Binary Tree(二叉树最大深度) 解题思路和方法

    Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...

  5. Windows App开发之集合控件与数据绑定

    为ListView和GridView加入数据 ListView採用垂直堆叠得方式显示数据.而GridView则採用水平堆叠得方式. 长相的话嘛,它们都几乎相同. <Grid Name=" ...

  6. kubernetes之初始容器(init container)

    系列目录 理解初始容器 一个pod里可以运行多个容器,它也可以运行一个或者多个初始容器,初始容器先于应用容器运行,除了以下两点外,初始容器和普通容器没有什么两样: 它们总是run to complet ...

  7. HDU 5145 NPY and girls (莫队分块离线)

    题目地址:HDU 5145 莫队真的好奇妙.. 这种复杂度竟然仅仅有n*sqrt(n)... 裸的莫队分块,先离线.然后按左端点分块,按块数作为第一关键字排序.然后按r值作为第二关键字进行排序. 都是 ...

  8. BZOJ 2818 Gcd 线性欧拉

    题意:链接 方法:线性欧拉 解析: 首先列一下表达式 gcd(x,y)=z(z是素数而且x,y<=n). 然后我们能够得到什么呢? gcd(x/z,y/z)=1; 最好还是令y>=x 则能 ...

  9. inline-block的使用

    inline-block是什么 inline和block是css中元素display属性的两个选项,而inline-block可以说是介于两者之间的属性值. inline使元素成为内联元素(inlin ...

  10. (转)MongoDB在mongo控制台下的基本使用命令

    成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作. 输入help可以看到基本操作命令: show dbs:显示数据库列表 show collections:显示 ...