林劍萍1,,廖一鵬2
(1. 陽光學(xué)院,福建 福州 350015,;2. 福州大學(xué) 物理與信息工程學(xué)院,,福建 福州 350000)
摘要:為了提高儀表讀數(shù)及記錄的工作效率,減少人工干預(yù)并降低出錯概率,,提出了一種基于OpenCV和LSSVM的數(shù)字儀表自動識別方法。首先選取免驅(qū)的USB攝像頭采集儀表圖像,,然后采用Canny檢測與Hough變換相結(jié)合的算法對儀表圖像的傾斜角度進(jìn)行校正,;利用數(shù)學(xué)形態(tài)學(xué)、Otsu算法以及連通域提取對圖像進(jìn)行預(yù)處理和字符定位分割,;最后,,進(jìn)行字符特征提取并利用最小二乘支持向量機(jī)算法對儀表讀數(shù)進(jìn)行識別。經(jīng)過大量的實(shí)驗(yàn)驗(yàn)證,,與現(xiàn)有的儀表讀數(shù)識別方法相比,,該方法具有更好的準(zhǔn)確性,實(shí)現(xiàn)了數(shù)字儀表的自動識別功能,。
關(guān)鍵詞:機(jī)器視覺,;圖像處理;OpenCV,;最小二乘支持向量機(jī)
中圖分類號:TP394.1文獻(xiàn)標(biāo)識碼:ADOI: 10.19358/j.issn.1674-7720.2017.02.013
引用格式:林劍萍,,廖一鵬.基于OpenCV和LSSVM的數(shù)字儀表讀數(shù)自動識別[J].微型機(jī)與應(yīng)用,2017,36(2):37-40.
0引言
目前,,在很多領(lǐng)域受工作條件限制及經(jīng)濟(jì)性,、便捷性的要求,很多用于計(jì)量的儀器儀表都沒有專門的數(shù)據(jù)通信接口,,導(dǎo)致無法自動識別讀數(shù),,對儀表數(shù)字的讀取還是要靠人工來實(shí)現(xiàn),,但是在一些特定場合,例如高溫高壓,、化工冶金,、高山峭壁、有核輻射等人體不能適應(yīng)的地方,,人工抄表存在很大的危險(xiǎn)性及不可行性,,而機(jī)器視覺卻可以無視這些不利因素,廣泛地用于長時間惡劣的工作環(huán)境,,這就為儀表讀數(shù)的讀取提供了便利,,同時可以提高工作效率,更好地保障人身安全,。儀表讀數(shù)識別也可以說是自動抄表,,自動抄表的試點(diǎn)和運(yùn)用始于20世紀(jì)80年代,在20世紀(jì)90年代得到較快的發(fā)展[1],。目前,,國內(nèi)外許多科技人員在基于機(jī)器視覺的數(shù)字識別上做了很多深入研究。從圖像預(yù)處理,、傾斜校正,、字符分割及數(shù)字識別等方面各有側(cè)重點(diǎn)地做了不同方法的研究比較。在儀表數(shù)字識別方面,,工業(yè)和信息化部電子第五研究所的申中鴻,、蔣春旭等人利用機(jī)器視覺技術(shù),結(jié)合計(jì)算幾何軌跡識別方法與D-S證據(jù)理論實(shí)現(xiàn)數(shù)字顯示儀表的自動讀數(shù),;中國計(jì)量科學(xué)研究院的劉科等人采用投影變換的方法對數(shù)字圖像進(jìn)行分割,、編碼,進(jìn)而實(shí)現(xiàn)了對該類儀表示值的自動讀??;山東管理學(xué)院的常曉瑋利用光學(xué)字符識別技術(shù)實(shí)現(xiàn)了遠(yuǎn)程識別儀表上顯示的數(shù)字信息[25]。綜合各方研究,,實(shí)現(xiàn)基于機(jī)器視覺的數(shù)字儀表讀數(shù)自動識別的方式多樣,,不僅在圖像預(yù)處理上可根據(jù)不同環(huán)境不同儀表選擇合適的算法,在數(shù)字的定位識別上也有多種方法可供選擇,。本文采用Canny檢測與Hough變換相結(jié)合的算法對攝像頭采集到的儀表圖像的傾斜角度進(jìn)行校正,,利用數(shù)學(xué)形態(tài)學(xué)方法、Otsu(大津法或最大類間方差法)算法等技術(shù)對校正后的圖像進(jìn)行預(yù)處理[67],,之后對字符進(jìn)行分割,,采用最小二乘支持向量機(jī)(LSSVM)算法對儀表讀數(shù)進(jìn)行識別。經(jīng)過大量的實(shí)驗(yàn)驗(yàn)證,,該方法具有良好的準(zhǔn)確性,,實(shí)現(xiàn)了數(shù)字儀表的自動識別功能,。
1數(shù)字儀表圖像的預(yù)處理
1.1圖像的采集
圖像采集是基于機(jī)器視覺進(jìn)行圖像處理的第一步,也是很重要的一步,。采集到質(zhì)量較高的圖像可以在很大程度上降低處理的難度,。本文采用分辨率為480×680的CCD免驅(qū)USB攝像頭對儀表數(shù)據(jù)進(jìn)行采集,該攝像機(jī)可以直接捕捉影像傳輸處理,,運(yùn)用更加便捷,。
1.2儀表圖像的傾斜校正
進(jìn)行數(shù)字儀表圖像采集時,采集到的數(shù)字儀表圖像經(jīng)常會發(fā)生傾斜,。為使儀表端正以方便后期處理,,需要對傾斜的儀表圖像進(jìn)行校正。本文采用的是Canny邊緣檢測與Hough變換相結(jié)合的傾斜校正方法,。用Canny算子對儀表圖像進(jìn)行邊緣檢測,,然后利用Hough變換檢測數(shù)字儀表邊框平行線的傾斜角度,再利用旋轉(zhuǎn)函數(shù)進(jìn)行校正,,得到端正水平的數(shù)字儀表圖像,。
攝像頭采集到的圖像如圖1所示,Canny邊緣檢測及Hough變換檢測得到最長直線圖如圖2所示,,傾斜校正后的圖像如圖3所示,。
1.3圖像的形態(tài)學(xué)處理
為簡化圖像數(shù)據(jù),并除去不相干的結(jié)構(gòu),,本系統(tǒng)對圖像進(jìn)行腐蝕(Erosion)膨脹(Dilation)等數(shù)學(xué)形態(tài)學(xué)運(yùn)算,,對圖像進(jìn)行濾波處理,平滑邊界,。提高數(shù)字儀表圖像的質(zhì)量,并填充儀表讀數(shù)中的細(xì)小空洞,,避免單個數(shù)字各段碼之間的中斷,。
膨脹的定義:
D=X⊕B={(x,y)|Bxy∩X≠φ}(1)
腐蝕的定義:
E=XB={(x,y)|BxyX}(2)
式(1)和(2)中,B為結(jié)構(gòu)元素,,X為原始圖像,。
1.4圖像的二值化
為了字符的準(zhǔn)確識別,在字符識別之前對圖像做二值化處理,,將圖像分割成背景和目標(biāo)兩部分,。本文采用最經(jīng)典的全局閾值的Otsu算法(最大類間方差法)。為了減少對比度和光照不均勻?qū)Χ祷挠绊?,在二值化處理之前先對圖像進(jìn)行頂帽處理,,讓二值化達(dá)到更好的效果。Otsu算法是在最小二乘法原理基礎(chǔ)上推導(dǎo)出來的,,它的基本原理是:令連通區(qū)域S,,其中像素灰度范圍為[0,255],,點(diǎn)(x,y)的灰度表示為I(x,y),灰度級x的點(diǎn)的概率為P(x),,則Otsu就是求下式達(dá)到最大值的灰度級m:
灰度級m即為最佳分割閾值,。利用此方法二值化處理后的圖像如圖4所示。
2數(shù)字儀表圖像的特征提取
經(jīng)過預(yù)處理之后,,可以得到質(zhì)量較高的二值化圖像,,接下來就需要對數(shù)字儀表的讀數(shù)進(jìn)行定位與分割,為數(shù)字識別做好準(zhǔn)備,。定位分割的準(zhǔn)確性,,直接影響數(shù)字識別的難易程序及識別率。
2.1儀表數(shù)字區(qū)域的特征分析
在數(shù)字儀表讀數(shù)的定位分割過程中,,必須根據(jù)數(shù)字區(qū)域與背景儀表的不同特征進(jìn)行提取,,才能達(dá)到定位分割的目的。而數(shù)字儀表的特征總體是有跡可循的,,可以將數(shù)字區(qū)域與背景分別出來,。從視覺角度出發(fā),儀表數(shù)字區(qū)域的特征可以從其形狀,、顏色和亮度三個方面進(jìn)行分析,。
2.2儀表數(shù)字定位分割方法
儀表數(shù)字定位分割一般有基于連通域和基于投影法的儀表數(shù)字定位與分割。但是不同的光照條件,,儀表的影子對水平投影的影響過大,,在有影子存在的情況下,僅根據(jù)水平投影不足以將兩行讀數(shù)分割開來,,而水平投影結(jié)果不理想導(dǎo)致分割不準(zhǔn)確,,也就使得垂直投影不能理想地分割出每行中的每一個字符。因此本文采用的是基于連通域的方法來進(jìn)行數(shù)字的定位與分割,。
在圖像當(dāng)中用f(x,y)表示位于圖像陣列中第x行,、第y列的像素的值,一幅m×n的圖像具有m行n列,,f(0,0)表示圖像左上角的像素值,,f(m-1,n-1)表示圖像右下角的像素值。遍歷圖像,,通過4鄰域連通標(biāo)準(zhǔn)查找出所有符合的連通域,,這樣就可以把圖像中每一個分離的區(qū)域檢測出來。
在查找出所有連通域之后,,按照連通域的面積,、讀數(shù)的形狀、長寬比來進(jìn)行篩選,,排除不符合條件的區(qū)域,,這樣就可以直接定位并分割出數(shù)字儀表的每個讀數(shù),。算法實(shí)現(xiàn)步驟如下。
?。?)計(jì)算連通域面積:連通域A的面積就是像素值為255的點(diǎn)的數(shù)目,,即區(qū)域的邊界內(nèi)包含的像素點(diǎn)數(shù)。面積的計(jì)算公式為:
?。?)計(jì)算連通域的長寬比:連通域的寬/連通域的長,。
(3)遍歷所有連通域,,如果連通域面積大于500小于5 000且連通域的長寬比大于1.5小于2.5則提取,,如果不滿足以上條件則舍棄。這樣便可篩選出滿足要求的連通域,,即數(shù)字儀表每個讀數(shù),。圖5儀表讀數(shù)分割定位結(jié)果
數(shù)字儀表讀數(shù)的定位分割結(jié)果如圖5所示。
2.3儀表數(shù)字特征提取
數(shù)字的特征主要可以從形狀,、顏色,、紋理、結(jié)構(gòu)等方面入手來提取,,而大部分的數(shù)字儀表的讀數(shù)區(qū)域是基于七段數(shù)碼管來實(shí)現(xiàn)顯示,,因此也可以根據(jù)數(shù)碼管的特征來提取。本文用的提取特征的方法就是基于七段數(shù)碼管,,根據(jù)每段碼的像素值來判斷識別,。將定位好的數(shù)碼管每位進(jìn)行4×4分割,統(tǒng)計(jì)黑點(diǎn)和白點(diǎn)的個數(shù),,每塊的像素用x0~x15表示,,提取結(jié)果如圖6所示。
3儀表讀數(shù)的模式識別
數(shù)字儀表的讀數(shù)識別是基于機(jī)器視覺的數(shù)字儀表讀數(shù)自動識別的重點(diǎn),,只有這一步做好了才能正確識別讀數(shù)并且保證一定的識別率,。最常用的數(shù)字字符識別算法主要有模板匹配法、基于人工神經(jīng)網(wǎng)絡(luò)法,、穿線法等[810]。本文采用的是最小二乘支持向量機(jī)(LSSVM)算法[1113],。
設(shè)訓(xùn)練集為(xi,yi)(i=1,2,…,N),,N表示訓(xùn)練樣本數(shù),xi∈Rm為樣本輸入,,yi為輸出,,LSSVM在高維特征空間的線性函數(shù)為:
f(x)=wTφ(x)+b(5)
式(5)中,w為權(quán)值向量,,b為偏置量,,φ(x)為非線性映射函數(shù),。根據(jù)結(jié)構(gòu)風(fēng)險(xiǎn)最小化原則,綜合考慮擬合誤差和算法復(fù)雜度,,轉(zhuǎn)換為一個等式約束的優(yōu)化問題:
式(6)中,,e2i為誤差變量,d為調(diào)整參數(shù)因子,。
為求解上述優(yōu)化問題,,引入拉格朗日等式,ai是拉格朗日乘子,,把約束優(yōu)化問題變?yōu)闊o約束優(yōu)化問題,,如式(7)所示:
根據(jù)非線性最優(yōu)規(guī)劃(KarushKuhnTucker,KKT)條件求得參數(shù)ai,b代入公式(5),,得到支持向量機(jī)的輸出:
最后,,選擇RBF(Radial Basis Function)作為LSSVM的核函數(shù),得到LSSVM的預(yù)測函數(shù):
式中,,σ為核寬度,,反映數(shù)據(jù)集的特性。
4系統(tǒng)軟件實(shí)現(xiàn)與測試
4.1系統(tǒng)軟件實(shí)現(xiàn)
本系統(tǒng)利用OpenCV開源庫[1415]在VS2010環(huán)境中編寫MFC程序,,實(shí)現(xiàn)數(shù)字儀表讀數(shù)的實(shí)時采集,、處理及識別輸出。通過點(diǎn)擊界面內(nèi)按鈕即可完成相應(yīng)的處理,,最終將數(shù)字儀表原圖及讀數(shù)識別結(jié)果都直觀地顯示在窗口界面上,。
根據(jù)本文系統(tǒng)采取的方法對實(shí)時采集到的數(shù)字儀表圖像進(jìn)行處理、分割及識別,,以采集到的其中一張測試圖為例,,系統(tǒng)從實(shí)時采集、傾斜校正,、預(yù)處理(濾波,、二值化)、定位分割到識別的每一步效果圖如圖7所示,。
4.2LSSVM與其他算法的比較
本文采用最小二乘支持向量機(jī)算法對數(shù)字儀表的讀數(shù)進(jìn)行識別,,為了驗(yàn)證該算法的識別率,總共實(shí)時采集了200幅儀表圖像近800個數(shù)字字符,,用模板匹配法,、基于人工神經(jīng)網(wǎng)絡(luò)法、穿線法,、最小二乘支持向量機(jī)分別進(jìn)行了測試,,對這800個數(shù)字字符進(jìn)行分類統(tǒng)計(jì),測試結(jié)果如表1所示。
統(tǒng)計(jì)分析發(fā)現(xiàn),,這幾種算法對每個數(shù)字的識別率都高于90.0%,,LSSVM對每個數(shù)字的識別率都高于95.0%,對10個字符的平均識別率達(dá)到98.2%,,比其他幾種識別模式的平均識別率有明顯提高,,識別效果良好,達(dá)到了預(yù)期的目標(biāo)與要求,。
5結(jié)論
根據(jù)數(shù)字儀表顯示的特征,,本文首先采用攝像頭實(shí)時采集并顯示數(shù)字儀表圖像;然后將Canny邊緣檢測算子與Hough變換相結(jié)合,,對儀表圖像進(jìn)行傾斜校正,;利用數(shù)學(xué)形態(tài)學(xué)方法對圖像光照不均勻等進(jìn)行處理,通過濾波增強(qiáng)有效信息,;根據(jù)數(shù)字儀表讀數(shù)特征,,采取查找最小連通域后篩選的方法對儀表讀數(shù)進(jìn)行定位分割;采用和聲搜索法和最小二乘支持向量機(jī)的算法對儀表的數(shù)字讀數(shù)進(jìn)行模式識別,;利用OpenCV開源庫在VS2010環(huán)境中編寫MFC程序,,實(shí)現(xiàn)數(shù)字儀表讀數(shù)的實(shí)時采集、處理及識別輸出,。本設(shè)計(jì)在實(shí)驗(yàn)室環(huán)境下具有良好的效果,,下一步的研究方向是進(jìn)一步改進(jìn)完善,并將其推廣應(yīng)用到實(shí)際環(huán)境中,?! ?/p>
參考文獻(xiàn)
[1] 譚志強(qiáng),黃懿.自動抄表技術(shù)的發(fā)展[J].電測與儀表, 2009,,46(1):1-5.
?。?] 申中鴻,蔣春旭,徐華偉,等.基于機(jī)器視覺的數(shù)字顯示儀表自動讀數(shù)[J].電子產(chǎn)品可靠性與環(huán)境試驗(yàn),2013,31(A01):110-115.
?。?] 申中鴻,劉群興,蔣春旭,等.基于機(jī)器視覺技術(shù)和D—S證據(jù)理論的數(shù)字顯示儀表自動讀數(shù)[J].信息工程期刊(中英文版),2013,,3(6):122-129.
[4] 劉科,侯立新,卞昕.基于機(jī)器視覺的儀表示值識別算法研究[J].計(jì)量學(xué)報(bào),2013,,34(5):425429.
?。?] 常曉瑋.基于機(jī)器視覺的數(shù)字化儀表字符識別[J].計(jì)算機(jī)測量與控制,2014,22(9):30713073.[6] 丁文,李勃,陳啟美.Canny色彩邊緣檢測及分類新方法[J].北京郵電大學(xué)學(xué)報(bào),2012,,35(1):115119.[7] 黃登山,王曉楠.基于Canny和HillbertHuang變換的改進(jìn)的SIFT算法研究[J].西北工業(yè)大學(xué)學(xué)報(bào),2015(6):962-965.
?。?] 朱顥東,李紅嬋.基于特征加權(quán)模糊模板匹配的字符識別[J].蘭州理工大學(xué)學(xué)報(bào),2013,,39(1) :68-71.
?。?] 劉宗林,田瑩,李雪瀅.一種數(shù)顯儀表字符快速自動識別方
法[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2015(18):37-40.
?。?0] 王明勛.基于神經(jīng)網(wǎng)絡(luò)的液晶數(shù)字識別在船用設(shè)備管理中的應(yīng)用[J].艦船電子工程,2012,,32(7):95-97.
?。?1] 劉永平,郭小波.基于最小二乘支持向量機(jī)車牌字符特征識別[J].數(shù)字技術(shù)與應(yīng)用,2015(7):119-120.
[12] 劉靜.基于最小二乘支持向量機(jī)的車牌字符特征分類研究[J].計(jì)算機(jī)與數(shù)字工程,2015(7):1315-1319.
?。?3] 喬宗良,張蕾,周建新,等.一種改進(jìn)的CPSOLSSVM軟測量模型及其應(yīng)用[J].儀器儀表學(xué)報(bào),2014,35(1):234-240.
?。?4] 王舒憬,杜皎潔.基于OPENCV的數(shù)字萬用表數(shù)字識別方法[J].自動化與儀器儀表, 2014(1):62-63.
?。?5] 徐歡,李振璧,姜媛媛,等.基于OpenCV和改進(jìn)Canny算子的路面裂縫檢測[J].計(jì)算機(jī)工程與設(shè)計(jì),2014,,35(12):4254-4258.