光流算法

2024-05-16

光流算法(共4篇)

光流算法 篇1

摘要:运动目标检测是计算机视觉中重要的课题,运动目标的正确检测与正确分割影响着后续目标的跟踪与识别;光流法是运动目标检测和分析的重要方法,它能够在不知道任何预先场景情况下检测出独立的运动目标,并且可适用于动态场景的情况。首先介绍了光流的基本概念,然后介绍了常用的光流的四种算法;接着以智能交通中路口车辆视频为例,将这四种光流算法用于车辆检测,然后对四种光流算法的优缺点进行分析;最后对光流法在未来可能研究及改进的方向提出展望。

关键词:光流算法,车辆检测,智能交通,计算机视觉

0 引 言

基于视频的运动目标检测的目的就是要在序列图像中将运动目标从场景中提取出来。但是由于光照的影响、风吹、树叶摆动、运动目标阴影、摄像机抖动以及运动目标的遮挡现象给运动目标的正确检测造成了极大的困难。运动目标能否正确检测和分割影响着后续运动目标能否正确跟踪与识别,因此运动目标检测成了计算机视觉中的一项重要课题。传统的运动目标检测方法有光流算法[1,2],帧间差分法[3],背景建模法[4]和运动能量法[5]。背景建模法通过建立背景模型,然后将当前帧中每个像素点与背景模型进行比较来确定背景图像。但是背景往往会随着时间的推移发生变化,需要时刻更新背景图像,需要背景图像自适应的更新。帧间差分法可以适应环境的动态变化,可以实现运动目标的实时检测,但检测出的目标存在空洞严重且不连续。

光流场是指图像灰度模式的表面运动[6],光流是三维运动场在二维图像平面上的投影;研究光流算法是利用图像序列中灰度的时域、空域变化和相关性来确定图像像素的运动矢量,也就是研究图像灰度在时间上变化的大小和方向。研究光流算法的目的就是从图像中得到运动目标的运动矢量。因为光流的计算不需要预先知道场景的信息,不需要在图像中建立起特征之间的对应关系,所以光流计算属于高层次的视觉表述。目前,光流法被广泛地应用于目标检测、跟踪、识别、物体弱运动,步态分析、消除波动性干扰、3D结构恢复以及运动估计等图像处理与模式识别领域,也广泛地应用在智能交通、医疗、导航与制导、海洋、军事和天文等领域。

1 研究现状

光流由Gibson于1950年首先提出,在光流的基本约束方程提出之后得到广泛发展。80年代初期,Horn和Schunck提出建立在光流平滑性假设基础上的使全局能量达到最小化原则的全局光流算法[7],可以得到百分之百的稠密光流场。之后Lucas和Kanade提出了使用局部领域最小二乘法来计算光流的局部光流算法,之后就掀起了光流研究的热潮,提出了很多种方法。根据数学方法和相应理论基础可以将光流算法分为基于梯度的方法、基于区域的方法、基于能量的方法、基于相位的方法和神经动力学法。然而在计算光流的时候,大位移和孔径问题是光流计算的难点,因为从图像灰度的变化不能确定像素的真实运动矢量[8]。

1.1 基于梯度的方法

基于梯度的方法又称为微分法,利用时空梯度函数,使得全局能量泛函达到最小化来计算像素的速度矢量。由于微分法具有强大的数学理论支持,所以得到了广泛研究和应用。常用的代表有Lucas-Kanade局部平滑法[9]、Horn-Schunck全局平滑法[7]、以及Nagel的有向平滑法[10]。Horn-Schunck光流法是在光流基本约束方程的基础上附加了全局平滑假设,使得泛函能量函数达到最小化。Lucas和Kanade使用局部平滑假设,假设一个窗口内的所有像素具有相同的运动矢量。Nagel采用有向平滑约束假设,使用加权Hessian矩阵对梯度进行不同方向上的平滑处理。Black和Anandan提出分段平滑的方法来对多目标进行估计[11]。

微分法假设光流是连续的,再附加一定的约束条件,将光流的计算问题转化成最小化泛函能量的数学极值问题。成熟的数学优化理论为求解光流矢量创造了条件。

1.2 块匹配法

匹配法,也叫区域匹配法,研究的是区域匹配问题,块匹配法认为上一帧中某个区域,在下一帧中会形成对应的模式,块匹配光流定义为相邻两帧中,相应区域块之间产生最佳拟合的位移。假设连续两帧图像f1和f2,对于图像f1中的每个像素点(x,y),以此像素为中心建立一个大小为16×16的相关窗Wc,一般来说16×16大小的块已经可以满足要求了,再围绕图像中对应点(x,y),建立一个图像搜索窗Ws,搜索窗口不能太小也不能太大,可根据最大可能位移的先验知识来确定。相似性度量一般常用像素差平方和(SSD)、平均绝对误差(MAD)以及均方差误差函数(MSE)来进行。可进行各种快速搜索算法如三步搜索法来进行搜索,使得误差函数达最小值的位移就是光流矢量。

1.3 基于能量法的方法

在频率域中设像素点X=(x,y)的速度为V,V=(u,v)T,根据式(1):

进行傅里叶变换,结果如下:

式中δ(⋅)为狄里克利函数。

