光流法简单介绍「建议收藏」

2022-09-15 15:08:59 浏览数 (1)

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

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

(1)基于区域或者基于特征的匹配方法;

(2)基于频域的方法;

(3)基于梯度的方法;

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

光流法的前提假设:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

0 人点赞