原文: http://blog.csdn.net/tfygg/article/details/50528436
在计算机视觉中,光流法即可用于运动目标检测,也可以用于目标跟踪。本文主要介绍光流法在运动目标检测和目标跟踪中的区别与联系。
1、光流与光流场
光流的概念最初是由 Gibson 于 1950 年首先提出来的。当人的眼睛观察运动物体时,物体的景象在人眼的视网膜上形成一系列连续变化的图像,这一系列连续变化的信息不断“流过”视网膜(即图像平面),好像是一种光的“流”,故称之为光流。光流表达图像的变化,包含目标运动的信息,可用来确定目标的运动。光流三个要素:一是运动速度场,这是形成光流的必要条件;二是带光学特征的部分例如有灰度的象素点,它可以携带运动信息;三是成像投影从场景到图像平面,因而能被观察到。
定义光流以点为基础,具体来说,设(u, v) 为图像点 (x, y) 的光流,则把 (x, y, u, v) 称为光流点。所有光流点的集合称为光流场。 当带光学特性的物体在三维空间运动时,在图像平面上就形成了相应的图像运动场,或称为图像速度场。在理想情况下,光流场对应于运动场。
总而言之,光流是由图像的亮度变化形成的,因此,光流场近似于运动场。
2、光流场的计算
2.1、光流约束方程
光流场的计算最初是由 Horn 和 Schunck[1]于 1981 年提出的,而后由 Lueas 和 Kanad[2]提出了改进光流算法。
光流法的核心就是求解出运动目标的光流,即速度。根据视觉感知原理,客观物体在空间上一般是相对连续运动的,在运动过程中,投射到传感器平面上的图像实际上也是连续变化的。为此可以假设瞬时灰度值不变,即灰度不变性原理。由此可以得到光流基本方程,灰度对时间的变化率等于灰度的空间梯度与光流速度的点积。如下:
约束方程只有一个,而方程的变量有两个,在这种情况下无法求得 u 和 v 的确切值。这种不确定性称为孔径问题(aperture problem)。此时需要引入另外的约束条件,从不同的角度引入约束条件,导致了不同的光流场计算方法。到目前为止,各种各样的方法和改进方法己不下几十种,这些方法有着很大的差异,对现有方法还缺乏一个系统的分类。这里将光流算法分为以下四大类:
- 基于梯度的光流计算方法
- 基于区域的光流计算方法
- 基于频域的光流计算方法
- 贝叶斯(Bayesian)光流算法
2.2、基于梯度的光流计算方法
基于梯度的方法又称为时空梯度法,也称微分法,它是利用图像序列灰度的时空微分(即时空梯度函数)来计算图像上每一像素点的光流。微分法分为:
(1)全局微分法:
Horn-Schunck算法:假设光流在整个图像上光滑变化,即速度的变化率为零。
(2)局部微分法:
Lucas-Kanade算法:假设在一个小空间领域上运动矢量保持恒定,使用加权最小二乘法估计光流。
3、光流的应用
3.1、运动目标检测
给图像中的每个像素点赋予一个速度矢量,这样就形成了一个运动矢量场。根据各个像素点的速度矢量特征,可以对图像进行动态分析。如果图像中没有运动目标,则光流矢量在整个图像区域是连续变化的。当图像中有运动物体时,目标和背景存在着相对运动。运动物体所形成的速度矢量必然和背景的速度矢量有所不同,如此便可以计算出运动物体的位置。需要提醒的是,利用光流法进行运动物体检测时,计算量较大,无法保证实时性和实用性。
3.2、目标跟踪
(1)对一个连续的视频帧序列进行处理;
(2)针对每一个视频序列,利用一定的目标检测方法,检测可能出现的前景目标;
(3)如果某一帧出现了前景目标,找到其具有代表性的关键特征点(可以随机产生,也可以利用角点来做特征点);
(4)对之后的任意两个相邻视频帧而言,寻找上一帧中出现的关键特征点在当前帧中的最佳位置,从而得到前景目标在当前帧中的位置坐标;
(5)如此迭代进行,便可实现目标的跟踪;
参考文献:
[1] Berthold K. P. Horn, Brian G. Schunck. Determining Optical Flow[J]. Artificial Intelligence, 1981: 185-203.
[2] Bruce D. Lucas, Takeo Kanade. An Iterative Image Registration Technique with an Application to Stereo Vision[J]. Proceeding of Imaging Understanding Workshop, 1981: 120-131.