使用基于能量的方法来计算光流是利用调谐滤波器的输出能量达到最大来计算光流,调谐滤波器是在频域中进行设计的,因而基于能量的方法也叫做基于频率的方法。Heeger等人建立了一个在式(1)和式(2)的基础上,进行局部光流计算的模型[12],成为基于能量法的代表。Heeger在频率空间平面和时空能量上采用最小二乘法拟合来估计光流,使用Gabor滤波器来提取局部能量,Gabor滤波器有多个尺度参数,多个方向,它们是对不同频率和方向的调谐。对于一个简单的平移运动,Gabor滤波器的响应都集中在一个平面上。使式(3)最小化,即可求得光流:

1.4 相位法

相位信息用以计算光流由Fleet和Jepson首次提出[13]。在计算光流的时候图像上的相位信息往往比亮度信息更加可靠。所以利用相位信息获得的光流场更加具有鲁棒性。

将二维图像变换到频率域中,变换如下:

式中n=(sinα,-cosα),α是图像的属性角。

通过带通滤波器,图像的相位为:

式中:ρ为滤波器输出的幅值;为相角。

最后,光流为:

式中:s代表速率;n代表法向单位矢量;为相位梯度。

2 光流的几种计算方法

2.1 HS全局光流算法

Horn-Schunck在光流基本约束方程的基础上,结合光流全局平滑条件,既在相邻像素间光流不会突变,从而解决了孔径问题。其假设光流场同时满足基本方程和全局平滑条件。

全局平滑条件可以用光流矢量梯度平方来表示:

式中:u,v分别是x,y方向上的光流。

这个值越小表示相邻像素间变化越小,光流场越平滑。设ec2为全局平滑表达式为:

光流基本约束方程就是要使得相邻两帧间像素偏差达到最小,设eb2为光流基本约束条件,表达式为:

要求得光流矢量就是要使得ec2和eb2都到达最小,就是要使得式(10)的泛函能量达到最小值。

求解式(10)使得Ehs达到最小值的方法是解欧拉方程,使得Ehs关于u,v的导数为零。采用递归算法最后得到光流值为:

当n=0时就是光流的初始值,这个值影响着光流的收敛速度,当相邻两次迭代后光流值之差小于一个很小的数时,迭代结束,调节λ可以调节平滑约束量的比重。

2.2 LK局部平滑光流算法

局部平滑约束由Lucas和Kanade首次提出,假设图像局部平滑,即假设在一个较小的空间领域Ω上运动矢量保持衡定,通过联立窗口内所有像素,使用最小二乘法估计光流,能得到稀疏光流场,具有较强的鲁棒性。

在一个较小的空间领域Ω上,引入权系数后光流估计误差定义为:

式中:W(x)表示窗口权重函数,窗口中心部分对光流约束的贡献大,权重要高。

通过最小二乘法来求解式(13)可以得到:

但是当ATW2A不可逆的时候,光流场无解。

2.3 BM块匹配光流算法

块匹配光流算法是将视频划分为确定大小的图像子块,每个图像子块中所有像素假设具有相同的位移,也就是说具有相同的光流场,每个图像块只做平移运动,这样只要每个图像子块只要计算一个光流矢量就可以得到整个图像块中的所有像素的运动矢量。当块比较小时,假设图像子块中具有相同的位移是成立的。

2.4 PryLK金字塔光流算法

传统的光流算法只有在小位移的条件下才满足灰度连续性假设,而在大位移下图像灰度将不连续,造成光流估计失败。

为了计算运动目标快速移动情况下的光流,引入了在LK局部平滑光流算法的基础上进行金字塔分层迭代来计算光流场。将图像进行金字塔分层,在金字塔的最上层图像的分辨率最低,这样由最上层开始计算光流值,计算的结果加上上一层的初始值作为下一层的光流初值,再对下一层计算光流场,在除最高层外的其他层进行光流迭代,迭代到最后一层就形成光流矢量。

3 四种光流算法性能分析

通过上述四种光流算法的原理,以路口车辆视频为例,用上述四种光流算法分别进行实验,设计了一个演示界面。实验平台为:VC 6.0,Opencv 1.0,Windows XP,Intel Pentium Dual Cor-e,1.86 GHz(2CPU),1G RAM,测试图像为640×480。实验结果如图1所示。

由图1可知,LK光流算法的计算时间为15 ms,HS光流算法的计算时间为62 ms,PryLK金字塔光流算法的计算时间为15 ms,BM块匹配光流算法的计算时间为16 ms,其中箭头代表光流矢量的方向,横线长度代表光流的大小,通过各种光流算法的计算时间分析可知,HS光流算法消耗的时间最多,PryLK光流算法消耗时间最少,因为HS光流算法是对图像中的每一个像素计算光流场,而PryLK光流算法是对特征点计算金字塔光流场。

各种算法满足实时性要求只是最基本的要求,关键是比较车辆检测的效果,通过观察图1可以得到如下结论:BM块匹配、HS光流算法都有较大的干扰,因为HS光流算法是全局光流算法,对噪声比较敏感,但却能得到稠密的光流场。LK和PryLK光流算法对噪声具有一定的鲁棒性,但只能得到稀疏的光流场,在实验中通过光流场的计算可以得到运动矢量,包括运动速度和运动方向,所以说根据光流算法来进行车辆检测可以得到车辆的速度与方向,这是其他车辆检测技术不可比拟的。利用光流的方向可以在路口进行逆行检测,利用光流速度可以对车辆超速违章进行检测。

