吴建斌 周紫薇
摘要:为解决低成本平台下的水表码字识别问题,利用对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.
(责任编辑:黄健)