周瑞鸿,林俊亭
(1.兰州交通大学自动化学院,兰州 730070;2.甘肃省人工智能与图形图像处理工程研究中心,兰州 730070)
铁路现场施工过程中经常出现列车碰撞现场工作人员的事故,造成此类事故的主要原因是进行现场作业时,没有可靠的防护和预警系统。管理部门已经制定了严格的上线作业规范,但是在特殊情况下,如违规作业中,现场工作人员的安全很难得到保障。
高速铁路采用专用移动通信GSM-R(GSM for Railway)以及卫星导航系统GNSS(Global Navigation Satellite System)实现列车接近预警系统,实现与现有的信号设备相独立的防护[1-3],文献[4]利用雷达信号来检测作业防护区段运动物体,检测到有列车接近的信息驱动报警电路进行报警,现场工作人员听到报警器报警快速撤离危险区,有效地保证现场施工人员的安全,但是雷达检测信息的时候误警率比较高,雷达进行检测的时候通过发射电磁波和接受反射回来的电磁波信号判断是否有车辆驶入。雷达检测信号受电磁波波束角的影响,横向探测范围过大,会把不是防护轨上行驶的列车或者沿线的汽车也作为运动目标进行检测,必然出现误报警的情况。
近年来国内外对基于机器视觉的视频追踪以及视频检测技术开展了广泛的研究,各邻域对机器视觉的应用得到很大的发展。文献[5]通过概率框架建立所追踪的模型,利用本地似然函数实现信息的融合,最终实现多视角目标的视频追踪。文献[6]将Vibe经典算法进行改进,实现对监控视频中目标的选择性提取,然后对提取的目标进行分析,根据分析的结果对目标进行精确跟踪。
本文针对铁路现场作业的需求,提出一种基于光流法视频检测列车的防护策略。采用摄像头和图像硬件处理平台实现铁路现场的防护[7-8],对视频中的运动物体进行特征值提取[9],通过对运动物体的特征值分析,判断是否为钢轨上运动的列车。
基于光流法检测来车的铁路作业防护策略由摄像机和嵌入式硬件检测平台组成,系统的结构框图如图1所示。
图1 基于光流法检测来车的结构
设备的摄像头检测防护区段设计原理,如图2所示。作业人员在进行现场作业时,将设备放在施工现场的钢轨旁边,将摄像头通过拉杆升起来,摄像头距离地面的高度h可以调节,摄像头和水平方向的夹角α和β也可以通过设备进行调节,因此作业人员可以根据现场的实际情况对所防护的区段进行调节,提高了设备的灵活性和适应性。
图2 摄像头防护区段设计原理
设备所防护区段的范围H是由左边防护区h1和右边防护区h2两部分之和组成的,原理图中各个量之间的数学关系式为
h1=h/tanβ
(1)
h2=h/tanα
(2)
H=h1+h2
(3)
光流场[10-11]的计算方法很多,基于梯度的方法使用最广泛,此方法为了处理方便,以物体运动前后图像中的灰度保持不变作为条件,来导出光流约束方程,方程中含有二维坐标系中横轴(x轴运动速度)和纵轴(y轴运动速度)两个变量,用一个方程无法确定两个变量,需引入其他条件作为约束来确定光流,主要的约束方式有全局约束和局部约束。全局约束是假定物体运动前后整幅图像上的光流都不变化,局部约束是假定光流在图像上的某一区域不发生变化。
特征匹配和区域匹配是两种比较常见的方法,基于区域匹配是把图像分割为子块,利用一组简单的平移运动来等效复杂的运动,运动估计的依据是对图像中分割出的子块进行匹配,视频编码对此方法使用广泛。
基于能量的方法,首先通过时空整合对图像序列进行处理,时空整合后可以提高对速度估计的正确性,但是对图像序列时空整合后会降低时间和空间的分辨率,当同时存在多个运动物体时,估计精度也会很大程度的降低。并且,在进行滤波的过程中带来很大的运算问题。
基于相位的方法,通过带通滤波器输出图像中的相位特性,利用输出的相位特性来确定光流。以瞬时运动为定义分速度的依据,然后依据尺寸、速度和定向分离输入信号。
基于神经网络动力学的方法[14]目前还不太成熟,但是随着人工智能和生物视觉的研究不断发展,神经网络动力学必然会得到快速的发展,并且对光流的计算具有非常重要的意义。
本文基于梯度的方法基础上实现对图像中光流的计算,该方法是目前对光流的计算中比较主流的方法,可靠性较其他方法高,能较为准确地实现算法中对光流的计算。
假定图像[12]上像素为(x,y),该点在t时刻的灰度值为D(x,y,t),在t+dt时刻,该点运动到新的位置像素为(x+dx,y+dy),该点所对应的灰度值为D′(x+dx,y+dy,t+dt)。
根据数学微分思想,当dt→0时,D=D′。即
在图像灰度缓慢变化的情况下,将(x+dx,y+dy,t+dt)=(x,y,t)进行泰勒级数展开
D′(x+dx,y+dy,t+dt)≈D(x,y,t)+
(4)
dy,t+dt)-D(x,y,t)
(5)
又因为:D=D′
D′(x+dx,y+dy,t+dt)-D(x,y,t)=0
(6)
所以
(7)
等式左右两边同时除以dt,即
(8)
Dxu+Dyv+Dt=0
(9)
式中,Dx,Dy,Dt分别表示参考点灰度随x,y,t的变化率;u和v分别表示参考点沿着x和y方向的移动速度。
式(9)便是光流基本方程,写成向量的形式为
ΔD·u+Dt=0
(10)
式中,ΔD=[Dx,Dy]表示梯度方向;u=[u,v]T表示光流。
式(10)为该点像素值的光流约束方程。u和v组成一个二维平面坐标系,约束方程的u=[u,v]T都在式(9)这条直线上,如图3所示,该直线与梯度ΔD=[Dx,Dy]垂直。由于此方程中包含二维坐标系中横纵坐标两个未知数,一个方程式无法确定两个未知数,为求解光流场,必须添加新的约束条件。
图3 光流基本方程所确定的约束线
(1)运动场平滑
假定光流在图像中是平滑变化的。即运动场既可以满足约束方程,也可以符合全局平滑性。将光滑性测度和加权微分约束测度进行结合,通过设置加权参数平衡约束微分和光滑性微分。
(2)预测校正
通过对光流的估计实现运动物体的运动预测和校正。假设在一个很小的区域内运动矢量不发生变化,利用数学中最小二乘法的思想估计光流值,这是在像素的基础上对光流进行计算,实现在图像中利用像素值对运动物体进行预测估计。
(3)平滑约束
平滑约束是由Nagel提出的一种面向平滑的约束,这种方式并没有将约束放在梯度变化最剧烈的方向,这样便可以有效地处理视频图像中对运动物体与所在背景中存在的遮挡。
算法主要是对铁路作业现场进行视频实时检测,基于光流场的铁路作业现场车辆检测算法,通过现场拍摄的视频验证了该算法的可行性,在检测到的视频中,可以检测到视频中的运动物体,并且对捕捉到的运动物体进行区分和识别[13]。
模式识别是指对事物或现象所携带的信息进行描述、辨别、分类和解释[14]。本文选取向量机SVM(SupportVectorMachine)机器学习方法[15,16]来实现区分行进中的列车及其他运动物体,此方法具有针对小样本数据学习的优势、预测算法简单、容易移植和鲁棒性较好的特点。
基于光流场的视频检测运动物体的步骤如图4所示。
图4 光流法检测运动物体的步骤
首先,对采集到的视频信息进行读取,然后将其转化为灰度图后进行光流场计算,对光流场的阀值进行分割得到二值图像,如果光流场某个位置的阀值很大,说明有运动物体;利用形态学滤波、腐蚀和关闭对分割图形进行处理,统计行人、汽车和火车等不同对象的位置[17]及面积,通过面积的比例判断是否为钢轨上行驶的列车,如果检测结果为列车,内部ARM处理器分析后将下达电流信号,触发报警继电器落下(为了满足《技规》中“故障-安全”的原则,本文设计的报警电路中将报警继电器的后接点接入报警电路的控制电路中,避免由于继电器不能准确动作而影响整个系统可靠性的情况,若继电器不能吸起时,继电器的后接点接通报警电路,提醒工作人员维修设备,从而实现整个系统的自检功能),从而接通报警电路进行报警,如果判断为其他运动物体,则进行下一帧图像的检测。基于光流法检测列车流程如图5所示。
图5 基于光流法检测列车流程
本文选取基于梯度的方法计算光流,利用材质球图像序列分别将其他方法与本文选取的方法进行仿真比较,材质球做逆时针旋转运动,利用不同方法计算光流的实验结果如图6所示。表1为本文使用的梯度算法与其他两种算法的误差结果对比。
图6 视频光流
表1 图像序列计算结果及误差对比
图6(a)为图像序列的第7帧,图6(b)为基于匹配的方法计算光流场,结合表1中的数据可知,该计算方法中平均角误差比较大。图6(c)为基于能量的方法计算光流,可以看出,光流向周围失真,并且通过表1中的数据看出,该计算方法的标准角误差比较大,说明平均角误差的波动性比较大。图6(d)为基于梯度的方法计算光流,可以看出,光流矢量比较清晰,而且结合表1中的数据可知其平均角误差比较小,而且波动性很小,就有很好的稳定性,所以本文采用基于梯度的方法来计算光流。
本文对铁路作业现场拍摄的视频进行仿真实验,仿真结果见图7。由实验结果可知,本文的算法是基于光流法检测来车的铁路作业防护,检测铁路现场防护区段行驶车辆,取代目前人工防护和基于雷达的铁路车辆检测方法,由实验结果可知,基于光流法的车辆运动检测,在检测铁路防护区段运动车辆方面效果较好,能够准确地检测出视频中的运动物体,并且可以根据运动物体判断是否为钢轨上运动的列车。本文采用两个摄像头分别对防护区段的上、下行方向进行实时检测,由于两个方向的检测以及报警方式完全相同,所以本文中以一个方向的检测结果为例来说明该模型的检测结果。
图7 基于光流法列车检测实验结果
图7(a)为原始视频,图7(b)为添加光流矢量的视频,给视频中运动物体进行光流标记,图7(c)为经过阀值分割和形态学滤波后的结果,可以看出能准确捕捉当前背景中的运动物体,视频左边有列车正在运动,所以此位置光流发生变化,视频右上方是北风吹动的树枝,所以该位置的光流也发生变化,用该算法计算列车和边框面积的百分比,当面积百分比大于35%时,判定运动物体为列车,图中检测到两处运动物体,其中左边物体的面积百分比接近35%,所以认为是列车,右上角运动物体的面积比没有达到预定的比值,所以没有判断为列车。图7(d)正确标识出列车的位置,通过SVM准确区分运动的树枝和运动的列车。
本文采用在实际铁路现场拍摄的多段视频进行实验,对不同角度以及同一场景下的不同运动物体进行提取,包括行进中的列车、旁线公路上的汽车和其他噪声(如:背景中有风时晃动的树叶、背景更新残影和其他旁线运动物体),检测结果见表2。
表2 运动物体检测实验结果
从3段现场拍摄的视频中共提取3 200不同样本,其中列车检测准确率为98.12%,漏检率为1.28%,误检率为1.06%。据统计,行进中的列车共有19次漏检,9次误检。在19次漏检中有11次为目标刚进入摄像机的拍摄范围,目标在视频中显示比较小,但是随着距离越来越近,也能够准确地检测出并且标定;8次为在列车与摄像机所在位置非常近的时候,此时列车在图像中的面积比例相当大,不过作为检测防护系统,这样的情况对系统有列车进入防护区段进行提前报警可靠性没有影响。9次误检中,有7次是与摄像机所在位置比较近物体,在图像中所占的面积比例比较大,风吹晃动的大树也被检测出;还有2次是旁线公路上出现堵车现象,把好几辆车连起来检测为列车,因为平时训练的样本与这几种情况的光流相似,所以SVM误检为列车。
旁线汽车检测共发生10次误检和16次漏检,10次误检中有8次是旁线汽车所在位置距离摄像头防护区段较远,汽车的行驶速度比较慢,和平时训练样本的光流相差较大,被误检为其他噪声;还有2次是旁线行驶的汽车长度大,并且持续直线行驶,与平时训练的列车样本光流相似,被SVM误检为列车。
其他噪声检测中16次误检和11次漏检,16次误检中有7次是距离摄像头较远的旁线运动物体误检为背景更新残影所造成的噪声,9次是将距离摄像头较远的较大移动物体误检为背景中晃动的树叶;11次漏检中有10次是背景中的树叶在视频中晃动幅度很小,并且距离摄像头较远;还有1次是将旁线运动的小物体,由于距离摄像头太远,没有检测到,但是如果运动物体运动到摄像头的合理位置,肯定也会检测到,并且这样的情况不影响本文防护系统的可靠性。
对于整个系统而言,本文所设计的策略能够增强人工防护的可靠性,还能避免雷达系统很高的误警率,可以在实际中应用。
根据现场的实际需求,将算法移植到ARM芯片中在嵌入式硬件平台具体实现,由于对铁路现场防护的实时性需求较高,采用的CCD摄像机最高采集频率是25帧/s,同时采用FPGA编程计数器和ARM内部定时器及计数器的方式对系统处理频率进行了测试,由测试结果得系统的平均处理频率达到13帧/s,单幅图像处理时间平均为0.079s。分析摄像头的可视距离、列车的长度、最高速度和旁线汽车的速度,可知该处理频率符合实时检测的条件。
设计了一种基于光流法检测来车的铁路作业防护策略,通过摄像机对铁路防护区段进行实时监测,防止目前铁路作业中人工三点防护和雷达检测的不足,通过视频图像处理的方法,将作业现场进行实时监测,利用光流法对运动物体进行识别,同时根据运动物体在图像中的不同位置的面积比,实现对防护区段检测视频中运动物体的辨别,及时检测出驶入防护区段的列车,并且实时报警,提高作业人员的安全性。模拟实验表明,该算法可以准确监测出防护区段的行驶车辆,检测准确率比较高,可以准确区分铁路沿线行驶的汽车、行人以及视频中的其他运动物体,提高了铁路现场作业防护的可靠性。