4 光流技术的研究方向

光流算法可以得到运动点的速度和方向,通过光流场的分析可以得知光流技术的研究方向有如下几点:

(1)通过光流算法得到全局光流场,对光流场进行聚类分析,检测运动物体。

(2)可以通过分析光流场,解决由于相机抖动,或则树叶的摆动等引起的波动式干扰,因为这些波动式干扰造成光流矢量呈现周期性变化的趋势。

(3)通过光流预测进行运动目标的跟踪。

(4)光流法可以得到亚像素级的运动矢量,可以用光流技术进行步态分析。

(5)由于光流法是计算物体间的相对运动,所以可以用光流技术来实现动态背景下的目标检测与跟踪。

在复杂环境下,比如道路十字路口,因环境较复杂,环境干扰较大,再加上光流技术对光线、环境比较敏感,所以必须对光流技术进行改进。从近年来光流研究中可以看出,在设计光照与滤波的基础上无法完全解决光照问题,近年来很多人将光流技术与帧差法、背景建模、图像直方图结合起来对车辆进行检测。可以看出,光流技术融合其他车辆检测技术将会是光流技术的发展方向。而解决光流算法对光照敏感,提高光流计算准确性,降低光流算法的计算时间将成为光流技术的关键问题。

基于光流场的视频对象分割算法 篇2

随着多媒体信息处理技术的研究发展和数字视频技术的发展, 视频对象分割技术研究的价值和意义显得更加重要, 广阔的应用前景使其一直是国内外多媒体应用领域的研究热点。在视频对象分割处理中计算量非常大, 其算法的实用价值取决于视频对象分割的实时性。细胞神经网络 (Cellular Neural Network, CNN) , 一种大型非线性模拟电路, 其局部联接的结构形式和可达兆兆级的整体运算速度, 具备高速并行处理数据的能力, 可以应用于图像和视频处理领域[1]并满足实时性的要求。

细胞神经网络光流场算法是根据Horn-Schunch光流法[2]的正则化原理提出来的。此光流场算法的CNN输出量值域的有限性和对浮点数运算量化精度不够, 导致所得的光流场精确度会略差一些, 但CNN硬件芯片的优势让其计算速度远大于其他任何光流场算法, 非常适用于对实时性和运算速度要求较高的应用。

1 光流场

光流 (Optical Flow) 表示的是图像中象素运动的瞬时速度, 包含了目标的运动信息[3], 而光流场 (Optical Flow Field) 则是图像中象素运动二维瞬时速度场, 除了运动信息, 还包含了结构信息。视频序列中的运动场可以通过光流场大概计算出来[4], 所以通常认为光流场和运动场基本一致。

2 光流场视频分割法

基于光流场的视频分割算法, 先计算出光流场, 再根据光流场中包含的运动信息对视频中的运动目标进行分割。视频中的运动目标是以背景为参考系的, 计算运动目标的光流场受背景运动情况的影响, 因此视频序列中的背景运动与否直接影响运动目标的分割。背景静止时, 计算出来的光流场集中在运动区域, 光流场的分布用来确定运动目标的相对位置;背景相对运动时, 运动目标和背景都在运动, 图像上每个象素的光流场都不为零, 对于运动目标, 背景的光流场就是噪声。所以在背景相对运动的视频序列中分割运动目标相对复杂, 需要抑制和滤除背景运动信息的干扰, 消除背景的光流场, 只保留分割目标的光流场, 同时增强分割目标的相关信息, 从而将分割目标分割出来。因此, 需要选择合适的滤波器来消除视频序列背景的光流场。

视频序列中的分割目标相对于背景具有运动的连贯性, 其光流场都是完整且独立的连通集, 并且在时空上光流场内部也具有运动的连贯性, 分割目标与背景的光流场在模的数值上存在着差异[5]。因此, 可选取光流的模作为阈值消除背景的光流场。

3 基于细胞神经网络和光流场的视频对象分割算法

本算法是对文献[6]中的光流场视频分割算法的一种改进, 是针对背景相对运动的视频序列中运动对象的分割, 采用CNN光流场算法对光流场进行估算[6]。首先利用CNN边缘叠加模板对视频序列图像进行加强处理, 再对运动目标做运动场估算, 最后根据得到运动的运动场来实现视频对象的分割。本算法在保证分割结果的精确度的同时, 减少了模板的使用, 更加简洁, 处理速度更快。

在算法中, 实验所需的三帧图像分别取视频序列中第m-j帧, 第m帧和第m+j帧, 若视频中运动目标变化不大, 需要增大三幅图像相隔的帧数j。实验目的就是对当前帧中的运动对象进行分割。算法具体步骤如下:

1) 对提取的三幅图像分别利用边缘检测来提取边缘, 再将边缘通过边缘叠加运算分别叠加到原图像上。

2) 利用CNN光流场算法来获得前两帧图像的光流场和后两帧图像的光流场。

3) 利用步骤2的结果计算光流模的均值, 作为消除运动背景的光流场的阈值。

4) 将经过阈值滤波后的光流场点对点的映射为二值图象, 即以光流是否为0作为判断依据。

5) 对步骤4的结果进行空洞填充和膨胀运算等数学形态学操作, 将运动区域完整化。

6) 将二值图象进行逻辑合并与运算, 获得在当前帧中运动目标的位置, 最后利用CNN目标分割模板将运动目标分割出来。

