基于遮挡修补的TV-L1 光流算法

2015-04-16 08:52朱珏钰周书仁
计算机工程与应用 2015年19期
关键词:光流邻域流场

朱珏钰,刘 建,李 峰,周书仁

ZHU Jueyu1,LIU Jian2,LI Feng2,ZHOU Shuren2

1.湖南第一师范学院 信息科学与工程系,长沙410205

2.长沙理工大学 计算机与通信工程学院,长沙410004

1.Department of Information Science and Engineering,Hunan First Normal University,Changsha 410205,China

2.School of Computer&Communication Engineering,Changsha University of Science&Technology,Changsha 410004,China

1 引言

光流算法在近年来运动目标检测领域的一个十分重要的方法。研究光流算法是利用图像序列中灰度的时域、空域变化和相关性来确定图像像素的运动矢量,也就是研究图像灰度在时间上变化的大小和方向。因为光流的计算不需要预先知道场景的信息,不需要在图像中建立起特征之间的对应关系,所以光流计算属于高层次的视觉表述。

基于梯度的光流估计算法目前应用最广泛的算法,并且在一定程度上取得了较好的效果,但该方法在光流计算时往往需要人工选取可调参数,难于选择可靠性的评价因子,以及对光流计算结果收到预处理的影响,在应用基于梯度的光流对场景目标进行检测与实时跟踪时还仍存在许多问题,特别是针对遮挡较多的运动场景。

遮挡判断与处理是提高光流场运动边界估计精度必须要解决的问题。Brox 等人提出的粗-精分层HS 估计策略[1-2]较好地用连续能量泛函优化解决了大位移光流的估计问题,但大位移光流带来的遮挡问题未被重视。文献[3]将遮挡检测过程独立出来,构造遮挡像素与非遮挡像素分开考虑的能量泛函,通过数值变分技术实现遮挡的处理。文献[4]提出了新的遮挡处理思路,通过图像驱动的各向异性扩散将背景区域向遮挡区域进行扩散,但运动边界模糊依然存在。在本文中,首先通过使用ROF 结构对图像进行预处理,然后采用由粗到细的多尺度迭代的TV-L1 光流法计算图像序列的光流场,再根据前向光流和后向光流的运动一致性理论来判断遮挡区域的光流分量,最后使用同帧邻域光流的横向修补和相邻帧光流的纵向修补对遮挡区域的错误光流分量进行双重修补。实验证明,本文方法能够很好地对遮挡区域的光流进行修补,从而提高算法的鲁棒性。

2 光流算法模型

光流算法流程图1 所示。概括起来,基于TV-L1 的光流算法可以分成四个功能模块,分别是图像预处理、光流计算、遮挡区域判断、错误光流修补,下面进行详细的描述。

图1 光流算法流程图

2.1 图像预处理

图像分解是一种从图像中提取有用的、感兴趣的方法。根据图像的分解理论,可以将输入图像分解成结构Is与纹理It两分通过预处理来应对光照变化。图像的纹理部分几乎没有受到诸如阴影、遮挡、光强改变等光照变化的影响,影响主要集中在结构部分[5]。按照一定的比例,以线性组合的方式,用组合图像 作为新的输入图像:

2.2 TV-L1 光流

假定连续两帧图像I0和I1,X=(x,y)是I0上一个像素点,则TV-L1 光流模型[6]的能量函数如下:

其中,U=(u,v)是二维光流场,∇u和∇v是二维梯度,参数λ是数据项的权值常数,第一项为数据约束项,表示同一像素点在前后两帧图像间的灰度值差;第二项是运动正则化约束,即假设运动是连续的。

对于TV-L1 光流的计算,采用基于图像去噪的双向求解的数值分析机制来进行总变分光流能量函数的最小化方法。首先,将图像I1在X+U0附近的像素点进行线性化处理,即:

可以采用I1(X+U)的一阶泰勒展开近似值来代替本身,这样可以大大减少计算量,但无法得到准确的解(将非线性函数进行线性化),所以采用双向求解的方法,通过交替更新变量值来补偿线性近似带来的误差。

将(3)式代入(2)得到:

令ρ(U)=I1(X+U0)+(U-U0)∇I1-I0,并且引进一个额外的变量U′,式(4)可变为如下最小化凸函数的方程:

