摘 要: 一种能够实际应用于带字轮号码家用水表" title="水表">水表的远程抄表" title="远程抄表">远程抄表装置的设计原理与实现过程。该装置属于无源远程抄表方式,具有低成本、快速、节能、不易损坏等特点。
关键词: 水表 号码读取 数字图像处理 DSP 嵌入式技术
水表是我国城市家庭必不可少的居家设施。目前,我国绝大部分城市水表抄写的方式依然是由专人挨家挨户抄写,这样不仅效率低下,而且也给住户带来不便。另外,也有部分地区对现有的住宅楼进行改造,将住户家中的水表集中迁到楼外一个固定的地方。但这样做需要对住宅楼进行较大面积的破坏,不利于楼房的寿命并严重影响住宅的美观,还给用户带来一定的经济负担,特别是北方冬天寒冷的天气容易造成水管冻结。目前,也有利用条码、累计脉冲等方式进行远程抄表的研究,但是因为属于有源方式,需要另外配备电池使装置持续工作,这样由于电池寿命、易损坏等各方面原因给实际应用带来了很大限制。
本文实现的利用数字图像处理技术对水表号码进行无源自动抄写记录装置,一方面最大限度地保护用户住宅结构和原有装修,另一方面可以使抄表员不必逐一进入用户家中,而是集中在一个地点将用户水表号码自动抄写并保存到抄表员所携带的存储设备中。且几十户居民公用一个记录装置,因此成本非常低,不会因为安装该装置给用户带来大的负担。本装置以数字信号处理器(DSP)和视频解码器为核心,完成抄写等功能。目前已经实现的抄表装置采用的DSP是TI公司的TMS320VC5416。实验证明,准确抄写一个水表读数所用时间不超过0.5s,完全能够满足实际应用需要。
1 硬件结构
水表字轮号码自动记录装置的硬件主要由五部分组成:图像预处理模块,图像采集识别模块,系统程序数据存储模块,系统逻辑控制模块,号码显示模块。系统框图如图1所示。
1.1 图像预处理模块
由于摄像头输出的是模拟视频信号,因此在进行识别处理前必须进行一次预处理,并转换为数字视频信号[5]。
图像预处理模块以视频解码器为核心,完成对模拟摄像头所采集的模拟图像信号的放大、滤波、A/D转换等预处理。同时,从全电视信号中分离出行同步信号和场同步信号。
视频解码器在正常工作之前首先需要初始化,视频解码器的初始化工作通过I2C总线完成。其中,I2C总线的SCL和SDA分别为时钟控制线和数据线,并分别连接到可编程逻辑器件的两个I/O引脚,在数字信号处理器(DSP)的控制下实现I2C总线协议,进而完成对视频解码器片上寄存器的初始化操作。
1.2 图像采集识别模块
图像采集识别模块主要由数字信号处理器(DSP)以及必要的外围电路组成。
由于目前TI的DSP系列产品占据了国际市场的大部分份额,从供货及性价比等方面考虑,本文采用的是价格相对较低且能满足系统要求的TMS320VC5416PGE160(以下简称VC5416),其丰富的片上资源,如128K×16bit的片上RAM和16K×16bit的片上ROM,可以大大缩小系统的体积、复杂性以及成本,为系统运行的稳定性提供了保证。
本系统将VC5416的HPI(主机接口)设置为GPIO(通用I/O口),分别用于检测图像预处理电路提供的行场同步信号、奇场标志信号和像素时钟信号,用以确保时序正确,从而保证所采集的号码图像的完整性,为后续工作提供可靠的数据源。另外利用GPIO(通用I/O口)编程控制CPLD实现I2C总线协议,在系统上电时对图像预处理电路进行必要的初始化,以控制所采集的号码图像的大小、位置、转换速度,同时保证号码图像的质量等。
1.3 系统程序数据存储模块
要实现系统脱机运行和保证系统掉电不丢失,最好将编译好的软件程序烧制到VC5416的片上ROM中,这样既可以减小系统体积和成本,也有利于提高系统性能。本系统在实验过程中,为调试方便采用外扩1片映射到数据空间的Flash ROM来进行脱机运行的调试工作。Flash ROM在数据空间的映射地址从0x8000~0xFFFF。系统上电时,利用VC5416的Bootloader将Flash中的程序导入VC5416的内RAM中,然后将其屏蔽。
1.4 系统逻辑控制模块
系统采用了1片复杂可编程逻辑器件(CPLD)。该器件在系统中起到全局逻辑控制作用,使整个系统可以在DSP的统一管理和控制下协调工作。
1.5 号码显示模块
当一幅号码图像的识别过程结束后,DSP TMS320VC5416还需通过驱动电路在数码管LED上显示识别结果。驱动电路采用的是最常用的LED驱动器MAX7219[2][4]。
2 软件设计
软件主要包括图像预处理电路的初始化程序、DSP的初始化程序、纸币号码图像采集与识别程序、号码显示译码程序以及上电引导程序等。本文简要介绍编写的几个主要程序。
2.1 图像预处理电路的初始化程序
图像预处理电路的初始化主要通过设置视频解码器相应的寄存器实现。视频解码器片上寄存器的读写通过I2C总线协议的形式完成。首先,由DSP输出控制信号,分别用于对应I2C总线的数据线(SDA)和时钟线(SCL)。然后,根据I2C总线协议,编程实现对视频解码器片上寄存器的访问。
系统对视频解码器的寄存器设置如表1所示。
由于DSP的I2C总线实现程序比较繁琐,所以本文没有列出程序清单。
2.2 DSP的初始化程序设计
该程序主要通过对必要的DSP存储器映射寄存器(MMR)赋值,使其工作在系统要求的状态,主要包括以下操作:
(1)将处理器模式状态寄存器(PMST)设置为0xAC,使中断向量表重定位到0x0080,并且允许访问片上ROM,同时将片上双寻址RAM0~3(DARAM0~3)映射到程序空间的0x0080~0x7FFF,将双寻址RAM4~7(DARAM4~7)映射到数据空间的0x8000~0xFFFF。
(2)时钟方式寄存器(CLKMD)设置为0x97F7,使程序正常运行在160MHz的最高工作频率下。
(3)软件等待状态寄存器(SWWSR)设置为0x0000,使数据、程序和I/O空间的访问都工作在零等待状态。
(4)状态寄存器1(ST1)设置为0x6980,以满足C程序运行的需要,同时禁止所有可屏蔽中断。
2.3 水表号码图像采集与识别程序
水表号码图像采集程序的设计思路为通过采用通用I/O口(GPIO)对图像预处理电路转换产生的行、场同步信号以及像素时钟等的查询,将图像数据准确地存储到指定的存储空间[3]。
每个水表号码的大小约为50×70,即3500个像素,水表字符框的高度为88个像素,考虑到水表字轮经常出现上下两个字符各出现一部分的情况(图2右侧的数字6、7部分),因此每个字符需要采集保存的实际高度应为字符框的高度,即88个像素。而字符间距为60~70个像素,如图3所示。目前,仅对水表后四位数字进行采集便基本能满足需要,如果直接对图像进行采集和保存,则一幅水表号码图像需要400×88,即35200(35.2K)个像素。但是系统本身的存储空间非常有限,可用数据空间只有40KB左右,而识别算法在运行过程中还需要随时开辟相当数量的存储空间来存储临时变量和中间结果,因此不能直接对图像进行保存。
在设计采集程序时需要对读入的图像数据进行选择性的存储,尽量只保存水表字轮号码体部分,而号码体之间的冗余数据则尽量舍弃,以节省存储空间。根据水表字轮的特点,在数据采集过程中通过软件处理去除相邻数字间冗余信息后保存的图像如图2所示。
目前采用的识别程序是一种基于结构法的识别算法,是根据数字本身结构上所存在的特点编写的。本识别算法大体可分为定位、预处理、识别、结果输出四部分。
定位时,应用号码本身纹理特性,即水平和垂直投影均有较明显的峰谷峰性质。首先进行水平投影,定位上下边界,缩小图片面积;然后垂直投影,定位每个字符的左右边界。预处理时,采用适当滤波算法,滤除由污迹和采集芯片造成的噪声;区域分割过程中,为提高速度,在光照一定的情况下,采用固定阈值分割。
识别时,依据水平垂直穿线次数和航程面积,以及定位框的高宽比等多种特征的信息融合技术,利用分叉判定树对数字进行识别。例如,数字1水平穿线均为1次,垂直高度远大于水平宽度。
针对水表字轮号码随时都有上下两个号码各出现一部分的情况,可采用相邻两个号码间的结构特点进行区分。
3 装置设计过程中主要解决的技术问题
(1)图像采集部分采用的是将视频解码器数字数据输出直接与DSP的数据线相连,而不是通常采用的在两者之间增加一个FIFO(先入先出存储器)进行数据缓存的方法。对电路进行这样的处理不仅节省了一个FIFO成本,更主要的是降低了系统复杂度,提高了装置的工作效率。但这样就相应增加了图像数据采集软件的设计难度。因为数字数据的输出速度为13.5MHz,像素时钟为27MHz,而DSP工作频率为160MHz,DSP要实现对一个像素数据的读取首先要查询各种同步信号,然后才能读取一个数据,而且在读取数据时也要耗费多个时钟周期。此问题经过不断的软件优化和调试得到了解决。
(2)视频解码器初始化所需的I2C总线的实现问题,较常用的方式是利用现成的带I2C总线模块的单片机实现。所采用的DSP本身没有I2C总线模块,设计时也没有增加一个带I2C模块的单片机方式,而利用DSP的HPI(主机接口)口控制CPLD,模拟实现了I2C总线协议。
(3)针对水表字轮号码存在相邻号码各出现一部分的情况,编写了专门的处理软件。
(4)远程抄表,采用在每家住户水表内密封一个2cm×2cm×2cm的模拟摄像头,并利用一根电源线和一根信号线与主处理板相连。这样,主处理板可以对相连的所有用户水表逐一进行抄表记录。
所开发的基于图像处理和嵌入式技术的远程抄表装置样机已经完成,目前运行稳定,正确读取率99%以上。特别对于上下两个水表字轮号码各出现一部分的情况识别比较准确,识别结果可通过LED直观显示。
参考文献
[1] 美国德州仪器(TI).TMS320VC5416 fixed-point digital signal processor data manual.Literature Number:SPRS095K, March 1999-Revised September 2003.www.TI.com.
[2] 伞宏力,樊宁.一种用单片机驱动线阵CCD的方法[J].沈阳工业大学学报,2005,(1)
[3] YUAN W Q,ZHENG Ch Q.Paper currency recognition system based on DSP.International Electronic Elements,2004.
[4] HUANG X M.The gathering and display system for digital image real-time.Study for computer,1997,(2)
[4] 张健,颜华,董玉岩,等.电容层析成像投影数据的采集 系统设计[J].沈阳工业大学学报,2006,(1)