本算法中利用CNN阈值模板来消除视频序列中背景的光流场, 且完成点对点的二值化。CNN阈值模板的输入为各点光流的模, 输出是消除背景光流场后的二值图像。若输出结果为-1, 此象素点进行滤波操作后光流的模是0;若输出结果为1, 则代表此象素点进行滤波操作后光流的模是不变的。

其中, 细胞神经网络阈值模板的I=, 的值是各象素点光流的模的均值, 即光流场阈值, 定义为:

式中x=1, 2, 3, …, M及y=1, 2, 3, …, N, M和N用来表示图像的长和宽。式中及, 和用来表示图像的长和宽。

4 实验与结果分析

本算法通过Matlab仿真工具和CNNVisual Mouse Platform细胞神经网络仿真系统进行仿真实验来验证其正确性和性能。实验中用到视频序列背景是相对运动的, 运动对象和背景在不同视频序列的帧间都存在着微小的变动, 实验目的是从背景相对运动的视频序列中将运动目标分割出来。

分别取视频序列的第110帧、第115帧和120帧作为前一帧、当前帧和后一帧来进行实验。三帧视频序列图像的灰度图像如图1所示。

1) 边缘检测。

利用CNN边缘检测模板分别对第110帧与第115帧、第120帧进行边缘检测操作。结果如图2所示。

2) 边缘叠加。

利用CNN边缘叠加模板在原灰度图像中叠加了步骤1) 得到的边缘, 增强了原灰度图像中运动目标的完整性。结果如图3所示。

3) 光流场估算。

对上步的结果进行光流估算, 由于图像背景是相对运动的, 光流场分布于整个图像区域。结果如下页图4所示。

4) 消除背景光流场和二值化。

通过CNN阈值模板消除视频序列图像中相对运动背景的光流场, 只保留运动目标的光流场, 并以CNN阈值模板输出的值以点对点的方式, 将该光流场映射为二值图象。结果如下页图5所示。

5) 空洞填充。

由于运动目标区域中有的部分缺乏灰度梯度, 使光流场无法正确反映运动场, 运动目标区域不完整, 可以采用内部区域填充来弥补光流场和真实运动场之间的偏差。结果如图6。

6) 数学形态学处理。

数学形态学等图像处理的方法可以进一步完善运动区域。第一步进行两次CNN膨胀模板运算使运动区域扩张, 连通运动区域间断的边缘;第二步利用CNN空洞填充模板对运动区域再次进行空洞填充;第三步再使用两次CNN腐蚀模板, 对因膨胀而扩张的运动区域进行两次收缩, 尽量使运动区域范围精确。结果如图7所示。

7) 逻辑与运算与目标分割。

将上步的结果通过CNN逻辑与操作模板运算获得第115帧中运动目标的位置, 再使用CNN目标分割模板将第115帧中的运动目标分割出来, 实验结束。结果如图8所示。

从仿真实验的结果来看, 本算法可以从背景相对运动的视频序列中分割出运动目标, 处理速度快且精度高, 所得的运动目标在语义层次上也较完整。但目前针对视频对象分割不存在一种适合于所有情况的通用算法, 这将是将来视频对象分割算法的研究方向。

摘要:提出了一种改进的基于光流场的视频对象分割算法, 先用细胞神经网络边缘叠加模板将边缘检测操作所得到的边缘与原灰度图像进行叠加, 完成对原灰度图像的增强处理, 再对运动目标做运动场估算, 最后根据其运动特征实现视频对象的分割。本算法在保证分割结果的精确度的同时, 减少了模板的使用, 更加简洁, 处理速度更快。

关键词:视频对象分割,光流场,细胞神经网络

参考文献

[1]姜庆玲, 刘万军, 张闯.基于CNN的分块自适应彩色图像边缘检测的研究[J].计算机应用研究, 2009, 26 (3) :1 132-1 135.

[2]龚卫国, 桂祖宏, 李正浩, 等.融合Adaboost和光流场算法的视频人脸实时监测[J].仪器仪表学报, 2008, 29 (7) :1 399-1 402.

[3]陶陵.基于光流技术的图像信息获取[D].武汉:华中科技大学, 2005.

[4]卢宗庆.运动图像分析中的光流计算方法研究[D].西安:西安电子科技大学, 2007.

[5]郑南宁.计算机视觉与模式识别[M].北京:国防工业出版社, 1998.

光流算法 篇3

随着运动分析方法和处理能力的进展,人们对于运动处理研究的兴趣在不断增长。运动目标分割是将视频中感兴趣的变化区域从背景中提取出来,这样后期处理过程中仅需考虑图像中对应于运动区域的像素,提高效率。所以运动区域目标准确有效分割对于目标跟踪、分类以及行为理解等十分重要。

从实际应用角度出发,存在两种运动目标分割情况,一种是摄像机通常处在一个一个静止位置,记录所检测的任何运动通常用于安全目的,将运动目标从静止背景中分割出来;另一种情况是摄像机运动,运动目标和背景同时运动,这种情况和第一种情况相比分割难度更大。在日常生活中,交通监控和安全监控等多使用固定摄像机,本文处理的图像序列来自于摄像机固定所拍摄的车辆视频,产生的是背景静止的运动图像序列。而对于摄像机运动的情况产生的是背景变化的运动图像序列,其运动目标在图像上的变化和背景本身的变化混淆在一起,这种情况处理起来很复杂,需要考虑进行摄像机的运动补偿等,计算过于复杂,本文暂时不予考虑。常用的运动目标检测算法有三种:光流场法、帧间差法、差分图像运动分析法。本文采用光流场方法来进行运动检测。由于光流法计算产生的运动边界模糊问题,本文将结合静态图分割的Grabcut算法,利用光流场估计来替代人工交互工程,最终实现运动目标清晰分割。

