张志杰 杨硕
摘 要:视频监控系统是计算机应用中的重要领域之一。数字化摄像头网络化之后,监控系统正在不断引入新的功能,为使现有监控系统能更好地应对复杂环境,满足不同监控要求,就需要追加新功能,在系统架构与设计上进行调整。因此,如何将多个第三方软件与现有监控系统进行衔接就成为需要解决的重要问题。论文以多个第三方算法库整合为案例,分析、改进并拓展其思路,提出一种通用的第三方软件与现有监控系统进行衔接的接口设计方案。该方案中,多个第三方软件按照系统功能,采用分层、分模块的方式整合入系统,接口按照数据类型的不同分类,功能相对独立、标准统一。该方案经实践检测,具有简单、快速、高效、易于二次开发等优点。
关键词:智能监控;系统架构;模块化设计;接口设计;数据传输;深度相机
中图分类号:TP31文献标识码:A文章编号:2095-1302(2019)09-00-03
0 引 言
现有物联网监控系统的功能正在日益多元化。例如后台服务器算法与深度学习相结合,使得监控的智能水平取得了长足进步[1];主从-PTZ摄像头的引入形成了多个摄像头组,能够完成之前单个摄像头无法完成的工作[2];具有深度信息的摄像头能够从三维立体的角度重新进行监控[3]。同时,与视频监控系统有关的其他技术也在迅猛的发展之中,例如基于FPGA,DSP芯片,每个摄像头能够完成若干前端处理,从而降低对通信带宽的要求[4];基于USB 2.0数据传输技术,可使视频数据传输的速度成倍提高;基于云存储技术使得视频数据的存储、访问与相关运算能够并行、远程处理,同时实现了海量视频数据以及相关若干技术;基于GPU芯片性能的提升,视频、图像的处理速度较之前有了很大提高[5-6]。
对现有监控系统而言,新的功能、应用领域正在形成,而这些新应用解决方案的实现既需要新的硬件,又需要新的软件;既可以选择自行开发,也可以直接集成第三方软硬件包。自行开发与集成第三方软件包相比,各有优劣。
以计算机视觉应用中的第三方软件包为例,现有第三方算法库较多,能够支持的应用也较多,如目标识别、行为检测、深度学习、深度信息等。如果均采用自行研发的方式进行实现,应用程序的稳定性与处理速度将完全取决于开发者自身的能力与水平;如果开发者水平高,不仅能够在功能的选择上拥有绝对的自主权,还可以通过优化与功能裁剪实现更高的系统稳定性与运行速度;但如果研发者水平受限,则程序的表现将无法预测。
系统集成直接使用第三方软件包,其程序代码的编写水平完全取决于第三方软件包,在搭设系统的同时,其应用服务的质量是同质化的,难分伯仲;对用户的服务支持则完全取决于第三方软件包,无过多自主权。
至于涉及的第三方硬件的软件开发包无需多言,绝大多数研发者都无力进行新硬件的设计、制造与相应软件开发,均以使用第三方硬件为主。
1 深度相机
以深度算法的应用作为案例进行现有视频系统接口的案例解析。
在原有视频监控系统中添加深度信息,需要进行相关功能的研发,首先需要硬件的支持,而新的硬件往往自带第三方开发包,可供开发者二次开发。
深度相机(又名3D相机)是指可通过距离信息获取物体之间的位置关系,能够区分前景与后景;使用相机获取的深度信息对目标图像的分割、标记、识别、跟踪等传统应用仍然有效,而且可以根据深度信息进行改进与提高;借助深度信息与2D相机无法获取数据与信息,但进行算法的设计与改进后便能够快速完成对目标的识别与追踪,进行复杂目标的状态行为判读[7-8]。
目前深度相机包括TOF(Time of Fligh,TOF)、结构光、激光扫描等,主要用于机器人、互动游戏等。其中较多指TOF相机[9-10],微软第二代Kinect v2采用的就是TOF技术,在30 fps条件下能够实现1 920×1 080的颜色分辨率、512×424的深度分辨率,最多支持6人的姿态识别,每人25个关节点,检测范围最远可达4 m,水平有效角度最大为70°,垂直有效角度最大为60°。
以激光散斑图像深度信息获取方法为例,深度相机实现这些功能的工作原理:经过图像预处理后的输入散斑图和参考散斑图写入多条行形成输入散斑窗、参考散斑窗,在输入散斑窗中提取中心相同、窗口大小不同的图像块,对应参考散斑窗的匹配散斑窗,以搜索策略并且求最小SAD方法,搜索最佳匹配块,得到最佳偏移量,再通过参考阈值进行筛选,自适应选择某一图像块对应的最佳偏移量作为当前图像块中心点的最佳偏移量,然后通过深度计算公式得到其深度信息[11-12]。
由上可见,该方法涉及的数学公式较多,运算量較大,同时,类似30 fps条件的视频参数对相关计算的实时性提出了较高要求。现在一般的解决方案为依靠FPGA,DSP进行相关运算,这就涉及到了与硬件相关的第三方开发包。
以第三方OpenCV软件包与硬件相关的HLS算法库进行接口设计层次化、模块化说明。
2 接口的层次化、模块化设计
现有视频监控系统在进行接口层次化、模块化设计时可以参考HLS算法库与OpenCV软件包进行集成的案例。在该案例应用中,支持深度相机的系统被设计用来实现深度相关算法。
Vivado高层次综合(Vivado High-Level Synthesis,HLS)在所有HLx版本中可直接使用C,C++以及System C语言规范对Xilinx可编程器件进行编程,HLS使系统和设计架构师支持ISE?和Vivado设计环境,无需手动创建RTL便能够快速创建IP,包含HLS流库,HLS Math,HLS视频,HLS IP,HLS线性代数,HLS DSP库等内容。HLS在该案例中的主要功能是利用硬件加速相应的OpenCV应用。
OpenCV(Open Source Computer Vision Library,OpenCV)是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可运行在Linux,Windows,Android和Mac OS操作系统上。OpenCV轻量级且高效—由一系列C函数和少量C++类构成,同时提供Python,Ruby,Matlab等语言接口,实现了图像处理和计算机视觉方面的诸多通用算法。OpenCV在该案例中的主要功能是进行深度信息相关算法设计与应用。系统层结构与模块接口示意如图1所示。
由图1可知,不同第三方库进行集成时,彼此之间的业务流按照数据类型的不同需要选择不同的接口—在OpenCV与HLS之间进行图像处理时需要Axivideo2Mat与Mat2Axivideo接口。而在OpenCV与HLS之间进行视频处理时,仅需Mat2Axivideo接口。其接口类型根据数据类型的不同而变化。OpenCV与HLS部分接口函数示意如图2所示。
从图2中可以看出,在视频与图像分析的应用中,为能够充分利用深度相机的深度信息,需要OpenCV与HLS各自按照数据类型的不同采用不同的接口函数进行处理,并根据需要进行不同数据类型之间的转换,例如从Mat到video,从Mat到hlsMat,或者从video到Mat,从hlsMat到Mat。
由此可见,接口就是进行的一系列数据类型转换,转换的最终目的是为不同算法提供符合其输入要求的数据。
3 数据接口的标准化
接口(Interface)是一系列操作的集合,在软件架构中,强调模块之间的数据交换操作。为拓展模块应用范围、进行二次开发、与其他系统集成,尤其要适应未来的技术趋势,就需要进行数据接口的标准化[8]。
数据接口的标准化首先需要明确数据的类型。在视频监控系统中,有效数据类型主要包括图像、视频以及其他数据、状态数据四大类。作为数据接口的标准化内容之一,首先需要统一的内容较多,如图像大小、图像类型、视频帧数、色彩模型、数据格式、数据长度、数据实时性等,数据类型与业务流程相同,是进行划分的两大要素。
对不同型号、不同设备、不同参数的视频,需根据效果以及实验进行对比,降高升低。高参数设备采集的视频信息需进行预处理,以达到同一标准;同样,对达不到参数要求的设备,可结合金字塔法等进行预处理,使之达到同一标准。标准统一后,对数据的通信速度、数据的后期处理速度、处理精确度、存储速度、读取速度等多项指标都有明显改进。
统一视频处理输出后的数据格式是标准化的重点。视频监控系统采集视频信息,然后交由后台服务器进行视频信息的处理,其处理结果(系统输出)是应用层其他系统需要的输入,因此需进一步规范视频监控系统处理后的数据格式。
对视频监控系统处理后的数据,可采用视频、图像、与文本/XML等结合的方式。其中,对视频而言,需要规范每秒多少帧、每一帧的宽高、色彩模型、ROI位置及长宽等;对图像而言,需要规范宽高、色彩模型、ROI位置及长宽等,这里的参数应该与视频参数完全吻合,只是视频的参数多于图像参数而已;对于文本/XML而言,需要对视频、图像进行编号,对应编号保留所有视频、图像处理后的相关信息。
为最大限度保持算法设计上的灵活性,可对同一视频/图像利用算法库进行多种不同数据格式的转换,通过不同的算法得到不同的输出;与不同参数需求的新设备进行数据通信;集成不同的第三方库,从而较好地解决系统的二次开发问题。
图3所示为一种混合第三方库支持的车牌定位算法及其得到的车牌定位效果。对于成功定位的车牌,使用了文献[13]中提到的车牌字符分割算法并将字符以二值化方式显示。
第三方视频处理库为OpenCV2.4.9,在Windows 7操作系统上借助Qt5.0实现,其中部分功能函数使用了GPU加速实现。主要硬件环境为ThinkPad x230笔记本电脑,Core i3(2.4 GHz)四核CPU,8G内存。实验数据集包含800幅含车牌的图像以及400幅不含车牌的图像。
实验测试对象中包含了大部分复杂环境,如颜色干扰(“湘BY2054”和“粤JPG999”的车身均为蓝色),倾斜的车牌(“粤CFL980”“辽ANB082”“粤B0PA09”),复杂的背景和光照条件(“辽M66B66”和“浙BY1V13”)等。从结果可以看出:混合第三方库支持的车牌定位算法在复杂条件下均能够准确定位车牌,并能够从车牌上准确读取车牌字符[13]。
4 结 语
不同第三方库进行集成时,彼此之间的业务流需按照数据类型的不同来选择接口。在软件架构中,强调模块之间的数据交换操作。为拓展模块应用范围、进行二次开发、与其他系统集成,就需要进行数据接口的标准化。数据接口的标准化首先需要明确数据类型,然后尽量统一模块之间处理输出的数据格式。
在系统设计与实现中采用论文中提到的解决方案,在一定程度上解决了原有系统架构适应性差、调整困难的缺陷,能够借助分层次与模块化手段来提高系统稳定性,并借助第三方库提高系统核心运算的速度,易于二次开发。在工程应用中,该方法可作为一种快速软件原型开发的辅助手段,具有较为广泛的应用场景。
参 考 文 献
[1]管皓,薛向阳,安志勇.深度学习在视频目标跟踪中的应用进展与展望[J].自动化学报,2016,42(6):834-847.
[2] WAN D,ZHOU J,ZHANG D. A Spherical Rectification for Dual-PTZ-Camera System[C]// IEEE International Conference on Acoustics,Speech and Signal Processing. IEEE Xplore,2007:I-777-I-780.
[3]向学勤,潘志庚,童晶.深度相机在计算机视觉与图形学上的应用研究[J].计算机科学与探索,2011,5(6):481-492.
[4]董青,朱洪翔,祁曉鹏.基于FPGA视频合成系统设计与实现[J].计算机测量与控制,2016,24(4):247-249.
[5] MITTAL S,VETTER J S. A survey of CPU-GPU heterogeneous computing techniques [J]. Acm computing surveys,2015,47(4):69.
[6]张锦涛,赵惊涛,王真理.FPGA与GPU并行计算分析—以Kirchhoff叠前时间偏移为例[J].地球物理学进展,2013,28(3):1464-1471.
[7]向学勤,潘志庚,童晶.深度相机在计算机视觉与图形学上的应用研究[J].计算机科学与探索,2011,5(6):481-492.
[8] XIANG X,PAN Z.Depth camera in computer vision and computer graphics: an overview [J]. Journal of frontiers of computer science & technology,2011,5(6):481-492.
[9]胡淼.基于TOF相机的三维点云地图创建和可视化研究[D].长沙:湖南大学,2012.
[10]张旭东,吴国松,胡良梅,等.基于TOF三维相机相邻散乱点云配准技术研究[J].机械工程学报,2013,49(12):8-16.
[11]葛晨阳,郑南宁,赵季中,等.一种激光散斑图像深度感知方法及装置,CN103810708A [P]. 2014:1-6.
[12]关柏青.基于主动序列模糊图像的运动估计和振动测量[D].上海:上海交通大学,2007.
[13]杨硕,张波,张志杰.多特征融合的车牌定位算法[J].计算机应用,2016,36(6):1730-1734.