王 玥,楊 揚
(西南交通大學 信息科學與技術(shù)學院,成都 611756)
計算機聯(lián)鎖系統(tǒng)是保障行車安全和提高運輸效率的車站信號控制系統(tǒng)之一[1],聯(lián)鎖軟件作為系統(tǒng)核心,在投入使用前需經(jīng)過嚴格的審核和測試。關(guān)于軟件測試通常有人工測試和自動測試2 種方式。
文獻[2—5]在已知站場數(shù)據(jù)的情況下,分別基于腳本驅(qū)動生成測試用例,采用形式化工具編制測試腳本,應用等價類劃分與故障樹分析法編寫測試用例,采用I/O 接口仿真技術(shù),從不同方面對提高計算機聯(lián)鎖軟件測試自動化程度進行了研究。但以上方法中,站場數(shù)據(jù)依賴人工手動輸入,自動化水平不高。文獻[6—8]提出了基于信號平面布置圖提取站場數(shù)據(jù)的方法,但應用于計算機聯(lián)鎖軟件測試時,又需要將上位機界面轉(zhuǎn)換為平面布置圖,過程繁瑣、耗時耗力。
為了更好地解決以上問題,本文提出了基于OpenCVSharp 對上位機界面進行識別來自動提取站場數(shù)據(jù)的方法。該方法以《車站計算機聯(lián)鎖操作顯示技術(shù)規(guī)范》[9]為準則,以圖像識別相關(guān)理論為依據(jù),應用OpenCVSharp 圖像識別技術(shù)對上位機界面進行識別處理,準確識別出信號機、道岔與軌道區(qū)段,從而自動提取相關(guān)鐵路站場數(shù)據(jù)。
鐵路站場數(shù)據(jù)自動提取方法整體研究思路,如圖1 所示。計算機聯(lián)鎖上位機界面將站場信息通過圖形化方式顯示,作為圖像識別系統(tǒng)的輸入;分析信號設(shè)備顯示特征,提煉關(guān)鍵信息并構(gòu)建站場數(shù)據(jù)模型;研究學習圖像識別相關(guān)算法,對不同類型的信號設(shè)備進行識別試驗;結(jié)合設(shè)備的顯示特征,設(shè)計流程識別信號設(shè)備,并將提取的站場數(shù)據(jù)保存在數(shù)據(jù)模型中。
鐵路信號設(shè)備主要包括信號機、道岔和軌道電路,文獻[9]對各信號設(shè)備在計算機聯(lián)鎖上位機界面中的繪制特點作了明確規(guī)定。
(1)列車信號機(包括出站兼調(diào)車)采用雙燈位,即用2 個圓圈表示;調(diào)車信號機采用單燈位,即1 個圓圈表示;信號機基座采用1 段短豎線表示;高柱信號機在基座和圓圈之間增加1 段短橫線來表示燈柱;信號機名稱用銀白色表示。
(2)道岔斜線在屏幕中的傾斜角度宜一致,應提供道岔的狀態(tài)信息,如表示道岔開通位置的短線在道岔定位時顯示綠色,反位時顯示黃色等。
(3)軌道區(qū)段線條不能有明顯鋸齒,表示到發(fā)線的線條間距統(tǒng)一,應提供軌道區(qū)段空閑、占用等狀態(tài)信息,軌道區(qū)段名稱采用銀白色。
文獻[10]對道岔的凸包形狀進行了分析:單動道岔的凸包形狀為三角形和梯形,雙動道岔為斜直線,交叉渡線為菱形。
根據(jù)上述內(nèi)容,本文對信號設(shè)備主要類型及顯示特征進行了分析總結(jié),如表1 所示。
表1 信號設(shè)備主要顯示特征
站場數(shù)據(jù)主要描述鐵路信號設(shè)備的屬性信息,定義各類數(shù)據(jù)模型如下。
定義1:信號機數(shù)據(jù)模型Signal 由一個五元組
定義2:道岔數(shù)據(jù)模型Switch 由一個四元組
定義3:軌道區(qū)段數(shù)據(jù)模型Section 由一個六元組
在完成信號設(shè)備的識別后,設(shè)備屬性信息存儲在各類數(shù)據(jù)模型中,方便其他程序的調(diào)用。
C#相比于C++而言在對圖形用戶界面(GUI,Graphical User Interface)中的開發(fā)更具有便捷性。針對C#的計算機視覺庫主要有2 種:EmguCV 和OpenCVSharp,二者都提供了計算機視覺函數(shù)接口和一系列界面控件接口,但由于EmguCV 在使用時需要將C++封裝成動態(tài)鏈接庫在C#中調(diào)用,增加了軟件開發(fā)的難度,而OpenCVSharp 具有界面開發(fā)快、庫文件調(diào)用方便、安裝包小、商業(yè)應用友好等優(yōu)點,因此本文采用OpenCVSharp 計算機視覺庫將圖像識別相關(guān)算法應用于聯(lián)鎖上位機界面,其中包括圖像預處理、形態(tài)學處理、HSV(Hue,Saturation,Value)顏色分割及模板匹配。
為了克服界面圖像中可能存在的模糊、噪聲等問題,需要對界面圖像進行預處理操作。聯(lián)鎖上位機界面圖像的預處理過程包括灰度變換、二值化和圖像濾波等。為了增強有關(guān)信息的可檢測性,本文對上位機界面采用加權(quán)平均值法進行灰度變換,可以將圖像的三通道轉(zhuǎn)換為單通道,進而將像素值限定在[0,255];采用固定閾值法進行二值變換,可以直接消除不滿足閾值條件的干擾信息;采用中值濾波法進行降噪處理可以消除圖像中的椒鹽噪聲。經(jīng)過預處理后的界面圖像,如圖2 所示。
圖2 界面預處理后圖像
形態(tài)學處理的基礎(chǔ)是膨脹(Dilate)與腐蝕(Erode)的合理結(jié)合。其中,膨脹的作用就是在結(jié)構(gòu)元素(Kernel)的約束下將與目標區(qū)域相接觸的背景合并到該目標物中。而腐蝕是膨脹的對偶運算,其作用是在結(jié)構(gòu)元素的約束下消除目標區(qū)域的部分邊界點,使其邊界向內(nèi)部收縮。由于界面設(shè)計人員繪制風格的不同,可能會出現(xiàn)信號機圓圈之間,或圓圈與燈柱之間存在間隙的情況。而間隙的存在會影響信號機的識別效果,因此本文提出用形態(tài)學運算對信號機進行連通處理,解決間隙問題,便于信號機的識別,信號機連通效果,如圖3 所示。
圖3 信號機連通處理
HSV 顏色分割要基于HSV 色彩空間,引入HSV 空間對圖像進行分析可以將亮度從色彩中分解出來,在圖像增強算法中用途很廣泛。在聯(lián)鎖上位機界面中,各信號設(shè)備的顯示都是由3 種基色紅(R)、綠(G)、藍(B)相互以一定的比例復合而成,每像素顏色有256×256×256 個取值,對于顏色相近的圖元來說,很難在RGB 空間中進行準確的分割。但在HSV 色彩空間中,彩色圖像主要由色調(diào)(Hue)、飽和度(Saturation)和明度(Value)3 部分組成,如圖4 所示。
圖4 HSV 色彩空間
其中,H 值將色域范圍限定在0~360°,每一種顏色均有確定的色域值,S 與V 值僅改變了顏色的飽和度與明亮度。因此本文提出用HSV 顏色分割技術(shù)來初篩顏色特征明顯的信號設(shè)備。
由表1 可知,道岔和軌道區(qū)段的線條顏色均為淺藍色,在用HSV 顏色分割技術(shù)進行提取時,可以減少界面中其余顏色相近圖元的干擾。道岔和軌道區(qū)段的HSV 提取效果,如圖5 所示。
圖5 道岔與軌道區(qū)段HSV 提取效果
模板匹配算法[11]在圖像處理中通常被應用于字符識別,而字符識別算法也不僅限于模板匹配,應用較為廣泛的還有人工神經(jīng)網(wǎng)絡(ANN,Artificial Neural Network)與支持向量機(SVM,Support Vector Machine)算法,這2 種算法在識別率和識別時間上均優(yōu)于模板匹配算法,但都需提前進行大量樣本字符的訓練,更適合對復雜文本進行識別。在上位機界面中,設(shè)備名稱通常僅由字母和數(shù)字組成,構(gòu)成簡單,從軟件設(shè)計成本考慮無需采用ANN 或SVM,因此本文采用模板匹配算法對信號設(shè)備名稱進行識別。
3.4.1 算法原理
匹配原理示意,如圖6 所示,用模板圖像在輸入圖像中從左到右,從上到下進行遍歷,并在遍歷過程中實時計算匹配度,匹配度越大則模板圖像與輸入圖像相同的可能性越大。
圖6 模板匹配示意
3.4.2 歸一化相關(guān)系數(shù)匹配
OpenCVSharp 中提供了cv::matchTemplate()函數(shù)來實現(xiàn)匹配度計算,歸一化相關(guān)系數(shù)匹配法是該函數(shù)所支持的匹配方式之一,當模板圖像與輸入圖像完全匹配時結(jié)果為1,完全負相關(guān)匹配時結(jié)果為-1,完全不匹配則結(jié)果為0。
相關(guān)系數(shù)匹配使用原圖像與其均值的差、模板圖像與其均值的差二者之間的相關(guān)性進行匹配,并在該基礎(chǔ)上做了歸一化處理,匹配度R(x,y)的計算,如式(1)所示。
式中:
T與I分別為模板圖像與原圖像的矩陣;
R(x,y)為匹配度;
(x,y)為當前遍歷區(qū)域在I矩陣中左上角元素坐標;
T(x’,y’)為T矩陣中對應坐標的元素值;
I(x’,y’)為I矩陣中對應坐標的元素值;
w與h分別為模板圖像的寬與高。
對于T覆蓋在I上的每個位置,將產(chǎn)生一個匹配度R(x,y),并保存在結(jié)果矩陣R中。當I被T遍歷完畢時,需要使用cv::minMaxLoc()尋找R中的最大值,該值越接近于1,匹配效果越好。應用模板匹配算法實現(xiàn)信號機名稱識別示例,如圖7 所示。
圖7 信號機名稱模板匹配示例
綜合上述內(nèi)容,現(xiàn)設(shè)計信號機、道岔和軌道區(qū)段的識別與數(shù)據(jù)提取流程,如圖8 所示。向圖像識別系統(tǒng)輸入上位機界面圖像后,通過圖像預處理,對圖像進行灰度變換、二值變換和中值濾波;針對不同信號設(shè)備分別進行識別處理,提取相關(guān)屬性數(shù)據(jù)并進行保存。
圖8 信號設(shè)備識別與數(shù)據(jù)提取流程
其中,不同的信號設(shè)備,識別算法的應用也有所不同。
(1)信號機(包含基座、燈柱、燈位)整體而言對顏色敏感度不高,且由于燈位之間的間隙問題,在對其進行識別時:①需要應用形態(tài)學處理實現(xiàn)連通化,隨后對連通區(qū)域進行輪廓檢測與面積計算,篩選出符合條件的連通域,此時由于列車信號機與調(diào)車信號機面積的差異性可確定出信號機類型屬性SigType;②由于信號機基座與禁止燈光的顏色特征較為明顯,可采用HSV 顏色分割技術(shù)提取基座中心與禁止燈光中心坐標,并對二者加以判斷可確定出信號機朝向SigDirection 與坐標屬性SigPosition,再通過輪廓檢測計算連通域長度便可確定高柱、矮型屬性SigTallLow;③利用模板匹配算法提取信號機名稱屬性SigName。
(2)道岔在界面中的顏色特征明顯,對其進行識別時:①采用HSV 顏色分割技術(shù)將道岔從界面中分離出來,可減少其他圖元信息的干擾;②運用形態(tài)學處理實現(xiàn)道岔線段的修復,再使用凸包提取與多邊形擬合可確定出道岔類型SwiType、開口方向SwiDirection 與坐標屬性SwiPosition;③利用模板匹配算法提取道岔名稱屬性SwiName。
(3)軌道區(qū)段部分處理同道岔:①采用HSV顏色分割技術(shù)將軌道區(qū)段與絕緣節(jié)從界面中分離出來,運用形態(tài)學處理將斷連直線段合并為長軌條,并將絕緣節(jié)重繪至長軌條實現(xiàn)軌道區(qū)段的正確劃分;②設(shè)計處理邏輯實現(xiàn)軌道區(qū)段類型SecType 與坐標屬性SecPosition 的提取;③利用模板匹配算法提取軌道區(qū)段名稱屬性SecName。
根據(jù)上述站場數(shù)據(jù)自動提取方法,在Visual Studio 2017 環(huán)境下,采用C#語言開發(fā)了鐵路站場數(shù)據(jù)自動提取軟件。軟件輸入原圖像,如圖9 所示。信號設(shè)備識別與站場數(shù)據(jù)提取結(jié)果,如圖10、圖11所示。通過識別測試,獲得軟件識別率,如表2 所示。從識別效果來看,當設(shè)備名稱與設(shè)備本體相連時,由于粘連問題,識別結(jié)果會產(chǎn)生較大誤差。此時可考慮進一步分割圖像,增加識別準確性。
表2 信號設(shè)備識別率
圖9 上位機界面原圖
圖10 信號設(shè)備識別結(jié)果
圖11 站場數(shù)據(jù)提取結(jié)果
本文提出了一種鐵路站場數(shù)據(jù)自動提取方法,基于圖像識別技術(shù),實現(xiàn)了聯(lián)鎖上位機界面中信號機、道岔以及軌道區(qū)段的識別與屬性數(shù)據(jù)提取。經(jīng)實驗驗證,該方法可解決計算機聯(lián)鎖自動測試軟件所需的站場數(shù)據(jù)依賴人工手動輸入的問題,但當設(shè)備名稱與設(shè)備本體相粘連時,軟件識別結(jié)果會產(chǎn)生較大誤差,此時還應根據(jù)實際情況做進一步調(diào)整。