您好,欢迎来到华拓科技网。
搜索
您的当前位置:首页基于linux的嵌入式网络指纹识别系统研究与设计

基于linux的嵌入式网络指纹识别系统研究与设计

来源:华拓科技网
计算机光盘软件与应用

2012年第18期 Computer CD Software and Applications 软件设计开发

基于linux的嵌入式网络指纹识别系统研究与设计

李宏中1,叶强2,2

(1.中国海洋石油总公司科技发展部,北京 100010;2.北京科银京成技术有限公司,成都

610050)

摘要:本文基于linux设计嵌入式网络指纹识别系统,该系统的特点是,设计基于linux多任务并发环境,终端的处理速度快,系统吞吐量大;设计网络传输模块,指纹采集网络化,优化了目前网络识别系统的方案,减小了网络传输负载。

关键词:指纹识别;linux;网络;FPS200 中图分类号:TP391.41 文献标识码:A 文章编号:1007-9599 (2012) 18-0191-02

1 概述 指纹图像的处理分为:图像的预处理、特征点提取和指纹识别系统已经深入到了工作和生活的各个领域,指纹特征匹配。图像预处理是指在进行特征点提取和匹配指纹识别的产品随处可见。指纹识别系统主要有基于PC之前对原始图像进行一系列的处理,得到适合的图像,提的和嵌入式指纹识别系统,基于服务器—终端的网络指纹高后续处理的精度。 识别系统能够综合两种指纹识别系统的优点,目前网络指归一化是解决图像采集时各种原因造成的图像灰度级纹识别系统有两种方案:一种是在采集端进行指纹识别的分布不均的问题,目的是将图像调整到用户需要的灰度级所有工作,服务器只负责记录结果,这种方案对嵌入式终范围,这个范围是自己设定的,这个公式首先执行,为后端的处理能力要求高;另一种是将图像数据发送到服务器,续处理提供一个规范的灰度级和对比度。归一化的公式如传输数据量很大,而且浪费了终端的计算处理能力。本文公式1公式2和公式3.指纹图像是300*256格式。M0和的方案是采集指纹图像,经过处理和匹配之后,如果匹配VAR0是用户指定的值

ìVAR0´(S(i,j)-M)2不成功则发送预处理之后的图像数据到服务器进行匹配识S(i,j)VAR0´(S(i,j)-M)2ï输压力,也可以充分利用终端的处理能力。 MS(i,j)³M0+ï0

VARî 公式1 2 硬件部分设计 该设计的图像采集芯片是FPS200,FPS200指纹传感

器是电容式半导体传感器,关键区域是300*256的二维传感阵列组成。指纹图像获取的原理是:指纹压上传感区域的时候,根据当前电压和VDD电压获取电容值,这些电容值经过处理可以得到图像。释放之前的电压可以由用户设置。

FPS200的工作方式有USB,MCU,SPI的方式,FPS200可以再USB模式下作为标准的USB设备,不需额外设计控制器,满足USB的所有规范。MCU的方式是处理器总线模式,传输线路较多,传输速度比较快。SPI的方式是连接比较简单的方式,本文采用这种连接,MOSI连接SPIHOST/GPF9,MOSI连接SPIHISO/GPF8,SCLK连接GPF7,CS0连接GPG2。

本文采用的处理器是ARM9处理器,选用OK2440 开发板,采用的三星S3C2440,开发板的硬件包括SDRAM,nandflash,串口和以太网电路,开发板的这些资源可以便进行嵌入式开发,比较快速的建立起指纹识别系统的硬件系统。

1m-1n-1

M=ååS(i,j)

m´ni=0j=0

公式2

1m-1n-1

VAR=(S(i,j)-M)2ååm´ni=0j=0

公式3

3 指纹图像处理算法研究

指纹图像处理算法是是指纹识别关键的一个部分,本文采用的指纹识别是基于指纹图像的特征点的,这种方式和基于纹理性识别方式精度相对低一些,但是适合用在本文的新方案中,这种方式算法开销比较小,适合用在嵌入式终端。

— — 191

滤波是出去图像中的干扰点,由于本文采用的提取特

征点的方式,所以在这里需要排除扰点,本文采用开销比较小的中值滤波算法。采用3*3的模板进行处理。

二值化是图像预处理中不可缺少的一部分,将指纹图像转化为两种灰度级的二值图像,可以方便之后的处理,在本中,将其灰度值转化为0和1两种值,这种方式减少了信息的存储量,而且指纹只有两种信息:纹谷和纹脊。

细化算法是适合指纹纹理性的预处理算法,能够尽可能的是纹路只有单像素点,经过细化之后能够有利于提取特征点,本文是采用快速细化算法,这种算是判断边界点,根据是不是边界点删除节点,最终达到细化的母的。

特征点的提取是利用3*3的模板对图像进行处理,根据其灰度值0和1的分布情况判断中心点是端点、分叉点或者交叉点。本文存储分叉点和端点作为指纹特征点。

4 软件设计

本设计是基于linux操作系统,将linux经过裁剪移植到开发板上,在linux上进行指纹识别系统的软件设计该指纹识别系统的软件设计包括四个方面:linux操作系统,嵌入式TCP/IP协议栈,指纹识别的应用软件和图像采集模块的驱动程序设计,四个部分的关系如下图1所示。

计算机光盘软件与应用

