计算机联锁系统是保障行车安全和提高运输效率得车站信号控制系统之一[1],联锁软件作为系统核心,在投入使用前需经过严格得审核和测试。关于软件测试通常有人工测试和自动测试2种方式。
文献[2—5]在已知站场数据得情况下,分别基于脚本驱动生成测试用例,采用形式化工具编制测试脚本,应用等价类划分与故障树分析法编写测试用例,采用I/O接口仿真技术,从不同方面对提高计算机联锁软件测试自动化程度进行了研究。但以上方法中,站场数据依赖人工手动输入,自动化水平不高。文献[6—8]提出了基于信号平面布置图提取站场数据得方法,但应用于计算机联锁软件测试时,又需要将上位机界面转换为平面布置图,过程繁琐、耗时耗力。
为了更好地解决以上问题,感谢提出了基于OpenCVSharp对上位机界面进行识别来自动提取站场数据得方法。该方法以《车站计算机联锁操作显示技术规范》[9]为准则,以图像识别相关理论为依据,应用OpenCVSharp图像识别技术对上位机界面进行识别处理,准确识别出信号机、道岔与轨道区段,从而自动提取相关铁路站场数据。
1. 研究思路铁路站场数据自动提取方法整体研究思路,如图1所示。计算机联锁上位机界面将站场信息通过图形化方式显示,作为图像识别系统得输入;分析信号设备显示特征,提炼关键信息并构建站场数据模型;研究学习图像识别相关算法,对不同类型得信号设备进行识别试验;结合设备得显示特征,设计流程识别信号设备,并将提取得站场数据保存在数据模型中。
图 1 研究思路
下载: 全尺寸支持 幻灯片
2. 信号设备显示特征与数据模型2.1 显示特征分析铁路信号设备主要包括信号机、道岔和轨道电路,文献[9]对各信号设备在计算机联锁上位机界面中得绘制特点作了明确规定。
(1) 列车信号机(包括出站兼调车)采用双灯位,即用2个圆圈表示;调车信号机采用单灯位,即1个圆圈表示;信号机基座采用1段短竖线表示;高柱信号机在基座和圆圈之间增加1段短横线来表示灯柱;信号机名称用银白色表示。
(2)道岔斜线在屏幕中得倾斜角度宜一致,应提供道岔得状态信息,如表示道岔开通位置得短线在道岔定位时显示绿色,反位时显示黄色等。
(3)轨道区段线条不能有明显锯齿,表示到发线得线条间距统一,应提供轨道区段空闲、占用等状态信息,轨道区段名称采用银白色。
文献[10]对道岔得凸包形状进行了分析:单动道岔得凸包形状为三角形和梯形,双动道岔为斜直线,交叉渡线为菱形。
根据上述内容,感谢对信号设备主要类型及显示特征进行了分析总结,如表1所示。
表 1 信号设备主要显示特征
设备种类 | 类型 | 特征 |
信号机 | 列车型 | 面积:100π+50 |
禁止灯光:红色 | ||
调车型 | 面积:50π+50 | |
禁止灯光:蓝色 | ||
道岔 | 单动道岔 | 线条颜色:浅蓝色 |
凸包形状:三角形、梯形 | ||
双动道岔 | 线条颜色:浅蓝色 | |
凸包形状:斜直线 | ||
交叉渡线 | 线条颜色:浅蓝色 | |
凸包形状:菱形 | ||
轨道区段 | 股道 | 线条颜色:浅蓝色 |
上、下方设有列车信号机 | ||
无岔区段 | 线条颜色:浅蓝色 | |
轨条内无道岔状态表示块 | ||
道岔区段 | 线条颜色:浅蓝色 | |
轨条内含道岔状态表示块 |
下载: 导出CSV | 显示表格
2.2 数据模型构建站场数据主要描述铁路信号设备得属性信息,定义各类数据模型如下。
定义1:信号机数据模型Signal由一个五元组<SigName,SigPosition,SigType,SigDirection,SigTallLow>组成。
定义2:道岔数据模型Switch由一个四元组<SwiName,SwiType,SwiDirection,SwiPosition>组成。
定义3:轨道区段数据模型Section由一个六元组<SecName,SecLeftPos,SecRightPos,SecBifNum,SecBifPoint,SecType>组成。
在完成信号设备得识别后,设备属性信息存储在各类数据模型中,方便其他程序得调用。
3. 图像识别算法与试验C#相比于C++而言在对图形用户界面(GUI ,Graphical User Interface)中得开发更具有便捷性。针对C#得计算机视觉库主要有2种:EmguCV和OpenCVSharp,二者都提供了计算机视觉函数接口和一系列界面控件接口,但由于EmguCV在使用时需要将C++封装成动态链接库在C#中调用,增加了软件开发得难度,而OpenCVSharp具有界面开发快、库文件调用方便、安装包小、商业应用友好等优点,因此感谢采用OpenCVSharp计算机视觉库将图像识别相关算法应用于联锁上位机界面,其中包括图像预处理、形态学处理、HSV(Hue, Saturation, Value)颜色分割及模板匹配。
3.1 图像预处理为了克服界面图像中可能存在得模糊、噪声等问题,需要对界面图像进行预处理操作。联锁上位机界面图像得预处理过程包括灰度变换、二值化和图像滤波等。为了增强有关信息得可检测性,感谢对上位机界面采用加权平均值法进行灰度变换,可以将图像得三通道转换为单通道,进而将像素值限定在[0,255];采用固定阈值法进行二值变换,可以直接消除不满足阈值条件得干扰信息;采用中值滤波法进行降噪处理可以消除图像中得椒盐噪声。经过预处理后得界面图像,如图2所示。
图 2 界面预处理后图像
下载: 全尺寸支持 幻灯片
3.2 形态学处理形态学处理得基础是膨胀(Dilate)与腐蚀(Erode)得合理结合。其中,膨胀得作用就是在结构元素(Kernel)得约束下将与目标区域相接触得背景合并到该目标物中。而腐蚀是膨胀得对偶运算,其作用是在结构元素得约束下消除目标区域得部分边界点,使其边界向内部收缩。由于界面设计人员绘制风格得不同,可能会出现信号机圆圈之间,或圆圈与灯柱之间存在间隙得情况。而间隙得存在会影响信号机得识别效果,因此感谢提出用形态学运算对信号机进行连通处理,解决间隙问题,便于信号机得识别,信号机连通效果,如图3所示。
图 3 信号机连通处理
下载: 全尺寸支持 幻灯片
3.3 HSV颜色分割HSV颜色分割要基于HSV色彩空间,引入HSV空间对图像进行分析可以将亮度从色彩中分解出来,在图像增强算法中用途很广泛。在联锁上位机界面中,各信号设备得显示都是由3种基色红(R)、绿(G)、蓝(B)相互以一定得比例复合而成,每像素颜色有256×256×256个取值,对于颜色相近得图元来说,很难在RGB空间中进行准确得分割。但在HSV色彩空间中,彩色图像主要由色调(Hue)、饱和度(Saturation)和明度(Value)3部分组成,如图4所示。
图 4 HSV色彩空间
其中,H值将色域范围限定在0~360°,每一种颜色均有确定得色域值,S与V值仅改变了颜色得饱和度与明亮度。因此感谢提出用HSV颜色分割技术来初筛颜色特征明显得信号设备。
由表1可知,道岔和轨道区段得线条颜色均为浅蓝色,在用HSV颜色分割技术进行提取时,可以减少界面中其余颜色相近图元得干扰。道岔和轨道区段得HSV提取效果,如图5所示。
图 5 道岔与轨道区段HSV提取效果
3.4 模板匹配模板匹配算法[11]在图像处理中通常被应用于字符识别,而字符识别算法也不仅限于模板匹配,应用较为广泛得还有人工神经网络(ANN,Artificial Neural Network)与支持向量机(SVM,Support Vector Machine)算法,这2种算法在识别率和识别时间上均优于模板匹配算法,但都需提前进行大量样本字符得训练,更适合对复杂文本进行识别。在上位机界面中,设备名称通常仅由字母和数字组成,构成简单,从软件设计成本考虑无需采用ANN或SVM,因此感谢采用模板匹配算法对信号设备名称进行识别。
3.4.1 算法原理匹配原理示意,如图6所示,用模板图像在输入图像中从左到右,从上到下进行遍历,并在遍历过程中实时计算匹配度,匹配度越大则模板图像与输入图像相同得可能性越大。
图 6 模板匹配示意
3.4.2 归一化相关系数匹配OpenCVSharp中提供了cv::matchTemplate()函数来实现匹配度计算,归一化相关系数匹配法是该函数所支持得匹配方式之一,当模板图像与输入图像完全匹配时结果为1,完全负相关匹配时结果为−1,完全不匹配则结果为0。
相关系数匹配使用原图像与其均值得差、模板图像与其均值得差二者之间得相关性进行匹配,并在该基础上做了归一化处理,匹配度R(x,y)得计算,如式(1)所示。
R(x,y)=∑x′,y′T(x′,y′)⋅I(x+x′,y+y′)−1w⋅h∑x′,y′T(x′,y′)⋅∑x′,y′I(x+x′,y+y′)∑x′,y′T2(x′,y′)−1w⋅h(∑x′,y′T(x′,y′))2−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−⎷⋅∑x′,y′I2(x+x′,y+y′)−1w⋅h(∑x′,y′I(x+x′,y+y′))2−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−⎷R(x,y)=∑x′,y′T(x′,y′)⋅I(x+x′,y+y′)−1w⋅h∑x′,y′T(x′,y′)⋅∑x′,y′I(x+x′,y+y′)∑x′,y′T2(x′,y′)−1w⋅h(∑x′,y′T(x′,y′))2⋅∑x′,y′I2(x+x′,y+y′)−1w⋅h(∑x′,y′I(x+x′,y+y′))2 | (1) |
式中:
T与 I 分别为模板图像与原图像得矩阵;
R(x,y)为匹配度;
(x,y)为当前遍历区域在 I 矩阵中左上角元素坐标;
T(x’,y’)为 T 矩阵中对应坐标得元素值;
I(x’,y’)为 I 矩阵中对应坐标得元素值;
w与h分别为模板图像得宽与高。
对于T 覆盖在I上得每个位置,将产生一个匹配度R(x,y),并保存在结果矩阵R中。当 I 被 T 遍历完毕时,需要使用cv::minMaxLoc()寻找R中得蕞大值,该值越接近于1,匹配效果越好。应用模板匹配算法实现信号机名称识别示例,如图7所示。
图 7 信号机名称模板匹配示例
4. 自动提取站场数据4.1 流程设计综合上述内容,现设计信号机、道岔和轨道区段得识别与数据提取流程,如图8所示。向图像识别系统输入上位机界面图像后,通过图像预处理,对图像进行灰度变换、二值变换和中值滤波;针对不同信号设备分别进行识别处理,提取相关属性数据并进行保存。
图 8 信号设备识别与数据提取流程
其中,不同得信号设备,识别算法得应用也有所不同。
(1)信号机(包含基座、灯柱、灯位)整体而言对颜色敏感度不高,且由于灯位之间得间隙问题,在对其进行识别时:①需要应用形态学处理实现连通化,随后对连通区域进行轮廓检测与面积计算,筛选出符合条件得连通域,此时由于列车信号机与调车信号机面积得差异性可确定出信号机类型属性SigType;②由于信号机基座与禁止灯光得颜色特征较为明显,可采用HSV颜色分割技术提取基座中心与禁止灯光中心坐标,并对二者加以判断可确定出信号机朝向SigDirection与坐标属性SigPosition,再通过轮廓检测计算连通域长度便可确定高柱、矮型属性SigTallLow;③利用模板匹配算法提取信号机名称属性SigName。
(2)道岔在界面中得颜色特征明显,对其进行识别时:①采用HSV颜色分割技术将道岔从界面中分离出来,可减少其他图元信息得干扰;②运用形态学处理实现道岔线段得修复,再使用凸包提取与多边形拟合可确定出道岔类型SwiType、开口方向SwiDirection与坐标属性SwiPosition;③利用模板匹配算法提取道岔名称属性SwiName。
(3) 轨道区段部分处理同道岔:①采用HSV颜色分割技术将轨道区段与绝缘节从界面中分离出来,运用形态学处理将断连直线段合并为长轨条,并将绝缘节重绘至长轨条实现轨道区段得正确划分;②设计处理逻辑实现轨道区段类型SecType与坐标属性SecPosition得提取;③利用模板匹配算法提取轨道区段名称属性SecName。
4.2 软件实现结果与分析根据上述站场数据自动提取方法,在Visual Studio 2017环境下,采用C#语言开发了铁路站场数据自动提取软件。软件输入原图像,如图9所示。信号设备识别与站场数据提取结果,如图10、图11所示。通过识别测试,获得软件识别率,如表2所示。从识别效果来看,当设备名称与设备本体相连时,由于粘连问题,识别结果会产生较大误差。此时可考虑进一步分割图像,增加识别准确性。
图 9 上位机界面原图下载: 全尺寸支持 幻灯片
图 10 信号设备识别结果
图 11 站场数据提取结果
表 2 信号设备识别率
设备种类 | 识别率 |
信号机 | 93.2% |
道岔 | 95.6% |
轨道区段 | 98.1% |
感谢提出了一种铁路站场数据自动提取方法,基于图像识别技术,实现了联锁上位机界面中信号机、道岔以及轨道区段得识别与属性数据提取。经实验验证,该方法可解决计算机联锁自动测试软件所需得站场数据依赖人工手动输入得问题,但当设备名称与设备本体相粘连时,软件识别结果会产生较大误差,此时还应根据实际情况做进一步调整。