Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >光流法原理概述「建议收藏」

光流法原理概述「建议收藏」

作者头像
全栈程序员站长
发布于 2022-09-15 07:00:18
发布于 2022-09-15 07:00:18
3.1K0
举报

大家好,又见面了,我是你们的朋友全栈君。

光流的概念是Gibson在1950年首先提出来的。它是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。

简单来说,光流是空间运动物体在观测成像平面上的像素运动的“瞬时速度”。光流的研究是利用图像序列中的像素强度数据的时域变化和相关性来确定各自像素位置的“运动”。研究光流场的目的就是为了从图片序列中近似得到不能直接得到的运动场。

光流法的前提假设:

(1)相邻帧之间的亮度恒定;

(2)相邻视频帧的取帧时间连续,或者,相邻帧之间物体的运动比较“微小”;

(3)保持空间一致性;即,同一子图像的像素点具有相同的运动

这里有两个概念需要解释:

运动场,其实就是物体在三维真实世界中的运动;

光流场,是运动场在二维图像平面上的投影。

如上图所示,H中的像素点(x,y)在I中的移动到了(x+u,y+v)的位置,偏移量为(u,v)。

光流法用于目标检测的原理:

给图像中的每个像素点赋予一个速度矢量,这样就形成了一个运动矢量场。在某一特定时刻,图像上的点与三维物体上的点一一对应,这种对应关系可以通过投影来计算得到。根据各个像素点的速度矢量特征,可以对图像进行动态分析。如果图像中没有运动目标,则光流矢量在整个图像区域是连续变化的。当图像中有运动物体时,目标和背景存在着相对运动。运动物体所形成的速度矢量必然和背景的速度矢量有所不同,如此便可以计算出运动物体的位置。需要提醒的是,利用光流法进行运动物体检测时,计算量较大,无法保证实时性和实用性。

光流法用于目标跟踪的原理:

(1)对一个连续的视频帧序列进行处理;

(2)针对每一个视频序列,利用一定的目标检测方法,检测可能出现的前景目标;

(3)如果某一帧出现了前景目标,找到其具有代表性的关键特征点(可以随机产生,也可以利用角点来做特征点);

(4)对之后的任意两个相邻视频帧而言,寻找上一帧中出现的关键特征点在当前帧中的最佳位置,从而得到前景目标在当前帧中的位置坐标;

(5)如此迭代进行,便可实现目标的跟踪;

由基本光流约束方程IxVx+IyVy+It=0可知,对于二维的运动场,单靠一个像素无法确定其运动矢量(Vx,Vy)根据假设三,我们可以使用当前像素的邻域像素添加更多约束条件;如经典的Horn-Schunck光流法所加的运动平滑约束。同时,对于二维运动场,只需包含两条或以上边缘则可以解系统方程,因此在进行光流法时,先选择好跟踪的特征点,如harris角点。

光流场是运动场在二维图像上的投影,而光流就是在图像灰度模式下,像素点的运动矢量。光流法技术的核心就是求解出运动目标的光流,即速度。根据视觉感知原理,客观物体在空间上一般是相对连续运动的,在运动过程中,投射到传感器平面上的图像实际上也是连续变化的。为此可以假设:瞬时灰度值不变,即灰度不变性原理。由此可以得到光流基本方程,灰度对时间的变化率等于灰度的空间梯度与光流速度的点积。此时需要引入另外的约束条件,从不同的角度引入约束条件,导致了不同的光流分析方法。

光流的计算方法大致分为五类:

基于匹配的方法、基于梯度的方法、基于频域的方法、基于相位的方法和神经动力学方法。

基于匹配的方法包括基于区域和基于特征两种方法,实质上是在图像序列中的各图像之间,搜索出对应的图像区域最佳拟合的位移,所得到的位移即为目标运动矢量。该类方法在视频编码中得到了广泛的应用。基于特征的方法对于目标的速度和亮度变化具有较好的鲁棒性。基于匹配的两种方法存在的主要问题是,得到的光流通常比较稀疏,要实现精确匹配比较难。

基于梯度的方法也称为微分法,该类方法是建立在图像亮度为常数的假设基础之上的,利用序列图像亮度的时空梯度函数来计算二维速度场。由于计算简单而且效果比较好,该方法成为使用最广泛的一种光流估计方法,此类方法的最具代表性的是Horn-Schunck光流法,它计算出的光流场是在光流基本方程的基础上引入了另外一个约束条件,即全局光流平滑约束假设。后来人们根据这种思想又提出了大量的改进算法。基于梯度的光流法在使用中存在一些问题:第一,为了在计算光流方程时方便,一般会通过一阶泰勒级数逼近来线性化,因此当有大的运动矢量存在时会产生较大的误差,从而导致估计精度降低;第二,在进行预处理时,部分帧中噪声的存在、图像采集过程中的频谱混叠现象都将严重影响该类方法的计算精度。第三,在有些非连续区域(比如边缘等),图像亮度在运动方向上的平滑性约束条件会被破坏,从而会导致计算错误。