软件设计开发 Computer CD Software and Applications 2012年第18期

图1.系统软件关

系图

指纹识别系统软件通过调用linux操作系统的API接口创建进程建立多任务的并行处理环境,这种方式可以提高CPU的利用率,提高系统性能,并且将系统程序模块化,也便于在linux系统上升级应用,发挥出了linux在指纹识别系统中的作用。进程之间通过消息队列实现信号的传递,实现同步。系统中主要的进程有:网卡收发进程,图像采集进程,图像预处理匹配进程。软件的规划和进程之间的关系如图2所示。

图2.系统进程

4.1 图像采集驱动程序设计。根据linux驱动开发规则,本文将指纹图像采集模块驱动文件操作结构体定义为

struct file_operations fps200_fops = { open: fps200_open, ioctl: fps200_ioctl, release: fps200_release };

驱动函数中的关键函数有:FpsGetImage,FpsInitModule和FpsCleanupModule。

(1)FpsGetImage在module_init中调用的,在最开始的初始化过程中执行module_ini,通过注册函数register_chrdev注册设备,为数据的存储分配空间。本文采用的是SPI的连接方式,配置好SPI接口的控制寄存器,向FPS200芯片发送数据对模块进行初始化,FPS200的接收时序是先接收内部寄存器的索引号,再接收数据存在寄存器中。初始化工作主要是设置CTLRB的第0位和第2位,然后设置寄存器DCR、DTR、PGC的值,这组寄存器的值可以通过电压和释放电流等参数的配置决定获取图像的质量,本文根据Veridicom公司的测试结果,选择DCR=0x01、DTR=0x40、PGC=0x0B这一组配置,能够获取高质量的图像。(2)Fps200CleanupModule是在module_exit()中调用的,在设备注销的时候回收分配的资源。(3)FpsGetImage是通过芯片采集图像的函数,软件流程如图3所示,这个借口提供给了图像采集进程使用,获取图像。FPS200的获取图像操作流程是:置CTRLA为0x02,等待捕获,读取CTRLA的值,等待AD转换,判断是不是最后单元。

4.2 网络程序设计。本设计是在新的方案下实现网络指纹识别系统,网络进程实现的功能是关键的部分,能够建立服务器和客户端的关系,本文调用了TCP/IP协议栈提

供的API实现数据的网络传输。本文网卡芯片是DM9000。

本文使用socket建立端点之间的连接,实现通信。在linux系统中,将socket的操作也看做一个对IO设备的操作,用文件的方式操作,因此在使用socket之前建立一个文件句柄,即声明一个对象,int socket(int,int,int)。对象通信是基于TCP协议的,该协议在传输过程中要建立三次握手信号.调用的网络协议栈的API有:bind(),listen(),connect(),accept(),recv()和send()。

Bind接口绑定socket端口,在服务器中调用该接口,在程序中调用该接口代码:bind(SocketFd,(struct socketaddr*)&ser_addr,sizeof(ser_addr)

listen在服务器端实现,是服务前检测有没有发送请求的实现函数,函数原型是int listen(int s, int backlog);s表示句柄,backlog表示能够监听的数量。实现监听的函数:listen(socket_fd,MAX_LISTEN_NUM)

客户端用connect发送连接请求,函数原型为int connect(int s, struct sockaddr FAR * name,int namelen)三个参数分别表示socket的句柄、规定了ip和端口的地址结构体以及大小。客户端调用该接口:connect(socket_fd, (struct socketaddr*)&ser_addr,sizeof(ser_addr))

客服端和服务器之间读写数据要用到recv()和send(),函数原型分别是int send(int s, char * buf,int len,int flags);int recv(int s, char * buf,int len,int flags)。

4.3 图像处理软件。指纹图像预处理和对比进程中主要中实现指纹预处理算法和对比算法,归一化按照公式对300*256的数组进行处理,中值滤波算法采用3*3的模板,对非边界点进行处理,程序中Is_Boundary_Point()判断是不是边界点。二值化用全局阈值法算出阈值,用公式2进行判断并处理像素点。细化算法用3*3模板判断是不是纹线的边界点,如果是则删除边界点。特征点的匹配是通过计算邻点与匹配点的距离来实现,距离的计算可以根据像素点的坐标,用直角三角形的公式计算。

在指纹登记模式下可以采集图像,经过处理之后以点集的方式保存起来,图像的处理主要包括预处理和指纹特征点提取,在登记模式下调用enregist()函数来实现指纹的登记,返回值0和1表示登记失败或者成功。函数核心部分fliter(int * Nimage_array);binary(int* Fimage_array); denoising(int * image_array); thiner(int * age_array);fp=getpoints (int * image_array); normalization(int * image_array).

5 总结

本文基于ARM和linux设计了嵌入式网络指纹识别系统,在新的方案下能够减轻网络传输的压力,能够充分利用终端的计算能力。本设计的另一个特点是基于linux操作系统,建立并发执行环境,提高CPU的利用率,对系统系能有一个明显的提高。

参考文献:

[1]祝恩,殷建平,张国敏等.自动指纹识别技术[M].国防科技大学.

[2]周圆.基于ARM的指纹识别的研究与实现[C].西南交通大学.2010.

[3]FPS200英文数据手册:FPS200_datasheet.

— 192 —

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo6.cn 版权所有 赣ICP备2024042791号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务