189第十四章二维运动估计早期设计的机器视觉系统主要是针对静态场景的,为了满足更高级的应用需求,必须研究用于动态场景分析的机器视觉系统.动态场景分析视觉系统一般需要较大的存储空间和较快的计算速度,因为系统的输入是反应场景动态变化的图像序列,其包含的数据十分巨大.图像动态变化可能由摄象机运动、物体运动或光照改变引起,也可能由物体结构、大小或形状变化引起.为了简化分析,通常我们假设场景变化是由摄象机运动和物体运动引起的,并假设物体是刚性的.根据摄象机和场景是否运动将运动分析划分为四种模式:摄象机静止-物体静止,摄象机静止-物体运动,摄象机运动-物体静止,摄象机运动-物体运动,每一种模式需要不同的分析方法和算法。摄象机静止-物体静止模式属于简单的静态场景分析.摄像机静止-场景运动是一类非常重要的动态场景分析,包括运动目标检测、目标运动特性估计等,主要用于预警、监视、目标跟踪等场合。摄象机运动—物体静止是另一类非常重要的动态场景分析,包括基于运动的场景分析、理解,三维运动分析等,主要用于移动机器人视觉导航、目标自动锁定与识别等.在动态场景分析中,摄象机运动—物体运动是最一般的情况,也是最难的问题,目前对该问题研究的还很少.图像运动估计是动态场景分析的基础,现在已经成为计算机视觉新的研究热点。根据所涉及的空间,将图像运动估计分为二维运动估计和三维运动估计,显然,这种划分不是十分严格,因为二维运动参数的求解有时需要三维空间的有关参数引导,而许多三维参数的求解需要以二维参数为基础。本章主要讨论二维运动估计,三维运动估计和分析将在第十五章讨论。14.1图像运动特征检测对许多应用来说,检测图像序列中相邻两帧图像的差异是非常重要的步骤.场景中任何可察觉的运动都会体现在场景图像序列的变化上,如能检测这种变化,就可以分析其运动特性.如果物体的运动限制在平行于图像平面的一个平面上,则可以得到物体运动特性定量参数的很好估计.对于三维运动,则只能得到物体空间运动的定性参数估计.场景中光照的变化也会引图像强度值的变化,有时会引起较大的变化.动态场景分析的许多技术都是基于对图像序列变化的检测.检测图像变化可以在不同的层次上进行,如像素、边缘或区域.在像素层次上要对所有可能的变化进行检测,以便在后处理阶段或更高层次上使用.14.1.1差分图像检测图像序列相邻两帧之间变化的最简单方法是直接比较两帧图像对应像素点的灰度值.在这种最简单的形式下,帧),,(jyxf与帧),,(kyxf之间的变化可用一个二值差分图像),(yxfDPjk表示:其它如果0),,(),,(1),(TkyxfjyxfyxfDPjk(14.1)式中T是阈值.在差分图像中,取值为1的像素点被认为是物体运动或光照变化的结果.这里假设帧与帧之间配准或套准得很好.图14.1和14.2示意了两种图像变化情况,一种是由于光照变化造成的图像变化,另一种是由于物体的运动产生的图像变化.需要指出,阈值在190这里起着非常重要的作用.对于缓慢运动的物体和缓慢光强变化引起的图像变化,在一个给定的阈值下可能检测不到.(a)(b)(c)图14.1(a)和(b)是取自一个运动摄象机获取的静态场景图像序列的两帧图像,(c)是它们的差分图像(T=40)(a)(b)(c)图14.2(a)和(b)是取自光照变化的图像序列的两帧图像,(c)是它们的差分图像(T=80)(1)尺度滤波器在实际中,使用上述差分方法计算的差分图像经常会含有许多噪声.一个简单噪声消除方法是使用尺度滤波器,滤掉小于某一尺度的连通成分,因为这些像素常常是由噪声产生的,留下大于某一尺度阈值的4-连通或8-连通成分,以便作进一步的分析.对于运动检测,这个滤波器非常有效.但也会将一些有用的信号滤掉,比如那些来自于缓慢运动或微小运动物体的信号.在图14.3中,我们给出了图14.1、14.2图像差分图像的尺度滤波结果.(a)(b)图14.3(a)图14.1差分图像的尺度滤波结果(b)图14.2差分图像的尺度滤波结果(2)鲁棒检测方法为了使图象变化检测更鲁棒,可以使用统计方法或基于强度分布的局部逼近方法来比较两帧图像之间的光强特性,比如使用第三章讨论过的似然比19121222121)2(2(14.2)来进行两帧图像之间的比较,(式中和表示区域的平均灰度和方差),然后计算差分图像:其它如果01),(TyxfDPjk(14.3)式中T是阈值.对于许多真实场景,将似然比和尺度滤波组合起来使用是非常有效的.上面讨论的似然比测试是基于区域服从均匀二阶统计的假设.如果使用小平面和二次平面来近似这些区域,似然比测试方法的性能还能有显著的提高.注意,似然比测试是在像素层次上检测相似度,,因此只能确定所考察的区域是否有同样的灰度特征;有关区域的相对强度信息则没有得到保留.使用似然比方法检测图像序列中的运动部分可能增加计算量。(3)累积差分图像缓慢运动物体在图像中的变化量是一个很小的量,尺度滤波器可能会将这些微小量当作噪声滤掉.当使用鲁棒检测方法时,因为是基于区域的变化检测,因此会使得检测小位移或缓慢运动物体的问题变得更加严重.解决这一问题的一种方法是累积差分图像方法(accumulativedifferencepicture,ADP),其基本思想是通过分析整个图像序列的变化(而不是仅仅分析两帧之间的变化)来检测小位移或缓慢运动物体.这种方法不仅能用来可靠检测微小运动或缓慢运动的物体,也可用来估计物体移动速度的大小和方向以及物体尺度的大小.累积差分图像可分为一阶累积差分图像(FADP)和二阶累积差分图像(SADP)。一阶累积差分图像的形成过程如下:将图像序列的每一帧图像与一幅参考图像进行比较,当差值大于某一阈值时,就在累积差分图像中加1.通常将图像序列的第一帧作为参考图像,并且置累积差分图像0FADP的初始值为0.这样,在第k帧图像上的累积差分图像),(yxFADPk为:其它),(),(00),(11yxDPyxFADPkyxFADPkkk(14.4)图14.4是利用累积差分图像检测的结果示意图.二阶差分图像的构造为:对应于第n帧)110(nNn且,,,的二阶差分图像在),(yx位置的值为“1”,表明在这个位置上第1n帧和第n帧的一阶差分图像FADP具有不同的符号.其它01),(),(1),(1kyxSADPyxSADPyxSADPkkk(14.5)累积差分图像具有许多性质,可以用于描述物体运动的总体参数[Jain](a)(b)(c)192图14.4(a)第一帧图像(参考图像),(b)第三帧后的累积差分图像,(c)最后一帧后的累积差分图像用于运动检测的差分图像的最大特点是它的简单性,但差分图像极易受噪声污染.照明和摄象机位置的改变,以及摄象机的电子噪声,都会产生很多错误数据.将似然比和尺度滤波器组合起来能消除大部分摄象机噪声.照明的改变会给所有基于光强的运动检测方法带来问题,这些问题有可能在后期的分析和理解层次上得以解决.图像序列各帧之间的错误套准也会导致错误数据,如果套准错误不十分严重,则累积差分图像还是可以消除这些错误数据的.必须强调,在像素层次上检测不相似度只能通过检测光强变化来实现.在动态场景分析中,这是最低层次的分析.在检测完像素变化以后,还需要通过其它的处理过程来解释这些变化.经验表明,差分图像最有效的应用是对图像进行概略处理,以便将解释的注意力引向场景中出现“活动”的区域.场景中事件的粗略信息也可由差分图像中的某些特征来提取.14.1.2时变边缘检测我们知道,边缘在静态场景图像分析中起着十分重要的作用,因此有理由推测时变边缘在动态场景图像分析中也是非常重要的.在进行图像分割与匹配方法中,人们将精力主要集中在静态特征与运动特征之间的匹配.实际上,这些静态特征是运动信息提取的最大障碍.如果直接检测运动特征,那么完成匹配所需的计算量可以根本上大大减小.一条边缘运动后仍然是一条边缘.运动边缘是通过逻辑“与”算子对时间和空间梯度进行组合来实现,其中的“与”算子可以由乘法来完成.这样,图像Exyt(,,)中一点的时变边缘由下式给出:),(),,(),,(),,(),,(yxDtyxEdttyxdEdStyxdEtyxEt(14.6)式中dStyxdE),,(和dttyxdE),,(分别是点),,(tyx的光强在空间和时间上的梯度值.各种传统的边缘检测方法可用于计算空间梯度,而简单的差分方法可用于计算时间梯度.在大多数情况下,边缘算法很有效.为了克服遗漏缓慢运动边缘和弱边缘的问题,可将一个阈值作用于上式的乘积,而不是一阶差分,然后使用边缘检测器或一阶检测边缘器算出它们的时间梯度[Jain],如图14.5和14.6所示.由图14.6可见,这种边缘检测方法将对有清晰边缘的缓慢运动和以适当速度运动的弱边缘响应.这种检测方法的另一个重要特点是不需要对任何位移大小作出假设.当边缘的运动非常大时,检测器的性能也是十分满意的.(a)(b)(c)193图14.5时变边缘检测器运行结果示意图图14.6边缘检测器的性能曲线14.1.3运动对应性已知一个图像序列,我们可以分析并确定序列中每一帧图像上的特征点.为估计图像运动特性,必须在图像各帧之间建立这些特征点的对应关系.运动图像的对应问题与立体视觉中的对应问题相似,不过立体视觉使用的约束主要是外极线约束,运动图像对应问题使用的是其它类型的约束.下面讨论一种约束传播方法来解决对应问题.(1)松弛标记标记(labeling)是指将一组已知标记分配给场景中对应的各个物体。标记问题可以表示为如图14.7所示的形式.每一个节点表示一个标记区域(或物体),连结节点的弧线表示区域间的关系.假定每一个节点上有一个处理器,在每一个节点上定义集合R,C,L和P.集合R包含节点间所有可能的关系(relation);集合C表示这些关系的相容性(compatibility),相容性将有助于对关系R进行约束以及对图像中每个区域的标记进行约束;集合L包含所有指定给该节点的标记;集合P表示计算过程中赋予节点的所有可能的层次.假定在第一次迭代中,节点i的可能的标记集合1iP对所有的i来说都是L,换句话说,所有节点的初始标记是所有可能的标记.在第k次迭代过程中,标记算法将从“kiP”中除去无效标记,得到1+kiP.去除标记的依据建立在节点当前标记、该节点与其它节点的关系、各种约束等基础上,因此,每一个处理器都有足够的信息来独立地对其标记集合kiP进行细化.这样,所有的处理器就有可能同步工作.需要指出,在任一时刻,处理器只使用能直接可得到的信息,这就是说,只使用从属于该节点对应区域的信息.但是,每一次迭代都通过它的邻节点或关联节点把效应传播给其它没有直接关系的节点,即每一次迭代都会增加节点的影响圈.194图14.7并行传播示意图对大多数应用来说,在标记过程开始前,有关物体的一些知识是可以得到的.分割或标记前进行的其它处理过程又常常可以提供用于细化节点初始集合Pi的知识.标记过程可以进一步细化这些标记集合,以使得每一个区域对应唯一的标记.下面考虑一种与上面所述的标记问题稍微不同的标记问题.基于某种酉关系,标记集合1iP可以分配给一个区域。为了确定标记分配正确与否,给每个标记1ikPl确定一个置信度.这个置信度和概率一样,表示了一种信任度,即基于图像提供的证据给某个区域分配某个标记的置信度.因此,对每个元素ikPl,一个非负概率ikp表示标记kl是节点i的正确标记的置信度.标记过程实际上是使用约束来细化每个标记的置信度.置信度ikp受连通节点标记的置信度影响,这样,在第t次迭代中,节点i的标记kl的置信度tikp是置信度1tikp和所有直接有关的节点标记的置信度函数.在每一次迭代中,一个节点受制于其它所有有关节点的标记,然后使用已知约束来更新该标记的置信度.标记过程的结束有两种情况,一种是当每个节点都有一个唯一的标记,另一种是置信度达到一个稳定的状态.上面的过程通常称为松弛标记