1 基于HS算法的运动目标分割

当相机与景物目标间有相对运动时所观察到的亮度模式运动称为光流,或者说物体带光学特征部位的移动投影到视网膜平面(即图像平面)上就形成光流。光流反映了在时间间隔dt内由于运动所造成的图像变化,光流场是通过二维图像来表示物体点的三维运动的速度场。光流包含三个要素:光流形成的必要条件——运动(速度场);能携带信息的带光学特性的部位(例如有灰度的像素点);能被观察到的成像投影(从景物到图像平面)。

光流是一种抽象,是计算方法努力追求的典型,它应该指的是在进一步处理中所需要的那些在图像中与运动相关的亮度变化,而在光流中所反映的所有其他的图像变化都应该被认为是光流检测错误。光流与运动场虽然有密切关系但又不完全对应,固定的球体被移动光源所照射,能检测出非零光流,一个恒定光源照耀下旋转的光滑球体却检测不到光流。不过在绝大多数真实运动场景下,光流与运动场是对应的,所以在许多情况下可根据光流与运动场的对应关系由图像变化来估计相对运动。光流计算为随后高层处理所必须的先决条件,在摄像机固定的情况下,它为确定运动参数、图像中物体的相对距离等提供了工具[1]。

光流计算基于如下两个假设:1)任何物体点所观察到的亮度随时间是恒定不变的;2)图像平面内的临近点以类似的方式进行移动,即速度平滑性约束。

设在时刻t时某一图像点在(x,y)处,在时刻t+dt时该图像点移动到(x+dx,y+dy)处。如果时间间隔dt很小,则假设两点图像灰度保持不变,得:

将上式右边用泰勒级数展开,可以得到:

其中u和v分别为图像点在X和Y方向上的移动速度。上式表明:在时刻t和t+dt上的图像相同位置上的灰度微分是空间灰度微分与这个位置上相对于观察者的速度的乘积。在实际中,时间上的灰度微分即灰度时间变化率可用沿时间方向的一阶差分平均值来估计:

ft≈1/4[f(x,y,t+1)+f(x+1,y,t+1)+f(x,y+1,t+1)+ f(x+1,y+1,t+1)]

-1/4[f(x,y,t)+f(x+1,y,t)+f(x,y+1,t)+f(x+1,y+1,t)]

灰度空间变化率可分别用沿X和Y方向的一阶差分平均值来估计:

fx≈1/4[f(x+1,y,t)+f(x+1,y+1,t)+f(x+1,y,t+1)+ f(x+1,y+1,t+1)]

-1/4[f(x,y,t)+f(x,y+1,t)+f(x,y,t)+1)+f(x,y+1,t+1)]

fy≈1/4[f(x,y+1,t)+f(x+1,y+1,t)+f(x,y+1,t+1)+ f(x+1,y+1,t+1)]

-1/4[f(x,y,t)+f(x+1,y+t)+f(x,y,t+1)+f(x+1,y,t+1)]

本文处理的是摄像头固定的视频,背景静止,仅目标运动,所以采用基于亮度梯度的稠密光流计算法来计算局部运动矢量场,即Horn-Schunk算法,通过迭代的方法逐渐逼近相邻帧之间各个像素的运动矢量。HS算法是基于光流方程的,由光流方程可知,每一个像素点有两个未知量(u,v),需要加入额外约束条件来将其转化为一个可以求解的问题。HS算法利用了全局平滑性约束,引入光流误差和速度场梯度误差,将光流方程求解问题转化为最优化问题。定义光流误差eof为运动矢量场中不符合光流方程的部分,即

求取运动矢量场就是要使eof在整个帧内的平方和达到最小。另外定义速度场梯度误差es2为:

速度场误差es2描述了光流场的平滑性,es2越小,说明光流场越趋于平滑。HS算法同时考虑两种约束,使得两种误差在整个帧内的加权和为最小的光流场(u,v),即

A代表图像区域,α是光流误差和平滑误差的相对权重,用来加强或减弱平滑性约束。

由于Horn-Schunck算法利用了全局平滑性约束,因为位于运动物体边界处的运动矢量会被平滑成渐变的过渡,从而使运动边界发生模糊[2]。

为了克服Horn-Schunck算法导致的边界发生模糊,HS光流法的计算结果仅作为运动目标检测的粗检结果,后续运动目标精确提取将结合Grabcut算法,提取分割出清晰运动目标。

2 Grabcut算法

Grabcut图像分割算法能有效地从复杂背景中提取前景目标,其交互操作量极少,分割准确度与算法执行效率均较高。该算法通过用户指定初始背景和前景样本,然后搜索图像中的点,计算它到指定前景和背景的距离及它们之间像素的距离,把距离的线性组合当作图中边的分割能量权值,求图中分割边的能量最小值,得到一个基本的“硬分割”,采用Border Matting的方法在硬分割基础上执行边界优化,获得理想的分割效果[3]。

