王文杰,楊 揚,王 玥
(西南交通大學 信息科學與技術學院,成都 611756)
計算機聯鎖系統是一種對車站內信號機、道岔和進路之間相互制約的邏輯關系進行統一管理(聯鎖控制),以保障站內行車安全的系統[1]。
計算機聯鎖系統按功能構成分為用戶操作交互的上位機顯示模塊、司職聯鎖控制邏輯的聯鎖處理模塊,以及與信號設備交互的采集驅動模塊[2]。上位機顯示模塊借助計算機圖文處理的強大功能,清晰準確地顯示了站場信號設備的拓撲結構、狀態信息、操作按鈕的設置與布置、站名和提示與報警信息[3]。當站場布置更換后,這些信息往往以一定的規律進行組織及更新。如果上位機界面顯示的判斷和分析邏輯能被總結和歸納,并整理為計算機處理語言,那么上位機操作人員的操作壓力可得到有效緩解。本文以《車站計算機聯鎖操作顯示技術規范》[3](簡稱:《顯示規范》)為依據,在對信號設備顯示特征進行量化分析的基礎上,提出了一種自動獲取站場信號平面布置概況的方法,即基于OpenCV的計算機聯鎖上位機界面圖像分析法。該方法利用開源的計算機視覺庫OpenCV(版本號為3.4.9)對上位機界面進行圖像分析,實現提取信號機、道岔等信號設備的屏幕坐標信息的功能。
由文獻[3]可知,列車信號機的狀態顯示燈位用2個圓形表示,按鈕用1~3個矩形表示,其中,1個矩形表示只有列車按鈕;2個矩形分別表示引導功能按鈕和列車按鈕;3個矩形分別表示通過功能按鈕、引導功能按鈕和列車按鈕。調車信號機的狀態顯示燈位用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表示圓形輪廓的半徑。
矩形輪廓的提取流程與圓形類似。文獻[3]指出,信號機按鈕的矩形輪廓一般為14像素×14像素的正方形,故將矩形輪廓面積門限值設為190,獲取剩余輪廓的最小包絡矩形,即包絡矩形的上下邊界處于水平方向,計算矩形輪廓面積和最小包絡矩形面積的比值;考慮允許誤差,設置一個合理的范圍,以篩選出類矩形輪廓,并保存矩形輪廓的頂點和長寬數據。
道岔是列車由一條線路轉到另一條線路的軌道連接設備[6]。根據定義可知,道岔一定位于兩條軌道之間。為了便于處理,將上位機界面中左右水平相連的共線軌道區段的集合稱為水平長軌道,例如,某站場有3條股道,那么至少有3條水平長軌道。因此,先確定上位機界面中水平長軌道輪廓的位置信息,為后續道岔的提取區域提供參考。
水平長軌道輪廓的提取流程如圖2所示,其中,部分步驟的說明具體如下。

圖2 水平長軌道輪廓提取流程
(1)獲取水平長軌道輪廓的凸包。輪廓的凸包常被用來簡化復雜的多邊形處理,凸包任意3個有序頂點構成的角度不會大于180°[4]。獲取長水平軌道輪廓的凸包對后續的道岔輪廓的提取十分有用。對于水平長軌道輪廓而言,獲取凸包可以使其更加平滑。
(2)獲取凸包的近似多邊形。雖然獲取輪廓的凸包簡化了原多邊形的處理,但是對于程序而言依然難以準確判斷當前輪廓的幾何形狀,因此需要對凸包做進一步的近似多邊形處理。在后續的道岔輪廓提取中,對凸包近似多邊形的提取能有效提高道岔輪廓提取的準確性。
對于水平長軌道輪廓而言,凸包的近似多邊形為一條水平直線。考慮到允許誤差,直線首尾兩端的屏幕縱坐標差值的范圍可以適當放寬,本文設置此允許誤差為5像素。在此基礎之上,本文將水平長軌道輪廓的長度門限為20像素。
需要注意的是,上述流程獲取的水平長軌道輪廓并不完整,這是因為站場還存在水平長軌道與單動道岔彎股相連的部分。因此,本文將對單動道岔輪廓進行提取。
與水平長軌道輪廓的提取類似,單動道岔輪廓的提取也遵循先獲取輪廓的凸包、后獲取凸包的近似多邊形的流程。根據單條軌道上單動道岔數量的不同,單動道岔可以分為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)保存提取結果。將梯形的兩條腰保存為兩個單動道岔輪廓,將更短的底邊保存為水平長軌道輪廓。
與單動道岔輪廓的提取類似,雙動道岔和交叉渡線輪廓的提取也是以自身的幾何抽象為依據,不同之處是后者的凸包近似多邊形并無規律可循。例如交叉渡線的幾何抽象可以是不規則的四邊形,又如雙動道岔上絕緣節長度的不同導致其幾何抽象為直線或是菱形。因此,雙動道岔和交叉渡線輪廓的提取在幾何特征上需要更嚴格的判斷條件,主要的提取思路分為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。
前2章處理得到的提取結果如圖14所示。由于處理標準比較松,提取結果引入了除信號機之外的圓形輪廓和矩形輪廓,如閉塞操作盤上的表示燈和按鈕。因此,本文將對所提取的基本圖元進行匹配和處理。

圖14 提取結果
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.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.計算輸入圖片與模板圖片的重疊比例。
以標準站的上位機界面為例,輸入圖片的分辨率為1 920像素×1080像素。各類信號機及其名稱的分析結果如圖16所示,各類道岔及其名稱的分析結果如圖17所示。

圖16 各類信號機及其名稱的分析結果

圖17 各類道岔輪廓及其名稱的分析結果
本文通過基于開源的OpenCV,對計算機聯鎖上位機界面各類信號設備的幾何特征進行量化分析,實現了自動獲取站場信號平面布置概況的功能,為聯鎖上位機操作的自動化提供了一條新的思路。