基于频率的方法又称为基于能量的方法,在使用该类方法的过程中,要获得均匀流场的准确的速度估计,就必须对输入的图像进行时空滤波处理,即对时间和空间的整合,但是这样会降低光流的时间和空间分辨率。基于频率的方法往往会涉及大量的计算,另外,要进行可靠性评价也比较困难。

基于相位的方法是由Fleet和Jepson提出的,Fleet和Jepson最先提出将相位信息用于光流计算的思想。当我们计算光流的时候,相比亮度信息,图像的相位信息更加可靠,所以利用相位信息获得的光流场具有更好的鲁棒性。基于相位的光流算法的优点是:对图像序列的适用范围较宽,而且速度估计比较精确,但也存在着一些问题:第一,基于相位的模型有一定的合理性,但是有较高的时间复杂性;第二,基于相位的方法通过两帧图像就可以计算出光流,但如果要提高估计精度,就需要花费一定的时间;第三,基于相位的光流计算法对图像序列的时间混叠是比较敏感的。

神经动力学方法是利用神经网络建立的视觉运动感知的神经动力学模型,它是对生物视觉系统功能与结构比较直接的模拟。

下面详细介绍一下在实际中经常使用的Lucas-Kanada算法

Lucas-Kanada即L-K光流法最初于1981年提出,该算法假设在一个小的空间邻域内运动矢量保持恒定,使用加权最小二乘法估计光流。由于该算法应用于输入图像的一组点上时比较方便,因此被广泛应用于稀疏光流场,L-K算法的提出是基于以下三个假设: (1) 亮度恒定不变。目标像素在不同帧间运动时外观上是保持不变的,对于灰 度图像,假设在整个被跟踪期间,像素亮度不变。 (2) 时间连续或者运动是“小运动”。图像运动相对于时间来说比较缓慢,实际 应用中指时间变化相对图像中运动比例要足够小,这样目标在相邻帧间的运动就比较小。 (3) 空间一致。同一场景中同一表面上的邻近点运动情况相似,且这些点在图像上的投影也在邻近区域。

1.对于假设条件:

(1)亮度恒定,就是同一点随着时间的变化,其亮度不会发生改变。这是基本光流法的假定(所有光流法变种都必须满足),用于得到光流法基本方程;

(2)小运动,这个也必须满足,就是时间的变化不会引起位置的剧烈变化,这样灰度才能对位置求偏导(换句话说,小运动情况下我们才能用前后帧之间单位位置变化引起的灰度变化去近似灰度对位置的偏导数),这也是光流法不可或缺的假定;

(3)空间一致,一个场景上邻近的点投影到图像上也是邻近点,且邻近点速度一致。这是Lucas-Kanade光流法特有的假定,因为光流法基本方程约束只有一个,而要求x,y方向的速度,有两个未知变量。我们假定特征点邻域内做相似运动,就可以连立n多个方程求取x,y方向的速度(n为特征点邻域总点数,包括该特征点)。

2.对于方程求解

多个方程求两个未知变量,又是线性方程,很容易就想到用最小二乘法,事实上opencv也是这么做的。其中,最小误差平方和为最优化指标。