Grab Cut的硬分割算法是基于高斯混和模型(GMM),用估计和参数学习过程中可进化的迭代算法代替一次最小估计来完成能量最小化。

每一个GMM(前景或背景)都可以看作是一个K维的协方差(通常K=5)。为了GMM模型计算方便,在优化过程中引入向量k=(k1,…,kn,…,kN)作为每个像素的独立GMM(前景或背景)参数,且kn {1,2,…,K},相应像素点上的不透明度αn=0或1。

Gibbs能量函数改写为:

E(α,k,θ,z)=U(α,k,θ,z)+V((α,z)

式中:α为不透明度,α∈[0,1],0为背景,1为前景目标;θ是图像前景与背景的灰度直方图,θ{h(z,α),α=0,1},z是图像灰度值数组,z=(z1,…, zn,…,zN)。能量函数主要受GMM变量k影响。数据项可定义为

8)执行边界优化。

如果不满意分割结果,用户可以更新三元图T,再指定一些像素为αn=0(背景)或αn=1(前景),执行步骤6)。执行整个迭代最小化算法直到结果满意。

3 基于光流场粗检结果的Grabcut运动目标精确分割

由于Horn-Schunck算法利用了全局平滑性约束,因为位于运动物体边界处的运动矢量会被平滑成渐变的过渡,从而使运动边界发生模糊。为了克服Horn-Schunck算法导致的边界发生模糊,当图像序列完成光流计算后,将光流值不为零的区域像素区域提取出来,并适当扩大该区域,将该区域标定为目标前景,执行Grabcut算法能量最小化。用光流估计过程来代替人工交互过程。

仿真分割方法具体执行如下:

(1)取图像序列中相邻两帧图像,用HS算法估算光流值。

(2)设图像中像素点(i,j)光流矢量大小为图像像素点中的光流最大值、最小值分别为wmax、wmin。为了将光流场进行二值化处理,先将其归一化处理。

wi,j是光流值归一化的结果,对应的每个值都在0到1范围内(包括0和1)。

(3)为了保留图像中运动目标的有用信息,用中值和高斯滤波处理归一化后的光流图像,降噪,去除少量孤立像素点。

(4)对图像进行二值化操作,设定一个阈值,将大于或等于此阈值的像素集合判定为目标,将小于此阈值的像素集合判定为背景,得到一个二值图像,其中白色区域即为运动目标区域,黑色区域即为背景或静止不动的物体[4]。

(5)由于噪声等因素,二值图像中运动目标内部有细小空洞,为了去除二值图像中的这些噪声,先进行膨胀平滑处理后,使得目标的不同部分区域尽量地连通,然后再进行腐蚀运算,解决光流场得到的粗略运动目标区域的空洞问题,获取较完整的闭合运动区域。

(8)采用Grabcut中Border Matting的执行边界优化。

4 实验结果与分析

截取网上电视剧中一段视频,用来验证算法在复杂背景下的多目标运动目标提取分割效果。图像序列中,运动目标车辆与背景山颜色相近,并且在行进中与周围草地玉米秆有遮挡现象。对图像序列运用HS光流法进行目标检测提取结果如下:

(a)是X方向光流;(b)是Y方向光流;(c)是参考帧;(d)是光流场;(e)是HS算法运动目标检测结果。由结果可以看出,基于HS算法检测出的运动目标轮廓不完整,边缘不清晰,运动目标内部也不完整。还带有一定背景干扰。

根据本文的方法,将HS算法结果仅作为检测粗检,将计算结果进行数学形态学膨胀腐蚀解决运动目标域空洞问题,然后根据实验结果将获得封闭运动区域扩大5%后,在第二帧参考图像对应区域标定为前景,执行Grabcut硬分割。结果如图所示。

检测分割结果表明,将HS光流法计算出的结果作为粗检结果,经过阈值膨胀腐蚀等计算后,作为前景标定来执行Grabcut,替代Grabcut的人工交互画矩形框的过程,分割出的结果有效保留运动目标轮廓和内部等信息。

光流算法 篇4

传统的光流场计算基于单色灰度图像序列进行处理[1], 处理光流基本方程中不适定的核心问题。自1981年Horn和Schunck首次提出用全局平滑约束来求解光流场[2]以来, 产生了各种各样解决光流不适定问题的约束方法, 这种不适定方法常被称为“孔径问题”。为了解决“孔径问题”, 研究者提出了很多种方法。在各种基于灰度的光流算法中, Horn-Schunck与Lucas-Kanade仍是目前应用比较广泛, 可靠性较高的方法。Nagel使用二阶导数来估计光流, 对于遮挡问题, 他采用定向平滑约束来处理图像遮挡处的速度场。

近年来出现了彩色图像序列的光流场计算技术, 它是光流场计算从灰度图像到彩色图像的推广。相对于灰度图像彩色图像能提供更丰富的光学信息, 可有效地克服灰度图像序列光流场计算中的孔径问题, 为光流场估计[3]计算开拓了新的思路。Golland提出了一种新的基于色彩不变性的计算方法[4], 并将其与基于RGB颜色模型的方法进行对比。RGB颜色模型是工业模型, 不符合人的视觉特性, 因此引入HSI颜色空间, 利用色彩不变性假设进行光流估计, 结合本文提出的小波变换思想将彩色图像序列的光流场计算与灰度图像序列的光流场计算相结合, 可有效克服彩色图像序列光流场计算中的问题, 并且对局部异常运动矢量数据进行剔除, 从而得到较高精度及较高光流密度的特征数据。实验证明, 该方法对运动物体的检测取得很好的效果。

