基于OpenCV的计算机联锁上位机界面图像分析法
2021-09-11王文杰
王文杰,杨 扬,王 玥
(西南交通大学 信息科学与技术学院,成都 611756)
计算机联锁系统是一种对车站内信号机、道岔和进路之间相互制约的逻辑关系进行统一管理(联锁控制),以保障站内行车安全的系统[1]。
计算机联锁系统按功能构成分为用户操作交互的上位机显示模块、司职联锁控制逻辑的联锁处理模块,以及与信号设备交互的采集驱动模块[2]。上位机显示模块借助计算机图文处理的强大功能,清晰准确地显示了站场信号设备的拓扑结构、状态信息、操作按钮的设置与布置、站名和提示与报警信息[3]。当站场布置更换后,这些信息往往以一定的规律进行组织及更新。如果上位机界面显示的判断和分析逻辑能被总结和归纳,并整理为计算机处理语言,那么上位机操作人员的操作压力可得到有效缓解。本文以《车站计算机联锁操作显示技术规范》[3](简称:《显示规范》)为依据,在对信号设备显示特征进行量化分析的基础上,提出了一种自动获取站场信号平面布置概况的方法,即基于OpenCV的计算机联锁上位机界面图像分析法。该方法利用开源的计算机视觉库OpenCV(版本号为3.4.9)对上位机界面进行图像分析,实现提取信号机、道岔等信号设备的屏幕坐标信息的功能。
1 基本图元提取
由文献[3]可知,列车信号机的状态显示灯位用2个圆形表示,按钮用1~3个矩形表示,其中,1个矩形表示只有列车按钮;2个矩形分别表示引导功能按钮和列车按钮;3个矩形分别表示通过功能按钮、引导功能按钮和列车按钮。调车信号机的状态显示灯位用1个圆形表示。若没有调车信号机,则用1个矩形表示调车终端按钮。
综上可知,若想获取信号机的设备信息,可以先提取其组成部分的基本图元-圆形和矩形轮廓。
1.1 圆形轮廓提取
根据OpenCV的文档说明,图形轮廓被定义为有序的平面坐标点的集合所呈现的曲线,这些轮廓的顶点一般用Vector容器来存放[4]。本文以上位机界面的图形轮廓为基本分析对象,根据不同设备的几何特征进行判断,并提取符合几何特征的图形轮廓。圆形轮廓的提取基本流程如图1所示。
图1 圆形轮廓提取流程
其中,部分步骤的解释如下。
(1)二值化处理。灰度图像素点的取值范围为0~255,设置灰度门限值为20,将灰度图简化为二值图像,以便后续执行形态学处理。
(2)形态学处理。使用OpenCV提供的开运算和闭运算,分别处理点灯的常亮灯位和灭灯灯位。对于二值图像而言,开运算的作用是移除图像上较小的白色区域,保留更大的白色区域,以达到过滤亮点噪声和分离白色区域的目的。闭运算的作用正好相反,是将二值图像中的白色区域融合,间接凸显剩余的黑色区域。
(3)判断是否符合圆形的几何特征。由文献[3]可知,信号机圆形轮廓的直径一般为14像素,即圆形轮廓面积的最小值为49π,故将圆形轮廓的面积门限值设为150。为了获取剩余轮廓的最小包络圆,计算圆形轮廓面积和最小包络圆面积的比值,设置此面积比例的门限值为0.5,以进一步排除非圆形轮廓。最后,计算剩余轮廓的周长平方值和面积的比值[5],若为圆形轮廓,由公式(1)可知,此值为常数,即4π。考虑到允许误差,比例范围可按4π的倍数进行适当放宽。
其中,C表示圆形轮廓的周长;S表示圆形轮廓的面积;R表示圆形轮廓的半径。
1.2 矩形轮廓提取
矩形轮廓的提取流程与圆形类似。文献[3]指出,信号机按钮的矩形轮廓一般为14像素×14像素的正方形,故将矩形轮廓面积门限值设为190,获取剩余轮廓的最小包络矩形,即包络矩形的上下边界处于水平方向,计算矩形轮廓面积和最小包络矩形面积的比值;考虑允许误差,设置一个合理的范围,以筛选出类矩形轮廓,并保存矩形轮廓的顶点和长宽数据。
2 道岔、轨道和绝缘节轮廓提取
道岔是列车由一条线路转到另一条线路的轨道连接设备[6]。根据定义可知,道岔一定位于两条轨道之间。为了便于处理,将上位机界面中左右水平相连的共线轨道区段的集合称为水平长轨道,例如,某站场有3条股道,那么至少有3条水平长轨道。因此,先确定上位机界面中水平长轨道轮廓的位置信息,为后续道岔的提取区域提供参考。
2.1 水平长轨道轮廓提取
水平长轨道轮廓的提取流程如图2所示,其中,部分步骤的说明具体如下。
图2 水平长轨道轮廓提取流程
(1)获取水平长轨道轮廓的凸包。轮廓的凸包常被用来简化复杂的多边形处理,凸包任意3个有序顶点构成的角度不会大于180°[4]。获取长水平轨道轮廓的凸包对后续的道岔轮廓的提取十分有用。对于水平长轨道轮廓而言,获取凸包可以使其更加平滑。
(2)获取凸包的近似多边形。虽然获取轮廓的凸包简化了原多边形的处理,但是对于程序而言依然难以准确判断当前轮廓的几何形状,因此需要对凸包做进一步的近似多边形处理。在后续的道岔轮廓提取中,对凸包近似多边形的提取能有效提高道岔轮廓提取的准确性。
对于水平长轨道轮廓而言,凸包的近似多边形为一条水平直线。考虑到允许误差,直线首尾两端的屏幕纵坐标差值的范围可以适当放宽,本文设置此允许误差为5像素。在此基础之上,本文将水平长轨道轮廓的长度门限为20像素。
需要注意的是,上述流程获取的水平长轨道轮廓并不完整,这是因为站场还存在水平长轨道与单动道岔弯股相连的部分。因此,本文将对单动道岔轮廓进行提取。
2.2 单动道岔轮廓提取
与水平长轨道轮廓的提取类似,单动道岔轮廓的提取也遵循先获取轮廓的凸包、后获取凸包的近似多边形的流程。根据单条轨道上单动道岔数量的不同,单动道岔可以分为1个单动道岔和左右对称的2个单动道岔。
2.2.1 1个单动道岔轮廓提取
1个单动道岔的原始轮廓、凸包和凸包的近似多边形如图3~图5所示。通过对比分析可得,单动道岔可通过凸包的近似多边形是否为三角形进行初步筛选;然后,通过对三角形的3个顶点进行判断,来确定所筛三角形是否为单动道岔轮廓。
图3 1个单动道岔的原始轮廓
图4 1个单动道岔的凸包
图5 1个单动道岔凸包的近似多边形
(1)判断水平底边外的顶点。本文先对图5所示的3个顶点按屏幕纵坐标的坐标值从小到大进行排序,然后再对顶点1和顶点2、顶点2和顶点3这2组顶点的纵坐标差值进行比较,差值绝对值较小的一组为三角形水平底边的2个顶点,另一个顶点记为VS。
(2)判断单动道岔弯股轮廓的转折点。以上位机界面的坐标系为参考,分别计算VS与其它2个顶点的横坐标值的距离,距离较小的点为单动道岔弯股轮廓的转折点,记为VE,将另一个的顶点记为VT。不难发现,{VS→VE}为单动道岔的尖轨指向弯股方向轮廓,VEVT为水平长轨道轮廓。
(3)计算VEVT的斜率,验证其合法性。当VSVE的斜率存在且不为0时,才能保证所筛选的轮廓为单动道岔轮廓。
图6所示的单动道岔处于特殊的初始状态-进站口有6‰°的下坡道,为了防止列车冲撞,2号道岔导向弯股一侧的安全线。
对于图6所示的道岔,1个单动道岔轮廓的提取流程虽然能获取到本文方法所需的3个顶点,但是顶点VS存在一定偏差,这是因为在获取凸包的过程中,由于弯股转折点后方存在轨道而产生了偏离,如图7所示。根据原始轮廓的数据,本文对顶点VS进行水平方向的偏移校正,并将校正前的顶点记为VF。
图6 处于特殊状态的单动道岔
图7 原始状态为弯股走向的单动道岔的凸包
综上,顶点VS和VE分别表示单动道岔的尖轨起点和弯股转折点,VEVT表示水平长轨道所在线段。对于前文所述的单动道岔的特殊情况,VFVS表示校正后水平长轨道所在线段。
2.2.2 左右对称的2个单动道岔轮廓提取
左右对称的2个单动道岔的原始轮廓、凸包和凸包的近似多边形如图8~图10所示。通过对比分析可得,本文通过判断轮廓的几何特征是否为梯形,实现左右对称的2个单动道岔轮廓的初步筛选,然后利用单动道岔轮廓的几何特征展开进一步判断处理。
图8 左右对称的2个单动道岔的原始轮廓
图9 左右对称的2个单动道岔轮廓的凸包
图10 左右对称的2个单动道岔轮廓的凸包的近似多边形
(1)左右对称的2个单动道岔原始轮廓与凸包轮廓周长的对比。本文将左右对称的2个单动道岔原始轮廓的周长记为COC,凸包轮廓的周长记为CCH,梯形中更长的底边长度记为LGB。对比图8和9可以发现,对称的2个单动道岔轮廓满足公式(2)。本文将公式(2)的允许误差设为5%。
(2)保存提取结果。将梯形的两条腰保存为两个单动道岔轮廓,将更短的底边保存为水平长轨道轮廓。
2.3 双动道岔和交叉渡线轮廓提取
与单动道岔轮廓的提取类似,双动道岔和交叉渡线轮廓的提取也是以自身的几何抽象为依据,不同之处是后者的凸包近似多边形并无规律可循。例如交叉渡线的几何抽象可以是不规则的四边形,又如双动道岔上绝缘节长度的不同导致其几何抽象为直线或是菱形。因此,双动道岔和交叉渡线轮廓的提取在几何特征上需要更严格的判断条件,主要的提取思路分为3个层次逐步推进,具体如下。
2.3.1 站场范围限制
通过2.1节和2.2节的处理,站场的水平长轨道轮廓已基本获取。本文对这些水平长轨道轮廓本文对这些水平长轨道轮廓按端点坐标值的大小从上到下排序,并对每条长轨道的端点按从左往右方向进行调整,分别提取上机位界面横坐标和纵坐标的最值,并根据这4个数值计算出这些水平长轨道所在站场的矩形范围。图11以标准站为例,展示了站场的矩形范围。
图11 标准站的站场矩形范围
对于上位机界面显示的道岔,其轮廓必然落在图11所示站场的矩形范围内,因此,对凸包的近似多边形的所有顶点进行区域限制。
2.3.2 轨间区域限制
由道岔的定义可知,与道岔相连的2条轨道限制了道岔轮廓的位置区域。因此,在已提取的水平长轨道轮廓中获取道岔轮廓纵轴的上下界限,具体步骤如下。
(1)获取道岔最近的上下界限。根据道岔的定义,可以通过2条水平长轨道轮廓的在上位机界面横坐标交集范围来确定道岔的出现区域,但是要注意道岔与上下轨道允许存在部分横向重叠的特殊情况。如图12所示,道岔15/17依然处于有效的轨间区域,即使其上边界并未彻底覆盖道岔的出现区域。
图12 双动道岔区域的特殊情况
(2)轮廓高度限制。先获取道岔的原始轮廓在纵轴上的投影长度,后获取轮廓所在轨间区域的高度,计算二者的比例。设置轮廓高度限制比例的门限值为0.5,以对数据进一步筛选。
2.3.3 轮廓周长限制
将原始轮廓的周长记为COC,原始轮廓所在轨间区域的高度记为HT,则本文对于双动道岔和交叉渡线轮廓的判断标准分别为:
以图12所示的双动道岔区域的特殊情况为例进行说明。将15和17号道岔两端的尖轨顶点分别记为A0和B0,并延长A0B0,其延长线与上下轨道边界分别相交于点A1和B1。本文过B1作下边界的垂线,与下边界相交于点C,如图13所示。易知,直角三角形A1CB1满足A1B1>B1C,根据道岔的长度特点满足A0B0≫(A1B1-A0B0),即2A0B0≫A1B1>B1C,而COC≈2A0B0,HT≈B1C,故可知对于双动道岔满足HT<COC。
图13 轮廓周长限制说明
交叉渡线轮廓可视为2条双动道岔轮廓的组合,则此时有COC≈4A0B0>>2A1B1>2B1C≈2HT。为了提高判断的准确性,将交叉渡线的周长门限值设置为3HT。
3 数据处理与名称匹配
前2章处理得到的提取结果如图14所示。由于处理标准比较松,提取结果引入了除信号机之外的圆形轮廓和矩形轮廓,如闭塞操作盘上的表示灯和按钮。因此,本文将对所提取的基本图元进行匹配和处理。
图14 提取结果
3.1 组装信号机的灯位和按钮
3.1.1 合法数据筛选
以水平长轨道轮廓在上位机界面的纵坐标为基准,以上下浮动轨道间距高度的一半作为限制信号机的出现区间;再通过水平长轨道轮廓起点和终点的横坐标进一步缩小区间,以筛选提取结果中的圆形轮廓和矩形轮廓。
3.1.2 信号机性质区分
完成3.1.1节的筛选后,本文对合法数据进行区分,主要步骤如下。
(1)若圆形Ci与相邻的圆形Ci-1和Ci+1均不相切,则圆形Ci被认为是调车信号机的灯位,判断结束进入下一轮区分。
(2)若圆形Ci与前后相邻的圆形Ci-1或Ci+1之间相切,且圆心水平共线,则相切的2个圆形可被视为列车信号机的2个灯位,则进入下一步的区分。
(3)本文主要以矩形按钮的个数为依据来区分列车信号机,具体如下。
a.圆形轮廓附近只有1个矩形轮廓,本文判为出站信号机。
b.圆形轮廓附近只有2个矩形轮廓,本文判为具有引导按钮的进站信号机。
c.圆形轮廓附近只有3个矩形轮廓,本文判为具有通过按钮和引导按钮的进站信号机。
(4)若存在不依附于任何圆形轮廓的矩形轮廓,如变通按钮、调车终端按钮等,本文将其判为特殊按钮以作备用。
3.2 设备名称匹配
3.2.1 目标区域选择
本文以各类信号设备的名称显示位置特点[7-8]为依据,分别给出大致的名称目标区域范围。
(1)信号机
判断信号机与相邻轨道的位置,若信号机位于相邻轨道的上方,则名称目标区域大概率会落在信号机的上方;反之则落在信号机的下方。
(2)单动道岔
单动道岔的名称既可以位于尖轨附近的轨道一侧,也可以位于尖轨的岔前。
(3)双动道岔和交叉渡线
与单动道岔的情况类似,双动道岔的名称目标区域只是增加了道岔另一端的位置候选。交叉渡线可以看作2条双动道岔的组合。
(4)特殊按钮
本文将特殊按钮上方区域作为名称可能出现的目标区域。
3.2.2 字符模板匹配
本文使用单个英文字母和阿拉伯数字的字符模板图片对各个名称目标区域进行匹配,设备名称字符匹配的主要流程如图15所示。其中,部分步骤说明如下。
图15 设备名称的字符匹配流程
(1)获取连通的轮廓区域。借助OpenCV自带的连通区域分析(CCA,Connected Component Analysis)[4]算法对输入的名称目标区域图片进行字符的逐个分离提取,并将提取的字符作为下一步字符匹配的输入。
(2)对比字符模板。a.将待匹配的输入图片缩放为80像素×80像素的统一尺寸;b.将输入与模板图片进行异或运算。由于二者均是二值图片,像素点灰度值的异或运算结果只有0和255这2种情况;c.计算输入图片与模板图片的重叠比例。
4 分析结果—以标准站为例
以标准站的上位机界面为例,输入图片的分辨率为1 920像素×1080像素。各类信号机及其名称的分析结果如图16所示,各类道岔及其名称的分析结果如图17所示。
图16 各类信号机及其名称的分析结果
图17 各类道岔轮廓及其名称的分析结果
5 结束语
本文通过基于开源的OpenCV,对计算机联锁上位机界面各类信号设备的几何特征进行量化分析,实现了自动获取站场信号平面布置概况的功能,为联锁上位机操作的自动化提供了一条新的思路。