其中,θ是一个小的常量,U′无限逼近U。式(5)可以在迭代中,通过交替的更新U′和U进行优化,最后方程(5)的解是通过以下阈值方程获得:

2.3 遮挡分析与处理

2.3.1 遮挡区域分析

常见的遮挡,一般有两种:第一种如图2(a)两幅图,当第一帧中的A1运动到第二帧中的A2位置时,则图中红色区域为遮挡部分;第二种如图2(b),当处在第一帧位置时,A1没有出现,在第二帧时突然出现,则整个A2是遮挡部分。要实现对错误光流区域的正确修补,首先是检测出遮挡区域,做到有的放矢。

图2 遮挡区域示意图

通过处理非交错图像序列,可以检测由遮挡等引起的错误光流分量,这主要是存在图像中的运动目标在时域上呈现线性,并且连续图像的对应像素点的运动状态是唯一的这一理论[7],具体实现过程如下:

其中,Vf(X)=[uf,vf]t为正向帧序光流,Vb(X)=[ub,vb]t+1为反向帧序光流,ε1为判断运动的线性的阈值,ε2为判断运动唯一性的阈值。

光流的计算是通过相邻两帧图像的像素灰度值的变化率得到的。Vf正向帧序,即源帧到目标帧的像素灰度值的变化率,Vb反向帧序,即目标帧到源帧的像素灰度值的变化率。理论上,Vf和Vb大小相等,方向相反,在现实场景中,由于光照、阴影等因素,会对光流结果产生一定的影响,Vf和Vb的大小并不一定完全相等,方向上也存在少量的偏差,但影响不大。而遮挡的干扰,使得同一图像的对应像素点的灰度值在不同的帧序上存在偏差,从而对Vf和Vb的大小和方向产生较大的影响。在本文的光流计算中,光流的计算值在[0,1]的范围内进行归一化计算的,故由于遮挡的干扰,使得|Vf(X)+Vb(X)|的值大部分属于[0,1]范围内(大于1 的情况,说明两者方向相同,一定属于遮挡点)。本文选取T1∈[0.1,0.5],T2∈[0.1,0.5],T1、T2取值过大,会遗漏大量错误光流分量;取值过小,会因为光流模型特性以及旋转等因素造成对正确分量的误判。

2.3.2 遮挡区域处理

为了防止遮挡区域的错误光流扩散到其邻域范围内,提出一个单调递减函数来控制这些错误光流的扩散,降低对其邻域光流的影响。

其中,Z=|F1(Xp)+F2(Xp)|,一般情况下,K>0,它是用来控制单调递减函数的下降速率。

2.4 错误光流修补

一般情况下,遮挡区域的正确光流不能直接计算[8],为了提高光流算法在遮挡区域的鲁棒性,要对其进行正确的修补。本文首先使用邻域光流修补法[9],通过对错误光流邻域的正确光流对其进行横向修补,然后使用前后相邻帧的光流对其进行纵向修补[10]。通过使用双重光流修补法,能达到比较理想的修补效果,很大程度上提高了光流的精确度[11]。

2.4.1 使用邻域光流进行横向修补

邻域光流修补法,即利用中心点的邻域光流来替代中心点光流,从而达到修补的效果[12]。在遮挡区域光流点的3×3 邻域,进行加权组合,近似取代错误光流点,如图3 所示。

图3 邻域分布图

图3 中黑点为错误光流点,其邻域包括红点和绿点,红点为水平与垂直方向上的邻域点,权值W红=1/6,绿点为对角线方向上的邻域点,权值W绿=1/12,邻域修补公式计算如下:

2.4.2 相邻帧光流的纵向修补

选取连续6 帧图像,分别为I-00、I-0、I0、I1、I1+和I11+,令I0和I1连续图像产生的光流为当前帧光流,即U=(u,v),I-00和I-0以及I-0和I0产生的光流为前帧光流,分别记为U--、U-、I1和I1+以及I1+和I11+产生的光流为后帧光流,分别记为U+、U++[13]。一般情况下,在I0和I1两帧图像产生遮挡时,那么前帧光流或者后帧光流不会被遮挡影响,这就保证了使用前帧光流和者后帧光流进行修补,能够很好地表现遮挡区域的运动情况,从而达到理想的效果。

纵向修补的过程如下所述:假设待修补的遮挡点的坐标为(n,k),如图4 中当前帧光流的黑点,通过前帧光流和后帧光流中的坐标对应点进行修补,如图中的红色点:

图4 纵向修补图

3 实验与分析

实验数据库为Middlebury 光流数据库中的8 个图片样本,光流精确度的评判标准是光流平均角度误差AAE(Average Angle Error)和光流末点误差EPE(End Point Error)。

为了更直观地表示光流效果图,本文采取颜色映射的方式,即在光流结果图中,色调代表方向,亮度代表大小。

3.1 实验方法

为了验证本文算法的有效性,进行了三组实验。第一组,选取光照变化的连续两帧图片,使用传统的TV-L1算法,通过将ROF 去噪模型与高斯滤波、Sobel滤波以及拉普拉斯滤波三种图像预处理方法进行比较;第二组,选取连续五帧的图片序列,使用本文提出的两种遮挡修补的方法与传统的TV-L1 光流算法比较;第三组,现实场景中交通路口的图片序列,使用ROF 去噪模型和双重遮挡修补的光流算法与传统的TV-L1 算法进行比较。

图5 不用图像预处理下的TV-L1

3.2 实验结果分析

3.2.1 预处理对抗光照影响实验

LightSwitch 视频是在一个路口的场景,其中路口的右侧有一辆正在行驶的小轿车,下方路口有一辆正在行驶的小型货车,路口的前方有一间亮灯的房间,在第100帧的时候,灯光关闭,房间灯光的变化用来模拟光照变化。本实验选取视频中的第99 帧和第100 帧,即光照发生强烈变化的前后两帧,在不同的图片预处理方法情况下,对光照变化的鲁棒性情况。

从图5 可以看出,在这种光照变化条件下,图5(c)所示的未经任何图片预处理的TV-L1 光流模型几乎不能估计出光流场,只是在光照变化的源头存在一些光流场,对运动的车辆无法估计其光流场;图5(d)所示的经过Sobel 处理的TV-L1 光流模型只是在正对光照变化的区域产生了一些光流变化,同样无法估计正确的光流场;同样,图5(e)经过拉普拉斯滤波处理的TV-L1 光流模型虽然产生了大量的光流,但误差太大;只有图5(f)经过ROF 处理的TV-L1 光流模型抗噪声性能较好,对抗光照变化的鲁棒性十分突出,究其原因:ROF去噪模型将图片分解成纹理和结构两部分,并按一定的线性比例进行结合,其中,纹理部分能够几乎没有受到诸如阴影、遮挡、光强改变等光照变化的影响,而结构部分允许图像存在边缘等不连续性,能够很好地刻画运动物体的边缘。

3.2.2 遮挡修补的实验

本实验所采用的遮挡区域修补方法包括横向修补和纵向修补[14]。下面选取Middlebury 光流数据库中的Urban 图片序列来进行实验,图6 中有4 辆正在行驶的车辆,远处的卡车向左行驶,在尾部与中间向右行驶的小轿车形成遮挡,近处的小轿车与中间的小轿车的尾部同样形成了遮挡,此外,在图片的最右端有一辆向右行驶的面包车,在它的尾部区域被路边的路标杆进行了明显的遮挡。

图6 遮挡修补实验

从图6(c)中可以看出,由于中间小轿车被过多的遮挡,不能形象的产生小轿车的光流场,而且面包车的尾部,被路标杆进行遮挡的区域存在明显的缺陷,而图6(d)通过横向和纵向修补,能够很好地对这一遮挡区域进行修补,较好还原了遮挡前的光流场,提高了光流的鲁棒性。

3.2.3 现实场景实验

为了验证所提出的光流算法在现实场景中具有很好的鲁棒性,能够很好地反映现实的运动情况,选取视频Taxi 中的连续图片序列,该图片序列描述了交通路口的真实车辆行驶情况,包括了常见的多目标运动、遮挡、噪声、光照变化等复杂运动情况。图7中主要存在3辆正在行驶的车辆,路口中间的白色小轿车正在路口向右拐,图片左侧向右行驶的黑色车辆,以及图片右侧向左行驶的车辆,其中,向左行驶的车辆被路边的数进行了遮挡。

图7 各种光流算法比较