1基于灰度光流场估计算法

光流场是一种描述图像运动的速度场, 其概念最早由心理学家Gibson于1950年提出。从图像场景中景物的运动会导致运动期间获得的图像中景物所处不同的相对位置可知, 这种位置上的差别称为视差, 它是景物运动反映在图像上的位移矢量 (包括大小和方向) 。如果用视差除以时差, 就可得到速度矢量。一帧图像中的所有速度矢量构成一个矢量场, 也即光流场。

设在时刻t某一个特定的图像点在 (x, y) 处的亮度为f (x, y, t) , 时刻t+dt的图像点移动到 (x+dx, y+dy) 处相应像素点的亮度的f (x+dx, y+dy, t+dt) 。如果时间间隔dt很小, 则可以期望两点图像灰度保持不变, 换句话说, 有:f (x, y, t) =f (x+dt, y+dt, t+dt) (1) 将上式利用泰勒级数展开并略去二次以上的高次项, 可得:-ft=fxdydt+fydydtft=fxu+fyv=0 (2) 式中:uv分别为图像点在x方向和y方向的移动速度。可得基本光流方程为:fxu+fyv+ft=0 (3) 光流方程表明, 运动图像中某一点灰度图像的时间变化率是灰度空间变化率与该点空间运动速度的乘积。

式 (3) 所示的梯度约束方程含有u, v 两个未知变量, 由用1个方程不能求解2个未知变量可知, 光流的求解[4]是一个病态问题。求解光流的2个分量, 必须进行归则化。

2彩色视频图像光流估计算法

与灰度图像光流求解的亮度恒常假设类似, 彩色图像光流[5]利用丰富的色彩信系可以找到一个附加约束来解决灰度图像中难以解决的问题。由于RGB颜色模型中3个颜色分量的高相关性, 如果图像的亮度发生变化, 则R, G, B三个分量也都会发生变化, 这可能会在光流计算中造成意想不到的误差, 因此本文采用HSI色模型。HSI模型是一种主观彩色模型, 它不采用将某种特定的颜色分解为RGB三原色的方法, 而是描述颜色的3种属性分量。此处, 利用HSI颜色模型的H分量和S分量求取光流场, 与传统基于灰度图像的方法相结合, 提高光流求取的精度与密度。

2.1 彩色图像的光流计算

1990年Ohta首先对彩色时变图像的光流计算问题进行了研究, 提出一种基于色彩灰度不变的计算模型, 这个模型使用RGB三元色模型来解析彩色图像, 把每一点的灰度值看作是3种基色的加权和, 并在计算中将其分解, 再将3个彩色分量分别代入基本等式, 得到计算光流的梯度约束方程组[6], 为:

