APP下载

一种新的双视角安检设备的软件设计

2019-01-26王宇石李宏伟董明文

科技创新与应用 2019年1期

王宇石 李宏伟 董明文

摘 要:文章提出了一种为双(多)视角安检设备配备的软件系统的架构设计,克服了传统设计的不足,针对智能化探测所需的“更多的计算资源”、“包裹的智能切分”、“多视角之间的通信与协同”,进行了更为实用化的设计。测试与试用结果证明,本软件系统能够在高压力场景下同时实现传统的图像显示功能和包裹探测功能。

关键词:双视角;安检设备;软件架构;包裹切分

中图分类号:TP274.5 文献标志码:A 文章编号:2095-2945(2019)01-0085-03

Abstract: This paper presents an architecture design of a software system for double-view (multi-view) security inspection equipment, which overcomes the shortcomings of traditional design. Aiming at "more computing resources", "parcel intelligent segmentation" and "communication and cooperation between multi-view points", a more practical design is carried out. The test and trial results show that the software system can achieve both the traditional image display function and the package detection function under high pressure scenarios.

Keywords: dual view; security equipment; software architecture; package segmentation

1 概述

当前,对于具有一定智能的、探测能力较强的安检设备出现了强烈呼声,除了经典的液体、爆炸物探测功能[1,2],地铁用户因大客流下安检员的超高工作负荷(随之安检质量缺乏保证),也提出了自动检测违禁品的需求。而具有智能化探测的双/多视角安检设备的软件架构需满足以下目标:

(1)足够的计算资源(多计算机乃至安装GPU显卡,计算机之间的通讯)。

(2)包裹的智能切分(保证进行有针对性的探测)。

(3)多视角间的通信与协同(包裹切分的协同、多视角的协同探测)。

由于传统功能中卷轴、拼接等功能对计算资源的占有率有较高的要求,如果将复杂的探测算法与传统功能集中于一台计算机上,有可能造成:卷轴受到冲击后会卡顿或迟缓(卷轴速度慢于包裹传输速度),或者等待探测的包裹图像发生堆积,无法及时返回探测结果。为此,把大部分探测算法的执行可放在新增的计算机上(相当于后台计算机,可加装GPU),都是智能化安检设备的必由之路。

包裹切分也是智能化安检机的一个重要需求。因为各种探测算法都是以一个(基本)完整的“包裹”或“物品”进行探测的,例如探测一个笔记本,需要这个笔记本是完整的。传统的软件设计每次按固定的行数截取采集到的图像数据形成包裹图像,有可能造成需探测的违禁品、炸药、液体、笔记本被随机地切成两半、分属两个图像,导致探测条件不完整、周边上下文环境的断裂。特别的,在地铁大人流的情况中,包连包在客运高峰阶段是基本形态,对包裹的智能化切分需求格外强烈。

第三,是在包裹层面的视角间协同。过去只是在显示数据上进行了视角之间的对齐,但是现在还需要考虑在包裹层面上进行视角间“对齐”。首先在包裹切分时,两个视角的分包结果要基本一致、互相对应;其次在执行探测时,有些功能需要同一包裹的多个视角的图像协同使用,才能进行探测,典型如液体探测功能。

以上三项要素是传统多视角安检设备软件设计[3,4,5]中考虑较少的地方,在包裹密集高压力情况下无法满足实际需求。本文提出的软件设计提出了一种卷轴和切分包裹(及其后的探测)分路处理的架构,并引入了复杂的包裹切分机制,从而更好地满足了智能化安检设备的三项需求。本文将按照以下结构进行描述:第2节介绍软件的架构设计,第3节介绍包裹智能切分的基本思想,第4节进行总结。

2 软件架构

整套软件的架构分两大部分:(1)“前端平台主控程序”及其下属的模块,主管传统的安检设备工控机的功能,本文把工控机称为“前端计算机”;(2)把新增的计算机称为“后台计算机”,在后台计算机上部署的是“后台主控程序”及其下属的模块(详见图2)。

