光流法

来源:互联网 发布:xp芯片编程器 编辑:程序博客网 时间:2024/06/02 06:32


本文转自:http://blog.csdn.net/justremind/article/details/23662273

1. 光流概念的介绍  

       光流的概念是Gibson在1950年首先提出来的,它是空间运动物体在观察成像平面上的像素运动的瞬时速度。一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。

光流场(Optical Flow Field)法的基本思想:在空间中,运动可以用运动场描述,而一个图像平面,物体的运动往往是通过图像序列中不同图像灰度分布的不同体现的,从而,空间中的运动场转移到图像上就表示为光流场光流场反映了图像上每一点灰度的变化趋势,可看成是带有灰度的像素点在图像平面上运动而产生的瞬时速度场,也是一种对真实运动场的近似估计。如图3-8所示,光流是图像中亮度图案的表观运动,而运动场是三维物体的实际运动在图像平面上的投影,在理想情况下二者相互吻合。

      光流的研究是利用图像序列中的像素强度数据的时域变化和相关性来确定各自像素位置的“运动”。研究光流场的目的就是为了从图片序列中近似得到不能直接得到的运动场。

      


      2.  常用光流计算方法

       稠密光流:将图中的每个像素都与速度相关联。

       稠密跟踪方法:

        1)Horn-Schunck方法: Horn和Schunck于1981年提出这种方法,此方法是首次使用亮度恒定假设和推导出基本的亮度恒定方程的方法之一。OpenCV提供了实现该方法的函数 cvCalcOpticalFlowHS。

        2)块匹配方法: 对像素的集合进行处理而非单个像素, 所以返回的“速度图像”通常比输入图像分辨率低。OpenCV实现该方法的函数cvCalcOpticalFlowBM。

        这两种光流方法不常用,而且它们不支持图像金字塔匹配而不能用于跟踪大幅度的运动。

        实际上计算稠密光流并不容易,比如一张白纸的运动,上一帧中的白色的像素在下一帧中仍然为白色。于是出现了另一种方法,稀疏光流法。

       稀疏光流:需要指定一组点进行跟踪,这组点最好具有某种明显的特性,例如角点,那么跟踪就会相对稳定和可靠。稀疏跟踪的计算开销比稠密跟踪小得多。

       稀疏跟踪方法:

       1)Lucas-Kanade(LK)光流法: 于1981年提出,最初是用于求稠密光流的,由于算法易于应用在输入图像的一组点上,而成为求稀疏光流的一种重要方法。

       2)金字塔LK光流法: LK光流法有个“小运动”的假设,因此较大运动会将点移出小窗口,造成算法无法再找到这些点。金字塔LK光流法可以解决这个问题,即从金字塔的最高层(细节最少)开始向金字塔的低层(丰富的细节)进行跟踪,该方法允许小窗口捕获较大的运动。

    3.光流的应用

       光流难道只是用于匹配上一帧和下一帧的像素吗。光流(optical flow)表达了图像的变化,由于它包含了图像的运动信息,因此可被观察者用来确定目标的运动情况。

      

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

       光流法用于目标检测:

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

     光流法用于目标跟踪:

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

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

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

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

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

      光流方法的缺点

      在比较理想的情况下,它能够检测独立运动的对象,不需要预先知道场景的任何信息,可以很精确地计算出运动物体的速度,并且可用于摄像机运动的情况。但光流法存在下面的缺点:有时即使没有发生运动,在外部照明发生变化时,也可以观测到光流;另外,在缺乏足够的灰度等级变化的区域,实际运动也往往观测不到。三维物体的运动投影到二维图像的亮度变化,本身由于部分信息的丢失而使光流法存在孔径问题和遮挡问题,用光流法估算二维运动场是不确定的,需要附加的假设模型来模拟二维运动场的结构;在准确分割时,光流法还需要利用颜色、灰度、边缘等空域特征来提高分割精度;同时由于光流法采用迭代的方法,计算复杂耗时,如果没有特殊的硬件支持,很难应用于视频序列的实时检测。

Reference:

光流Optical Flow介绍与OpenCV实现  http://blog.csdn.net/zouxy09/article/details/8683859(写的挺好,推荐阅读)

http://machunyan120.blog.163.com/blog/static/14598902010101910431437/

http://blog.csdn.net/carson2005/article/details/7581642

http://wenku.baidu.com/link?url=ZrDpReB3lZwR-abMMntXQFAtpoSDHvh9SU95kdlwy3uN_YfK02kdwR2PZu9NdQQjz9e6bSDrxLhTvt02iIqKjHWMKTrmggYutgyTEVjB3S3

 
0 0
原创粉丝点击