王山山+王丹+赵乾坤
摘 要:随着计算机技术的飞速发展,人们想要通过计算机方便快捷地获取来自外界的可靠数据,在此过程中数字信息处理技术占据了重要地位。研究基于Matlab的视频处理系统的设计与开发,借助Matlab图像处理技术并选取光流法对视频进行处理,最终实现对视频中运动物体的检测。该研究可为运动物体的跟踪与预测技术奠定基础。
关键词:Matlab;视频处理;物体检测;光流法
DOIDOI:10.11907/rjdk.162508
中图分类号:TP319
文献标识码:A文章编号:1672-7800(2016)012-0071-03
0 引言
在日常生活和科学研究领域,数字图像(视频)是人们获取外界信息的主要媒介。随着图像处理研究的不断深入,出现了许多亟待解决的问题。如今,图像处理已经成为一个较为成熟的学科。Matlab是一款应用广泛的数学软件,其在视频处理方面提供了一个功能强大、高效便捷的图像及视频文件处理工具箱Image Processing ToolBox。针对视频中的运动物体检测问题,本文提出了一种运动物体检测方法。该方法结合Matlab的视频及图像处理工具箱,可有效检测出视频中不同时间间隔内的运动物体。
1 运动物体检测简介
如今,针对运动物体检测工作,结合C语言等开发环境,使用较多的平台有OpenCV、Matlab等。运动物体检测的目的是分析运动物体在各个时刻的运动轨迹,从而根据运动规律跟踪并推测该运动物体在下一时刻的运动趋势。该检测技术属于人工智能范畴,在仿真技术逐步完善的今天,该领域的研究范围逐渐扩大,研究也更加深入。
2 系统相关技术分析
如图1所示,本课题主要研究的问题是如何利用Matlab对图像进行处理,生成光流场,最终检测视频中的运动物体。所以首先需要熟练使用Matlab在视频处理中的一些常用函数,以及函数的调用方式,并熟悉几种常用的运动物体检测方法原理和计算方式。
2.1 视频读取
随着Matlab软件的不断更新,如今能够满足很多格式视频文件的读取,表1中对常用的视频读取函数进行了举例说明。
2.2 运动物体检测技术
常用的运动物体检测方法有:背景减法、三帧差法、光流法[1]。本研究中选取基于梯度算法的光流法,生成光流场,根据矢量像素点检测该时区内的运动物体。
2.2.1 光流法
光流法作为一种实用的运动物体检测方法,将空间物体运动时表面的点向用户提供视觉平面上的抽象表达。1998年提出的新的光流法定义为几何变化及辐射度变化的详细表达[2]。运用光流法实现运动物体检测的原理概括为:将图像看作由有限个像素点构成的平面,光流图像即是将每个像素点赋予矢量值后构成的矢量场。运动物体在任意固定的时间点,生成的光流场像素点与运动物体初始像素点的关系相互对应。根据投影关系获得这种逐一对应的关系,最后依据运动物体像素点具备的矢量特征,对图像进行系统性的动态分析。分析方式如下:①若光流场中所有矢量点在图像区域中产生的运动是连续的,则该图像中不存在运动物体;
②当图像中存在运动物体时,运动目标与图像背景间会因产生相对运动[3]被体现出来,因此运动目标形成速度的矢量必然会不同于邻域背景产生的速度矢量,从而能够检测出运动物体及其位置。
2.2.2 微分法
以上介绍了光流法的基本思想,在第一步需要给图像中每个像素点赋予矢量值,可以选择基于梯度[4]、匹配[5]、能量[6]和相位[7]等方法。本文中使用基于梯度的方法,即微分法。微分法计算过程简单,结果准确,因此应用十分广泛。该方法主要利用实时图像灰度或时空梯度函数计算每个像素产生的速度矢量值。在此基础上,研究者们也不断提出了一些新的改良算法,例如分段式平滑计算,通过使用加权矩阵控制对梯度进行不同程度的平滑处理。
2.2.3 灰度图
灰度图又称为灰阶图,指黑白图像中点的颜色深度,范围一般为0~255。白色为255,黑色为0,故黑白图片也称为灰度图像,在医学、图像识别领域应用广泛。
3 系统设计与实现
本设计选取的视频是在avi格式的视频文件中截取的时长为10s左右的片段,选用的视频最好保持背景不变,例如马路上行驶的车辆与行人等。
3.1 单帧图像读取与保存
此部分主要需要解决如何提取并保存视频中单帧图片的问题。提取方式初步选用固定时间间隔提取单个单帧图像,后期经过改善,选用逐帧提取方式。为了便于后续过程中的图像提取,保存的单帧图像根据提取次序命名。视频是由有限个单帧图像经过连续播放而形成视觉上的连续变化,因此在第一步主要通过调用功能函数连续读取视频每一帧图像,实现视频播放,即:
for k = 1 : nFrames
mov(k).cdata = read(test1, k)
其中,mov(k)代表需要播放视频的总帧数。
播放视频的同时,对视频的总帧数进行了计数。因此,在第二步中,直接获取每一帧的图像,并将其保存在固定的路径文件夹中,其中最重要的两个步骤是:①将视频中的图像转换成jpg格式的图片(可以转换的格式很多,例如bmp等,此处选用jpg格式);②将转换后的图片进行存储,图2为将test1视频在播放过程中逐帧提取并保存到本地的实例结果。
3.2 运动物体检测
运动物体检测的第一步,先选取两张存储的单帧图像,选取条件是间隔时间尽量短,运动幅度较为明显,背景相对不变。这在生成光流场时,能够将检测效果体现得更加明显。
(1)分别读取两张单帧图像,并显示出来。
(2)将抽取的两张单帧图像分别转化为灰度图格式,下面是几种常用的灰度转换方式(本设计采用整数算法):①浮点算法:Gray=R*0.3+G*0.59+B*0.11;
②整数方法:Gray=(R*30+G*59+B*11)/100;
③移位方法:Gray =(R*28+G*151+B*77)>>8;
④平均值法:Gray=(R+G+B)/3;
⑤仅取绿色:Gray=G。
经过任一种方法求得Gray值之后,将原来的RGB(R,G,B)中的R,G,B统一用Gray替换,形成新的颜色RGB(Gray,Gray,Gray),用它替换原来的RGB(R,G,B)生成的新图像即是灰度图。图3、图4为将两帧图像进行灰度处理后重新生成的灰度图。
(3)通过梯度计算显示光流场,计算方法如下:
dst(5:hm5,5:wm5) = ( Xnp1(6:hm5+1,6:wm5+1)-Xn(6:hm5+1,6:wm5+1) + Xnp1(6:hm5+1,5:wm5)-Xn(6:hm5+1,5:wm5)+ Xnp1(5:hm5,6:wm5+1)-Xn(5:hm5,6:wm5+1) +Xnp1(5:hm5,5:wm5)-Xn(5:hm5,5:wm5))/4。
如图5所示的光流场,其中每个点是赋予图像中每个像素具备运动速度的矢量点。可以清楚看到,产生的光流场图像中包含一部分较为均匀的矢量点排序,说明在不同时刻,此处物体产生的相对运动极其微小,或者说通过视觉无法感受到其产生了运动;除了均匀分布的矢量点外,同样存在较为紧密或分散的点集合,说明在不同时刻,属于此范围的物体产生了较为明显的运动。点的变化形态越明显,在此处的物体运动幅度则越大。因此,从这种运动现象中可以预测,下一刻此处物体运动的可能性要比均匀分布点内物体运动的可能性大很多。
4 结语
随着计算机技术的高速发展,运动物体检测与跟踪等相关领域的研究备受关注。运动物体的检测与跟踪技术能够有效地解决一系列问题,例如一旦发现有异常行为监测对象,系统会发出报警,提醒人们注意并防范。近年来,研究者们致力于将智能化系统与人类本身的反应系统相结合。因此,运动目标的跟踪与检测研究在人工智能研究领域具有重要价值。
参考文献:
[1] BEAUCHEMIN S S,J L BARRON.The computation of optical flow[J].ACM computing surveys (CSUR),1995,27(3):433-466.
[2] NEGAHDARIPOUR S S.Revised definition of optical flow: integration of radiometric and geometric cues for dynamic scene analysis[J]. Pattern Analysis and Machine Intelligence, 1998,20(9):961-979.
[3] BARRON J L, D J FLEET,et al.Performance of optical flow techniques[J].International Journal of Computer Vision,1994,12(1):43-77.
[4] 阮秋琦,阮宇智,译.数字图像处理[M].第2版.北京:电子工业出版社,2003.
[5] R C GONZALEZ.数字图像处理(MATLAB版)[M].北京:电子工业出版社,2003.
[6] 朱志刚,等.数字图像处理[M].北京:电子工业出版社,2003.
[7] 章毓晋.图像工程-图像处理和分析(上册)[M].北京:清华大学出版社,2004.
(责任编辑:黄 健)