如图1所示,预处理模块及其下属的模块,在前端计算机中对每个视角都有一套对象实例,例如双视角安检设备的前端平台上有2套预处理模块、视角对齐模块等。按照传统的多视角软件架構的设计,每个视角的视角对齐模块不断获得图像采集模块送来的图像数据,同时利用找空气背景模块切分各个包裹,形成包裹图像,然后视角对齐模块一边发起对包裹图像的卷轴显示,同时对包裹图像相继调用判断图像类型模块(例如图像内容是液体还是常规包裹)和探测/存储模块(进行材料探测[6])。现在的前端平台的软件设计改为将卷轴显示、包裹的切分/探测分为两路,分别进行,互不影响。其中视角对齐模块是软件运转的核心。在处理的过程中,卷轴和包裹的切分/探测两路均以射线灯的亮起到熄灭为一个单元进行处理(称为“一次采集”),一次采集结束后,包裹切分/探测流程将进行相应的状态初始化。下面分别描述卷轴显示、包裹的切分/探测两路处理的机制。

2.1 卷轴显示流程

参看图1,视角对齐模块是预处理模块发起的一个重要线程。在S1步骤中,视角对齐模块每次通过调用图像采集模块获得一定行数的图像数据,称为1块数据(例如60行);如果还没有找到本次采集的数据中对应第一个包裹的头位置Grab_BagHead,则在S2步骤中,视角对齐模块把当前数据块发给找空气背景模块进行分析,直至找到本次采集的Grab_BagHead,相当于一次采集的有意义内容的开始位置。

当视角对齐模块获得Grab_BagHead之后,会开始与设备的最后一个视角VN(按开始数据采集的顺序)的视角对齐模块,通过WinSock机制[7]进行通讯;此后每获得1块数据就告知VN一次(步骤S3),使得VN可以知道其余各视角都获得了多少块的图像数据;同时,视角对齐模块还会把当前获得的这块数据发给探测主控模块(S4步骤),由探测主控模块把这块数据放入探测数据缓冲区。

当VN的视角对齐模块获得了VN的Grab_BagHead,从此开始,VN的视角对齐模块每获得1块数据就通过S5步骤告知其他各视角的视角对齐模块:可以卷轴显示Grab_BagHead之后待显示的下一块数据了;在视角对齐模块得知自己可以显示下一块数据时,就通过S6步骤告知本视角的预处理模块,预处理模块随之调用卷轴显示模块(步骤S7)把下一块数据在安检员所看的计算机屏幕上卷出。从而各视角的图像实现同步卷出。

以上过程与包裹的切分/探测没有直接关系,两者关系的松绑,使得包裹的切分与探测可以在后台进行、采用复杂的算法,极端情况下发生分析错误后也不影响卷轴显示。

2.2 包裹的切分/探测流程

参看图2。按2.1所述,在S4步骤中,探测数据缓冲区已经被填入本视角采集到的从Grab_BagHead开始的图像数据。探测主控模块的一个独立线程实例,会循环扫描探测数据缓冲区是否有新填入的数据块,若有则调用包裹切分模块对新数据块进行分析(步骤T1);如果某次调用被返回一个包裹在探测数据缓冲区中的头尾位置(以下简称“头尾位置”或“切分位置”),探测主控模块就会把此包裹对应的图像数据从探测数据缓冲区中截取出来,形成包裹图像块,放入包裹的队列;探测主控模块的第二个线程实例会循环扫描包裹的队列,一旦发现有新切分出的包裹,则通过T3步骤调用探测/存储模块,由该模块把此图像块按一定命名机制保存为包裹图像文件、并返回相关的文件信息(文件名、图像的头尾位置等);随后探测主控模块的第二线程实例通过事件机制[7],告知前端平台主控模块有关这个图像的文件信息(步骤T4),前端平台主控模块也会形成一个图像文件信息的队列。

然后,前端平台主控模块会在步骤T5中,把这个包裹图像和相关的文件信息发送给后台主控程序。后台主控程序按队列记录各个视角发来的图像及相关信息,在步骤T6中把各视角对应同一包裹的一组图像发给后台探测模块进行探测,并将每组图像的探测结果(主要是画框的相对位置信息)通过T7步骤返回给前端平台主控模块,并由前端平台主控模块结合自己记录的图像文件信息队列,调用卷轴显示模块在计算机屏幕上画框(步骤T8)。

2.3 两个流程的一些关联性管理

本软件架构设计中,存在一定的关联性管理。其中有两种关联性非常重要。

第一是在每个视角中,卷轴所用数据缓冲区和探测数据缓冲区的位置的对应关系。由于两路机制分别开展,卷轴显示的数据行数和填入探测数据缓冲区的数据行数不一致,所以在每次采集结束后还要进行位置的关联统一。

