光流法(opticalflow)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
光流法(opticalflow)
光流分为稠密光流和稀疏光流
光流(optic flow)是什么呢?名字很专业,感觉很陌⽣,但本质上,我们是最熟悉不过的了。
因为这种视觉现象我们每天都在经历。
从本质上说,光流就是你在这个运动着的世界⾥感觉到的明显的视觉运动(呵呵,相对论,没有绝对的静⽌,也没有绝对的运动)。
例如,当你坐在⽕车上,然后往窗外看。
你可以看到树、地⾯、建筑等等,他们都在往后退。
这个运动就是光流。
⽽且,我们都会发现,他们的运动速度居然不⼀样?这就给我们提供了⼀个挺有意思的信息:通过不同⽬标的运动速度判断它们与我们的距离。
⼀些⽐较远的⽬标,例如云、⼭,它们移动很慢,感觉就像静⽌⼀样。
但⼀些离得⽐较近的物体,例如建筑和树,就⽐较快的往后退,然后离我们的距离越近,它们往后退的速度越快。
⼀些⾮常近的物体,例如路⾯的标记啊,草地啊等等,快到好像在我们⽿旁发出嗖嗖的声⾳。
光流除了提供远近外,还可以提供⾓度信息。
与咱们的眼睛正对着的⽅向成90度⽅向运动的物体速度要⽐其他⾓度的快,当⼩到0度的时候,也就是物体朝着我们的⽅向直接撞过来,我们就是感受不到它的运动(光流)了,看起来好像是静⽌的(这很好理解,因为光流分析是基于连续多帧的图像来进⾏分析的,如果⽅向为0,那么每⼀帧改物体的位置相对于相机来说是相对静⽌的(假设不考虑物体的透视效应,因此就察觉不到光流。
当它离我们越近,就越来越⼤。
当然了,我们平时看到感觉还是有速度的,因为物体较⼤,它的边缘还是和我们⼈眼具有⼤于0的⾓度的)。
呵呵,说了那么多,好像还没进⼊⽐较官⽅的,研究性的定义。
那就贴上⼀个吧。
光流的概念是Gibson在1950年⾸先提出来的。
它是空间运动物体在观察成像平⾯上的像素运动的瞬时速度,是利⽤图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上⼀帧跟当前帧之间存在的对应关系,从⽽计算出相邻帧之间物体的运动信息的⼀种⽅法。
⼀般⽽⾔,光流是由于场景中前景⽬标本⾝的移动、相机的运动,或者两者的共同运动所产⽣的。
当⼈的眼睛观察运动物体时,物体的景象在⼈眼的视⽹膜上形成⼀系列连续变化的图像,这⼀系列连续变化的信息不断“流过”视⽹膜(即图像平⾯),好像⼀种光的“流”,故称之为光流(optical flow)。
光流表达了图像的变化,由于它包含了⽬标运动的信息,因此可被观察者⽤来确定⽬标的运动情况。
研究光流场的⽬的就是为了从图⽚序列中近似得到不能直接得到的运动场。
运动场,其实就是物体在三维真实世界中的运动;光流场,是运动场在⼆维图像平⾯上(⼈的眼睛或者摄像头)的投影。
那通俗的讲就是通过⼀个图⽚序列,把每张图像中每个像素的运动速度和运动⽅向找出来就是光流场。
那怎么找呢?咱们直观理解肯定是:第t帧的时候A点的位置是(x1, y1),那么我们在第t+1帧的时候再找到A点,假如它的位置是(x2,y2),那么我们就可以确定A点的运动了:(u x, v y) = (x2, y2) - (x1,y1)。
那怎么知道第t+1帧的时候A点的位置呢?这就存在很多的光流计算⽅法了。
1981年,Horn和Schunck创造性地将⼆维速度场与灰度相联系,引⼊光流约束⽅程,得到光流计算的基本算法。
⼈们基于不同的理论基础提出各种光流计算⽅法,算法性能各有不同。
Barron等⼈对多种光流计算技术进⾏了总结,按照理论基础与数学⽅法的区别把它们分成四种:基于梯度的⽅法(导数,⽐如LK算法)、基于匹配的⽅法、基于能量的⽅法、基于相位的⽅法。
近年来神经动⼒学⽅法也颇受学者重视。
这其中基于匹配的⽅法就是和视频编码中的motion estimation的类似的,但是计算cost的⽅法有些不同。
编码的cost是为了压缩使⽤的(⽐如MV本⾝也需要耗费bit在encoder中,cost需要考虑到这个cost,但是optical flow不需要考虑这些),⽽optical flow的搜索需要的是精确。
另外,在视频编码中ME针对的运动是刚体的平移,如果有rotation,scale等就没有办法处理了,因此需要进⾏ME的改进。
⼀种⽅法就是先对图像抽取特征点⽐如harris corner等,这些特征点本⾝具有旋转不变性,再对这些sparse的特征点进⾏block matching。
⼆维⼈体运动常⽤的跟踪⽅法
⽬前常⽤的跟踪⽅法有:块匹配法(Block Matching)、光流法(optical flow)。
每⼀类⽅法都有⾃⼰的优势和不⾜,根据具体问题的不同,分别应⽤在不同的⽅⾯。
接下来我们将简要介绍这⼏类⽅法。
2.1.1 块匹配⽅法
块匹配⽅法(Block Matching Algorithm,简称BMA)实质上是在图像序列中做⼀种相邻帧间的位置对应任务。
它⾸先选取⼀个图像块,然后假设块内的所有像素做相同的运动,以此来跟踪相邻帧间的对应位置。
块匹配法把⼀个像素块作为⼀个整体进⾏计算,运动表⽰简单。
其算法⽐较规则、简单,硬件上易于实现,因简单⾼效的特点⽽常被采⽤,在活动视频图像编码的国际标准H. 261,H. 263和MPEG I,MPEG II中实际都采⽤了块匹配法。
块匹配算法如下所⽰:在给定两帧顺序图像I帧和I+1帧,对于图像1中的每个像素点(x,y),以此像素为中⼼形成⼀个⼤⼩为(2n + 1)X(2n + 1)的块Bo围绕图像⼘1帧中的对应像素点(x,y)建⽴⼀个尺⼨为(2N⼗1)X(2N⼗1)的搜索窗⼝R。
搜索窗⼝可根据有关两图像间最⼤可能位移的先验知识来确定。
假设⼀个像块内所有的像素作速度相同的平移运动,然后在搜索窗⼝R内进⾏搜索匹配,在基于⼀定的误差度量准则下寻找与其最匹配的像素块B'。
2.1.2 光流跟踪⽅法
光流(optical flow)法是⽬前运动图像分析的重要⽅法,它的概念是由Gibso。
于1950年⾸先提出的,是指时变图像中模式运动速度。
因为当物体在运动时,它在图像上对应点的亮度模式也在运动。
这种图像亮度模式的表观运动(apparent motion)就是光流。
光流表达了图像的变化,由于它包含了⽬标运动的信息,因此可被观察者⽤来确定⽬标的运动情况。
由光流的定义可以引申出光流场,它是指图像中所有像素点构成的⼀种⼆维(2D)瞬时速度场,其中的⼆维速度⽮量是景物中可见点的三维速度⽮量在成像表⾯的投影。
所以光流不仅包含了被观察物体的运动信息,⽽且还包含有关景物三维结构的丰富信息。
对光流的研究成为计算机视觉及有关研究领域中的⼀个重要部分。
因为在计算机视觉中,光流扮演着重要⾓⾊,在⽬标对象分割、识别、跟踪、机器⼈导航以及形状信息恢复等都有着⾮常重要的应⽤。
从光流中恢复物体三维结构和运动则是计算机视觉研究所⾯临的最富有意义和挑战性的任务之⼀。
正是由于光流的这种重要地位和作⽤,使得众多的⼼理物理学家、⽣理学家和⼯程研究⼈员都加⼊了它的研究⾏列。
⼗多年来,他们提出了许多种计算光流的⽅法,⽽且新的⽅法还在不断涌现。