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