吳建斌 周紫薇
摘要:為解決低成本平臺(tái)下的水表碼字識(shí)別問(wèn)題,利用對(duì)Flash的讀寫操作彌補(bǔ)RAM空間的不足。同時(shí)利用攝像頭安裝位置固定、字符圖像大小也基本固定等先驗(yàn)知識(shí),結(jié)合分塊處理以及滑動(dòng)模板匹配算法,有效解決了資源有限情況下算法效率提高的問(wèn)題。實(shí)驗(yàn)結(jié)果表明,該方法在低成本平臺(tái)上能夠有效運(yùn)行,有利于智能水表的推廣。
關(guān)鍵詞:智能水表;水表碼字;滑動(dòng)匹配
DOI:10.11907/rjdk.173173
中圖分類號(hào):TP301
文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1672-7800(2018)007-0075-04
Abstract:Inordertosolvetheproblemofwatermarkcoderecognitioninlow-costplatform,thispapermakesuseofthereadandwriteoperationofFlashtomakeupfortheshortageoframspace.Atthesametime,weemploythepriorknowledgeoffixedpositionofthecameraandthecharacterimageswhicharebasicallyfixedtocombinewithblockprocessingaswellasslidingtemplatematchingalgorithmtoeffectivelysolvetheproblemofhowtoimprovetheefficiencyofthealgorithmundertheconditionoflimitedresources.Fromtheexperimentalresults,themethodsmentionedinthispaperisprovedtooperateeffectivelyonthelow-costplatform,whichisgoodforthepopularizationofsmartmeters.
KeyWords:smartwatermeter;watermetercodeword;slidingmatch
0引言
隨著物聯(lián)網(wǎng)的發(fā)展,智慧社區(qū)逐漸進(jìn)入人們視野,智能水表也應(yīng)運(yùn)而生[1]。智能水表即利用先進(jìn)的信息技術(shù)實(shí)現(xiàn)對(duì)水表碼字的自動(dòng)抄收,從而杜絕人工抄表過(guò)程中的估抄、漏抄、誤抄現(xiàn)象,在降低時(shí)間與人力成本的同時(shí),滿足了用戶實(shí)時(shí)查看數(shù)據(jù)的要求,具有重要的現(xiàn)實(shí)意義[2]。
目前學(xué)者們已提出許多智能水表識(shí)別算法。李堯等[3]根據(jù)特定水表走字的特點(diǎn),提出一種基于模板與神經(jīng)網(wǎng)絡(luò)的水表數(shù)字字符識(shí)別方法;高菊等[4]針對(duì)水表數(shù)字圖像中的粘連字符識(shí)別問(wèn)題,提出一種粘連字符的高度自適應(yīng)識(shí)別算法,提高了粘連字符識(shí)別率;金靜曉等[5]考慮半字符高度因素,在上下半字符為一長(zhǎng)一短的情況下,剔除過(guò)短的半字符,僅計(jì)算較長(zhǎng)字符與模板的匹配度,解決了半字符的識(shí)別問(wèn)題;徐平等[6]針對(duì)進(jìn)位不完全導(dǎo)致的雙半殘缺字符,利用改進(jìn)的Hausdorff距離模板匹配算法提高半字識(shí)別率。這些算法雖然在一定程度上提高了識(shí)別率,但實(shí)現(xiàn)較為復(fù)雜,數(shù)據(jù)處理量與內(nèi)存占用較大,在PC端易實(shí)現(xiàn),但在嵌入式系統(tǒng)上實(shí)現(xiàn)時(shí),需要采用高配置的內(nèi)核與存儲(chǔ)器提高計(jì)算性能,甚至需要配備微型操作系統(tǒng),從而提高了智能水表成本,不利于現(xiàn)有存量水表市場(chǎng)改造。本文在STM32F030平臺(tái)下利用滑動(dòng)模板匹配算法,提高了算法運(yùn)行效率,并采用分塊處理以及對(duì)Flash的讀寫操作,降低了內(nèi)存占用,解決了低成本平臺(tái)下資源有限的問(wèn)題,為低功耗、低造價(jià)智能水表的應(yīng)用推廣打下良好基礎(chǔ)。
1平臺(tái)介紹
該智能水表平臺(tái)結(jié)構(gòu)如圖1所示。系統(tǒng)實(shí)現(xiàn)流程為:?jiǎn)?dòng)LED照明模塊照明,通過(guò)圖像采集模塊獲得待識(shí)別字符圖像并存入FIFO中,利用識(shí)別算法提取水表碼字并通過(guò)LORA模塊將識(shí)別結(jié)果存入數(shù)據(jù)庫(kù)。與本文聯(lián)系緊密的部分為單片機(jī)內(nèi)存以及圖像采集模塊獲取的圖像屬性。
該平臺(tái)采用的主芯片為STM32F030,價(jià)格低廉且功耗較小[7]。該芯片的Flash大小為256KB,RAM大小為32KB。Flash通常用于存儲(chǔ)程序代碼等不可更改的數(shù)據(jù),RAM作為操作系統(tǒng)或其它正在運(yùn)行中程序的臨時(shí)數(shù)據(jù)存儲(chǔ)媒介,這些臨時(shí)數(shù)據(jù)包括全局變量、局部變量、堆棧段,當(dāng)電源關(guān)閉時(shí),RAM無(wú)法保留數(shù)據(jù)。
圖像采集模塊采用的攝像頭為OV7670,所得的圖片格式為位圖(BMP),顏色格式為RGB565,圖片尺寸為240*320,圖片大小為150KB[8]。由于圖片信息需要作為中間變量臨時(shí)存入RAM中,如果直接對(duì)整幅圖片進(jìn)行處理,RAM緩存空間容量不足。解決該問(wèn)題涉及到本文提到的分塊處理和Flash讀寫操作,將在下文進(jìn)行詳細(xì)描述。
2碼字識(shí)別方法
2.1算法整體流程
算法整體流程如圖2所示。本文采用Otsu二值化法,其按照?qǐng)D像灰度特性將圖像分成背景和目標(biāo)兩部分,是一種自適應(yīng)的閾值確定二值化方法[9]。二值化后利用像素點(diǎn)的統(tǒng)計(jì)直方圖對(duì)圖片進(jìn)行分割,獲得5個(gè)待匹配的數(shù)字字符圖片[10]。
2.2灰度化處理
將彩色圖像轉(zhuǎn)化成為灰度圖像的過(guò)程稱為圖像灰度化處理[11]?;叶葓D像是R、G、B三個(gè)分量相同的一種特殊彩色圖像,其像素點(diǎn)的變化范圍為0~255,即用一個(gè)字節(jié)表示。在數(shù)字圖像處理中一般先將各種格式的圖像轉(zhuǎn)變成灰度圖像,以減少后續(xù)圖像處理的計(jì)算量,并將圖像占用的內(nèi)存大小減小一半。
灰度化方法有多種,如分量法、最大值法、平均值法、加權(quán)平均法[12]。通常使用的方法為加權(quán)平均法,即根據(jù)重要性及其它指標(biāo),將3個(gè)分量以不同權(quán)值進(jìn)行加權(quán)平均。由于人眼對(duì)綠色敏感度最高,對(duì)藍(lán)色敏感度最低,因此按照式(1)對(duì)RGB3分量進(jìn)行加權(quán)平均能得到較為合理的灰度圖像。
由于本文處理的圖片主要色系為白、黑、紅,如果按式(1)計(jì)算,紅色灰度化后的顏色接近于白色,即水表尾數(shù)容易受到干擾。因此,本文結(jié)合水表的實(shí)際情況適當(dāng)調(diào)整了RGB3分量的權(quán)值,最后采用式(2)進(jìn)行處理。
每個(gè)像素點(diǎn)的值都由一個(gè)十進(jìn)制數(shù)表示,本算法先將其轉(zhuǎn)變成二進(jìn)制,并利用位運(yùn)算的右移操作和按位與操作從中獲得R、G、B分量。由于圖片的顏色格式為RGB565,本文采取低位補(bǔ)零的方法降低數(shù)據(jù)損失[13]。得到的RGB分量通過(guò)式(2)可得到最終的灰度化圖片。攝像頭采集圖像效果如圖3所示,灰度化后的效果如圖4所示。
例如一個(gè)像素點(diǎn)的原始數(shù)據(jù)為17548,轉(zhuǎn)化為二進(jìn)制為0100010010001100,將其與1111100000000000進(jìn)行按位與操作,獲得高5位數(shù)據(jù)0100000000000000,進(jìn)而右移8位(低位補(bǔ)零)得到0000000001000000,轉(zhuǎn)化為十進(jìn)制數(shù)64,即為R值分量。G值和B值同理可得。
2.3分塊
圖像采集模塊中的攝像頭拍到水表圖片之后,將圖片存在FIFO中,然后按照從下至上、從左至右的方式掃描圖片,將各點(diǎn)數(shù)據(jù)依次讀入RAM中。由于RAM大小為32KB,當(dāng)存入一張大小為150KB的圖片時(shí),RAM存儲(chǔ)空間不足,因此本文采用分塊處理的方法解決該問(wèn)題。
結(jié)合水表表盤分布進(jìn)行反復(fù)測(cè)試,將攝像頭固定在距離表盤27cm處,且與表盤保持平行,拍出的圖片如圖3所示。把圖片切割成8塊,將字輪部分固定在第4塊中,且后續(xù)操作只需對(duì)這一塊進(jìn)行處理,從而將待識(shí)別區(qū)域減小至30*320,在減小運(yùn)算量的同時(shí),為濾波等圖片預(yù)處理操作提供了很大便利,降低了識(shí)別難度,提高了算法執(zhí)行效率。分塊后的圖像效果如圖5所示。
2.4匹配
匹配過(guò)程涉及兩方面,即模板制作與匹配算法。模板庫(kù)有多種選擇,最早采用0~9十個(gè)整字作為模板進(jìn)行匹配處理,雖然大部分圖片都能得到匹配結(jié)果,但對(duì)于半字的識(shí)別率較低[14]。為了提高識(shí)別率,需單獨(dú)設(shè)置半字識(shí)別模板。文獻(xiàn)[1]采用10個(gè)雙字模板,文獻(xiàn)[4]同時(shí)制作了0~9和0~9之間半字符兩種模板,雖然該方法大大提高了半字識(shí)別率,但同時(shí)也加大了模板占用空間,不適合在本平臺(tái)上使用。
本算法采用滑動(dòng)模板,依次拍攝10張有0~9數(shù)字的全字圖片,保證0~9均在字輪中心。對(duì)該10個(gè)圖片進(jìn)行灰度化、分塊、二值化、切割操作,獲得10張全字圖片,利用photoshop將0-9-0共11張數(shù)字圖片進(jìn)行修飾并依次縱向排列制成模板,采用13*30大小窗口按從上到下的順序滑動(dòng),滑動(dòng)間隔h可以取1~30(超過(guò)30會(huì)遺失模板信息)之間的值?;瑒?dòng)間隔越大,獲得窗口數(shù)越少,算法效率越高,但識(shí)別率越低;滑動(dòng)間隔越小,獲得窗口數(shù)越多,算法效率越低,但識(shí)別率越高。本算法綜合算法效率和識(shí)別率兩方面,每隔5個(gè)像素點(diǎn)向下采一個(gè)窗口,使實(shí)際上一共有60個(gè)窗口,分別將這些模板與待識(shí)別圖片進(jìn)行匹配。滑動(dòng)模板和其它模板相比,有效解決了半字問(wèn)題,同時(shí)大大節(jié)約了模板占用空間。模板制作效果如圖6所示,模板窗口滑動(dòng)效果如圖7所示,后面按同等h選取窗口。
為提高識(shí)別率,越來(lái)越多的匹配算法應(yīng)運(yùn)而生。文獻(xiàn)[1]采用Hausdorff距離模板匹配算法,文獻(xiàn)[4]采用自適應(yīng)學(xué)習(xí)的BP神經(jīng)網(wǎng)絡(luò)[15-20]訓(xùn)練模板,并聯(lián)合權(quán)值進(jìn)行字符識(shí)別。這些算法雖然在識(shí)別率上有了很大改進(jìn),但由于識(shí)別速率和內(nèi)存占用量大,并不適用于本平臺(tái)。
本文采用的匹配算法為數(shù)字特征識(shí)別。算法公式如式(3)所示。
P為模板匹配度,Tbladot為模板與待識(shí)別圖片同為黑點(diǎn)時(shí)的像素點(diǎn)之和,Ddot為模板與待識(shí)別圖片數(shù)據(jù)不同時(shí)的像素點(diǎn)之和,Mbladot為模板黑點(diǎn)的像素和。
得到各模板的匹配度后,比較這60個(gè)匹配度大小,最大匹配度對(duì)應(yīng)的模板即為結(jié)果,再根據(jù)偏移量即可求出對(duì)應(yīng)數(shù)字。
2.5FLASH讀寫操作
由于該芯片RAM空間大小不足,經(jīng)常需要將一些臨時(shí)變量存入FLASH中,這就涉及到對(duì)Flash的讀寫操作。
寫操作基本步驟如下:
Flash解鎖
清除Flash所有未完成的標(biāo)志位
擦除Flash指定地址所在頁(yè)
Flash寫入
Flash鎖定
寫入Flash時(shí)需要先進(jìn)行擦除操作,如果發(fā)現(xiàn)寫入地址的Flash沒有被擦除,數(shù)據(jù)將不會(huì)被寫入。Flash擦除操作不能單獨(dú)擦除一個(gè)地址上的數(shù)據(jù),只能按Sector進(jìn)行,因此在寫數(shù)據(jù)之前需要將地址所在Sector的所有數(shù)據(jù)擦除。地址選擇很重要,否則會(huì)導(dǎo)致誤擦除。本算法采用防止誤擦除的方法是先定義一個(gè)const類型的常量數(shù)組,并定義一個(gè)32位的變量存儲(chǔ)該數(shù)組的Flash區(qū)地址,當(dāng)進(jìn)行擦除、讀寫操作時(shí),只要在該常量數(shù)組所在地址范圍即可。
讀操作時(shí)只需利用指針像在RAM一樣正常讀取即可。
3算法性能測(cè)試
本算法的計(jì)算時(shí)間為1.24s,功耗為12.73uA,可滿足智能水表的低功耗、低成本要求。
針對(duì)拍攝的200張水表圖片進(jìn)行識(shí)別,成功識(shí)別出182張,識(shí)別率為91%,可滿足水表識(shí)別的實(shí)際要求。同時(shí),利用用戶消費(fèi)數(shù)據(jù)知識(shí)對(duì)識(shí)別結(jié)果進(jìn)行初步判斷,如果出現(xiàn)很大偏差,則啟用二次識(shí)別,可在一定程度上降低識(shí)別差錯(cuò)率。
4結(jié)語(yǔ)
本算法利用Flash讀寫操作彌補(bǔ)RAM空間的不足,同時(shí)采用滑動(dòng)模板以及數(shù)字特征匹配使其能在低成本平臺(tái)上完成水表識(shí)別工作,并具有較高的識(shí)別效率,為低功耗、低造價(jià)的水表應(yīng)用提供技術(shù)支撐。本算法雖然降低了造價(jià)成本,但是犧牲了一定識(shí)別率,后期可以對(duì)模板進(jìn)行特征加權(quán),以獲得更好的識(shí)別效果。
參考文獻(xiàn):
[1]宮艷雪,武智霞,鄭樹泉,等.面向智慧社區(qū)的物聯(lián)網(wǎng)架構(gòu)研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2014,35(1):344-349.
[2]王宗輝,張世豪,姚靈.智能水表技術(shù)及發(fā)展趨勢(shì)[J].儀表技術(shù),2014(6):45-48.
[3]李堯,芮小平.適合特定水表表型的字符識(shí)別方法[J].計(jì)算機(jī)工程與設(shè)計(jì),2009,30(11):2772-2774,2781.
[4]高菊,葉樺.水表數(shù)字圖像的粘連字符識(shí)別方法[J].工業(yè)控制計(jì)算機(jī),2013,26(7):77-78,80.
[5]金靜曉,信昆侖.改進(jìn)的半字識(shí)別算法在水表讀數(shù)系統(tǒng)中的應(yīng)用[J].供水技術(shù),2015,9(1):43-45.
[6]徐平,許彬,常英杰.雙半字識(shí)別算法在水表字符識(shí)別系統(tǒng)中的應(yīng)用[J].杭州電子科技大學(xué)學(xué)報(bào):自然科學(xué)版,2016,36(1):80-85.
[7]劉志斌,龍劍.基于STM32F030和電力載波的電氣實(shí)驗(yàn)設(shè)備電源管理設(shè)計(jì)[J].山西電子技術(shù),2015(1):17-18,45.
[8]陶杰,王欣.基于STM32F407和OV7670的低端視頻監(jiān)控系統(tǒng)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2014,14(3):60-63.
[9]杜健輝,呂文閣,侯夢(mèng)華.基于競(jìng)選算法的Otsu閾值快速確定方法[J].機(jī)電工程技術(shù),2007(3):57-58,112.
[10]李乾坤.基于模板匹配的水表讀數(shù)識(shí)別方法研究[D].武漢:華中師范大學(xué),2014.
[11]盧紅陽(yáng),劉且根,熊嬌嬌,等.基于最大加權(quán)投影求解的彩色圖像灰度化對(duì)比度保留算法[J].自動(dòng)化學(xué)報(bào),2017,43(5):843-854.
[12]張偉.漢字筆跡鑒別算法的研究[D].哈爾濱:東北林業(yè)大學(xué),2009.
[13]李慧敏,樊記明,楊笑.基于STM32和OV7670的圖像采集與顯示系統(tǒng)設(shè)計(jì)[J].傳感器與微系統(tǒng),2016,35(9):114-117.
[14]孟祥斌.水表號(hào)碼圖像識(shí)別系統(tǒng)研究[D].沈陽(yáng):沈陽(yáng)建筑大學(xué),2011.
[15]BIGW,QINGC,CAIYY,etal.RecognitionsystemfordigitalmeterdynamicdisplayfromvideobasedonMATLAB[J].AdvancedMaterialsResearch,2012,1477(347):2183-2186.
[16]POLAPD,WOZ′NIAKM.Flexibleneuralnetworkarchitectureforhandwrittensignaturesrecognition[J].InternationalJournalofElectronicsandTelecommunications,2016,62(2):197-202.
[17]BABUUR,CHINTHAAK,VENKATESWARLUY.Handwrittendigitrecognitionusingstructural,statisticalfeaturesandk-nearestneighborclassifier[J].InternationalJournalofInformationEngineeringandElectronicBusiness,2014,6(1):62-68.
[18]SHANG.TherecognitionofhandwrittendigitalbasedonBPneuralnetwork[J].AppliedMechanicsandMaterials,2013,2698(416):1239-1243.
[19]SHUAIY,GUOYZ,JIANHW,etal.StudyofdigitalcharacterrecognitionbasedonBPneuralnetworks[J].AppliedMechanicsandMaterials,2013,2490(333):856-859.
[20]MAMOGLUN,ERESENA,EFEM.Adaptivefuzzyweightedtemplatematchingusinginvariantfeaturesforatrackingapplication[J].IFACProceedingsVolumes,2010,43(10):259-264.
(責(zé)任編輯:黃?。?/p>