1 系统总体设计 系统采用Omnivision公司的CMOS数字图像传感器OV7620采集水表盘字轮号码图像,并选用TI公司的TMS320VC5416芯片对采集到的水表号码进行识别处理,最终将识别后的水表号码图像...
1 系统总体设计
系统采用Omnivision公司的CMOS数字图像传感器OV7620采集水表盘字轮号码图像,并选用TI公司的TMS320VC5416芯片对采集到的水表号码进行识别处理,最终将识别后的水表号码图像在LCD上显示,即在硬件采集器中完成图像识别。
水表盘字轮号码读取的研究分为三大部分:水表盘号码采集模块、水表盘号码图像处理识别模块及水表盘号码显示模块。本系统工作过程是图像传感器经过DSP初始化之后,将输入的模拟视频信号经过必要的预处理,输出标准的数字视频信号,同时产生场同步信号、行同步信号和像素时钟信号等。系统初始化后,采用查询同步信号的方式将数字图像保存到数据存储器中。通过数字图像传感器OV7620采集水表盘字轮号码,然后在以DSP芯片为主的硬件电路中进行识别处理。最终通过LCD直观地显示出水表号码。同时可采用并口方式将原始图像传到计算机中,作为识别后的图像的参考。图1为水表盘字轮号码读取系统的原理框图。
2 系统实现
首先将数字传感器OV7620的摄像头安装在字轮盘垂直上方,将采集到的号码图像存储在DSP内部的RAM中,然后利用DSP的BOOTLOAD功能将号码识别程序下载到DSP内部高速的RAM中,并利用采集图像的回扫时间识别水表号码,最终在LCD上 显示识别后的号码图像。
2.1 图像采集模块
OV7620属于电平触发,当DSP上电时设置为高,BOOTLOADER结束时/OVCE有效。系统加电复位后,先由DSP的HPI口产生IIC总线信号来对OV7620工作寄存器进行初始化,然后OV7620即可开始按要求输出图像信号,包括行同步信号HRE
F、场同步信号VSYN
C、像素时钟信号PCLK和数字图像信号。本系统数据输出只采集OV7620低8位亮度数据,目的是减少数据的处理量。
本系统采用SCCB编程模式完成对OV7620的初始化,即将DSP的HPI口设置为GPIO口来模拟SCCB总线协议,将HPI中的HD2连接SIO_D,HD3连接SIO_C,通过软件编程模拟SCCB总线协议。重庆水表厂水表是计量用水量的一种仪表设备,以前的机械水表存在计量不准确、误差大等特点,给水表抄写人员带来了一定的困难,甚至还有些人利用机械水表的漏洞进行偷水,或者让水表不走动。重庆水表厂多年致力于水表的研发制造与销售,对于预付费水表有着丰富的生产经验,从根本上确保预付费水表的品质。主要生产产品有:智能IC卡水表,智能远传水表、物联网水表、阶梯水价水表,防滴漏水表,大口径智能水表等多种产品。配置的具体方法是在写寄存器过程中先发送OV7620的ID地址,然后发送写数据的目地寄存器地址,接着是要写的数据,从而实现采集过程起始点的精确控制。
两线SCCB功能框图如图2所示。
本系统采用VSYNC的上升沿表示一帧新的图像的到来,水平同步信号HREF高时开始有效数据采集,用PCLK上升沿的到来表明数据的产生,且每来一个上升沿系统就传输一位数据,在HREF为高期间系统共传输640位数据。也就是说:在一帧图像中,即VSYNC为高电平期间,HREF会出现480次高电平。而下一个VSYNC信号上升沿到来则表明分辨率640×480的图像采集过程的结束。各个同步信号的极性选择通过设置OV7620对应的寄存器完成。
2.2 图像处理模块
2.2.1 硬件
映射存储器的配置受到5416外部管脚MP/MC以及处理器模式状态寄存器PMST的控制,因此水文所采用的方案足MP/MC=0且OVLY=1的情况。其中OVLY为16位寄存器PMST的第5位,当5416上电硬复位且MP/MC=0时,片上物理ROM会映射程序存储器的FF00~FFFF地址范围内,芯片自动调用片上ROM中固化的Boot loader程序。在MP/MC=0,OVLY=1模式下,实际能访问的存储区是很有限的,5416的ROM区基本上保留给DSP芯片本身,DARAM区同时被映射到程序映射存储区和数据映射存储区上相同的地址范围上。本系统在软件方面所需的存储空间中水表号码图大约占8KB,程序约4KB。鉴于5416的片上资源和本系统的需要,外扩了一个FLASH。
FLASH39VF400的16值数据线与DSP5416的16位数据线对应相连,并将它的片选和读写信号与DSP的对应信号相连,以此实现BOOTLOADER功能。根据DSP系统程序加载的特点,将FLASH地址为0x8000~0xFFFF的存储区在程序下载的过程中映射到DSP的数据空间。
2.2.2 硬件电路中的软件设计
本系统将采用DSP所兼容的C语言进行系统的软什开发,包括对信号处理芯片DSP及数字传感器OV7620的初始化等没计,并用TI公司的开发工具CC-Studio完成系统的软件调试工作。本系统在调试过程中将根据采集到图像的实际情况来调整软件程序。水表号码识别的难点在于字轮进位不完整时的识别处理,与平面识别数字的区别在于字轮上数字是在翻动的,因此几个码盘进位一半时容易出错。住识别过程中,有时在视窗中出现的数字可能是半个或是三分之一等情况,这种状态下,识别原则为:一个视窗中出现两个数字,如出现的数字平面大于二分之一,则识别为该数字;如两数字均为二分之一时要根据用户的具体要求来确定以上面的还是以下面的数字为准。由于实际采集到的图像与传统的摄像机拍到的号码图像在清晰度上又有差别,增加了识别的难度,因此在识别前的预处理很重要,如去掉白色噪声点。由于本文采集的图像是针对灰度图的,所以在二值化处理中根据灰度直方图选取阈值,有利于提高水表号码的识别率。
2.3 号码显示模块
VC5416只有两个通用I/O口,即BIO和XF。本系统对主机通信并行接口HPI和多路缓冲串行接口 McBSP进行配置用作通用I/O,即本系统的数据采集和数据输出都是利用I/O口实现的。在显示部分,将DSP的多路缓冲串口改为通用I/O 口,设计了一种低功耗的液晶显示电路,并编辑了液晶驱动程序。
本系统采用金鹏电子公司生产的3.3V电源的OCM12232-4点阵型液晶显示模块,横向有122个点,纵向有32点。它可以显示两行16×16的点阵字符,可同时显示中文字符和英文字母。
由于该点阵型液晶不带字库,故先编写0~9的字库实现了字符的显示。且对OCM12232内部两个控制器SED1520进行写命令或数据的操作,住驱动程序部分设定了显示起始位置、上下行、字符宽度等参量。
3 试验结果
采集图像的条件:OV7620的开窗为200×40mm,光源为普通的白炽灯。
图3的结果发现在5cm左右的物距下采集到的号码图像很模糊且只能采集到2~3个号码,同时发现OV7620采集图像不是沿垂直方向采集,而是倾斜一定角度采集的。
图4根据图3的情况,适当调整了镜头焦距及水表和镜头之间的物距,并调整了光源的亮度。这样采集到的图像较前次清晰且可采集到3~4个号码。
图5所采集到的图像有光斑,其原因是水表盘表面的突起引起的,因此光源的照射位置对采集到图像的质量有很大的影响。
以上试验结果表明,明亮、稳定、均匀的光源很重要,这样才能将被测物与背景明显地区分开来。更重要的是适当调整焦距,图5是在适当的焦距和光源亮度下得到的结果。
本文成功地完成了用CMOS图像传感器OV7620采集水表盘字轮号码。实验结果表明采集到的号码图像达到了预期的效果。本系统将进一步完善识别显示程序并完成系统的最终目标——在硬件采集器中完成号码图像的识别显示。该设计将加快自动抄表的进程,从而克服手工抄表的种种弊端。本设计也适用于其他号码图像的采集识别。