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