新闻中心

EEPW首页>消费电子>设计应用> 基于OpenCV的智能视频监控设计

基于OpenCV的智能视频监控设计

作者: 时间:2010-09-15 来源:网络 收藏

这个算法基于的条件是运动目标相邻两帧之间在画面上存在的交集,此算法不用外推和相关分析以及轨迹后处理就可以清晰地显示出目标的轨迹、速度与方向。用该算法基于运动目标检测运动目标前景图像的具体过程可描述如下:
◇存储检测出来的目标前景图像,并使过去的帧灰度递减:
◇在当前帧打上时间戳叠加存储到历史图像后缀;
◇形成梯度渐变图像;
◇由分割得到的梯度渐变图像得到目标位置,并计算渐变梯度,以得到目标的速度和方向,并加上批号标记。
该算法简化了目标相关性的运算,可在初始状态下对于目标运动趋势不了解的情况下实施对目标的稳定跟踪,同时具有良好的实时性能。

本文引用地址://m.amcfsurvey.com/article/166550.htm

3 相关函数
通过函数cvUpdateMotionHistory可使用下列方式更新运动历史图像:
14b.JPG
也就是说,MHI(motion history image)中运动所发生的象素点被设置为当前时间,而运动发生较久的象素点将被清除。
函数cvCalcMotionGradient用于计算MHI的差分Dx和Dy,然后计算梯度方向,其公式为:
orientation(x,y)=arcztan(Dy(x,y)/Dx(x,y))
其中要考虑Dx(x,y)和Dy(x,y)的符号。然后填充mask以表示哪些方向是正确的。
函数cvCalcGlobalOrientation用于在选择的区域内计算整个运动方向。并返回0°到360°之间的角度值。首先由函数创建运动直方图,并寻找基本方向做为直方图最大值的坐标。然后通过函数计算与基本方向的相对偏移量,并将其做为所有方向向量的加权和(运行越近,权重越大)。所得到的角度就是基本方向和偏移量的循环和。
函数cvSegmentMotion可寻找所有的运动分割,并在seg_mask用不同的单独数字(1,2,…)标识它们。它也可返回一个具有CvConnected-
Comp结构的序列。其中每个结构对应一个运动部件。在这之后,每个运动部件的运动方向就可以被函数cvCalcGlobalOrientation利用提取的特定部件的掩模(mask)计算出来。此外,每个运动部件的质心位置也可由返回的图像ROI位置来确定,由此便可确定运动目标的位置。

4 实验结果
在实验中,可采取标准图像源来有效检测跟踪出图像中的运动目标,图2所示是其实验结果示意图。其中通过图2(a)能够根据CvCon-
neetedComp中所获取的运动分割形状大小,滤掉所不关心的运动目标;而对于图2(b),如果把限定阈值取大。则中的骑自行车的人将不会被跟踪显示;

14c.JPG

图2(c)中,假定竖直线右侧为警戒区域,当有目标进入该区域时。即运动目标的质心位置为某一区间值时,则对该目标进行标记,从而达到智能判断的效果。图中直线方向表示运动物体的运动方向,在实际的运用场景中,可由此判断物体是否逆行以达到智能监控和识别的效果。

5 结束语
本文介绍了openCV中运动模板的检测方法,该方法可以有效正确检测和跟踪图像中的运动目标,并能获得该目标的运动方向与相应位置,从而实现智能视频监控和智能判断。但实际上,该方法仍然会存在运动背景差不精确、运动目标形状大小不一等问题,因此,还需进一步研究或与其他方法相结合,以达到更好的效果。


上一页 1 2 下一页

关键词:视频

评论


相关推荐

技术专区

关闭