lucas–kanade_Lucas-Kanade光流法 | 学步园
1. 光流的概念
•空间运动物体在观察成像平面上的像素运动的瞬时速度
2. 光流法的原理
•利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息,即光流
光流的分类:稠密光流与稀疏光流(Lucus-Kanade
3. L-K光流
Lucas-Kanada最初于1981年提出,该算法假设在一个小的空间邻域内运动矢量保持恒定,使用加权最小二乘法估计光流。由于该算法应用于输入图像的一组点上时比较方便,因此被广泛应用于稀疏光流场。
4. 三个假设
假设一:场景中物体被跟踪的部分亮度保持不变
假设二:运动相对于帧率是缓慢、连贯的数学表达指的是在上连续,可导
假设三:相邻的点保持近邻δ邻域内所有像素点的速度(U,V)相等
由假设二,对假设一应用偏微分链式法则,则得到L-K算法核心的数学描述公式:
5. 图像金字塔的引入L-K算法
对于大多数30Hz摄像机,大而不连贯的运动较多,所以LK光流法在实际中的跟踪效果不好,通常一个大的窗口来捕获大的运动,但往往违背运动连贯的假设,故引入图像金字塔。
在图像金字塔的最高层计算光流,用得到的运动估计结果作为下一层金字塔的起始点,重复这个过程直到到达金字塔的最底层。这样将不满足运动假设的可能性降到最小从而实现对更快和更长的运动的跟踪。
6. 计算方法
在一个小的邻域内,我们通过对下式的加权平方和最小化来估计V,
Lucas–Kanade算法:这个算法是最常见,最流行的。它计算两帧在时间t到t +δt之间每个每个像素点位置的移动。由于它是基于图像信号的泰勒级数,这种方法称为差分,这就是对于空间和时间坐标使用偏导数。图像约束方程可以写为I(x,y,z,t)=I(x+δx,y+δy,z+δz,t+δt)I(x, y,z, t)为在(x,y,z)位置的体素。我们假设移动足够的小,那么对图像约束方程使用泰勒公式,我们可以得到:
H.O.T.指更高阶,在移动足够小的情况下可以忽略。从这个方程中我们可以得到:或者
我们得到:
Vx,Vy,Vz分别是I(x,y,z,t)的光流向量中x,y,z的组成。,
,
和
则是图像在(x,y,z,t)这一点向相应方向的差分。所以
IxVx+ IyVy + IzVz= − It。
写做:
这个方程有三个未知量,尚不能被解决,这也就是所谓光流算法的光圈问题。那么要找到光流向量则需要另一套解决的方案。而Lucas-Kanade算法是一个非迭代的算法:
假设流(Vx,Vy,Vz)在一个大小为m*m*m(m>1)的小窗中是一个常数,那么从像素1...n,
n = m3中可以得到下列一组方程:
三个未知数但是有多于三个的方程,这个方程组自然是个超定方程,也就是说方程组内有冗余,方程组可以表示为:
记作:
为了解决这个超定问题,我们采用最小二乘法:
or
得到:
其中的求和是从1到n。
这也就是说寻找光流可以通过在四维上图像导数的分别累加得出。我们还需要一个权重函数W(i, j,k),来突出窗口中心点的坐标。高斯函数做这项工作是非常合适的,
这个算法的不足在于它不能产生一个密度很高的流向量,例如在运动的边缘和黑大的同质区域中的微小移动方面流信息会很快的褪去。它的优点在于有噪声存在的鲁棒性还是可以的。
补充:opencv里实现的看上去蛮复杂,现在还不是太明白。其中LK经典算法也是迭代法,是由高斯迭代法解线性方程组进行迭代的。
参考文献:Lucas B and Kanade T. An Iterative Image
RegistrationTechnique with an Application to Stereo Vision. Proc. Of 7th InternationalJoint Conference on Artificial Intelligence (IJCAI), pp.674-679.是81年发表的。
opencv中实现的是84年发表的算法,
参考文献:Bruce
D. Lucas,"Generalized Image Matching by the Method of Differences," doctoraldissertation, tech. report , Robotics Institute, Carnegie Mellon University,July, 1984
这篇论文是收费的,一直都没下到还。
lucas–kanade_Lucas-Kanade光流法 | 学步园相关推荐
- Lucas Kanade 光流法(来自wiki 百科)
小伙伴们开始正式玩起了APM的PX4flow,加上课题方向也要用到光流法,因此从哪个角度来说,都是十分必要的. 光流法最常用的是用于机器视觉的跟踪算法,一是可以跟踪目标物体,而是求解目标的运动学参数( ...
- python opencv入门 光流法(41)
内容来自OpenCV-Python Tutorials 自己翻译整理 目标: 了解光流的概念,使用lucas-kanade估算方法 使用cv2.calcOpticalFlowPyrLK() 方法来追踪 ...
- 【算法分析】Lucas–Kanade光流算法
(最近再看光流法的应用,发现一篇对算法讲的非常好的文章,转载过来看) 转自:gnuhpc的百草园和三味书屋 作者:gnuhpc@gmail.com 简介:在计算机视觉中,Lucas–Kanade光流算 ...
- Lucas–Kanade光流算法
1. 光流的概念 •空间运动物体在观察成像平面上的像素运动的瞬时速度 2. 光流法的原理 •利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相 ...
- 光流法 Optical Flow
最近调研目标跟踪,看到一个光流法,测试了一下它的效果,挺好玩的,这里对找到的资料简单整理总结一下. 对于光流法的介绍,可以参看如下博客http://blog.csdn.net/zouxy09/arti ...
- Lukas-Kanade光流法
光流是图像亮度的运动信息描述.光流法计算最初是由Horn和Schunck于1981年提出的,创造性地将二维速度场与灰度相联系,引入光流约束方程,得到光流计算的基本算法.光流计算基于物体移动的光学特性提 ...
- OpenCV3学习(11.2)LK光流法原理及opencv实现
光流的概念:(Optical flow or optic flow) 它是一种运动模式,这种运动模式指的是一个物体.表面.边缘在一个视角下由一个观察者(比如眼睛.摄像头等)和背景之间形成的明显移动.光 ...
- OpenCV 使用光流法检测物体运动
OpenCV 可以使用光流法检测物体运动,贴上代码以及效果. // opticalflow.cpp : 定义控制台应用程序的入口点. //#include "stdafx.h"// ...
- pythonopencv算法_opencv python 光流法
光流法 光流是由对象或相机的移动引起的两个连续帧之间的图像对象的明显运动的模式.它是2D矢量场,其中每个矢量是位移矢量,表示从第一帧到第二帧的点的移动. 上图表示的是一个球在连续的5帧图像中的运动,箭 ...
- 基于Zynq的光流法软硬件协同设计与实现
基于Zynq的光流法软硬件协同实现 一. 前言 光流场(Optical Flow Field)[1]是指图像中所有像素点构成的一种二维(2D)瞬时速度场,其中的二维速度矢量是景物中可见点的三维速度矢量 ...
最新文章
- 赖美云的认证照_真人秀及综艺类双榜单TOP10嘉宾热度认证 赖美云双面魅力引热议...
- 十八、不会fiddler抓包,谈何爬虫
- SQL*Plus中替换变量与定义变量
- 自定义字符串查找函数c语言,(C语言自定义函数,/*编写函数实现在字符串pStr中查找子串pSub int subString( char* pStr, char* pSub);...
- 运营商的光猫有四个输出端口,哪个带宽最大?
- IO编程——转自廖雪峰博客
- 单层石墨烯结构图matlab,CST中如何建立单层石墨烯模型
- Codeforces Round #828 (Div. 3)-赛后总结
- CRM系统概念与项目开发流程
- iPhone 订阅退款方法
- 用友nc65 uap开发找产品功能源代码
- python websocket 断线自动重连
- 边缘设备、系统及计算杂谈(17)——Ansible学习
- JS 对输入的姓名 手机号码 邮箱做校验
- 硬件课程设计—电梯控制系统
- 12、【斯纳克图书馆管理系统】 挂失管理
- 14.【opencv打开视频以及摄像头】
- 大数据Spark入门案例5–统计广告点击数量排行Top3(scala版本)
- 003:NumPy的应⽤-1
- 南方科技大学计算机2020考研,南方科技大学2020计算机专业考研数据分析
热门文章
- 小程序跳转到其他小程序
- 斯蒂文斯理工学院计算机科学硕士,斯蒂文斯理工学院计算机科学硕士专业
- wallpaper怎么导入视频_vwallpaper2来电视频使用教程
- install sql server 2016 Error code 0x84B20001
- OpenCV Shi-Tomasi角点检测以及goodFeatureToTrack()源码分析
- OFF文件格式_拔剑-浆糊的传说_新浪博客
- linux 安装ros软路由,Centos7安装RouterOS软路由
- DELL笔记本FN键解锁
- VOIP技术发展综述与外呼系统的关系
- 201771010126 王燕《面向对象程序设计(Java)》第十二周学习总结