随着计算机硬件设备的不断升级以及人们对公共场所的安全需求不断提升,智能视频监控系统的重要性日益凸显。而智能视频监控中的两个最基本的问题,行人检测与异常行为分析,也逐渐成为了计算机视觉领域的研究热点。本文主要的研究内容是基于视频的行人检测与异常行为分析,本文分别对这重要的两项技术提出有效的解决方案。 由于人体有着多变的外观以及可能出现多种状态,因此,在视频中进行检测行人是一项非常困难的任务。首要的困难就是怎样提取一个鲁棒的人体特征集,这种特征集要求能在不同光照条件的复杂背景下,能够消除人体各种形态的歧义。通过实验,可以知道,用局部正规化的梯度直方图(Histogram of Oriented Gradients,HOG)方法提取出的特征值,比用现存的其它特征提取方法,提取出的特征值,更加适应视频中行人检测的要求。为了简单和处理速度,本文采用BP神经网络分类器,对训练样本进行分类。在得出初步的检测框之后,在框中的1/4以上的位置进行头部检测,从而可以降低误检率。在描述帧信息时,本文使用了光流法。统计出每个子区域中的光光流场直方图变化,最后就可以得出每个节点块的特征描述符。最终结合视频的时空特性,通过求解MRF模型的能量函数,判断出是否有异常行为发生。这部分使用了光流法提取出像素点的运动方向和速度信息,能够有效的在多场景中完成行人检测与异常行为分析的任务。
光流场直方图的代码
% 光流场块区域
flowi.Vx = flow.Vx(rc(i,1):rc(i,2), rc(i,3):rc(i,4));
flowi.Vy = flow.Vy(rc(i,1):rc(i,2), rc(i,3):rc(i,4));
flowi.Orientation = flow.Orientation(rc(i,1):rc(i,2), rc(i,3):rc(i,4));
flowi.Magnitude = flow.Magnitude(rc(i,1):rc(i,2), rc(i,3):rc(i,4));
% 直方图统计
opticflow_histi = get_opticflow_hist(flowi);
opticflow_hist = [opticflow_hist; opticflow_histi];
光流场直方图的代码
% 光流场块区域
flowi.Vx = flow.Vx(rc(i,1):rc(i,2), rc(i,3):rc(i,4));
flowi.Vy = flow.Vy(rc(i,1):rc(i,2), rc(i,3):rc(i,4));
flowi.Orientation = flow.Orientation(rc(i,1):rc(i,2), rc(i,3):rc(i,4));
flowi.Magnitude = flow.Magnitude(rc(i,1):rc(i,2), rc(i,3):rc(i,4));
% 直方图统计
opticflow_histi = get_opticflow_hist(flowi);
opticflow_hist = [opticflow_hist; opticflow_histi];