3.对于前面说到了小运动这个假定,如果目标速度很快该怎么办呢?幸运的是多尺度能解决这个问题。首先,对每一帧建立一个高斯金字塔,最大尺度图片在最顶层,原始图片在底层。然后,从顶层开始估计下一帧所在位置,作为下一层的初始位置,沿着金字塔向下搜索,重复估计动作,直到到达金字塔的底层。这样搜索不仅可以解决大运动目标跟踪,也可以一定程度上解决孔径问题(相同大小的窗口能覆盖大尺度图片上尽量多的角点,而这些角点无法在原始图片上被覆盖)。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/163523.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
跟踪算法(一)光流法跟踪
COPY FROM:http://blog.csdn.net/crzy_sparrow/article/details/7407604
全栈程序员站长
2022/09/15
1.2K0
深度揭秘京东全景主图背后的技术
作者 黄志标:中国科学院大学硕士,京东AI与大数据部算法工程师。 擅长图像检索、深度学习领域。曾参与京东的上亿重图检测项目,目前主要负责京东全景主图、视频审核项目。 安山:山东大学机器人研究中心硕士,京东AI与大数据部资深算法工程师。 研究兴趣为大规模图像检索、计算机视觉。负责京东图像搜索引擎、知识产权保护、深度学习算法移动化。在计算机视觉领域获得2项发明专利授权,另有十余项专利申请。 据京东财报显示,京东集团第二季度净利润达9.765亿,年度活跃用户达2.583亿,订单完成量为5.912亿。扎实的用户基
京东技术
2018/06/20
9230
光流法的理解
大家好,又见面了,我是你们的朋友全栈君。光流法是比较经典的运动估计方法,本文不仅叙述简单明了,而且附代码,故收藏.
全栈程序员站长
2022/09/15
3990
python光流法算法学习「建议收藏」
光流法是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。 简单来说,光流是空间运动物体在观测成像平面上的像素运动的“瞬时速度”。光流的研究是利用图像序列中的像素强度数据的时域变化和相关性来确定各自像素位置的“运动”。研究光流场的目的就是为了从图片序列中近似得到不能直接得到的运动场。
全栈程序员站长
2022/09/15
1.7K0
【图像处理一】:直方图
从这章开始,我们将从最基础的图像处理讲起,并且探索其中的一些算法在FPGA上的实现。第一章讲一个最基本的概念:直方图。直方图在图像灰度增强中是一个很重要的量,它反映了灰度的分布。除了灰度直方图,还有梯度直方图,光流直方图。现在一一介绍。
AI加速
2019/07/28
1.4K0
DeepFlow高效的光流匹配算法(上)
本周主要介绍一篇基于传统光流法而改进的实现快速的稠密光流算法。该算法已经集成到OpenCV中,算法介绍网址:http://lear.inrialpes.fr/src/deepmatching/
点云PCL博主
2019/09/09
3.7K0
DeepFlow高效的光流匹配算法(上)
光流法简单介绍「建议收藏」
光流的概念是Gibson在1950年首先提出来的。它是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。其计算方法可以分为三类:
全栈程序员站长
2022/09/15
6600
如何使用光流法进行目标追踪【文末送书】
如今,“图像分类”、“目标检测”、“语义分割”、“实例分割”和“目标追踪”等5大领域是计算机视觉的热门应用。其中“图像分类”与“目标检测”是最基础的应用,在此基础上,派生出了“语义分割”、“实例分割”和“目标跟踪”等相对高级的应用。
Color Space
2023/09/22
1.2K0
如何使用光流法进行目标追踪【文末送书】
拥挤场景中的稳健帧间旋转估计
文章:Robust Frame-to-Frame Camera Rotation Estimation in Crowded Scenes
点云PCL博主
2024/01/23
2120
拥挤场景中的稳健帧间旋转估计
基于光流的3D速度检测
光流的概念在1950年由Gibson首次提出。它是在观察成像平面上空间移动物体的像素移动的瞬时速度。利用图像序列中时域中像素的变化以及相邻帧之间的相关性,找到前一帧与当前帧之间的对应关系,从而计算出相邻帧之间物体的运动信息。一般而言,光流是由前景物体本身的移动,相机的移动或场景中两者的联合移动引起的。
小白学视觉
2022/05/22
5660
基于光流的3D速度检测
自动驾驶中基于光流的运动物体检测
文章:Optical Flow Based Motion Detection for Autonomous Driving
点云PCL博主
2022/09/13
1.6K0
自动驾驶中基于光流的运动物体检测
CV学习笔记(八):光流法原理
在之前的几篇关于OpenCV的文章中我集中介绍了OpenCV中比较常用的操作和函数.在我们基础的学习中,这些函数其实在图像进行预操作的过程中已经够用了.因此在之后的文章中,我们要继续深入使用OpenCV中的一些函数来去实现几个简单的实例.能够在学习的过程中获得满足感.
云时之间
2020/02/24
1.3K0
基于FPGA的实时移动目标的追踪
如图1所示,交通摄像头对公路上移动的汽车进行实时的定位,随着小汽车的移动,红色框也跟随小汽车移动,实时将小汽车框起来。
FPGA开源工作室
2019/10/29
2K0
基于FPGA的实时移动目标的追踪
流体运动估计光流算法研究
大家好!我是苏州程序大白,今天讲讲流体运动估计光流算法研究。请大家多多关注支持我。谢谢!!! 简介: 对流体图像序列进行运动分析一直是流体力学、医学和计算机视觉等领域的重要研究课题。 从图像对中提取的密集精确的速度矢量场能够为许多领域提供有价值的信息,基于光流法的流体运动估计技术因其独特的优势成为一个有前途的方向。 光流法可以获得具有较高分辨率的密集速度矢量场,在小尺度精细结构的测量上有所改进,弥补了基于相关分析法的粒子图像测速技术的不足。 此外,光流方法还可以方便的引入各种物理约束,获得较为符合流体运动特性的运动估计结果。 为了全面反映基于光流法的流体运动估计算法的研究进展,本文在广泛调研相关文献的基础上,对国内外具有代表性的论文进行了系统阐述。 首先介绍了光流法的基本原理,然后将现有算法按照要解决的突出问题进行分类:结合流体力学知识的能量最小化函数,提高对光照变化的鲁棒性,大位移估计和消除异常值。 对每类方法,从问题解决过程的角度予以介绍,分析了各类突出问题中现有算法的特点和局限性。 最后,总结分析了流体运动估计技术当前面临的问题和挑战,并对未来基于光流法的运动估计算法的研究方向和研究重点进行了展望。 定义: 流体运动估计技术在日常生活的众多领域发挥着重要作用,对从流体图像序列中提取的速度场进行分析,有助于更深入地了解复杂的流体运动并提取有用的信息。粒子图像测速( particle image velocimetry,PIV)(Adrian,1991)是一种广泛使用的流体运动估计技术。 其基于两个连续粒子图像之间局部空间性,通过搜索图像对的两个查询窗口之间互相关的最大值,获得查询窗口之间的位移矢量。 这种依赖于互相关函数的PIV 技术虽然能够简单有效地从图像序列间获取速度矢量场,但仍存在许多不足。 首先,其假设查询窗口内的位移矢量保持一致,这使得获取的速度场空间分辨率低,无法测量流场中的小尺度精细结构。 其次,PIV 技术主要用于粒子图像,无法可靠获取标量图像的速度矢量场。 最后,PIV技术缺乏物理解释,对图像序列进行运动估计时,平等地对待各种性质的运动物体。研究发现光流法非常适合流体运动估计( Li等,2015)。 与基于互相关的 PIV 技术相比,光流法可以获取更加密集的速度场,而且可以对标量图像进行运动估计而不仅限于粒子图像。 此外,与 PI技术相比,光流法更能适应各种物理约束。 基于光流法的流体运动技术是对 PIV 技术的良好补充。虽然现有的基于光流法的流体运动估计技术已经广泛用于各种流体测速场景,但仍存在计算耗时鲁棒性不足等问题。 本文从光流法的基本原理入手,根据光流法需要解决的几个关键问题对现有的算法进行分类,并对每一类方法从问题解决的角度予以介绍。
苏州程序大白
2021/08/13
1.5K0
流体运动估计光流算法研究
光流法与直接法视觉里程计
根据使用的图像信息不同,可分为: 稀疏直接法:只处理稀疏角点或关键点 稠密直接法:使用所有像素 半稠密直接法:使用部分梯度明显的像素
小飞侠xp
2019/06/20
1.1K0
入围CVPR最佳论文,这项AI基础研究让我们对虎牙刮目相看
从简单的图像和行为识别,可以像文字搜索一样搜索图像,还能后期“无中生有”各种各样的效果。
量子位
2019/07/09
6810
光流法详解之一(LK光流)
Lucas–Kanade光流算法是一种两帧差分的光流估计算法。它由Bruce D. Lucas 和 Takeo Kanade提出 [1]。
一棹烟波
2019/05/25
5.3K0
光流法学习「建议收藏」
在相邻的两帧图像中,点(x,y)发生了位移(u,v),那么移动前后两点的亮度应该是相等的。如下:
全栈程序员站长
2022/09/06
5110
光流法学习「建议收藏」
电子稳像技术-灰度投影算法
由于电子稳像技术的固有特性和技术特点,电子稳像技术难以适应大幅度抖动,电子稳像算法一般是作为陀螺稳定平台后的二级稳定或者抖动量相对较小的载体随机抖动,对于车载相机场景或者固定相机场景比较适合。
AomanHao
2024/08/07
1450
电子稳像技术-灰度投影算法
图像处理——目标检测与前背景分离
本文介绍了图像处理中的目标检测和前景背景分离,重点介绍了基于深度学习的方法。具体包括像素点操作、低秩矩阵应用和深度学习中的注意力模型等。
码科智能
2018/01/03
5.5K0
图像处理——目标检测与前背景分离
相关推荐
跟踪算法(一)光流法跟踪
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档