王 玥,楊 揚
(西南交通大學 信息科學與技術學院,成都 611756)
計算機聯鎖系統是保障行車安全和提高運輸效率的車站信號控制系統之一[1],聯鎖軟件作為系統核心,在投入使用前需經過嚴格的審核和測試。關于軟件測試通常有人工測試和自動測試2 種方式。
文獻[2—5]在已知站場數據的情況下,分別基于腳本驅動生成測試用例,采用形式化工具編制測試腳本,應用等價類劃分與故障樹分析法編寫測試用例,采用I/O 接口仿真技術,從不同方面對提高計算機聯鎖軟件測試自動化程度進行了研究。但以上方法中,站場數據依賴人工手動輸入,自動化水平不高。文獻[6—8]提出了基于信號平面布置圖提取站場數據的方法,但應用于計算機聯鎖軟件測試時,又需要將上位機界面轉換為平面布置圖,過程繁瑣、耗時耗力。
為了更好地解決以上問題,本文提出了基于OpenCVSharp 對上位機界面進行識別來自動提取站場數據的方法。該方法以《車站計算機聯鎖操作顯示技術規范》[9]為準則,以圖像識別相關理論為依據,應用OpenCVSharp 圖像識別技術對上位機界面進行識別處理,準確識別出信號機、道岔與軌道區段,從而自動提取相關鐵路站場數據。
鐵路站場數據自動提取方法整體研究思路,如圖1 所示。計算機聯鎖上位機界面將站場信息通過圖形化方式顯示,作為圖像識別系統的輸入;分析信號設備顯示特征,提煉關鍵信息并構建站場數據模型;研究學習圖像識別相關算法,對不同類型的信號設備進行識別試驗;結合設備的顯示特征,設計流程識別信號設備,并將提取的站場數據保存在數據模型中。
鐵路信號設備主要包括信號機、道岔和軌道電路,文獻[9]對各信號設備在計算機聯鎖上位機界面中的繪制特點作了明確規定。
(1)列車信號機(包括出站兼調車)采用雙燈位,即用2 個圓圈表示;調車信號機采用單燈位,即1 個圓圈表示;信號機基座采用1 段短豎線表示;高柱信號機在基座和圓圈之間增加1 段短橫線來表示燈柱;信號機名稱用銀白色表示。
(2)道岔斜線在屏幕中的傾斜角度宜一致,應提供道岔的狀態信息,如表示道岔開通位置的短線在道岔定位時顯示綠色,反位時顯示黃色等。
(3)軌道區段線條不能有明顯鋸齒,表示到發線的線條間距統一,應提供軌道區段空閑、占用等狀態信息,軌道區段名稱采用銀白色。
文獻[10]對道岔的凸包形狀進行了分析:單動道岔的凸包形狀為三角形和梯形,雙動道岔為斜直線,交叉渡線為菱形。
根據上述內容,本文對信號設備主要類型及顯示特征進行了分析總結,如表1 所示。

表1 信號設備主要顯示特征
站場數據主要描述鐵路信號設備的屬性信息,定義各類數據模型如下。
定義1:信號機數據模型Signal 由一個五元組
定義2:道岔數據模型Switch 由一個四元組
定義3:軌道區段數據模型Section 由一個六元組
在完成信號設備的識別后,設備屬性信息存儲在各類數據模型中,方便其他程序的調用。
C#相比于C++而言在對圖形用戶界面(GUI,Graphical User Interface)中的開發更具有便捷性。針對C#的計算機視覺庫主要有2 種:EmguCV 和OpenCVSharp,二者都提供了計算機視覺函數接口和一系列界面控件接口,但由于EmguCV 在使用時需要將C++封裝成動態鏈接庫在C#中調用,增加了軟件開發的難度,而OpenCVSharp 具有界面開發快、庫文件調用方便、安裝包小、商業應用友好等優點,因此本文采用OpenCVSharp 計算機視覺庫將圖像識別相關算法應用于聯鎖上位機界面,其中包括圖像預處理、形態學處理、HSV(Hue,Saturation,Value)顏色分割及模板匹配。
為了克服界面圖像中可能存在的模糊、噪聲等問題,需要對界面圖像進行預處理操作。聯鎖上位機界面圖像的預處理過程包括灰度變換、二值化和圖像濾波等。為了增強有關信息的可檢測性,本文對上位機界面采用加權平均值法進行灰度變換,可以將圖像的三通道轉換為單通道,進而將像素值限定在[0,255];采用固定閾值法進行二值變換,可以直接消除不滿足閾值條件的干擾信息;采用中值濾波法進行降噪處理可以消除圖像中的椒鹽噪聲。經過預處理后的界面圖像,如圖2 所示。

