王文杰,楊 揚(yáng),王 玥
(西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,成都 611756)
計算機(jī)聯(lián)鎖系統(tǒng)是一種對車站內(nèi)信號機(jī)、道岔和進(jìn)路之間相互制約的邏輯關(guān)系進(jìn)行統(tǒng)一管理(聯(lián)鎖控制),以保障站內(nèi)行車安全的系統(tǒng)[1]。
計算機(jī)聯(lián)鎖系統(tǒng)按功能構(gòu)成分為用戶操作交互的上位機(jī)顯示模塊、司職聯(lián)鎖控制邏輯的聯(lián)鎖處理模塊,以及與信號設(shè)備交互的采集驅(qū)動模塊[2]。上位機(jī)顯示模塊借助計算機(jī)圖文處理的強(qiáng)大功能,清晰準(zhǔn)確地顯示了站場信號設(shè)備的拓?fù)浣Y(jié)構(gòu)、狀態(tài)信息、操作按鈕的設(shè)置與布置、站名和提示與報警信息[3]。當(dāng)站場布置更換后,這些信息往往以一定的規(guī)律進(jìn)行組織及更新。如果上位機(jī)界面顯示的判斷和分析邏輯能被總結(jié)和歸納,并整理為計算機(jī)處理語言,那么上位機(jī)操作人員的操作壓力可得到有效緩解。本文以《車站計算機(jī)聯(lián)鎖操作顯示技術(shù)規(guī)范》[3](簡稱:《顯示規(guī)范》)為依據(jù),在對信號設(shè)備顯示特征進(jìn)行量化分析的基礎(chǔ)上,提出了一種自動獲取站場信號平面布置概況的方法,即基于OpenCV的計算機(jī)聯(lián)鎖上位機(jī)界面圖像分析法。該方法利用開源的計算機(jī)視覺庫OpenCV(版本號為3.4.9)對上位機(jī)界面進(jìn)行圖像分析,實現(xiàn)提取信號機(jī)、道岔等信號設(shè)備的屏幕坐標(biāo)信息的功能。
由文獻(xiàn)[3]可知,列車信號機(jī)的狀態(tài)顯示燈位用2個圓形表示,按鈕用1~3個矩形表示,其中,1個矩形表示只有列車按鈕;2個矩形分別表示引導(dǎo)功能按鈕和列車按鈕;3個矩形分別表示通過功能按鈕、引導(dǎo)功能按鈕和列車按鈕。調(diào)車信號機(jī)的狀態(tài)顯示燈位用1個圓形表示。若沒有調(diào)車信號機(jī),則用1個矩形表示調(diào)車終端按鈕。
綜上可知,若想獲取信號機(jī)的設(shè)備信息,可以先提取其組成部分的基本圖元-圓形和矩形輪廓。
根據(jù)OpenCV的文檔說明,圖形輪廓被定義為有序的平面坐標(biāo)點的集合所呈現(xiàn)的曲線,這些輪廓的頂點一般用Vector容器來存放[4]。本文以上位機(jī)界面的圖形輪廓為基本分析對象,根據(jù)不同設(shè)備的幾何特征進(jìn)行判斷,并提取符合幾何特征的圖形輪廓。圓形輪廓的提取基本流程如圖1所示。
圖1 圓形輪廓提取流程
其中,部分步驟的解釋如下。
(1)二值化處理?;叶葓D像素點的取值范圍為0~255,設(shè)置灰度門限值為20,將灰度圖簡化為二值圖像,以便后續(xù)執(zhí)行形態(tài)學(xué)處理。
(2)形態(tài)學(xué)處理。使用OpenCV提供的開運(yùn)算和閉運(yùn)算,分別處理點燈的常亮燈位和滅燈燈位。對于二值圖像而言,開運(yùn)算的作用是移除圖像上較小的白色區(qū)域,保留更大的白色區(qū)域,以達(dá)到過濾亮點噪聲和分離白色區(qū)域的目的。閉運(yùn)算的作用正好相反,是將二值圖像中的白色區(qū)域融合,間接凸顯剩余的黑色區(qū)域。
(3)判斷是否符合圓形的幾何特征。由文獻(xiàn)[3]可知,信號機(jī)圓形輪廓的直徑一般為14像素,即圓形輪廓面積的最小值為49π,故將圓形輪廓的面積門限值設(shè)為150。為了獲取剩余輪廓的最小包絡(luò)圓,計算圓形輪廓面積和最小包絡(luò)圓面積的比值,設(shè)置此面積比例的門限值為0.5,以進(jìn)一步排除非圓形輪廓。最后,計算剩余輪廓的周長平方值和面積的比值[5],若為圓形輪廓,由公式(1)可知,此值為常數(shù),即4π。考慮到允許誤差,比例范圍可按4π的倍數(shù)進(jìn)行適當(dāng)放寬。
其中,C表示圓形輪廓的周長;S表示圓形輪廓的面積;R表示圓形輪廓的半徑。
矩形輪廓的提取流程與圓形類似。文獻(xiàn)[3]指出,信號機(jī)按鈕的矩形輪廓一般為14像素×14像素的正方形,故將矩形輪廓面積門限值設(shè)為190,獲取剩余輪廓的最小包絡(luò)矩形,即包絡(luò)矩形的上下邊界處于水平方向,計算矩形輪廓面積和最小包絡(luò)矩形面積的比值;考慮允許誤差,設(shè)置一個合理的范圍,以篩選出類矩形輪廓,并保存矩形輪廓的頂點和長寬數(shù)據(jù)。
道岔是列車由一條線路轉(zhuǎn)到另一條線路的軌道連接設(shè)備[6]。根據(jù)定義可知,道岔一定位于兩條軌道之間。為了便于處理,將上位機(jī)界面中左右水平相連的共線軌道區(qū)段的集合稱為水平長軌道,例如,某站場有3條股道,那么至少有3條水平長軌道。因此,先確定上位機(jī)界面中水平長軌道輪廓的位置信息,為后續(xù)道岔的提取區(qū)域提供參考。
水平長軌道輪廓的提取流程如圖2所示,其中,部分步驟的說明具體如下。
圖2 水平長軌道輪廓提取流程
(1)獲取水平長軌道輪廓的凸包。輪廓的凸包常被用來簡化復(fù)雜的多邊形處理,凸包任意3個有序頂點構(gòu)成的角度不會大于180°[4]。獲取長水平軌道輪廓的凸包對后續(xù)的道岔輪廓的提取十分有用。對于水平長軌道輪廓而言,獲取凸包可以使其更加平滑。
(2)獲取凸包的近似多邊形。雖然獲取輪廓的凸包簡化了原多邊形的處理,但是對于程序而言依然難以準(zhǔn)確判斷當(dāng)前輪廓的幾何形狀,因此需要對凸包做進(jìn)一步的近似多邊形處理。在后續(xù)的道岔輪廓提取中,對凸包近似多邊形的提取能有效提高道岔輪廓提取的準(zhǔn)確性。
對于水平長軌道輪廓而言,凸包的近似多邊形為一條水平直線。考慮到允許誤差,直線首尾兩端的屏幕縱坐標(biāo)差值的范圍可以適當(dāng)放寬,本文設(shè)置此允許誤差為5像素。在此基礎(chǔ)之上,本文將水平長軌道輪廓的長度門限為20像素。
需要注意的是,上述流程獲取的水平長軌道輪廓并不完整,這是因為站場還存在水平長軌道與單動道岔彎股相連的部分。因此,本文將對單動道岔輪廓進(jìn)行提取。
與水平長軌道輪廓的提取類似,單動道岔輪廓的提取也遵循先獲取輪廓的凸包、后獲取凸包的近似多邊形的流程。根據(jù)單條軌道上單動道岔數(shù)量的不同,單動道岔可以分為1個單動道岔和左右對稱的2個單動道岔。
2.2.1 1個單動道岔輪廓提取
1個單動道岔的原始輪廓、凸包和凸包的近似多邊形如圖3~圖5所示。通過對比分析可得,單動道岔可通過凸包的近似多邊形是否為三角形進(jìn)行初步篩選;然后,通過對三角形的3個頂點進(jìn)行判斷,來確定所篩三角形是否為單動道岔輪廓。
圖3 1個單動道岔的原始輪廓
圖4 1個單動道岔的凸包
圖5 1個單動道岔凸包的近似多邊形
(1)判斷水平底邊外的頂點。本文先對圖5所示的3個頂點按屏幕縱坐標(biāo)的坐標(biāo)值從小到大進(jìn)行排序,然后再對頂點1和頂點2、頂點2和頂點3這2組頂點的縱坐標(biāo)差值進(jìn)行比較,差值絕對值較小的一組為三角形水平底邊的2個頂點,另一個頂點記為VS。
(2)判斷單動道岔彎股輪廓的轉(zhuǎn)折點。以上位機(jī)界面的坐標(biāo)系為參考,分別計算VS與其它2個頂點的橫坐標(biāo)值的距離,距離較小的點為單動道岔彎股輪廓的轉(zhuǎn)折點,記為VE,將另一個的頂點記為VT。不難發(fā)現(xiàn),{VS→VE}為單動道岔的尖軌指向彎股方向輪廓,VEVT為水平長軌道輪廓。
(3)計算VEVT的斜率,驗證其合法性。當(dāng)VSVE的斜率存在且不為0時,才能保證所篩選的輪廓為單動道岔輪廓。
圖6所示的單動道岔處于特殊的初始狀態(tài)-進(jìn)站口有6‰°的下坡道,為了防止列車沖撞,2號道岔導(dǎo)向彎股一側(cè)的安全線。
對于圖6所示的道岔,1個單動道岔輪廓的提取流程雖然能獲取到本文方法所需的3個頂點,但是頂點VS存在一定偏差,這是因為在獲取凸包的過程中,由于彎股轉(zhuǎn)折點后方存在軌道而產(chǎn)生了偏離,如圖7所示。根據(jù)原始輪廓的數(shù)據(jù),本文對頂點VS進(jìn)行水平方向的偏移校正,并將校正前的頂點記為VF。
圖6 處于特殊狀態(tài)的單動道岔
圖7 原始狀態(tài)為彎股走向的單動道岔的凸包
綜上,頂點VS和VE分別表示單動道岔的尖軌起點和彎股轉(zhuǎn)折點,VEVT表示水平長軌道所在線段。對于前文所述的單動道岔的特殊情況,VFVS表示校正后水平長軌道所在線段。
2.2.2 左右對稱的2個單動道岔輪廓提取
左右對稱的2個單動道岔的原始輪廓、凸包和凸包的近似多邊形如圖8~圖10所示。通過對比分析可得,本文通過判斷輪廓的幾何特征是否為梯形,實現(xiàn)左右對稱的2個單動道岔輪廓的初步篩選,然后利用單動道岔輪廓的幾何特征展開進(jìn)一步判斷處理。
圖8 左右對稱的2個單動道岔的原始輪廓
圖9 左右對稱的2個單動道岔輪廓的凸包
圖10 左右對稱的2個單動道岔輪廓的凸包的近似多邊形
(1)左右對稱的2個單動道岔原始輪廓與凸包輪廓周長的對比。本文將左右對稱的2個單動道岔原始輪廓的周長記為COC,凸包輪廓的周長記為CCH,梯形中更長的底邊長度記為LGB。對比圖8和9可以發(fā)現(xiàn),對稱的2個單動道岔輪廓滿足公式(2)。本文將公式(2)的允許誤差設(shè)為5%。
(2)保存提取結(jié)果。將梯形的兩條腰保存為兩個單動道岔輪廓,將更短的底邊保存為水平長軌道輪廓。
與單動道岔輪廓的提取類似,雙動道岔和交叉渡線輪廓的提取也是以自身的幾何抽象為依據(jù),不同之處是后者的凸包近似多邊形并無規(guī)律可循。例如交叉渡線的幾何抽象可以是不規(guī)則的四邊形,又如雙動道岔上絕緣節(jié)長度的不同導(dǎo)致其幾何抽象為直線或是菱形。因此,雙動道岔和交叉渡線輪廓的提取在幾何特征上需要更嚴(yán)格的判斷條件,主要的提取思路分為3個層次逐步推進(jìn),具體如下。
2.3.1 站場范圍限制
通過2.1節(jié)和2.2節(jié)的處理,站場的水平長軌道輪廓已基本獲取。本文對這些水平長軌道輪廓本文對這些水平長軌道輪廓按端點坐標(biāo)值的大小從上到下排序,并對每條長軌道的端點按從左往右方向進(jìn)行調(diào)整,分別提取上機(jī)位界面橫坐標(biāo)和縱坐標(biāo)的最值,并根據(jù)這4個數(shù)值計算出這些水平長軌道所在站場的矩形范圍。圖11以標(biāo)準(zhǔn)站為例,展示了站場的矩形范圍。
圖11 標(biāo)準(zhǔn)站的站場矩形范圍
對于上位機(jī)界面顯示的道岔,其輪廓必然落在圖11所示站場的矩形范圍內(nèi),因此,對凸包的近似多邊形的所有頂點進(jìn)行區(qū)域限制。
2.3.2 軌間區(qū)域限制
由道岔的定義可知,與道岔相連的2條軌道限制了道岔輪廓的位置區(qū)域。因此,在已提取的水平長軌道輪廓中獲取道岔輪廓縱軸的上下界限,具體步驟如下。
(1)獲取道岔最近的上下界限。根據(jù)道岔的定義,可以通過2條水平長軌道輪廓的在上位機(jī)界面橫坐標(biāo)交集范圍來確定道岔的出現(xiàn)區(qū)域,但是要注意道岔與上下軌道允許存在部分橫向重疊的特殊情況。如圖12所示,道岔15/17依然處于有效的軌間區(qū)域,即使其上邊界并未徹底覆蓋道岔的出現(xiàn)區(qū)域。
圖12 雙動道岔區(qū)域的特殊情況
(2)輪廓高度限制。先獲取道岔的原始輪廓在縱軸上的投影長度,后獲取輪廓所在軌間區(qū)域的高度,計算二者的比例。設(shè)置輪廓高度限制比例的門限值為0.5,以對數(shù)據(jù)進(jìn)一步篩選。
2.3.3 輪廓周長限制
將原始輪廓的周長記為COC,原始輪廓所在軌間區(qū)域的高度記為HT,則本文對于雙動道岔和交叉渡線輪廓的判斷標(biāo)準(zhǔn)分別為:
以圖12所示的雙動道岔區(qū)域的特殊情況為例進(jìn)行說明。將15和17號道岔兩端的尖軌頂點分別記為A0和B0,并延長A0B0,其延長線與上下軌道邊界分別相交于點A1和B1。本文過B1作下邊界的垂線,與下邊界相交于點C,如圖13所示。易知,直角三角形A1CB1滿足A1B1>B1C,根據(jù)道岔的長度特點滿足A0B0?(A1B1-A0B0),即2A0B0?A1B1>B1C,而COC≈2A0B0,HT≈B1C,故可知對于雙動道岔滿足HT<COC。
圖13 輪廓周長限制說明
交叉渡線輪廓可視為2條雙動道岔輪廓的組合,則此時有COC≈4A0B0>>2A1B1>2B1C≈2HT。為了提高判斷的準(zhǔn)確性,將交叉渡線的周長門限值設(shè)置為3HT。
前2章處理得到的提取結(jié)果如圖14所示。由于處理標(biāo)準(zhǔn)比較松,提取結(jié)果引入了除信號機(jī)之外的圓形輪廓和矩形輪廓,如閉塞操作盤上的表示燈和按鈕。因此,本文將對所提取的基本圖元進(jìn)行匹配和處理。
圖14 提取結(jié)果
3.1.1 合法數(shù)據(jù)篩選
以水平長軌道輪廓在上位機(jī)界面的縱坐標(biāo)為基準(zhǔn),以上下浮動軌道間距高度的一半作為限制信號機(jī)的出現(xiàn)區(qū)間;再通過水平長軌道輪廓起點和終點的橫坐標(biāo)進(jìn)一步縮小區(qū)間,以篩選提取結(jié)果中的圓形輪廓和矩形輪廓。
3.1.2 信號機(jī)性質(zhì)區(qū)分
完成3.1.1節(jié)的篩選后,本文對合法數(shù)據(jù)進(jìn)行區(qū)分,主要步驟如下。
(1)若圓形Ci與相鄰的圓形Ci-1和Ci+1均不相切,則圓形Ci被認(rèn)為是調(diào)車信號機(jī)的燈位,判斷結(jié)束進(jìn)入下一輪區(qū)分。
(2)若圓形Ci與前后相鄰的圓形Ci-1或Ci+1之間相切,且圓心水平共線,則相切的2個圓形可被視為列車信號機(jī)的2個燈位,則進(jìn)入下一步的區(qū)分。
(3)本文主要以矩形按鈕的個數(shù)為依據(jù)來區(qū)分列車信號機(jī),具體如下。
a.圓形輪廓附近只有1個矩形輪廓,本文判為出站信號機(jī)。
b.圓形輪廓附近只有2個矩形輪廓,本文判為具有引導(dǎo)按鈕的進(jìn)站信號機(jī)。
c.圓形輪廓附近只有3個矩形輪廓,本文判為具有通過按鈕和引導(dǎo)按鈕的進(jìn)站信號機(jī)。
(4)若存在不依附于任何圓形輪廓的矩形輪廓,如變通按鈕、調(diào)車終端按鈕等,本文將其判為特殊按鈕以作備用。
3.2.1 目標(biāo)區(qū)域選擇
本文以各類信號設(shè)備的名稱顯示位置特點[7-8]為依據(jù),分別給出大致的名稱目標(biāo)區(qū)域范圍。
(1)信號機(jī)
判斷信號機(jī)與相鄰軌道的位置,若信號機(jī)位于相鄰軌道的上方,則名稱目標(biāo)區(qū)域大概率會落在信號機(jī)的上方;反之則落在信號機(jī)的下方。
(2)單動道岔
單動道岔的名稱既可以位于尖軌附近的軌道一側(cè),也可以位于尖軌的岔前。
(3)雙動道岔和交叉渡線
與單動道岔的情況類似,雙動道岔的名稱目標(biāo)區(qū)域只是增加了道岔另一端的位置候選。交叉渡線可以看作2條雙動道岔的組合。
(4)特殊按鈕
本文將特殊按鈕上方區(qū)域作為名稱可能出現(xiàn)的目標(biāo)區(qū)域。
3.2.2 字符模板匹配
本文使用單個英文字母和阿拉伯?dāng)?shù)字的字符模板圖片對各個名稱目標(biāo)區(qū)域進(jìn)行匹配,設(shè)備名稱字符匹配的主要流程如圖15所示。其中,部分步驟說明如下。
圖15 設(shè)備名稱的字符匹配流程
(1)獲取連通的輪廓區(qū)域。借助OpenCV自帶的連通區(qū)域分析(CCA,Connected Component Analysis)[4]算法對輸入的名稱目標(biāo)區(qū)域圖片進(jìn)行字符的逐個分離提取,并將提取的字符作為下一步字符匹配的輸入。
(2)對比字符模板。a.將待匹配的輸入圖片縮放為80像素×80像素的統(tǒng)一尺寸;b.將輸入與模板圖片進(jìn)行異或運(yùn)算。由于二者均是二值圖片,像素點灰度值的異或運(yùn)算結(jié)果只有0和255這2種情況;c.計算輸入圖片與模板圖片的重疊比例。
以標(biāo)準(zhǔn)站的上位機(jī)界面為例,輸入圖片的分辨率為1 920像素×1080像素。各類信號機(jī)及其名稱的分析結(jié)果如圖16所示,各類道岔及其名稱的分析結(jié)果如圖17所示。
圖16 各類信號機(jī)及其名稱的分析結(jié)果
圖17 各類道岔輪廓及其名稱的分析結(jié)果
本文通過基于開源的OpenCV,對計算機(jī)聯(lián)鎖上位機(jī)界面各類信號設(shè)備的幾何特征進(jìn)行量化分析,實現(xiàn)了自動獲取站場信號平面布置概況的功能,為聯(lián)鎖上位機(jī)操作的自動化提供了一條新的思路。