图4 下位机程序流程图
3. 2 上位机程序
上位机程序是使用LabVIEW 编写的程序。
LabVIEW是美国国家仪器公司推出的图形化的编程平台,引入了虚拟仪器的概念,以框图的形式编写代码,高度的模块化和智能化为软件设计提供了便利。
为简化开发,本系统使用LabVIEW 进行界面开发以及算法处理。
本系统实现身份认证功能主要包含两个环节,第一步是创建签名,即将允许进入系统的用户书写特征记录到系统中; 第二步是验证签名,即验证输入的签名的用户是否有进入系统的权限,系统框图如图5所示。
图5 上位机程序流程图
系统首先进行初始化,用户选择“创建签名”,然后开始在触摸屏上书写签名。系统接收下位机传送的数据,先进行存储,收到的数据从起始码到结束码之间是有效的。因为AD7879 内部为12 位ADC,且每个采样点需要采集四次数据( X、Y、Z1、Z2) ,所以每个采样点对应8 Byte 的信息。上位机程序可以顺次读出所有有效点,循环读取各个采样点,并逐点描绘在空白图片上,就可以得到书写的字形显示图片。为形象表现显示效果,设计中把压力特征映射成了像素点的颜色信息,深颜色表示压力大,浅颜色表示压力小。
创建签名之后可以进行验证签名,用户选择验证签名,并开始在触摸屏上书写,之后数据采集和处理的过程与创建签名的方法相同,得到图片B.然后,将输入的签名与初始创建的签名进行对比,对比的过程如下。
( 1) 消除误差点。实验发现,触摸屏采集到的数据中,有些采样点是由系统随机误差造成的,其在屏幕上显示为一些杂散的孤点,在验证之前需要消除这些误差点。
( 2) 对正,对齐字形。首先将书写的字迹比划对应起来,这主要是寻找书写笔迹中的特征点,包括提笔点、落笔点和转折点,并形成特征标记。
( 3) 分割字符。根据上一步所做的标记,以特征点为间隔,把字迹分为若干段,将之与创建的原始签名数据进行对比。如果段数不同,则验证失败,发送重新验证提示。否则,进行下一步对比。
( 4) 压力对比。求出每个特征点附近的平均压力之差。每个转折点处的曲率之和以及每段采样点序列的均方差,若这些结果均没有超过设定的阈值,则认证通过,否则认证失败。这些阈值都是通过实验中反复对比得到。这个阈值也可以根据用户需求设定。用户所需的安全等级越高,那么设定的阈值就越高。
4 结果与讨论
通过本系统的硬件平台,采集了书写的压力信息,可以分析出不同的人书写的压力有明显的区别。
如图6 中是书写“梅”字的笔劲变化情况。因为每次提笔的时候压力会变得很小,所以在图中可以看到波形中有11 个尖峰,对应的是书写的11 次提笔,可以根据尖峰把书写的比划分割出来。每次书写时的速度不完全,所以每一笔的采样数也不一样,经过插值算法将每一笔的采样数归一化到相同,才能在图像中看到采样点一一对应的效果。
图6 笔劲变化曲线
图中灰线为同一个人书写时采集到的压力变化,深灰线和黑线为另外两个人书写的压力变化,同一个人的书写压力变化趋势和压力的绝对大小都很接近,能够与不同人的书写区分开来,说明本系统的设计思路是合理的。
5 结束语
本文介绍了一种基于笔劲识别的身份验证系统,重点在于对以往单纯以书写的字形来识别身份的方式的改进,在相对成熟的笔迹识别技术基础上,辅以对书写笔劲的对比,可以更加精确地识别用户的身份,而且书写的笔劲在外观上是很难察觉的,故很难被模仿。本系统使用LabVIEW 编写上位机,充分简化了开发流程。另外本文中的书写笔劲的采集是直接基于触摸屏的,不用外加任何传感器和特殊的压力采集设备,简单易行,只要稍加改装,此方案可以被广泛使用在其他以触摸屏为主的设备上。经过实际测试,本系统对特定用户的识别率较高,但是存在一定的拒绝认证率。这就需要进一步改进算法,以进一步提高准确率。在实际应用中,本方法应结合笔迹识别,提高认证的准确度。