第二是对于同一包裹在各个视角中切分形成的图像,如何找到彼此的对应关系。由于各种原因,可能出现个别视角意外丢失个别包裹的图像。可以由包裹切分模块为包裹进行编号,对于同一包裹,不同视角的包裹切分模块将使用同一编号。此编号随包裹图像在各个步骤中传递,最终根据包裹编号保证后台探测模块每次处理的一组图像来自于同一包裹。

3 包裹切分模块的实现

包裹切分的目的是在探测数据缓冲区中找到包裹之间衔接的位置,或包裹中没有可探测物体的位置,在这些位置进行切分,形成包裹图像。

包裹切分模块每次被调用时会一次给予30行数据进行分析,这些数据被循环覆盖地加入包裹切分模块自备的图像缓冲区DB(行数、列数都进行了高度压缩,以降低算法复杂度)。每行图像的信息含量,由以下三方面确定:

每行各像素的X射线衰减量之和(如果足够小则意味着遇到包裹间的空气背景),每行经过的可探测物体区域的种类、个数(及像素数),其中可探测物体区域是通过在图像缓冲区DB里执行生长算法[8],形成的具有一定灰度或材料特性的区域,各行包裹宽度的变化幅度(如果包裹的宽度在临近各行中没有显著变化,则意味着很可能是同一包裹的延续)。

汇总图像各行的以上三方面的信息,可以判断是否遇到了包裹与包裹之间的衔接位置,从而确定是否在某一行形成包裹的切分位置(包裹的头或尾,如果是包连包则前一包的尾同时也是下一包裹的头)。个别包连包且包裹内容复杂的情况下,有可能在探测数据缓冲区较长的范围内都找不到包裹切分位置,则会寻找一个没有粘着可探测物体的行,作为一个包裹的切分位置(相当于超长包裹的处理)。

包裹切分更为复杂的实现要求,在于多个视角对于同一包裹的切分结果的一致性。为此第一个视角V1(按照数据开始采集的顺序)被作为主视角,它执行上述的包裹切分算法,并把得到的切分位置及包裹的编号返回给探测主控模块线程1,再将这些分包信息通过视角对齐模块发WinSock消息告知后续各视角;其余各视角的包裹切分模块,每次被调用时获得最新传来的V1分包信息,并且将在V1的包裹切分位置的指导下,寻找自己对应的包裹切分位置。需要防范各种意外:包括其他视角与V1视角对图像内容的分析结果不一致,特别是对于软包(例如包裹间的小间隙在一个视角中被探测到、但在另一个视角中无法确认);由于推、拉包导致同一包裹在不同视角的探测数据缓冲区中位置有差异等。

4 试用与结论

使用本软件的双视角安检设备在北京的火车站、地铁站分别进行了试用,并实现了相关项目所要求的液体探测功能,在试用过程中运行流畅。在试用之前进行了约50小时严酷的循环带测试,往往一次采集长达2-3小时(包连包,含几千包次),经受了比现场压力更大的考验。

本文所提出的软件架构设计,能够很好地完成卷轴与探测各项工作,使两者互不干扰,满足了引言中所提到的智能化安检设备软件所需的三要素:(1)足够的计算资源

(多计算机);(2)包裹的智能化切分;(3)多视角间的通信与协同;从而使相关的双视角设备能运行复杂的探测算法并满足各种实用化的需求。

此外,本軟件架构同时也是多视角软件产品线的更进一步的发展。稍加改造、调试,该软件架构可以较为容易地应用于三视角、四视角设备,所需的只是相应地增加计算机以部署更多的前端平台及其主控程序。

参考文献:

[1]张娴,杨立瑞.欧盟液体探测系统检测标准及世界先进液体探测设备介绍[J].中国安防,2013(5):101-103.

[2]王宇石,杨立瑞,孔维武,等.一种液态物品安全检查的方法与装置[P].CN201410406756.6.

[3]王宇石,杨立瑞,孔维武.X射线多视角安检技术及其应用[J].警察技术,2011(6):57-59.

[4]杨立瑞.通道式多视角X射线液体安检设备FISCAN EDS-MV6

040[J].警察技术,2013(6):60-66.

[5]张燕鸣,王建荣,查艳丽,等.一种通道式四视角X射线液态物品安全检查系统[P].CN201210266563.6.

[6]杨立瑞.智能型X射线爆炸物自动探测系统[J].警察技术,2001,1(4):22-24.

[7]Jeffrey Richter. Windows核心编程(第5版)[M].葛子昂,周靖,廖敏,译.北京:清华大学出版社,2008:230-323.

[8]罗述谦,周果宏.医学图像处理与分析[M].北京:科学出版社,2010:88-90.