0 引言
在当今的信息化社会,计算机及其网络技术正不断地改变着我们的生活。互联网技术虽然使信息的发布和传递更加方便,但在信息技术带来好处的背后也存在着一些问题,其中信息安全就是一个方面,而身份鉴别技术是信息安全技术研究领域中的一个重要方向,传统的身份鉴别如证件、口令等都不能适应目前信息化的需要,这时,在线签名识别技术就孕育而生了。过去的签名识别技术采用的是离线静态识别方式,即只是对笔迹的形态特征进行识别,而在线签名识别系统除了可对笔迹的形态进行识别外,还能利用更多的签名信息(如在线书写时的压力信息,角度信息等)来进一步增加识别的准确度。
目前国内对于在线签名识别系统的研究还处于起步阶段,现在仅仅只对签名波形的各种匹配算法进行了一定的研究,而对于在线签名识别系统的设计还没有一个比较完善的方案。签名采集系统的关键是采集数据的精确性和采集设备与PC机之间的通信,只有把这两部分做好了,才可能保证数据传输的准确性和实时性。本文介绍的系统在采集方面使用12位ADS7846芯片来实现高精度、高速的12位数据采集和AD转换;在通信方面则采用USB接口。由于USB协议本身的健壮性可保证签名数据的无差错高速传输,所以本系统的解决方案具有很大的现实意义。
1 系统总体设计方案
本系统包括手写输入设备、显示没备、信息处理设备、信息传输设备以及与之相配套的软件。在整个系统中,手写输入设备有四线电阻式触摸屏和触摸屏控制器,其中触摸屏控制器应能够采集所书写的横纵坐标和压力坐标的模拟量,并通过AD将其转化为12位数字信息,然后把这些信息通过触摸屏控制器的串行口传送给处理设备。本系统采用Atmel公司比较经济实用的AT89S52单片机。通过单片机将采集到的信息处理后送给显示系统显示,然后将信息通过USB接口实时发送给计算机,以使签名信息能够在计算机上实时显示。本系统的结构框图如图1所示。
2 数据采集模块
2.1 触摸屏及其控制器
签名信息主要是通过触摸屏来获得的,触摸屏的种类大致可分为红外式触摸屏、电容式触摸屏、声表面波式触摸屏和电阻式触摸屏。其中电阻式触摸屏比较适合用来进行数据采集。电阻式触摸屏以一层玻璃作为基层,上面涂有一层透明氧化金属(ITO氧化铟)导电层,再盖有一层玻璃或是外表面经过硬化处理的光滑塑料层,它的内表面则涂有一层ITO导电层,塑料层与导电层之间有许多细小的透明隔离点对两导电层进行隔离绝缘。每当有笔或是手指按下时,两个导电层就相互接触,从而形成回路。
ADS7846是美国Burr-Brown公司推出的新一代电阻式触摸屏专用控制器。ADS7846是典型的逐步逼近寄存器型A/D变换器,其结构以电容再分布为基础。芯片包含有取样/保持功能。ADS7846的引脚与以前的ADS7843的引脚完全兼容,只是增加了片内温度测量、触摸压力测量和电池电压测量三个功能。ADS7846工作时,有时可能需要一个外部参考(VREF引脚),其中外部参考电压范围为1V~+VCC,通过它可以直接设定A/D输入通道的输入范围,而其平均基准输入电流则取决于变换速率。
2.2 MCU与ADS7846的接口
设计时应将ADS7846的X+,Y+,X-,Y-分别与触摸屏的X+,Y+。X-,Y-一一对应,而将ADS7846的CS,DCLK,DIN,DOUT,BUSY分别对应AT89S52的P2.1~P2.5脚。系统工作时,单片机先将P2.1置成低电平以选中ADS7846。然后再向ADS7846发送测量X坐标的命令控制字。图2所示是本系统中MCU与ADS7846的接口电路。
3 USB通信及应用程序
3.1 USB接口通信的实现
USB是一种快速、双向、低价且可进行热拔插的新型串行接口技术。能支持各种PC与外设之间的连接。目前USB有三种协议标准:USB1.1、USB2.0和USB OTG。本系统使用USB接口的原因不光是它的速度快,而且还在于USB协议的健壮性,以及传送数据的准确性。一个USB通信系统包括USB硬件和固件、USB驱动程序、USB应用软件。本系统采用的是USB接口芯片(philips公司的PDIUSBDl2)加8051系列单片机的实现方法。
USB接口芯片PDIUSBD12符合通用串行总线USB 1.1版规范,器件中集成了SIE、FIFO存储器收发器以及电压调整器,PDIUSBD12符合大多数器件的分类规格,可与任何外部微控制器/微处理器实现高速并行接口(2 MB/s),可进行完全自治的直接内存存取DMA操作。器件中集成了320字节的多结构FIFO存储器,主端点的双缓冲配置可增加数据的吞吐量,并可轻松实现实时数据传输,在批量模式和同步模式下,该器件均可实现1 MB/s的数据传输速率。其在系统中的应用电路如图3所示。
USB固件实际上就是MCU的程序文件,编写可采用C语言或汇编语言。它不是单纯的软件,而是软件和硬件的结合。为了使USB得到最大的传输速率,PDIUSBD12的固件可以设计成完全中断模式。当USB处理前台任务时,USB传输可以在后台进行。USB固件从下到上依次为底层的硬件提取层,可实现对单片机I/O口、数据总线等硬件接口的操作;PDIUSBD12命令接口的作用是实现单片机对PDIUSBD12器件的操作;而其中断服务程序则可在中断产生时读取中断传输来的数据,并设定事件标志;标准请求处理程序可对USB的标准设备进行请求处理;主循环程序负责发送USB请求、处理USB总线事件和用户功能处理等。
3.2 采集数据的传输格式
采集的签名信息一般包括书写时的横坐标值、纵坐标值和压力坐标值,当其通过触摸控制器芯片后,这些模拟量将被转化为12位数字量。其坐标值的范围为0~095。每次采集时,要保存这样的三个坐标值需要6个字节的空间。设计时可以在程序中用一个静态数组来存放坐标值,图4所示是所采集数据的存储格式。
在本签名系统中,每秒钟采集的点数对后续的签名识别过程十分重要。点数少了会漏掉许多重要信息(如断点信息,峰值信息等),而点采集过多又会增加传输的时间,从而影响实时显示并增加匹配算法的运算量。通过对国内外采集系统的分析认为:每秒采集200个点最为适合,即每过5 ms就采集一次坐标值。
由于本系统含有签名信息的采集过程,所以在程序设计时,应在USB主程序中枚举完后就采集数据并将其传送到USB的端点缓冲器子程序,且这一过程应该在5ms内完成。当主机发来接收数据的命令后,PDIUSBD12应把数据从缓冲器中发到PC机。当然,启动和停止采集命令也可以通过PC机上的实时显示应用程序来控制,这一控制所需的通信也可通过USB来实现。
3.3 上位机应用程序编写
USB应用程序可采用VB编写,设计时把对USB的访问做成动态链接库,这样可以节省程序、提高程序运行效率。实际上,只需要告诉VB系统动态链接库文件(DLL)的定位信息和声明读写USB端口的接口函数,就可以对USB端口进行操作。而在VB中若要访问动态链接库函数则必须把定位信息和函数声明放在一个后缀为bas的模块中。模块中的声明代码如下:
Public Declare Function ReadData Lib " C:\WINDOWS\system32\EasyUSB.dll " - (ByVal pipenum As Integer,recbuffer As Byte,ByVal ilen AsInteger,ByVal waittime As Integer)As Integer
在VB中可以用定时器控件来同步接收数据,也可以设置定时器的Interval属性,即触发定时器的间隔时间。当每次触发时间到达时,就可从USB接口接收数据。
签名的实时显示分为采集坐标的实时显示和签名笔迹的实时显示,其中采集坐标显示包含横纵坐标和压力坐标的显示。
签名坐标的实时显示可以用TextBox文本框控件来实现,但要用一个转换函数Str ()负责把采集到的整型数据转换为字符串类型,这样就可以直接在文本框显示了。
签名笔迹的实时显示稍微复杂一点,其实现方法是采用画线函数法,即当知道了两个点时就可以根据这两个点画线。每采集并接收到一个点时,就执行一次画线函数,以把当前的点和前一个点相连。这样,当你签名的时候,画线函数就会把你的书写笔迹呈现出来。
在进行画线时还要考虑干扰问题。由于液晶显示对签名采集芯片有一定的影响,因而可能造成采集数据的抖动,有时候还会出现非点(即本次采集到的值与前次和后一次的采集值相差较大),本设计虽然在系统硬件上做了一些抗干扰措施(比如加装滤波电容等),但效果不是很明显。
后经实验发现,通过软件去抖方法可以实现笔迹的平滑显示。具体去抖可从以下两个方面实现:第一是把两点之间的连线改为每四个点连一次,并把采集到的四个点的坐标值取平均值,从而缓解坐标值的抖动;第二是设定一个域值,当两个点之间的坐标绝对值之差不在该域值范围内时,即判定该点为非点,而不对该坐标值进行任何操作,直接舍弃。通过以上两个方面的措施可以去掉大多数的非点和抖动点,使曲线变得更加平滑。
图5所显示的是抗干扰处理前后所采集到的签名,图中箭头处即为受干扰的笔划。
签名笔迹实时显示的算法流程图如图6所示。
图7给出了VB应用程序下的实时显示界面。
4 结束语
本在线签名系统使用ADS7846实现了高速和高精度的数据采集,该芯片不仅能采集签名的横纵坐标,还能采集压力坐标,从而丰富了在线签名系统的动态签名信息,为以后的签名识别提供了更多的判断依据。本在线签名识别系统中采用USB接口来解决动态信息的采集设备和计算机之间的数据通信具有一定的现实意义。该方案可以准确实时地将采集到的签名数据传送到计算机。经测试,本系统传输信息的速度大于1Mbps,能够很好的满足系统的要求;同时由VB编写的人机界面还可实现签名的再现。
|