{Rxu+Ryv+Rt=0Gxu+Gyv+Gt=0Bxu+Byv+Bt=0 (4)

对于这个有3个方程两个未知数的约束方程组, 可以采用广义逆求解, 即令:

A=[RxRyGxGyBxBy]b=[-Rt-Gt-Bt]

则有: (AΤA) U¯=AΤb (5) 可以解出U¯= (AΤA) -1AΤb

利用式 (5) 计算光流场, 当图像中某区域颜色梯度相同时, 方程组各等式线性相关, 无法求得惟一解。当图像中所含噪声相对于颜色梯度[7]较大时, 所得解不可靠。

2.2 基于改进的HSI模型光流场估计算法

HSI模型中的H和S对观察方向、物体的几何结构、照明方向、照明强度、照明的光谱能量分布等变化具有较强的鲁棒性, 同时色调H在强烈光线下也能保持不变, 说明H能比较准确地反映颜色种类, 以及对消除光照条件的影响。

RGB颜色空间映射到HSI空间[9]的转换关系为:

Η=arccos{[ (R-G) + (R-B) ]/2[ (R-G) 2+ (R-B) (G-B) ]1/2}S=1-3R+G+Bmin{R, G, B}

I= (R+G+B) /3将上式3个分量分别代入光流基本等式, 可得到包含3个方程的方程组:

{Ηxu+Ηyv+Ηt=0Sxu+Syv+St=0Ιxu+Ιyv+Ιt=0 (6)

式中:u, v的系数, 即每个像素点上的H, S, I值对x方向和y方向上的梯度值可以利用差分算子方便求出。

由线性代数理论可知, 若这3个方程两两线性无关, 则只需其中2个方程就可以解出光流场矢量X (u, v) , 这里将这3个方程两两组合, 可得到3组方程组:

{Ηxu+Ηyv+Ηt=0Sxu+Syv+St=0 (7)

A=[ΗxΗySxSy], b=[-Ηt-St]

, 则有AHSXHS=bHS, 用高斯消去法可得解XHS

{Ηxu+Ηyv+Ηt=0Ιxu+Ιyv+Ιt=0 (8)

同理由式 (8) 可得解XHI

{Sxu+Syv+St=0Ιxu+Ιyv+Ιt=0 (9)

由式 (9) 可得解XSI

2.3 利用小波变换改进光流矢量场

由于利用上述算法计算视频图像的局部运动物体所生成的矢量场会产生随机的误差数据, 如在图像中的背景处会产生异常数据信息, 从而影响矢量场的整体特征信息, 所以为减少异常数据点对最终运动矢量值的影响, 采用小波变换的方法在全局运动模型的估计中剔除掉受到局部物体运动影响而导致的异常数据信息。实验表明, 取得较好的效果。

本文采用二维离散小波变换[10]对光流场的奇异矢量进行了剔除。

为了将一维离散小波变换推广到二维, 只考虑尺度函数是可分离的情况, 有:Φ (x, y) =Φ (x) Φ (y) (10) 式中:Φ (x) 是一维尺度函数, 其相应的小波为Ψ (x) 。下列3个二维基本小波是建立在二维小波变换的基础上的, 有:Ψ1 (x, y) =Φ (x) Ψ (y) , Ψ2 (x, y) =Φ (y) Ψ (x) ,

Ψ3 (x, y) =Ψ (x) Ψ (y) (11) 它们构成二维平方可积函数空间L2 (R2) 的正交归一基:Ψj, m, nl (x, y) = 2jΨ1 (x-2jm, y-2jn) ,

j≥0;l=1, 2, 3; j, l, m, n∈Z (12) 将此小波变换的方法代入改进的HSI光流场方程中可得到本文的算法。

3实验结果

本实验采用的视频图像序列为新西兰Otago大学计算机视觉研究小组所采用的标准图像测试序列。该图像为300×400像素的真彩色图像, 取其中的第21和第22连续两帧图像作为研究对象, 如图1、图2所示。

从图1、图2可以看出, 图像中的物体运动比较复杂, 图中的汽车是整体向左运动, 楼房和地面的相对运动是正对摄像机的运动, 摄像机也作由左至右的整体平移, 属于目标与摄像机均移动的情况。图3为传统的Horn-Schunck方法计算出的光流场矢量图。图4为选取H, S分量计算的彩色图像光流场矢量图。图5为改进后HSI彩色光流场的矢量图, 分别对改进的光流方程中H, S, I三个分量的加权值选取0.4, 0.2, 0.4。图6为利用小波变换改进的HSI光流矢量场图, 较HSHIS得到的光流特征明显具有更好的精密效果。

由图3可以看出, 传统的Horn-Schunck光流估计算法所得光流场可大致显示出运动区域, 但不能清楚地显示路面分界线的相对运动细节和小汽车的运动情况。图4所示HS分量的光流算法存在较大的误差, 不能够显示路面的分界线。

图5利用改进的HSI方法能够较清晰地看到图中物体的运动情况, 光流场的精度与密度都较高, 但由于摄像机的运动和噪声的干扰会产生奇异矢量信息。图6利用小波变换对改进的HSI光流场中奇异矢量进行剔除, 也抑制了噪声的干扰, 从而得到视频图像的精密光流场。由此可以看出, 本文提出的基于小波变换和HSI的改进视频光流场估计算法是一种有效的光流算法。

4结语

在传统光流算法的基础上, 提出了一种在HSI颜色模型下结合小波变换计算彩色图像光流场的方法。将传统的灰度图像光流估计方法与HSI颜色模型估计方法相结合, 并且用小波变换的方法对光流矢量场的异常数据点或因为匹配错误而产生的异常块数据进行剔除, 从而有效提高了光流场估计精度及光流密度, 实验证明, 取得较好的效果。但由于是对彩色图像进行处理, 需要经过3次矩阵方程的迭代计算, 因此比一般算法所需的计算成本要高。因此如何提高算法的快速性仍需深入研究。

参考文献

[1]THOMAS A, KAMBHAMETTU C, GEIGER C A.Vec-tor field resampling using local streamline approximation[C].Proceedings of the 19th International Conference onPattern Recognition.Florida:[s.n.], 2008.

[2]SHU Qing-yu, HATTORI Tetsuo.Face identification forpeople image with general background using vector phasefield[J].Industrial Technology, 2008:1-5.

[3]NIKITIDIS Symeon, ZAFEIRIOU Stefanos, PITAS Ioan-nis.Camera motion estimation using a novel online vectorfield model in particle filters[J].Circuits and Systems forVideo Technology, 2008:1028-1039.

[4]GOLLAND P, BRUCKSTEIN A M.Motion from color[J].Computer Vision and Image Understanding, 1997, 68 (3) :346-362.

[5]项学智, 赵春晖, 李康.一种彩色光流场估计算法[J].哈尔滨工程学报, 2008, 29 (6) :604-609.

[6]危水根, 陈震, 黎明.基于梯度光流场计算方法的一种改进[J].计算机工程, 2006 (1) :198-200.

[7]尤隽永, 刘贵忠, 李宏亮.一种快速鲁棒的压缩视频光流估计算法[J].电子信息, 2007, 29 (9) :2154-2157.

[8]符宝鼎, 袁建畅, 郭彩霞.基于RGB颜色模型棉花杂质的识别算法[J].北京纺织学报, 2005 (10) :48-50.

[9]孙慧贤, 张玉华, 罗飞路.基于HSI颜色空间的彩色边缘检测方法研究[J].光学技术, 2009, 35 (2) :221-228.

【光流算法】推荐阅读:

扩展算法07-16

蝶形算法07-18

区间算法07-18

搜索算法07-19

矩阵算法05-13

回归算法05-15

边缘算法05-16

查询算法05-17

映射算法05-26

经验算法05-28

上一篇:校中厂下一篇:人欲