基于边缘计算的视频背景重建方法
须啸海 赵林 于慧
【摘? 要】基于当前物联网技术的应用趋势,论文研究了一种基于边缘计算的视频背景重建的方法,结合城市道路交通车流量实时监测的应用需求,通过实际的车流量视频数据进行算法的验证。同时,论文基于OpenCV构建边缘计算机器视觉应用引擎,将基于视频背景重建的算法向嵌入式实时处理系统移植,从而探索出通用机器视觉算法在边缘计算侧实现功能应用的方法,使得以模块化、软硬件系统低耦合度思想研发机器视觉应用成为可能。
【Abstract】Based on the current application trend of internet of things technology, this paper studies a method of video background reconstruction based on edge computing. Combined with the application requirements of urban road traffic flow real-time monitoring, the paper verifies the algorithm through actual video data of traffic flow. At the same time, this paper constructs the edge computing machine vision application engine based on OpenCV, transplants the algorithm based on video background reconstruction to the embedded real-time processing system, and explores the method of realizing the functional application of general machine vision algorithm in the edge computing side, which makes it possible to study and develop machine vision applications with the idea of modularization and low coupling of software and hardware systems.
【關键词】物联网;边缘计算;机器视觉;嵌入式系统;OpenCV
【Keywords】internet of things; edge computing; machine vision; embedded system; OpenCV
【中图分类号】TP391.4;TP312? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?【文献标志码】A? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?【文章编号】1673-1069(2021)01-0155-05
1 引言
城市交通信号灯控制是智能交通、智慧公路中一个非常重要的组成部分,目前存在的现象是路口的交通信号灯在固定的时间间隔进行切换,这个时间间隔往往是管理中心根据经过统计或经验进行设定,存在时间控制精度的缺陷,尤其在夜间存在交通信号灯按设定时间控制,但几乎没有车辆通过的现象,势必造成道路资源的浪费和造成更多的机动车尾气排放,为了解决这个现象,同时,结合物联网技术,研究一套基于边缘计算的机器视觉车流量计数系统,从而智能动态地控制交通信号灯系统,将能有效地解决存在的问题。本次研究中针对车流量的智能技术采用的是机器视觉背景差方法,其实现原理需要重建无车流的视频背景图像,本文就实现机器视觉的道路视频背景重建的算法进行探讨,以及通过边缘计算方法实现研究系统的移植是本次研究的主要目标,同时,可以找到其他智能型算法在边缘计算模式中的应用模式,对物联网系统边缘计算终端系统的开发具有重要的意义。
2 研究目标及方案
研究构建机器视觉边缘计算验证系统,移植OpenCV机器视觉库至边缘计算系统环境,结合应用背景重建方法,研究基于机器视觉算法重构视频监控道路背景,并在边缘计算嵌入式系统移植验证算法效果。
2.1 构建机器视觉边缘计算验证系统
本次研究内容为物联网边缘计算嵌入式系统,由于研究内容涵盖构建一套边缘计算系统,涉及软硬件,因此,采用系统总体设计、硬件平台的搭建研制及软件系统的开发的研发流程,如图1所示。
由嵌入式硬件系统和软件系统两部分组成算法验证系统,结构设计如图2所示。
2.1.1 功能验证系统的选型和搭建
本次研究的功能验证系统采用嵌入式处理器实现,分为控制使能部分和边缘计算部分,经过前期的调研采用Freescale i.MX6Q四核心处理器能胜任对图像处理实时算法的执行,因此,设计的边缘计算部分采用该处理器完成机器视觉背景重建测算法的功能,控制使能部分采用Freescale i.MX515单核心处理器,完成系统间数据通信、机电设备的控制,边缘计算部分和控制使能部分采用分布式思想独立运行,两部分的数据通信和控制协处理通过串行总线方式完成,采用这个思路的好处是通过执行业务和功能的清晰划分,避免了对软硬件资源的抢占,实现了控制和特殊应用算法的分离,大大增强了系统的扩展性、灵活性,同时,也保证了系统的稳定性。功能验证系统的设计如图3所示。
功能验证硬件系统的核心部分为边缘计算单元和控制使能单元,其中,边缘计算单元专门用于边缘算法的实现,同时,与控制使能单元进行相关数据的通信。控制使能单元负责整个嵌入式系统的运行、控制、通信和边缘计算单元协同。
2.1.2 软件系统的选型和搭建
在本次研究中,边缘计算软件系统是整个应用功能实现的关键,选择Linux为边缘计算终端的操作系统。系统环境的搭建包括嵌入式环境操作系统的搭建,涵盖系统引导驱动的移植、根文件系统的移植、操作系统的剪裁和移植及开发环境的建立、机电设备控制使能GPIO驱动开发、边缘计算单元与控制使能单元串口通信驱动的实现、基于发布和订阅模式的数据通信引擎的实现、OpenCV机器视觉框架的移植及边缘计算视频背景重建算法的实现。
2.2 OpenCV机器视觉库向边缘计算环境的移植
本次研究采用OpenCV库完成机器视觉处理算法,OpenCV库在图像智能识别方面的基础算法已经成熟,目前,图像处理和识别在嵌入式环境实现相关功能比较通用的做法是基于DSP微处理器完成算法的功能,DSP微处理器对于执行机器视觉算法十分高效,并且DSP处理器的设计方支持了OpenCV在DSP中的运行,但从成本和系统的可移植性方面考虑,DSP芯片不在本次研究中采用,因为本次研究的目标之一就是要实现一个可移植、跨平台的纯粹基于软件的机器视觉边缘计算模式,在微处理器的选择上也是以通用的ARM芯片来完成相应功能,但目前对OpenCV的移植缺少ARM环境的资料,因此,本次对OpenCV机器视觉算法库向ARM处理器的移植是技术难点,因此,本次研究选择OpenCV 2.4.11为机器视觉基础框架,处理器选择基于Cortex A9的Freescale i.MX 6Quad,目标是将OpenCV 2.4.11移植到Cortex A9环境下,在移植后的机器视觉库的基础上研发相关机器视觉算法,完成边缘计算的相关功能。
2.2.1 OpenCV在Cortex A9 ARM体系的嵌入式环境中的移植步骤
机器视觉交叉开发环境为Ubuntu 12.04,交叉编译器版本为:(gcc version 4.6.2 20110630 (prerelease)(Freescale MAD -- Linaro 2011.07 -- Built at 2011/08/10 09:20))。
①安装CMake二进制方式。
②安装CMake源码编译方式。
③安装交叉编译器。
④安装必备的依赖库文件。
这些依赖库文件是保障摄像头视频采集功能正常的必需条件,例如,使用OpenCv实现视频采集必须依赖FFmpeg库,因为OpenCV中用于操作视频文件的基类是基于FFmpeg、图像jpeg类型库、图像png类型库、图像tiff类型库。
⑤生成OpenCV编译Makefile文件。
⑥编译OpenCV源码。
⑦安装OpenCV。
⑧编写OpenCV测试应用程序。
2.2.2 交叉编译及测试
在交叉编译环境进行测试程序的编译,未出现错误信息且生产可执行文件,查看文件属性,“test: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped”,信息表明文件为32位ARM结构的动态链接模式的可执行程序。
2.3 重建实时视频道路背景
车流量监测算法主体思路是:首先,应用背景重建方法和基于t分布的变化检测结合重建监控视频背景;其次,使用背景抑制法提取监控的车辆目标和使用大津法确定图像分割的阈值,在车流监控视频中设置虚线框计数运动车流量。为保证目标识别的效果,需要实时更新道路背景,实际应用场景的道路背景如图4a所示,道路背景中会出现移动车流,研究目标是通过背景重建算法去除背景中的车辆目标,并实时更新道路背景如图4b所示,通过背景抑制算法识别出车辆目标如图4c所示,达到最终检测车流量的目的。
3 背景重建算法的实现
背景模型分为两类,即统计背景模型和确定背景模型。统计背景模型是把背景建模作为一个统计变量,需要把背景的每一个像素的灰度值确定出来。
背景重建可分为两部分:
①初始背景的建立;
②背景的更新。
由于在本文中道路场景存在非稳定因素,例如,雨、雾,因此,只建立初始背景模型。
3.1 建立背景模型
3.1.1 建立视频差模型
视频是由一帧帧的图片组成,图像由像素点矩阵组成,当视频中没有物体出现时相邻两帧图像内容几乎不发生变化,即图像矩阵中的像素点不发生变化。但实际上视频前后两帧图像在没有物体出现时,还是会有相应的差别,通過分析相邻两帧像素值发生变化即由运动对象或噪声引起的。摄像机是产生这种噪声的主要来源,这类噪声是一种各频谱分量服从均匀分布的白噪声,设其方差为σ。第i帧图像表示为:
其中,f1(x,y,i)为第i帧图像的实测值;noise(x,y,i)为随机噪声;f1(x,y,i)为第i帧图像的运算值。根据式(1)相邻帧差值可为:
其中,noise(x,y,i)和noise(x,y,i-1)分别为当前视频帧和后续相邻视频帧数据的噪声,其特点是随机变量、彼此独立、概率密度相同、加性高斯噪声、呈正态分布,因此,根据概率论两个噪声的运算diffnoise也呈正态分布。
3.1.2 背景重建算法原理
背景重建算法的关键点在于将背景点和非背景点准确地区分开来,研究一种方法判断背景像素点和非背景像素点,将视频流数据背景像素点数值存储下来最后统计平均,形成最后的重建背景图像。
通过MATLAB对采集的视频数据进行正态分布检验,采集视频数据呈现正态分布且方差未知,采用t分布对视频数据总体均值进行估计。因为每帧图像存在噪声影响,如果检测单像素点可能存在误差,为了提高检验的准确性,应对目标检测像素点邻域像素点进行检测。对视频中每一个像素点的变化情况可以用假设检验的方法来检测,假设第I帧视频图像中心像素点K(x,y)的临近区域为ω,大小为N×N,若为背景像素点,其相邻帧差均值为0,令原假设为H0:μx=0,备择假设为H1:μx≠0,其中μx为相邻帧差均值。本次研究为单样本,由于噪声未知,对样本随机变量的均值使用单样本t分布检验,根据t分布的定义构造标准随机变量t:
其中,N为选择的邻域维度值,显著水平α取值范围是10-1~10-3,根据实测调整具体值。
那么拒绝域为:
其中,N为选择的邻域维度值,根据式(7),在拒绝域以外的像素点是背景点,其他是非背景点。这样可以将非背景点准确地区分开来,从而保留背景点数据。
3.2 背景重建算法实现
对采集的视频帧彩色图像按R、G、B三个通道数据进行t分布检测,对每个通道内的当前像素值按检验规则进行背景点的保留,同时,过滤掉非背景点数据。
根据背景重建算法的原理编码实现的步骤如图5所示。
背景重建算法实现步骤为:
①建立两个二维数组,维度为图像大小,用于存放当前背景像素点计数和当前视频帧图像数据之和,其中数组下标为图像帧对应像素点的位置;
②读取视频的第一帧图像为基础图像数据;
③对于读取的后续帧图像数据,对当前帧图像中的每个待检像素点的3×3邻域像素点数据进行t分布检测,根据实验选择显著水平α为10-2,根据式(4)得临界值为3.3554,确定置信区间为-3.3554≤t≤3.3554;
④通过t分布检测过滤掉非背景像素点,保留背景像素点数据,同时,按R、G、B三通道分量分别累加和计数;
⑤按存储R、G、B三个分量总和值和计数值求重建像素点的均值;
⑥用相应点像素均值建立背景图像。
根据上述算法最后实验获得的重建背景效果图如图6所示。
根据实验的结果可以发现,重建的背景随着处理的帧数的增加质量会越来越高,处理时间会有所增加。
4 边缘计算系统的移植及测试
算法在Windows系统下完成功能开发,再向边缘计算嵌入式系统中进行移植,由于该算法运行在嵌入式Linux系统中,为了降低调试的难度,使开发的效率更高,需要在个人计算机上建立与检测单元嵌入式系统相同的Linux内核,达到移植到嵌入式系统中的移植效果。
4.1 移植方法及步骤
背景重建算法的移植方法和步骤如下:
①在运行于x86体系处理器Windows系统中将功能实现。在这个步骤中将目标实现功能完成,并进行调试达到正常运行的目标。
②在运行于x86体系处理器Linux系统中進行编译并运行测试。
③将功能算法交叉编译形成ARM体系结构的二进制可运行文件。
④移植到ARM体系处理器Linux系统中并运行测试。
在步骤①中,使用Visual Studio 2010+OpenCV 2.4.11编译,测试结果如图7所示。
4.2 使用系统整体验证
通过调试端口软件SecureCRT测试,结果如图8所示。
图8中左上为控制单元调试状态的数据输出结果,左下为算法单元车流量的检测结果,数据格式为通道编号和相应通过的车辆数目,右边为远程管理端的数据输出,实际在有限时间内的车流量数据如表1所示。
由表2可知,检测结果正确率100%。
5 结语
本文根据目前交通领域存在的问题为需求,提出一种基于边缘计算的t分布检验的视频图像背景重建方法,并通过依据原理到功能的实现并在实际的嵌入式系统中进行验证,总结得出以下结论:
①使用基于Cortex A9 Freescale i.MX 6Quad为嵌入式处理器,在执行较复杂的大规模矩阵运算、机器视觉算法、嵌入式大数据分析时,在实时性、准确性和可靠性上均能满足实测要求;
②将OpenCV计算机视觉库和机器学习软件库应用在物联网边缘计算领域可行,并且更加灵活、可移植性更强;
③本文研究内容没有采用常规的DSP信号处理方案,而采用通用的基于手机的处理器,并移植OpenCV机器视觉算法库,利用软件的方法解决复杂数据处理和运算的思路具有一定的创新性;
④成功构建了一套基于物联网边缘计算的嵌入式机器视觉应用的系统平台,可以非常便利地移植其他物联网边缘侧应用算法模块,可快速地形成物联网边缘计算应用产品;
⑤基于本次研究思路,可深入研究物联网边缘分布式计算的解决方法。
【参考文献】
【1】章毓晋.图像工程(上下册)——图像处理和分析[M].北京:清华大学出版社,1999.
【2】郁梅,蒋刚毅,郁伯康.智能交通系统中的计算机视觉技术应用[J].计算机工程与应用,2001(10):101-103+121.
【3】何斌,马天予,王运坚,等.Visual C++数字图像处理[M].北京:人民邮电出版社,2001.
【4】梅林,刘锋.基于边缘检测与垂直投影相结合的车牌定位方法[J].甘肃科技,2009,3(25):15-17.
【5】贺晓锋,杨玉珍,陈阳舟.基于视频图像处理的车辆排队长度检测[J].交通与计算机,2006,5(24):43-46.