圖2 界面預處理后圖像
形態學處理的基礎是膨脹(Dilate)與腐蝕(Erode)的合理結合。其中,膨脹的作用就是在結構元素(Kernel)的約束下將與目標區域相接觸的背景合并到該目標物中。而腐蝕是膨脹的對偶運算,其作用是在結構元素的約束下消除目標區域的部分邊界點,使其邊界向內部收縮。由于界面設計人員繪制風格的不同,可能會出現信號機圓圈之間,或圓圈與燈柱之間存在間隙的情況。而間隙的存在會影響信號機的識別效果,因此本文提出用形態學運算對信號機進行連通處理,解決間隙問題,便于信號機的識別,信號機連通效果,如圖3 所示。

圖3 信號機連通處理
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 提取效果
模板匹配算法[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)所示。

式中:
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 信號機名稱模板匹配示例
綜合上述內容,現設計信號機、道岔和軌道區段的識別與數據提取流程,如圖8 所示。向圖像識別系統輸入上位機界面圖像后,通過圖像預處理,對圖像進行灰度變換、二值變換和中值濾波;針對不同信號設備分別進行識別處理,提取相關屬性數據并進行保存。

圖8 信號設備識別與數據提取流程
其中,不同的信號設備,識別算法的應用也有所不同。
(1)信號機(包含基座、燈柱、燈位)整體而言對顏色敏感度不高,且由于燈位之間的間隙問題,在對其進行識別時:①需要應用形態學處理實現連通化,隨后對連通區域進行輪廓檢測與面積計算,篩選出符合條件的連通域,此時由于列車信號機與調車信號機面積的差異性可確定出信號機類型屬性SigType;②由于信號機基座與禁止燈光的顏色特征較為明顯,可采用HSV 顏色分割技術提取基座中心與禁止燈光中心坐標,并對二者加以判斷可確定出信號機朝向SigDirection 與坐標屬性SigPosition,再通過輪廓檢測計算連通域長度便可確定高柱、矮型屬性SigTallLow;③利用模板匹配算法提取信號機名稱屬性SigName。
(2)道岔在界面中的顏色特征明顯,對其進行識別時:①采用HSV 顏色分割技術將道岔從界面中分離出來,可減少其他圖元信息的干擾;②運用形態學處理實現道岔線段的修復,再使用凸包提取與多邊形擬合可確定出道岔類型SwiType、開口方向SwiDirection 與坐標屬性SwiPosition;③利用模板匹配算法提取道岔名稱屬性SwiName。
(3)軌道區段部分處理同道岔:①采用HSV顏色分割技術將軌道區段與絕緣節從界面中分離出來,運用形態學處理將斷連直線段合并為長軌條,并將絕緣節重繪至長軌條實現軌道區段的正確劃分;②設計處理邏輯實現軌道區段類型SecType 與坐標屬性SecPosition 的提??;③利用模板匹配算法提取軌道區段名稱屬性SecName。
根據上述站場數據自動提取方法,在Visual Studio 2017 環境下,采用C#語言開發了鐵路站場數據自動提取軟件。軟件輸入原圖像,如圖9 所示。信號設備識別與站場數據提取結果,如圖10、圖11所示。通過識別測試,獲得軟件識別率,如表2 所示。從識別效果來看,當設備名稱與設備本體相連時,由于粘連問題,識別結果會產生較大誤差。此時可考慮進一步分割圖像,增加識別準確性。

表2 信號設備識別率

圖9 上位機界面原圖

圖10 信號設備識別結果

圖11 站場數據提取結果
本文提出了一種鐵路站場數據自動提取方法,基于圖像識別技術,實現了聯鎖上位機界面中信號機、道岔以及軌道區段的識別與屬性數據提取。經實驗驗證,該方法可解決計算機聯鎖自動測試軟件所需的站場數據依賴人工手動輸入的問題,但當設備名稱與設備本體相粘連時,軟件識別結果會產生較大誤差,此時還應根據實際情況做進一步調整。