基于 Spartan 6 的实时运动分类系统为人群的自动监测和监控开辟新途径。
人群的监控与监测已经成为当前的一个重要领域。政府和安全部门都已经开始寻求在公共场所智能监测人群的更先进的方式,从而避免在来不及采取行动之前检测到任何异常活动。但是在有效达成这一目的之前还需要克服一些障碍。例如,如果需要一天 24 小时同时监测整个城市里所有可能的人群活动,仅靠全人工监测是不可能的,尤其在安装有数千部 CCTV 摄像头的情况下更是如此。
这个问题的解决方案在于开发全新的智能摄像头或视觉系统,借助先进的视频分析技术自动监测人群的活动,从而能够立即向中央控制站报告任何异常事件。
设计这种智能摄像头/视觉系统不仅需要标准的成像传感器和光学设备,还需要高性能视频处理器来执行视频分析工作。使用这种功能强大的板载视频处理器的原因在于先进视频分析技术具有较高的处理要求,大多数此类技术通常会使用计算密集型视频处理算法。
FPGA 非常适合于此类高性能要求的应用。借助赛灵思 Vivado® Design Suite 中高层次综合 (HLS) 功能实现的 UltraFast™ 设计方法,现在可以为 FPGA 轻松创建理想的高性能设计。此外,赛灵思 MicroBlaze™ 等嵌入式处理器与 FPGA 可重配置逻辑的完美融合,让用户现在能够将具有复杂控制流的应用方便地移植到 FPGA 上。
鉴于这种情况,我们使用 Vivado HLS、赛灵思嵌入式开发套件 (EDK) 和 ISE® Design Suite 中基于软件的EDA工具,设计出一种用于人群运动分类和监测系统的原型。这种设计方法基于我们所认为的软件控制和硬件加速架构。我们的设计采用低成本的赛灵思 Spartan®-6 LX45 FPGA。我们在较短时间内即完成了总体系统设计,其在设计的实时性能、低成本和高灵活性方面均展现出颇有前景的结果。
利用加权绝对差之和 (SWAD),我们计算出图像上分布的 900 多个运动向量。
系统设计总体系统设计分两个阶段完成。第一阶段是开发人群运动分类算法。在这个算法的验证完成后,接下来是把它实现到 FPGA 中。在开发的第二阶段,我们主要关注基于 FPGA 的实时视频处理应用的架构设计方面。具体工作包括开发实时视频流水线、开发硬件加速,最后将二者集成并实现到算法控制和数据流中,从而完成系统设计。
下面介绍每个开发阶段,首先从简要介绍算法设计开始,然后详细介绍如何将算法实现到 FPGA 平台上。
算法设计就人群监视和监控而言,文献中提出了多种算法。大多数此类算法从在人群场景中检测(或布置)特征点开始,然后随时间推移跟踪这些特征点,采集运动统计数据。随后把这些运动统计数据投射到一些之前预先计算好的运动模型上,用来预测任何异常活动 [1]。进一步改进包括聚集特征点,跟踪这些集群而非单独的特征点[2]。
本文的人群运动分类算法基于相同的概念,除了我们优先使用模板匹配方法进行运动估计,而不是采用 Kanade-Lucas- Tomasi (KLT) 特征跟踪器等传统方法。该模板匹配方法经验证表明,增加一些计算量能显著改善低对比度或对比度不断变化情况下的运动估计。
为将这一方法用于运动估计,我们将视频帧划分为更小矩形贴片组成的网格,然后使用基于加权绝对差之和 (SWAD) 的方法对每个贴片的当前图像和之前图像进行运动计算。每个贴片相应地提供一个运动向量,用于说明该特定位置两帧之间的运动范围和方向。结果就是需要在整个图像上计算超过 900 个运动向量。计算这些运动向量涉及的具体步骤如图1所示。
图 1:计算运动向量的步骤,从图像采集开始(上)
此外,我们使用加权高斯内核实现图像中遮挡区和零对比度区的可靠性。而且,用于计算一个运动向量的一个贴片处理工作独立于其它贴片的处理工作,因此该方法非常适合使用 FPGA 上的并行实现方案。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)