王國祝+趙浪濤
摘 要:傳統(tǒng)的液氣表采用分戶計量,分布在不同的地點,表難以改造以實現(xiàn)集抄。為了實現(xiàn)快速地計量,展開基于嵌入式機器視覺來實現(xiàn)液氣表盤的圖像采集,自動識別網(wǎng)絡(luò)自動傳輸數(shù)據(jù),針對數(shù)字式儀表和機械式儀表盤的特色,采用了靈活的算法,實現(xiàn)了液氣表盤數(shù)字的識別和集抄,從而提高效率。
關(guān)鍵詞:嵌入式 機器視覺 液氣表盤 數(shù)字識別
由于我們國家對于早期的建筑中水表和天然氣表等實施的是分戶計量,水表氣表分布于各個家庭內(nèi)部,而不能像電力表那樣集中一個表箱實施網(wǎng)絡(luò)化集抄,這樣帶來了諸多的不便,加之有些家庭的水表氣表家裝后在櫥柜內(nèi)部,有時人難以進入而實現(xiàn)視覺的判讀,因此,研發(fā)基于嵌入式計算機視覺技術(shù)的液氣表盤數(shù)字識別的手持設(shè)備,便于從業(yè)人員快速抄表,經(jīng)過手持設(shè)備圖像采集,自動識別后,將識別的數(shù)字值直接通過移動網(wǎng)絡(luò)傳輸至數(shù)據(jù)中心,這樣大大提高了計量和集抄的效率。
1 關(guān)鍵技術(shù)
之所以以嵌入式機器視覺來實現(xiàn)表盤數(shù)字的識別,就是要借助于嵌入式系統(tǒng)靈巧、低功耗、易部署等特點。實現(xiàn)嵌入式機器視覺可以選擇基于達芬奇DSP芯片的DM6446系統(tǒng)來實現(xiàn),也可以選擇基于ARM或Android的OpenCV的方式,或基于高性能的TI的Panda Board+Halcon Embeded來實現(xiàn)。
1.1 硬件實現(xiàn)
基于TI DSP DM6446:DM6446是TI公司推出的一款高性能的具有ARM內(nèi)核的DSP芯片,其帶有編程應(yīng)用的API程序接口,很適合作為機器視覺的硬件平臺來使用,而且其運算速度快,在一些高速的視覺處理里面得到了大量的推廣和使用,但是其硬件成本高,而且其編程環(huán)境復(fù)雜,應(yīng)用編程具有一定的難度和深度,不易實現(xiàn)視覺處理的實現(xiàn)?;贏RM+OpenCV:在普通ARM嵌入開發(fā)板中預(yù)裝Linux內(nèi)核,然后預(yù)裝基于Linux內(nèi)核的OpenCV平臺軟件。OpenCV是一個開源的視覺處理軟件,無需購買,對于我們的表盤識別無需識別速度要求的情況下,是一個非常經(jīng)濟的選擇,但是OpenCV正因為其開源的特性,對人臉識別的應(yīng)用的實現(xiàn)比較有特色,而對其他視覺應(yīng)用雖然能夠?qū)崿F(xiàn),但是編程工作量大,而且實現(xiàn)需要一定的周期,具有一定的難度?;诟咝阅蹵RM+Halcon:我們在實踐工作過程中選擇了基于TI 的Panda Board開發(fā)板的基礎(chǔ)上,預(yù)裝Halcon的Linux的嵌入式版本,來實現(xiàn)嵌入式機器視覺的開發(fā)。Panda Board基于OMAP4664的雙核ARM,其運行速度快、效率高。Halcon是德國MVtec公司的視覺軟件平臺,其提供了大量的視覺處理的算子,在PC平臺上編程實現(xiàn)后可以生成C/C#等多語言平臺的程序,因此我們借助于其強大的視覺處理功能,在PC上實現(xiàn)我們所需要的Halcon程序,然后在生成Linux平臺上C++應(yīng)用程序,然后移植后,將視覺處理的OCR識別應(yīng)用部署到硬件平臺上,實現(xiàn)其對儀器表盤的數(shù)字識別[1]。
我們正是以高性能的TI的OMAP4660為基礎(chǔ)的嵌入式開發(fā)板,配備基于OV7670攝像頭,其板載運行Ubutu操作系統(tǒng),加裝各種驅(qū)動后構(gòu)成我們的硬件環(huán)境。網(wǎng)絡(luò)通過其串行口掛接SIM900的GPRS Modem來實現(xiàn)數(shù)據(jù)的傳輸。
1.2 軟件實現(xiàn)
欲對燃氣和水表的表盤實現(xiàn)數(shù)字圖像識別如圖1的燃氣表盤圖像中的表盤數(shù)字進行識別,我們采用德國MVtec的Halcon軟件來實現(xiàn),Halcon是當前世界上最為優(yōu)秀的機器視覺處理軟件,其內(nèi)置了諸多的視覺處理算子,能夠很好地與硬件接口相適配,處理過程可以采取實驗的方法,一步步用各種視覺處理算子處理后,生成所需要的結(jié)果后,我們可以借助Halcon強大的代碼生成功能生成Linux下的C或C++程序。
Halcon對圖像中數(shù)字的識別比較簡單,其內(nèi)置了諸多的OCR特征庫,如Document_0-9.omc(文檔數(shù)字)、DotPrint_0-9A-Z.omc(點陣打印數(shù)字字符)、HandWritten_0-9.omc(手寫數(shù)字)、Industrial_0-9A-Z.omc(工業(yè)數(shù)字字符)等特征庫,我們分幀后取得圖像,然后對圖像經(jīng)過下列處理后與特征庫相比對,以識別圖像中的表盤數(shù)字。
采用Halcon處理儀表數(shù)字識別,首先讀入圖像;由于Halcon提供了視頻或圖像讀取函數(shù),因此,直接讀入視頻,鏡像分幀獲取圖像即可。下一步,通過運算獲取和設(shè)定感興趣區(qū)域ROI。依式(1),使得=0和,按照閾值g 將圖像R 選定后輸出至S即得到閾值處理后的ROI。
≤≤ (1)
然后從圖像域中獲取ROI區(qū)域,再將圖像分解為3個通道,然后轉(zhuǎn)換RGB為H、S、V顏色空間。Halcon提供了HSV算子,傳輸圖像區(qū)域即可實現(xiàn)圖像顏色空間變換。
連通選定像素互聯(lián)通區(qū)域,然后依據(jù)特征區(qū)域計算區(qū)域交叉點,并依式(2)實施高斯卷積去噪。
g× (2)
去噪后讀取特征庫,與數(shù)字匹配以實現(xiàn)數(shù)字的識別。
經(jīng)Halcon處理后,在Halcon菜單中選擇導(dǎo)出程序,Halcon可以生成VB、C# C/C++等源程序,我們選擇基于Linux內(nèi)核的C++程序,生成的C++程序,需部署到OMAP4660嵌入開發(fā)板中去運行。我們下載Halcon的嵌入版本的文件halcon-10.0.2-omap4-runtime.tar.gz,然后將其解壓縮,部署于Linux下,該文件中提供了Halcon運行的庫文件Halcon.so等文件。然后我們將創(chuàng)建的CPP文件中使其頭上包含HalconCPP.h的頭文件,然后包含下列路徑后編譯我們的應(yīng)用并連接,即可生成嵌入平臺的運行程序。
2 系統(tǒng)優(yōu)缺點及改進
采用halcon機器視覺軟件處理數(shù)字或字符的識別異常簡單,我們的儀表表盤上僅有數(shù)字而沒有字符,其識別應(yīng)該更為簡單,但是我們在軟件實現(xiàn)過程中體會到,越是簡單,其難度越大。其困難的程度遠超過了視覺中對車輛牌照的識別,數(shù)字儀表盤中,如圖1中有“2.5”儀表型號,還有“MC批文號粵制0000175”,及底下的儀表量程等干擾區(qū)域,給我們的識別帶來了異常困難。
利用Halcon對數(shù)字字符的識別,我們只應(yīng)用了特征庫匹配的方法,除此,系統(tǒng)還提供了基于神經(jīng)網(wǎng)絡(luò)的訓(xùn)練和學(xué)習等算子,我們將對其實施改造,進一步提高其識別效率,以改進產(chǎn)品的環(huán)境適應(yīng)能力,進一步提高準確度。
參考文獻
[1]張明新,李向偉,趙浪濤,等.基于嵌入式機器視覺的路基沉降監(jiān)測系統(tǒng)研究[J].自動化與儀器儀表,2013(4):28-29.
[2]張廣軍.視覺測量[M].中國科學(xué)出版社,2008.