摘自百度百科
光流是一种简单实用的图像运动的表达方式[1],通常定义为一个图像序列中的图像亮度模式的表观运动,即空间物体表面上的点的运动速度在视觉传感器的成像平面上的表达。这种定义认为光流只表示一种几何变化。1998年Negahdaripour将光流重新定义为动态图像的几何变化和辐射度变化的全面表示[2]。光流的研究是利用图像序列中的像素强度数据的时域变化和相关性来确定各自像素位置的“运动”,即研究图像灰度在时间上的变化与景象中物体结构及其运动的关系。一般情况下,光流由相机运动、场景中目标运动或两者的共同运动产生的相对运动引起的。光流计算方法大致可分为三类:基于匹配的方法、频域的方法和梯度的方法。
(1) 基于匹配的光流计算方法包括基于特征和基于区域两种。基于特征的方法不断地对目标主要特征进行定位和跟踪,对大目标的运动和亮度变化具有鲁棒性。存在的问题是光流通常很稀疏,而且特征提取和精确匹配也十分困难。基于区域的方法先对类似的区域进行定位,然后通过相似区域的位移计算光流。这种方法在视频编码中得到了广泛的应用。然而,它计算的光流仍不稠密。
(2) 基于频域的方法,也称为基于能量的方法[3],利用速度可调的滤波组输出频率或相位信息。虽然能获得高精度的初始光流估计,但往往涉及复杂的计算。另外,进行可靠性评价也十分困难。
(3) 基于梯度的方法利用图像序列亮度的时空微分计算2D速度场(光流)。由于计算简单和较好的效果,基于梯度的方法得到了广泛的研究。虽然很多基于梯度的光流估计方法取得了较好的光流估计,但由于在计算光流时涉及到可调参数的人工选取、可靠性评价因子的选择困难,以及预处理对光流计算结果的影响,少量帧中噪声的存在以及图像采集地过程中形成的频谱混叠都将严重影响基于梯度的方法的结果精度[3]。
光流法检测运动物体的基本原理是:给图像中的每一个像素点赋予一个速度矢量,这就形成了一个图像运动场,在运动的一个特定时刻,图像上的点与三维物体上的点一一对应,这种对应关系可由投影关系得到,根据各个像素点的速度矢量特征,可以对图像进行动态分析。如果图像中没有运动物体,则光流矢量在整个图像区域是连续变化的。当图像中有运动物体时,目标和图像背景存在相对运动,运动物体所形成的速度矢量必然和邻域背景速度矢量不同,从而检测出运动物体及位置。采用光流法进行运动物体检测的问题主要在于大多数光流法计算耗时,实时性和实用性都较差。但是光流法的优点在于光流不仅携带了运动物体的运动信息,而且还携带了有关景物三维结构的丰富信息,它能够在不知道场景的任何信息的情况下,检测出运动对象。
对于视频监控系统来说,所用的图像基本都是摄像机静止状态下摄取得,所以对有实时性和准确性要求的系统来说,纯粹使用光流法来检测目标不太实际。更多的是利用光流计算方法与其它方法相结合来实现对目标检测和运动估计。
然而,在实际应用中,由于遮挡性、多光源、透明性和噪声等原因,使得光流场基本方程的灰度守恒假设条件不能满足,不能求解出正确的光流场,同时大多数的光流计算方法相当复杂,计算量巨大,不能满足实时的要求,因此,一般不被对精度和实时性要求比较高的监控系统所采用。