从图7(c)和图7(d)可以看出,经典的HS 算法和LK 算法能够比较好地估计3 辆运行车辆中的两辆的光流场,而被路边树枝遮挡的车辆则几乎无法估计光流场,并且噪声对其影响非常大。图7(e)是TV-L1 光流算法估计的光流场,显然,这比前两种光流算法的效果提升比较显著,但中间路口的运行车辆的光流场的轮廓不是十分的清晰,并且图片右侧被遮挡的车辆的光流场轮廓存在缺陷,没有正确的估计出光流场。图7(f)是提出的算法在遮挡区域经过单调递减函数进行处理,很好地抑制了错误光流的扩散,并在遮挡区域进行了基于邻域光流的横向修补和基于纵向光流的纵向修补,不仅能够比较正确的估计出运动车辆的光流场,而且光流场的轮廓较TV-L1 光流算法有了比较好的改进;此外在被树枝遮挡的右侧车辆的光流场,在上述4 种光流场的效果是最好的,两种修补方法的效果得到了体现[15]。

4 结束语

本文在提高光流算法精确度的条件需求下,对光流相关算法进行了理论分析和实验研究,针对遮挡对光流估计造成的影响,提出了基于横向的邻域光流修补和基于纵向的相邻帧光流修补,在一定程度上克服了遮挡对光流估计的影响,提高了光流的计算精度。但本文算法在计算效率上有待进一步提高,这是下一步亟须解决的问题。

[1] Brox T,Bruhn A,Papenberg N,et al.High accuracy optical flow estimation based on a theory for warping[C]//Proceedings of the 8th European Conference on Computer Vision,2004:25-36.

[2] Papenberg N,Bruhn A,Brox T,et al.Highly accurate optical flow computation with theoretically justified warping[J].International Journal of Computer Vision,2006,67(2):141-158.

[3] Xiao J,Cheng H,Sawhney H,et al.Bilateral filtering-based optical flow estimation with occlusion detection[C]//Proceedings of the European Conference on Computer Vision,2006,3951:211-224.

[4] Ince S,Konrad J.Occlusion-aware optical flow estimation[J].IEEE Transactions on Image Processing,2008,17(8):1443-1451.

[5] Liu C.Beyond pixels:Exploring new representations and applications for motion analysis[D].Cambridge:Massachusettc Institute of Technology,2009.

[6] Wedel A,Pock T,Zach C,et al.An improved algorithm for TV-L1 optical flow[J].Statistical and Geometrical Approaches to Visual Motion Analysis,2009,12(1):23-45.

[7] hoi Y J,Lim K W,Ra J B.Improvement on optical flow based video deinterlacing by adopting flow vector and intensity reliabilities[C]//Proceedings of Interrnational Conference on Image Processing,2009:741-744.

[8] 路子赟,唐土生.带有局部控制因子的图割光流估计[J].中国图象图形学报,2012,17(7):36-40.

[9] 涂志刚,谢伟,熊淑芬,等.一种高精度的TV-L^1光流算法[J].武汉大学学报:信息科学版,2012,37(4):496-499.

[10] Shen X H,Wu Y.Exploiting sparsity in dense optical flow[C]//Proceedings of 17th IEEE International Conference on Image Processing,2010:741-744.

[11] Jodoin P M,Mignotte M.Optical-flow based on an edgeavoidance procedure[J].Computer Vision and Image Understanding,2009,113(4):511-531.

[12] Gilboa G,Osher S.Nonlocal operators with applications to image processing[J].Multiscale Model Simul,2008,7(3):1005-1028.

[13] Antonin C,Thomas P.A first-order primal-dual algorithm for convex problems with applications to imaging[J].Journal of Mathematical Imaging and Vision,2011,40(1):120-145.

[14] Zach C,Pock T,Bischof H.A duality based approach for realtime TV-L1 optical flow[C]//Proceedings of DAGM,2007.

[15] Zimmer H,Bruhn A,Weickert J.Optic flow in harmony[J].International Journal of Computer Vision,2011,93(3):368-388.

猜你喜欢
光流邻域流场
利用掩膜和单应矩阵提高LK光流追踪效果
大型空冷汽轮发电机转子三维流场计算
稀疏图平方图的染色数上界
基于物理学的改善粒子图像测速稳健光流方法研究
基于邻域竞赛的多目标优化算法
转杯纺排杂区流场与排杂性能
基于HYCOM的斯里兰卡南部海域温、盐、流场统计分析
关于-型邻域空间
基于瞬态流场计算的滑动轴承静平衡位置求解
融合光流速度场与背景差分的自适应背景更新方法