面向视频侦查应用的监控视频关键帧检测软件设计
2014-04-27鹏周纯冰张洪君沈喆赵熙竹杨
孙 鹏周纯冰张洪君沈 喆赵熙竹杨 扬
(1 中国刑警学院网络安全执法与公安技术信息化协同创新中心 辽宁 沈阳 110035;2 中国科学院沈阳自动化研究所 辽宁 沈阳 110016)
面向视频侦查应用的监控视频关键帧检测软件设计
孙 鹏1周纯冰1张洪君1沈 喆2赵熙竹1杨 扬1
(1 中国刑警学院网络安全执法与公安技术信息化协同创新中心 辽宁 沈阳 110035;2 中国科学院沈阳自动化研究所 辽宁 沈阳 110016)
为解决视频侦查工作中由于监控视频数据量大所导致的案件相关信息获取实时性差、误判与漏判等问题,利用数据流图深入分析了视频侦查工作对关键帧检测的需求,在关联数据流图、顶层数据流图与统计分析表的基础之上,提出了能够满足现阶段视频侦查应用的监控视频关键帧检测软件的总体设计和人机交互界面设计方案。
视频侦查 监控视频 关键帧检测软件 需求分析 数据流图
监控视频具有典型的时空数据特点,能够利用时间、空间的二维属性反映案件事实,从而实现打击和防控刑事犯罪的目的。除了时间与空间的二维属性,监控视频还具有典型的大数据特点,为了真实的还原案件过程,追踪案件密切相关的犯罪嫌疑人的体貌特征、行为特征与行动轨迹,需要采集现场及周边较长时间内的监控视频,可以达到1T甚至几T的数据量。目前的视频侦查工作主要依靠侦查员浏览监控视频来发现案件相关的线索,巨大的监控视频数据会导致案件相关信息获取实时性差、误判与漏判等问题,同时,长时间高强度的视频侦查工作还会严重影响侦查员的身体健康。
文献[1]提出了一种适合于视频侦查应用的监控视频关键帧的概念,并将图像处理技术、视频监控技术与视频检索技术相结合,研究了一种基于背景差分法的监控视频关键帧检测方法。文献[2]对上述方法进行了改进,提高了关键帧检测的效率。本文在上述方法的基础之上,深入分析了视频侦查工作的需求,提出了面向视频侦查应用的关键帧检测软件的总体设计方案和人机交互界面设计方案。
1 系统数据流图
如图1所示为监控视频关键帧检测系统的关联数据流图。从关联数据流图中可以清楚地看到监控视频关键帧检测系统主要包括两个外部实体,即视频监控区域和视频侦查员,而数据流则包括了监控视频*. avi和经过了监控视频关键帧检测系统处理加工之后的监控视频图像与关键帧图像。
图1 系统的关联数据流图
对如图1所示为监控视频关键帧检测系统的关联数据流图做进一步细分,得到如图2所示的监控视频关键帧检测系统的顶层数据流图。在顶层数据流图中,关联数据流图中的外部实体、数据流、存储单元和加工单元被分解为更小的单元,它们之间逻辑层次关系、数据流向得到了更加细致的描述。
图2 系统的顶层数据流图
如表1所示为根据图2所做的系统顶层数据流图的统计分析表,可以清楚地看到关键帧检测系统的顶层数据流图中共包括两个外部实体、四个数据流、两个存储单元和四个加工单元。
表1 顶层数据流图统计分析表
2 系统软件设计
2.1 基于多线程的系统软件总体设计
通过对面向视频侦查应用的监控视频关键帧检测系统的需求分析可知,系统的关键帧检测单元包括很多复杂的计算环节,需要占用较多的CPU的计算资源,而与此同时系统又需要连续不断的采集视频图像并进行压缩存储以及显示。因此,为了在满足图像采集、压缩、传输、显示与存储的同时,能够进行实时的关键帧检测,这里采用了基于Win32的多线程程序设计方法,即在应用程序进程当中生成两个线程:视频处理线程和关键帧线程。两个线程之间通过创建互斥事件的方式帮助操作系统实现线程之间的同步与调度。系统的多线程工作方式设计如图3所示。图3描述了基于Win32多线程技术与windows消息处理机制进行设计的系统软件的的工作流程。系统软件采用单文档视图结构,利用Visual C++AppWizard的提供的应用程序向导创建基本的基于MFC(Microsoft Foundation Class)的应用程序框架。
图3 采用Win32多线程的软件总体设计
从图3中可以看到,系统软件启动得到一个运行中的系统进程后,首先进行图像采集处理卡的初始化,为图像采集处理卡在应用进程中分配必要的系统资源。系统人机交互界面位于屏幕客户区,通过键盘、鼠标的方式接受视频侦查员的输入,并根据视频侦查员操作将系统应用的结果以视频图像、表格、状态栏等多种方式显示在屏幕客户区的不同区间内。视频侦查员通过人机交互界面对应用系统进行了需要的操作,操作指令分别以键盘事件驱动与鼠标时间驱动的方式产生系统消息,并进入Win32操作系统的消息队列等待应用程序的响应。每一个运行中的进程不断的通过操作系统的消息调度机制对消息队列进行侦听,一旦发现消息队列中出现了新的消息,便对消息进行判断,如果新的消息属于该进程,则立刻通过windows的消息传递机制进入进程,消息根据具体的处理需要,被应用程序分配进入消息循环中等待处理。Win32系统为每一个线程分配了一个消息循环,线程在接受消息之后负责对消息循环中的消息进行维护与解析,并根据解析的结果选择消息处理窗口进行消息处理。进程在每一个线程消息处理结束之后,向操作系统发送消息结束指令,操作系统根据消息结束指令在消息队列中终止该消息,并根据消息处理的结果通过API为进程提供硬件设备的应用访问驱动接口。
2.2 软件人机交互界面设计
如图4所示为面向视频侦查应用的关键帧检测软件的主界面,为了充分发挥视频侦查员的经验与主观能动性,软件的人机交互主界面包括四个部分。
(1)系统菜单:包括文件(系统管理、系统设置)、视频编辑(屏幕截取、视频标注、视频序列化)、关键帧检测(背景差分算法、相邻帧减算法)、帮助等四个主菜单项。视频侦查员可以根据操作需要通过鼠标或快捷键访问每个菜单项中的子菜单项,然后在弹出的二级对话框当中进行相关的系统设置或视频编辑处理操作。
(2)监控视频显示区域:根据系统设置,在视频侦查员发出监控视频采集命令之后,监控视频将实时显示在本区域中,满足视频监控的基本需要。
(3) 关键帧检测结果显示列表:重载了MainFrame的 OnCreateClient函数,使用了 Visual C++提供的ListCtrl控件进行显示列表的设计与开发,按照序号、视频事件、镜头编号、事件摘要的形式显示关键帧检测的结果,并根据进行实时更新。视频侦查员可以点击事件摘要对关键帧进行简单的摘要标注,方便分类与管理。
图4 软件的人机交互界面
(4)关键帧检索交互界面的设计:与CFormView类派生的对象相关联,负责实现视频侦查员输入与系统之间的数据通讯。设计分为文本检索和关键帧特征检索两个部分,视频侦查员可以使用人机交互界面根据现场勘查的结果选择某一检索条件对关键帧进行检索。
由于单文档视图结构的应用程序只有一个客户区,为了同时满足监控视频实时显示、关键帧检测结果实时显示与关键帧检索操作的需要,采用多视图分割技术将客户区主界面分割为三个独立的视图窗口,每一个视图窗口分别对应着一个显示类。分别实现了上述功能。
3 结论
本文深入分析了当前阶段视频侦查工作中存在的实际问题,结合关键帧检测软件的数据流图,提出了一种面向视频侦查应用的关键帧检测软件的总体设计方案和人机交互界面设计方案。
[1]孙鹏,张洪君,杨洪臣.利用背景差分法检测监控视频中的关键帧[J].警察技术,2013,(3).
[2]孙鹏,周纯冰,杨洪臣.监控视频关键帧动态背景差分检测技术[J].警察技术,2013,(5).
[3]陈刚,续磊.视频监控图像侦查方法研究[J].中国人民公安大学学报(社会科学版),2012,28 (3).
[4][英]萨默维尔.软件工程(原书第9版)[M].程成,等,译.北京:机械工业出版社,2011.
[5]王育坚.Visual C++面向对象编程教程[M].北京:清华大学出版社,2004.
(责任编辑:孟凡骞)
TP391.4
A
2014-09-12
公安部应用创新计划项目(编号:2012YY CXXJXY129);公安部重点研究计划项目 (编号:2012 ZDYJX JXY17);国家级大学生创新训练计划项目(编号:2012ZDYJXJXY17)。
孙鹏(1978-),男,辽宁沈阳人,中国刑警学院声像资料检验技术系副教授,博士,主要从事图像取证、视频侦查研究。