叶子豪
(中国民用航空华东地区空中交通管理局 技术保障中心,上海 200335)
无人值守台站和无人值守机房已经成为空管发展的趋势。通过在机房中安装视频监控实现无人值守台站/机房实时情况的了解是保障空管安全生产运行的重要手段。视频监控可以实时为机房管理人员远程提供机房运行环境和现场信息,结合设备巡视系统可以较为准确地掌握现场设备的运行状态。但目前的视频监控和巡视系统保障的主要部分依然是硬件和网络,大量的异常报警仍然需要机房管理人员进行实时判断和分析,这对机房管理人员的负荷无疑是巨大的。对于已经设置了视频监控的无人值守机房,期望通过ViBe算法对视频监控中的各类无效信息进行过滤,对有效信息进行筛选,对异常情况及时报警,实现对机房情况的准确判断,对机房内出现的运动目标进行检测和分析,减少人为因素所造成的不必要的意外发生和伴随意外发生所造成的各类经济损失以及人员伤亡。空管无人值守台站视频监控使值班人员对于无人值守的实时信息了解更加及时,当出现意外状况时,可以结合设备监控数据和视频监控对现场情况进行更加有效的判断。现阶段,无人值守台站正在从仅对现场设备进行数据监控向视频监控与数据监控相结合的阶段过渡,在过渡过程中结合现阶段已经实现的机器人巡检和无人机巡检对空管无人值守台站进行展望。在实际应用场景中,视频监控大多数是固定位置摄像头,大量无效信息仍然在干扰机房管理人员,想要实现对视频监控的有效分析,第一步就是对视频监控中出现的运动目标进行检测,检测出运动目标才能对视频内容进行分析[1]。
运动目标检测技术是计算机视觉在工程层面应用的重要单元。计算机视觉涵盖众多内容,如果要进行另外的图像处理操作,第一步就是对采集的图像序列进行运动目标检测,只有准确地检测到图像中的运动目标,后续算法才能对检测到的运动目标进行处理后的图像分类、对检测目标进行跟踪进而分析其行为。如果检测时运动目标携带阴影,需要将阴影消除,以得到预估的良好效果。
运动目标检测是有效地从采集到的连续图像里检测和跟踪所需要的运动目标[2],无视不发生移动的背景或暂时不移动的目标,从检测到的运动目标里得到需要采集的信息。运动目标检测是步入智能化视频监控系统的最重要的功能之一,更是所有监控系统有效运行的基础和前提。对于建立完善的监控系统,监控系统所使用的运动目标检测技术是良是莠,不仅仅影响到运动目标检测的准确性,更是影响到了监控系统的品质[1]。
通过对各种常见的背景建模算法进行研究和比较后,选择近10年较为热门的ViBe算法对运动目标检测进行研究。ViBe算法即visual background extraction ,翻译成中文是视觉背景提取算法。视觉背景提取算法与其他的运动目标检测算法相比,构筑背景模型的速度很快且算法复杂程度不高,背景模型与时间同步进行更新的效果更好,对于视频序列帧的处理效果好,而且不需要进行大量筹算。凭借着这些优点,视觉背景提取算法在需要的检测场景中有着广泛的应用。
运用视觉背景提取算法在现实世界的各类复杂场景中完成运动目标检测与跟踪,需要解决三个问题:一是设法构建出背景模型,在ViBe算法中怎样运用背景模型;二是在ViBe算法的设计预处理环节,预处理后的视频序列怎样完成初始化;三是怎样保证在检测场景的背景模型发生变化后,在短时间内构筑出新的背景模型。
2011年Dr. Bamich提出ViBe算法时,对上述问题进行了探索。Bamich等人在算法过程设计中加入快速构建背景模型的模块,建立样本充足的背景模型进行前景像素与背景模型的分离,利用设定好的背景模型更新模块根据视频序列变化更新背景模型。原始的背景模型利用邻域像素点的值相似的原理,完成背景模型的形成。背景模型建立后,从连续采集图像的第二帧伊始进行对前景像素点与背景模型的拆分工作,与此同时,背景模型随着视频序列帧的不断载入和读取也开始进行更新。基于ViBe算法,可以实现对视频序列进行像素点的背景模型建立。ViBe算法的基本思想可以总结为以下三点:
(1)对背景模型进行初始化。ViBe算法首先为背景模型构建一个容量为N的样本集,参照背景模型样本集所存储的同一个位置像素点波动范围,获取某个像素点和其邻近像素点的像素值以及这个点的历史像素值。
(2)对新载入的图像进行像素点分类,继而进行运动目标检测。首先,想要判断新载入的图像像素点属于前景像素(即运动目标)还是属于背景像素,需要将新载入一帧图像对应位置的像素点和此前所建立的背景模型样本集进行做差比较,如果满足所设定于背景比较的条件,可判断为背景像素,否则判断为前景像素。该点实际的意义是对前景像素和背景像素进行分类。
(3)由于多种因素的影响(如光线、噪音、缓慢移动的物体),需要随着视频序列的读取实现对背景模型的迭代。如果当前读取视频帧的某个像素点被判定为背景模型像素[3],则根据设置好的方式用所检测到的背景像素对当前的背景模型抑或对它邻域的像素点的值更新,最终完成对背景模型的更新。
现阶段空管动力系统无人值守台站视频监控技术是参照2020年1月1日实施的《无人值守变电站监控系统技术规范》(GB/T 37546—2019)[4]制定的。《无人值守变电站监控系统技术规范》适用于35kV及其以上电压等级无人值守变电站监控系统设计、建设、设备研制、实验及验收。空管动力系统无人值守台站电压等级主要为230V至10kV,因此使用该规范在电力系统安全方面是可以满足的。
3.2.1 算法平台
该算法构建在Qt5.7平台上,Qt平台可以在多个平台为C++图形用户建立程序框架。Qt支持下述平台:MS/Windows95、Windows98、WindowsNT4.0、WindowsME、Windows2000、WindowsXP 、WindowsVista、Windows7、Windows8、Windows2008、Windows10Unix/X11 -Linux、SunSolaris、HP-UX、CompaqTru64 UNIX、IBMAIX、SGI IRIX、FreeBSD、BSD/OS和其他很多X11平台Macintosh -Mac OS XEmbedded - 有帧缓冲(framebuffer)支持的嵌入式Linux平台,Windows CE、Symbian、Symbian^3、Symbian Anna、Symbian Belle、MeeGo、haiku-os等。
运行Qt5.7平台的硬件的要求为 :Intel Corei3-530 GPU、Intel HD 4600集显 RAM、2GB 硬盘空间和50GB HDD。
3.2.2 ViBe算法完成步骤
1)建立UI并且加入窗口最大化和最小化按键、创建菜单、创建定时器及调用按钮、创建两个显示窗口(label)用来显示处理前和处理后的图像。
2)定义colortable、定义current函数、定义pixel函数、定义pixel函数、定义mframe函数。
3)创建子菜单,点击调用按钮启动程序后加载数据库所截取的image图片,按照current函数设定缩放成合适的大小。
4)利用pixel函数进行image图片和pixmap图片的转换,利用mframe函数得到类pixmap类图像并且转换的pixmap图像申请内存空间并且在窗口1显示。
5)利用生成的类pixmap图像转换得到imagray背景图像,利用vibeforground函数转换得到imgfore前景图像,利用Qstring类函数填充前景图像文件名前缀,拼接好绝对路径将前景图像存储在指定路径,并在窗口2显示。
6)利用framecount函数实现对数据库image图片的遍历。
算法所处理的视频监控是从火车站台视频监控中所截取,通过ViBe算法对视频监控进行应用前后景分离,从而实现运动目标检测。
3.3.1 ViBe算法可以实现运动目标检测和背景分离
如图1所示,通过ViBe算法可以较好地将视频监控中的前后景进行分离,实现有效的运动目标检测和背景分离。
3.3.2 ViBe算法可以实现背景的实时更新
在运动目标检测算法中,背景能否实时更新一直是一个重要的问题,我们在算法中设计了前景点计数法的背景更新策略,如图2所示,当行人放下的背包满足本算法的背景更新策略时,静止的背包由前景点变为了背景。
(a) (b)图2 原图像与处理图像(a原图像,b处理图像)
3.4.1 存在鬼影区域
由于ViBe算法可以只依靠第一帧图像就建立背景模型,难以构建出完美的背景模型,当进行后续的运动目标检测时,必然会出现部分Ghost区域(即鬼影)。Ghost区域是指那些与运动目标相连接被判定为前景的像素点,实际上并没有真正的运动目标。尽管随着ViBe背景模型的不断更新,鬼影区域会不断削弱,如果在没有完全减去之前有较快的运动目标经过鬼影区域,显然无法有效地检测出这类运动目标。因此鬼影区域出现明显降低了运动目标检测的实时性和准确性。如图1(b)所示。
3.4.2 难以快速分离运动目标所携带的阴影
ViBe算法和它的前辈算法都存在难以快速分离运动目标所携带的阴影这一缺陷。运动目标的阴影是伴随运动目标进行移动的,因此与运动目标拥有一样的运动特征。现阶段所有的运动目标检测算法都难以把运动目标与运动目标受到光照影响产生的阴影进行分离,这种情况导致阴影伴随运动目标被运动目标检测算法视为前景点像素。所以对于后续的ViBe算法改进时,需要加入后处理过程,对运动目标与阴影进行有效地分离,最终得到改善ViBe算法提升检测前景像素点的有效性。使用ViBe算法对图1(b)进行背景更新和检测运动目标时,大量行人同时出现会导致阴影区域检测为运动像素,极大地影响了前景目标检测的效果。怎样实现高效分离运动目标与阴影,这个问题是ViBe算法在未来需要解决的。
ViBe算法相较于其他运动目标检测算法已经有了较大的进步,如可以快速完成首帧图像的处理后进行背景模型的构筑,按照一定原则进行背景像素点的迭代进而完成背景模型的更新。当然ViBe算法仍然有许多不足需要改进,如怎样实现对于鬼影区域的快速消除,通过怎样的方法可以削弱运动目标的阴影对于前景检测的影响。
运动目标检测与跟踪技术是这个时代所需要的,必然会随着时代不断发展,从当下应用的情况预测,ViBe算法在未来必定会继续提高在空管智能监控场景下的适应度,最终达成使用ViBe算法在不同类型的智能机房完成运动目标检测与跟踪的任务,这是ViBe算法未来研究的重要方向。以下是ViBe算法亟待解决的两个实际问题,可以作为本文未来继续研究方向。
(1)ViBe算法进行分析和处理的视频序列都是来自无法进行动态目标捕捉的固定视频采集设备,然而在许多基于视觉系统的实际应用中,例如机器人按照所采集到的视频信息进行下一步动作时,必然采用可移动的视频检测设备,这对于ViBe算法能否快速实现背景的快速生成并分离出前景是巨大的挑战。能否解决动态视频采集的问题,对于视觉技术是一个巨大挑战,后期将改进算法来进行相关的研究。
(2)基于ViBe算法对于运动目标所检测的结果研究了两种状态,处于运动状态或者静止状态。在需要使用运动目标检测的生活场景中,例如在公共场合进行可疑人物的排查时,不仅需要检测运动目标的运动状态,更需要在检测到运动目标后对目标的行为进行分析,通过与AI算法的结合,使视觉系统可以理解运动目标的行为,提高系统的智能性。赋予运动目标检测技术理解检测目标的行为是未来的研究方向。