基于帧间差分法的视频轨迹模拟
2021-12-13韩赞祁晋东张禧龙
韩赞 祁晋东 张禧龙
(西藏大学,西藏拉萨 850011)
视频目标检测是近几年计算机视觉领域中最为活跃的分支,视频检测可以很精确地检测到目标的状态,在视频目标检测的基础上,利用目标的特征,可以为科学实验准备好的素材,提供精确的预判,让科学研究更加完善和深入;对于视频目标检测而言,运用帧间差法、光流法等方法,很大概率实现该有的效果,为学习研究提供大量的资料,实现合理化的评估预算。
在运动目标检测中,视频检测是至关重要的,而运用好的方法对于这些数据进行收集及分析的话,得到的信息的价值是十分可观的。而对于各种科研实验都在不断地出现和完善,而有的实验需要许多的数据,而有一个好的视频监控预测,进行检测目标的轨迹刻画,并进行收集,加上合理的分析运用,得到的成果就显而易见。
总的来讲,如果能对视频目标进行很好的收集和分析,可以最大程度的节省精力,提供精准的实验资料,使所需实验推向更深层次,得到理想的结果,避免不必要的麻烦,提高安全性能,尽最大可能提取所需要的信息,使使用价值达到最大化。
1 算法简介
1.1 三帧差分法
二帧差分法是通过计算相邻两帧图像之间的差值来获取运动区域,由两帧之间的差值判断运动范围;当检测视频中出现相对运动物体时,两帧之间相减,得到差值的绝对值,用阀值来判断存在的运动物体。三帧差分法是在二帧差分法的基础上进行改进,将相邻的三帧图像归为一组进行差分,从而得到运动物体轨迹上的细微变化。
选择图像的连续三帧I(j-1)、I(j)、I(j+1)。
计算相邻两帧差值:
选择阀值T,进行二值化:
在每一个像素点(x,y)将得到二值图像逻辑相“与”,得到三帧图像中的中间帧的二值图像:
1.2 腐蚀膨胀
腐蚀:用3×3 的结构元素去扫描图像的每一个像素点,与其覆盖的二值图像做逻辑“与”,从而使二值图像减少一圈。用公式表示为:
X 腐蚀B:E(x)={a|ba⊂X},如图1 所示:
图1
膨胀:用3×3 的结构元素去扫描图像的每一个像素点,与其覆盖的二值图像做逻辑“或”,从而使二值图像扩大一圈。可以看作是腐蚀的对偶运算,用公式表示:
如图2 所示:
图2
2 分析及实施
2.1 研究思路和方法以及重点和难点
2.1.1 研究思路
首先进行视频目标检测,编写各个板块代码,在重叠或者不明显的片段进行颜色区分,再把各个板块进行测试,然后合成主板块,进行板块与板块间的合理区分,使用大量视频目标验证分析,进行一定程度的优化,加强各个板块间的分辨率,得到相应的基础数据。
合理运用数学方法进行目标轨迹运算,并预判在短时间内将发生的轨迹图像,在两个相似视频物件中提取不同之处,在取定一个视频目标为模板,进行合理的修改并完善,且检测视频间的断流层,并进行高度还原,可以用不同时间阶段的模板,进行长期分析观察,进行数据整理并收集。
2.1.2 研究方法
可以运用Python,MATLIB 等软件进行数学编译,在一定程度上进行规划,并反复进行视频目标调控,运用大量的视频进行测试,并记录数据,观察数据之间的联系,进行系统优化调整,进行每个步骤的连接和运用,然后把每个版块进行串联,运用合理的代码进行计算分析,达到可实行的效果。
帧间差分法:利用视频序列中连续两帧间的变化来检测静态场景下的运动目标,运用图像序列中的第k 帧和第k+1 帧中像素点(x,y)的象素值,刻画出视频目标的轨迹模拟,时间间隔小则目标位置越精确,得到的图像更具体现象。
光流法:微分法,快匹配法,基于能量的方法,基于相位的方法。有两种假设:强度不变,全局光滑。在不同时刻的像素值需要向前加一个时间段,则产生光流场,得到平滑的轨迹图像。
背景减除法:通过判定灰度等特征的变化,或用直方图等统计信息的变化来判断异常情况的发生和分割出运动目标。特别针对微小重复运动的场合,运用无参的核密度估计方法对视频目标进行统计分析。
总的来说,由于帧间差分法的计算简单、复杂度低的优良性质,轨迹跟踪算法需要以帧间差分法为主体,再结合各个方法的优良性质,得到很精确的轨迹分析及模拟。
重点在于录制视频的机械对光的捕捉效应是否明显,视频中目标变化是否缓慢,是否受断流层的影响,是否存在目标形状变化巨大,是否产生不可控因素对视频目标造成干扰,得到不确定的数值,而产生特殊值影响普遍结果,各个程序之间的链接是否会因为一小点误差出现运行失误,分析出来的总模板是否因为子模板错误而产生偏差,难点也在于此。
而视频目标的处理也是难点。首先要进行视频目标的单一提取,排除光线变化;如果存在多个目标的话,目标之间会产生信号干扰,严重的话会产生信息混乱,导致表达效果出现偏差,让重要的信息发生了遗漏,让已经出现的目标不能被检测;还有就是多个目标是否存在重叠,在重叠部分产生轨迹阴影,影响系统分析识别。
由于大家采用了光流法、背景减除法,大部分都是用matlab来做,效果并不是很好,并且运算量大,结果模糊,操作繁琐,检测还单一,运动轨迹过于简单等缺点。基于上面的背景下,采用python 来做,可以减少运算时间,运行效率,得到更加准确清晰的结果,并改进及优化了算法,能合理的运用帧间差分法去进行视频的预判,评估,还原,这样就可以提供大量的数据,并进行分析和处理,从而检测出视频运动目标,运用python 中帧函数模拟其运动轨迹,解决视频运动的物体轨迹。
2.2 实施方案
首先熟练运用Python ,MATLAB 构思数据代码,准备相应的视频材料,收集可靠的数学方法,进行实验前的有效调控,拟定各个步骤的计划,达到运用于实践中的要求,并尽量完善系统方法。
然后进行相关数据的收集,得到可观的实现可能性,进行任务分工,主要分为材料的收集,检测视频是否存在错误断层,如果有,编写相应还原视频的代码,检测视频光线差异变化,运用代码进行调控,提炼视频目标信息,变成简单方便的二维线性关系并计算相对运动物体的运动速率,并刻画运动物体轨迹,在短时间范围内,进行未发生运动物体的轨迹预算;在此基础上,可以分辨两个相似物之间的不同点,从而标记,得到不同数据类型。
最后进行实验评估,得到相应实验数据,调试系统,减少误差,调节各个模板的契合度,加大对特殊值和特殊环境的处理,达到系统成功运行,并能使用。
3 系统模型流程图
图3 三帧差分法
图4 彩色差分法
图5 轨迹模拟画图
图6 总流程图
4 实验结果及分析
实验在windows10 系统下,使用IDLE (Python 3.7 64-bit)编程实现的,本次实验程序需要环境配置pip install numpy,pip install opencv-python,pip install matplotlib。
以下截图来源为本人录制,用了很多视频素材进行验证测试,进行代码调试,改进,优化,选取运动目标检测最为明显片段。
图7 是视频运动检测,小球为检测到的运动物体,蓝圈表示跟踪运动物体,该图完全实现了帧间差分法对运动物体的检测;根据跟踪的运动物体,刻画出的小球运动轨迹,每帧停留时间:单位ms,100ms 即10fps 即每秒十帧,有空隙的地方表示该运动物体在该帧与前一帧中物体没有运动。
图7 视频运动检测示意图
5 结论
本次研究运用了三帧差分法、二帧差分法、彩色帧间差分法、运动轨迹算法等,完全实现了视频目标检测及轨迹模拟刻画。可以运用在视频运动目标检测;可以安装摄像头,对需要的目标进行监控,特别是需要刻画运动轨迹的视频;也可以用于视频有效存储,剔除视频中无运动物体部分,从而释放存储空间。但由于本次研究主要使用了帧间差分法,视频需要机位固定,不然整个视频图像在检测时,每一个像素点都是运动的,这是需要进一步改进和完善的地方。