摸鱼了一个星期以后,我开始正经了解光流法。
一、运动目标检测的综述
参考链接🔗:运动目标检测综述
1.光流法
光流是空间运动物体被观测面上的像素点运动产生的瞬时速度场,包含了物体表面结构和动态行为的重要信息。光流计算法大致可分为三类:
(1)基于匹配的光流计算方法,包括基于特征和基于区域的两种。基于特征的方法是不断地对目标主要特征进行定位和跟踪,对大目标的运动和亮度变化具有鲁棒性,存在的问题是光流通常很稀疏,而且特征提取和精确匹配也十分困难;基于区域的方法先对类似的区域进行定位,然后通过相似区域的位移计算光流,这种方法在视频编码中得到了广泛的应用,但它计算的光流仍不稠密。
(2)基于频域的方法利用速度可调的滤波组输出频率或相位信息,虽然能获得很高精度的初始光流估计,但往往涉及复杂的计算,而且可靠性评价也十分困难。
(3)基于梯度的方法利用图像序列的时空微分计算2D速度场(光流)。由于计算简单和较好的实验结果,基于梯度的方法得到了广泛应用。
2.相邻帧差法
相邻帧差法是在运动目标检测中使用的最多的一类算法。原理就是将前后两帧图像对应的像素值相减,在环境亮度变化不大的情况下,如果对应像素值相差值很小,可认为此处景物是静止的,反之,则是运动物体。
相邻帧差法对于动态环境具有较强的自适应性,鲁棒性较好,能够适应各种动态环境,但一般不能完全提取出所有相关的特征像素点,这样在运动实体内部容易产生空洞现象。
3.背景差法
背景差法是常用的运动目标检测方法之一。它的基本思想是将输入图像与背景模型进行比较,通过判定灰度等特征的变化,或用直方图等统计信息的变化来判断异常情况的发生和分割运动目标。
与帧间差法比较,背景差法可以检测视频中停止运动的物体,其缺点是背景的更新导致算法的复杂性增加,实时性变差。
4.边缘检测法
图像的边缘为图像中灰度发生急剧变化的区域,边界分为阶跃状和屋顶状两种类型。图像的边缘一般对应一阶导数较大,二阶导数为零的点。常用的边缘检测算法有Robert算子、Sobel算子、Laplacian算子等。
与帧差法、背景差分法相比,边缘检测方法有利于邻近运动目标的区分和运动目标的提取,对背景噪声的鲁棒性很大,但其运算复杂度也相对较大。
二、具体了解光流法
参考链接🔗1:光流法综述
参考链接🔗2:光流法综述
1.光流概念的介绍
光流的概念是Gibson在1950年首先提出来的,它是空间运动物体在观察成像平面上的像素运动的瞬时速度。一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。
光流场(Optical Flow Field)法的基本思想:在空间中,运动可以用运动场描述,而在一个图像平面上,物体的运动往往是通过图像序列中不同图像灰度分布的不同体现的,从而,空间中的运动场转移到图像上就表示为光流场。光流场反映了图像上每一点灰度的变化趋势,可看成是带有灰度的像素点在图像平面上运动而产生的瞬时速度场,也是一种对真实运动场的近似估计。如图3-8所示,光流是图像中亮度图案的表观运动,而运动场是三维物体的实际运动在图像平面上的投影,在理想情况下二者相互吻合。
2.光流法的前提
(1)相邻帧之间的亮度恒定;
(2)相邻视频帧的取帧时间连续,或者,相邻帧之间物体的运动比较“微小”;
(3)保持空间一致性;即,同一子图像的像素点具有相同的运动。
假设(1)是建立光流约束方程的条件,这一假设的描述非常直观,一个物体在运动时,物体的亮度和纹理应该保持基本不变。
假设(2)是为了保证灰度值关于直角坐标与时间的函数连续可微,这个要求是接下来光流约束公式得以推导的必要条件。
假设(3)也是一个符合直觉的条件,正常情况下,目标物体在图片中运动时,用于表示目标物体的像素区域必然一起运动,因此同属于某个物体的像素的帧间速度矢量大小和方向应该一致,这个假设使得光流约束方程可以得到多个约束式,从而使运动矢量的求解转化为一个超定方程的求解。
3.光流法的分类
光流法按照不同的实现方式可以分为:基于梯度的方法、基于匹配的方法、基于能量的方法、基于相位的方法等,其中基于梯度的方法和基于匹配的方法由于计算量能满足一般的实时处理而被广泛使用。
还可以按照跟踪目标分为稠密光流法和稀疏光流法。
具体为以下几种:
(1)Horn-Schunck光流法
Horn-Schunck算法属于基于梯度的稠密光流算法。主题思想是全局平滑假设,即运动物体内部的光流场是相同的,因此物体内部光流场的梯度应该为零。
(2)块匹配算法
块匹配算法属于基于匹配的稠密光流算法。 对像素的集合进行处理而非单个像素, 所以返回的“速度图像”通常比输入图像分辨率低。
(3)Lucas-Kanade光流法
Lucas-Kanade光流法属于基于梯度的稀疏光流算法(应用最多)。Lucas-Kanade算法也是用了类似Horn-Schunck算法的光流场平滑假设,Lucas-Kanade算法认为一个像素周围的相邻像素的光流场应该和中心的像素光流场一致。
(4)金字塔LK光流法
金字塔LK光流法: LK光流法有个“小运动”的假设,因此较大运动会将点移出小窗口,造成算法无法再找到这些点。金字塔LK光流法可以解决这个问题,即从金字塔的最高层(细节最少)开始向金字塔的低层(丰富的细节)进行跟踪,该方法允许小窗口捕获较大的运动。