Profile - CN172


CN172

基于NiosⅡ的虹膜识别系统

重庆大学
电子信息工程






Advisor

Name: 何伟

Members

No. Name English Name
1 林英撑 linyingcheng
2 刘平净 liupingjing
3 赖琴 laiqin

Project Paper

1. 设计概述 (Preliminary Paper)

    人们在迈进数字时代的过程中,对身份验证方法的准确性和便捷性的需求不断提高。传统的身份验证方法主要包括身份标志物(如钥匙、证件等)连同身份标志信息(如账号、密码等),或以上二者的结合(如银行卡等)。人们在使用过程中发现,他们都存在着一样的缺点:易于遗失和伪造。而且传统的身份验证系统并不能有效的识别持有这些身份标志事物的人是否是真正的拥有者。因此,一旦被冒充,真正的拥有者将遭受极大的损失。随着光电技术、微计算机技术、图像处理技术与模式识别等技术的快速发展,出现了一种崭新的人体生物特征识别技术,这就是依靠人体生物特征来进行人的身份验证的一种高科技识别。人体特征识别方法,也叫生物特征识别方法,是指利用人的独特的生理及行为特征进行鉴别的身份验证的技术手段。目前,常用的生物特征识别技术所用的生物特征有基于生理特征的如人脸、指纹、虹膜,也有基于行为特征的如笔迹、声音等。

    人体特征的鉴别方法有很多种。在任何生物特征中,指纹相对稳定但录取指纹不是非侵犯性的。脸像特征具备很多优点(如主动性、非侵犯性和用户友好等),但脸像特征随年龄而变化,可靠性不高,而且容易被伪装。声音特征具备和脸像特征相似的优点,但他随年龄、健康状况和环境等因素而变化,而且说话人识别系统也容易被录音所欺骗,容易被伪造。虹膜特征识别解决了这些问题,还具备上述其他生物特征所不具备的一些特性,故近年来虹膜识别技术被认为是最有前途的生物识别技术之一。

    虹膜识别系统包括虹膜图像采集装置和虹膜识别软件算法两部分,是一项门槛很高的高新技术。虹膜识别技术在20世纪90年代前只有世界上少数的企业掌握其核心技术,技术水平也没有达到实际使用的程度,但随着科学技术的不断进步,现在虹膜识别的技术水平已经达到1秒钟完成100万次图像比对,并且错误率低于百万分之一,被公认为可靠性最高的生物识别技术,并且开始进入实际应用阶段。

    虹膜识别的主要应用领域包括:(1)高端门禁:国家机关、企事业单位、科研机构、高档住宅楼、银行金库、保险柜、枪械库、档案库、核电站、机场、军事基地、保密部门、计算机房等的出入控制。(2)公安刑侦:流动人口管理、出入境管理、身份证管理、驾驶执照管理、嫌疑犯排查、抓逃、寻找失踪儿童、司法证据等。(3)医疗社保:献血人员身份确认、社会福利领取人员、劳保人员身份确认等。(4)网络安全:电子商务、网络访问、电脑登录等。(5)其它应用:考勤、考试人员身份确认、信息安全等。随着远距离虹膜图像获取技术的成熟以及识别算法性能的进一步提升,虹膜识别应用于日常生活已经成为可能。

    近年来,随着现场可编程逻辑阵列(FPGA)器件的发展,SOPC技术的成熟,使得采用NiosⅡ软核处理器在FPGA上实现虹膜识别算法成为可能。NiosII软核处理器是Altera公司推出的嵌入在其FPGA内部的32位软核处理器,且其内核仅占用很少的逻辑资源,另外它的可配置程度极高,不但可以根据用户需求加入各种标准接口如各种外部存储器、以太网控制器、IDE驱动器、USB接口等,也可以将用户自己定义的接口模块和逻辑模块加入其中,必要的时候还可以在NiosII软核中加入实时操作系统,来实现对多任务的调度,这让用户可以随心所欲的构件完全符合系统要求的处理器结构。对于虹膜识别系统,我们很容易构建满足系统需求的处理器结构,在FPGA外部只需要添加配置芯片、SDRAM,FLASH加上虹膜采集设备就可以构成一个完整的虹膜采集系统硬件平台,很好的体现了SOPC的设计思想,使系统具有结构简单,成本低廉,保密性好的特点。在系统性能上,系统可以利用FPGA的并行处理能力提高系统性能,如采用定制自定义模块用硬件实现耗时大的软件算法模块提高系统性能,也可以采用NiosⅡ处理器的自定义指令方式用硬件实现部分复杂算法片段,方便的在软件程序中调用,大大提高了程序执行效率, 另外还可以用新推出的C2H工具直接将一些软件程序进行硬件化,提高系统性能,这些多很好的保证了本系统很高的处理速度,具有很好实时性。

    系统采用的开发平台是terasIC公司为Altera公司设计的DE1开发板。DE1开发板上采用主控FPGA芯片是EP2C20,片上资源极其丰富以及其本身优异的性能使之完全可以满足复杂度不是特别高的系统开发,另外DE1开发板上也为用户提供了丰富的接口和存储器资源以及非常全面的接口,使用户可以在其上进行各种系统的开发和设计。EP2C20芯片上大量的逻辑资源、片上存储器、PLL、硬件乘法器单元以及NiosII软核处理器的可用性使本系统在其上实现复杂的虹膜识别算法设计成为可能,开发板上大容量的SDRAM为系统提供程序空间,SRAM为系统提供了图像显示的显存空间,FLASH为系统提供虹膜数据库空间。板上的两个IDE插槽给系统使用的摄像头和液晶显示屏提供接口,按键和LED等其他资源也为系统的设计带来了很大的方便。

(Revision: 4 / 2008-09-09 16:28:09)

2. 功能描述 (Final Project Paper)

      本系统是基于NiosII软核处理器以Altera公司的FPGA芯片为主控芯片设计的一个自动虹膜识别系统。整个系统实现的功能包括虹膜图像采集、虹膜图像显示、虹膜图像质量评估、虹膜对象录入、虹膜对象识别等,整个系统的实现包括了硬件制作,大量硬件语言模块设计以及大量软件程序编写,整个系统设计高度复杂。下面对每个功能模块的作用和实现进行详细说明。

一、 虹膜图像采集

      虹膜图像采集采用自制的虹膜采集装置实现。系统要求采集到的虹膜图像具有一定的分辨率和清晰度,虹膜纹理尽量清晰并且尽可能的排除眼睑、眼睑毛、光斑,光照不均匀等因素带来的干扰。由于没有在市场上采购到合适的设备,所以自行设计并制作了一个虹膜采集装置。虹膜采集装置采用terasIC公司推出的TRDB_D5M开发套件改装,TRDB_D5M采用的是5M象素的数字CMOS图像传感器芯片,焦距可调,这使本虹膜采集设备可以采集到较高分辨率和清晰度的虹膜图像。为了得到尽量多而清晰的虹膜纹理,本装置光源设计上采用聚光型LED从眼睛上下方斜射入眼睛从而照亮虹膜纹理的方式。另外,为了消除视野环境成像干扰(消除光污染)为摄像头制作了一个全黑的外罩。制作的虹膜采集装置结构如图2.1所示。

图2.1  虹膜采集装置结构图

设计中采用全硬件语言的方式进行摄像头配置和图像采集工作来减轻CPU的负担,也保证系统的高实时性,采用自定义模块的方式将采集到的图像传送给CPU,具体设计方法参见设计方法的相应部分,采集到的图像效果如图2.2所示。

图2.2  采集到的虹膜图像

二、虹膜图像显示

      虹膜图像显示是指将虹膜采集装置拍摄到的图像显示在系统的液晶显示屏上,目的在于使用户感知拍摄到的虹膜情况,为用户调整眼睛位置,眼睑闭合程度提供依据。硬件上采用terasIC公司推出的3.6英寸数字液晶屏TRDB_LCM,可以直接与DE1的扩展接口进行连接。采集模块将采集到灰度虹膜图像写入作为显存的SRAM中,再用相应的显示扫描模块将SRAM中的图像数据送往显示屏进行显示,另外显示屏需要显示帮助信息、提示信息以及一些处理效果图像,因此设计了另外一套由Nios II处理器控制的自定义显示模块,在不需要显示实时虹膜图像时切换为显示帮助信息、提示信息或处理效果图像,图像可以是全真彩图像。具体设计方法参见设计方法的相应部分,各个显示效果分别如图2.3、图2.4、图2.5、图2.6、图2.7所示。

                         

                  图2.3 开机画面图                                                                                     图2.4 帮助画面

                        

                   图2.5 提示画面                                                                                    图2.6 虹膜直接显示

图2.7 处理效果显示

三、虹膜图像质量评估

      虹膜图像质量评估是指采集到虹膜图像后,在进行虹膜对象识别或虹膜对象录入前对虹膜图像质量进行评估确定采集到的虹膜图像是否满足处理要求,若是则进行后续处理,否则重新进行图像采集。这样可以很大程度上排除因为虹膜图像质量问题导致的误识别,从而大大提高系统的可靠性。

      系统从虹膜图像的清晰度以及虹膜识别过程中对各个步骤得到的结果进行判断来评价虹膜图像的质量。由于本系统采用的虹膜定位方法非常的快速和准确,因此在系统中把对虹膜图像质量的评估放在虹膜定位以后,如果定位正常,也就是内外圆偏心率和外圆大小正常,然后对靠近内圆的部分带有较多虹膜纹理图像进行图像清晰度检测,如果图像模糊则返回重新采集图像,清晰则继续进行后续处理。

四、虹膜对象录入

      虹膜对象录入是指采集虹膜对象的虹膜图像并提取可靠的虹膜特征存入系统的虹膜库中,即训练过程。实现该功能包括虹膜图像质量评估、虹膜定位、图像预处理、归一化展开、特征提取、写入特征库等步骤。其中虹膜定位、图像预处理、归一化展开、特征提取等步骤在虹膜对象识别中也有用到,因此这些步骤的具体实现在虹膜对象识别部分进行详细阐述。

      需要说明一点是该过程中的特征提取是对归一化展开后的图像以及其左右旋转后的图像进行的,其目的在于防止采集到旋转的虹膜图像,系统在这里采集三幅质量较好的图像,然后对每一幅图像分别进行定位、评估、旋转展开后得到3幅展开后的图像(分别是归一化展开图像本身、左移8列、右移8列得到的),最后对得到的3×3=9幅展开后的图像提取特征。此处得到的一个虹膜对象的特征为768个16比特数,我们采用数组的组织方式组织特征码。由于本系统为小型系统,因此没有设计复杂的数据库组织虹膜特征数据,也没有设计分类器对虹膜特征进行分类存储。系统虹膜库的实现是利用在系统中的FLASH内开辟2M字节的地址作为虹膜库,系统中我们为每组虹膜特征开辟2k字节的存储空间,其中前1536个字节存储特征码,剩下的地址空间存储虹膜对象信息,这样本系统最多可以存放1024个对象信息,系统在虹膜库管理模式下可以对整个虹膜库进行清除或对各个虹膜特征进行浏览、删除等操作。

五、虹膜对象识别

      虹膜对象识别是指采集虹膜对象的虹膜图像并提取虹膜特征与系统虹膜特征库中的各个特征向量进行匹配,得到匹配结果的过程。该过程包括对经过质量评估后的虹膜图像进行虹膜定位、归一化展开、去除眼睑和睫毛干扰、特征提取、特征匹配等步骤。具体各步骤的处理方式如下:

1、虹膜定位

      虹膜定位是利用虹膜内外边缘呈近似几何圆形,虹膜的精确定位是准确识别虹膜的基础。系统提出一种快速可靠的定位方法,适用范围广,该方法包括以下四个步骤:

(1) 内圆粗定位:

      先由瞳孔中的一个点向外8个方向在适当范围内通过如图2.8的边缘点检测算子寻找边缘点,分别记为(x1,y1)、(x2,y2)...(x8,y8).得到边缘点后,选取一系列距离较远的3个边界点组合坐标分别代入圆公式(2.1),然后解方程组就可以得到一系列内圆的圆心和半径。为了提高精确性,排除可能的干扰点,我们先对得到圆心和半径进行剔除奇异值再求平均的方式确定内圆的圆心和半径。

圆公式:                  (2.1)

图 2.8边缘点检测算子

      内圆粗定位的函数原型为:int searchInnerCircle(Img *irisImage,CPoint *center,int *radius),其中irisImage为采集到的虹膜图像,center和radius为定位结果(即圆心坐标和半径)。在内圆粗定位时,为了避免灯光的干扰,对内圆边界只检测左上、左边、左下、右上、右边和右下六个方向的边界点,然后将按三点一组的方式组成不相同的5组,对每一组调用int circler(int x1,int y1,int x2,int y2,int x3,int y3,CPoint *centerr,int *r)函数得到一组圆心坐标和半径,得到5组定位效果,我们剔除5组中半径大的两组和小的两组得到最终的定位结果。内圆粗定位的定位效果如图2.9所示。

图2.9 虹膜内圆粗定位图

(2) 内圆校正:

      经过步骤(1)后,可以得到基本准确的虹膜内圆,但是由于采集到的虹膜图像的差异性以及粗定位中搜索到的个别点可能有较大误差,得到的内圆有时候可能不是很准确,而虹膜内圆的定位会直接影响后面的特征提取步骤,所以有必要对内圆进行校正。校正过程为:在得到的内圆边界附近进行边界点检测,得到更加准确的边界点,如以左边界点为例,经过步骤(1)得到内圆后,确定内圆边界上最左边的点(即左方向与水平线夹角为0度的射线与内圆边界的交点),在该点左右一个较小范围内利用图2.8中的左边界点检测算子得到更加准确的左边界点,在其他方向进行该操作可以得到另外5个方向的边界点坐标,然后在这些点中选取无异常的几个点重新计算圆心和半径即可实现内圆的校正。

      内圆校正的函数原型为:int correctInnerCircle(Img *irisImage,CPoint *preCenter,int *preRadius,CPoint *dstCenter,int *dstRadius);其中preCenter和preRadius是粗定位后的圆心坐标和半径,dstCenter和dstRadiu是校正后的内圆圆心坐标和半径。针对图2.9中的内圆粗定位效果,校正后的效果如图2.10所示。

图2.10 虹膜内圆校正后效果

(3) 外圆定位:

      外圆定位的方法基本上与内圆定位相同,但因其范围比较确定,可以以内圆圆心为圆心按估计的半径范围进行搜索,这样即可以节省定位时间,还可以在一定程度上消除干扰,保证定位的准确性。

      外圆定位的函数原型为:int seekOuterCircle(Img *irisImage,CPoint *innerCenter,int *innerRadius,CPoint *outerCenter,int *outerRadius),其中innerCenter和innerRadius为内圆圆心坐标和半径,outerCenter和outerRadius为得到的外圆圆心坐标和半径。为了消除睫毛和眼皮的影响,在本系统中只搜寻外圆的左边、左下、右边和右下四个方向的边界点,然后按三点一组的方式组成不相同的三组,接着调用int circler(int x1,int y1,int x2,int y2,int x3,int y3,CPoint *centerr,int *r)函数得到一组圆心坐标和半径,最后取半径最小的一组数据作为外圆的圆心坐标和半径,外圆定位的定位效果如图2.11所示。

图2.11 虹膜外圆定位效果

(4) 外圆校正

      为了得到更加精确的外圆边界,同样对外圆粗定位后的虹膜图像做校正工作,外圆校正的函数原型为:Int correctOuterCircle(Img *irsiImage,Cpoint *preCenter,int*preRadius,Cpoint *dstCenter,int *dstRadius)。外圆校正过程与内圆校正相似。针对图2.11所示的外圆定位效果,外圆校正后的图像如图2.12所示

图2.12  虹膜外圆校正效果

      与被广泛采用的Hough变换法相比,这种定位方法速度上具有极大的优势,几乎为Hough变换法的几千倍。通过实验比较两种定位方法的定位效果也比较相近。

2、归一化展开

      展开的方法如下:假如定位后的虹膜图像如图2.13所示,外圆圆心为Oout(Ox_out,Oy_out),内圆圆心为Oin(Ox_in,Oy_in),外圆和内圆半径分别为r_out和r_in。

图2.13 虹膜圆环示意图

      若希望展开后的图像为512x64,则将圆环分割为512份,对于展开后的图像矩阵的第i行,该行的点对应于角度为T=i*360/512的射线被圆环所截得线段上的点,具体表现为:假设从内圆圆心以角度T=i*(360)/512向外的射线与内圆和外圆分别交于点A和B,原始图像记为I_Orig(大小为MxN),则展开后的图像的第i行可由下面的式(2.2)、(2.3)和(2.4)求得:

                             (2.2)

                                            (2.3)                

                                                    (2.4)

      一幅虹膜图像(图2.14左)归一化展开后的图像如图2.14右所示

图2.14  虹膜的归一化展开效果

3、去除眼睑、睫毛干扰:

      在系统使用中可能会遇到有些用户的眼睛睁开程度较小、睫毛较长等情况,这样得到的虹膜图像的上下部分很可能会受到眼睑、睫毛的干扰(如图2.15),在这种情况下需要对采集到的图像进行干扰消除,最简单的方式就是裁剪去除这些可能带有干扰信息的图像区域,处理过程为:将图像按图2.16分成四个部分,然后去除2、4部分,再将1、3部分连接形成新图像,该步骤对应到展开后图像的操作为去除对应的列,然后将图像矩阵重新组合为256x64的新矩阵。这样处理是很有必要的,而且也能保证能提取到足够的特征信息。

                                         

                                图2.15 受睫毛干扰的虹膜图像                              图2.16 虹膜圆环划分示意图

4、特征提取

      系统采用二维Gabor滤波的方式进行特征提取,Gabor滤波法是当前虹膜识别理论以及实践中最为有效可靠的方法,主要在于二维Gabor滤波器的形状与虹膜纹理有很大的相似性。二维Gabor函数的离散表达式如式2.5。

        (2.5)

      为了达到尽量好的识别效果必须选择一组合适滤波器,通过大量的实验测试,本系统设计中,取M=N=17,α=0.0625。(r,s)分别取(0,0.8),(0.8,0),(0.4,0.8),(0.8,0.4),(0,1),(1,0),(0.5,1),(1,0.5),(0,1.2),(1.2,0),(0.6,1.2),(1.2,0.6),(0,1.6),(1.6,0),(0.8,1.6),(1.6,0.8)得到16个通道的滤波器,特征提取过程为,将图像划分为M×N个的子块,对每一块用上面选取的滤波器进行滤波,然后计算滤波后的子块的均值作为该子块的特征。经过归一化展开后的图像大小为256×64,由于采集到的虹膜图像通常还包括其他部分如眼睑、眼白、睫毛等,这些部分都会遮挡一部分的虹膜纹理,给识别带来一定的困难,考虑到虹膜图像具有丰富的纹理特征,本系统在提取特征过程中只提取了靠近瞳孔的48个像素点宽度的纹理特征,即将虹膜图像划分为256×48/(16×16)=16×3个子块,对每一个子块进行16次滤波会得到16个特征码,最终整个图像得到的特征值共有16×48=768个。然后对得到的特征值进行特征二值化,即选取各通道滤波结果的均值作为比较对象,大于均值的二值化为“1“,小于则为“0“。

      由于特征提取过程涉及大量的DSP运算,软件实现过于耗时,系统中采用用户自定义模块的方式来实现该过程,实现的具体方法参见报告的实现方法部分。

5、特征匹配

      系统采用绝对距离来衡量待识别图像与特征库中某特征的距离,绝对距离定义如式2.6,若两组特征分别用A(i){i=1,2,3,4,…,768}和B(i){i=1,2,3,4,…,768}表示,则这两组特征之间的距离可以通过式(2.6)求得:

          (2.6)

有了距离的定义后,特征匹配过程如下:将待识别图像进行预处理、定位、归一化展开和提取特征,然后将该特征与特征库中的已有特征进行匹配,由于在训练过程中对三幅图像均加了顺实时针和逆时针方向的旋转,所以特征库中每一组特征都包含了该虹膜对象不同角度和场景所提取的9组特征码,在计算待匹配特征与特征库中第i组特征的距离时,应先将这9组特征码分离出来,然后分别计算其与待识别特征码的距离,记9个距离中的最小值为待识别特征码与特征库中第i组特征的距离d(i),这样遍历特征库中所有特征后,得到一组距离d(i) i=1,2,3…N,若存在一个最小距离d(k)且 d(k)小于设定阈值,则判定待识别虹膜属于第k个训练对象,否则匹配失败。

(Revision: 18 / 2008-09-09 18:02:23)

3. 性能参数 (Final Project Paper)

一、本系统实际性能参数
1、电源
    直流电压:7.2V。
2、工作环境
    工作温度:-5 ~ 45 ˚C;
    相对湿度:8%~95%。
3、摄像头参数
    最大像素:5MPIX;
    采集图像大小:320*240;
    信号传输方式:I2C配置,并行数据输入。
4、显示
    320*240真彩液晶显示屏。
5、识别率
   测试用户数:50人
   测试识别率:94%
   测试误识率:0%
   测试拒识率:6%
6、耗时
   虹膜采集时间:15 P/S
   训练时间:0.7S
   识别时间:0.2S

二、系统资源消耗与性能提升
      系统利用FPGA中的逻辑单元、乘法器和片上存储器等资源对软件算法进行加速,达到了非常好的性能提升效果。硬件加速的实现依赖于EP2C20芯片提供了丰富的硬件资源和其本身优异的性能以及其先进的SOPC设计架构。系统以Nios II软核处理器为核心,结合大量硬件模块,由Nios II软核处理器对硬件模块进行有机的协调控制,实现系统性能的最优化。
      系统在刚将算法移植到Nios II软核处理器上的时候,运行速度非常慢,训练和识别操作的运行时间都超过20分钟,经过一些软件优化和调整(如选择使用硬件乘除法器),运行时间还是超过6分钟,因此我们对多个模块采用用户自定义模块,用户自定义指令,C2H等方式进行硬件加速,取得了很好的效果,最终得到了各个步骤都小于1秒的运行时间。系统的编译报告如图3.1所示,系统中主要的加速模块情况如表3.1所示。

图3.1 系统编译报告

表3.1 主要硬件加速模块情况表
模块名称 加速方法 资源消耗 加速前运行时间 加速后运行时间 性能提升
Gabor滤波 用户自定义模块 3317 LES
32768 bits memory
16 embeded multipliers
>6minutes 41ms >878000%
正弦函数 用户自定义指令 9 LES
4096 bits memory
0.3ms 0.2us 150000%
余弦函数 用户自定义指令 9 LES
4096 bits memory
0.3ms 0.2us 150000%
开平方根 用户自定义指令 278 LES 0.2 us 0.01us 2000%
归一化展开 C2H 5861 LES
12 embeded multipliers
>6s 60ms >10000%

 

(Revision: 3 / 2008-09-09 17:56:45)

4. 设计结构 (Preliminary Paper)

        本设计以DE1开发板为设计平台,开发板、虹膜采集装置、液晶显示屏和PS/2键盘组成系统完整的硬件平台,如图4.1所示。整个系统简洁美观,无杂乱的连线,系统中除虹膜采集和虹膜显示部分由外围设备实现外,其他部分处理全部由DE1的上的主控FPGA芯片2C20实现,设计充分体现了SOPC的设计思想。图4.2为虹膜识别系统硬件设计框图,其中硬件算法加速模块包括用用户自定义模块、用户自定义指令、C2H等方法实现算法加速实现算法处理部分逻辑。图4.3是虹膜识别系统设计的结构框图,主要包括图像采集、图像质量评估、特征提取、特征录入和特征匹配等模块,根据系统工作内容又可分为虹膜特征登记过程和虹膜图像识别过程。

图4.1 虹膜识别硬件平台

 图4.2 虹膜识别系统硬件设计框图

图4.3 虹膜识别系统设计结构框图


       图4.4是虹膜识别系统工作流程图,系统上电后,软件即开始运行一系列系统初始化程序完成系统的初始化工作,然后要求用户选择工作模式,工作模式分为训练模式、识别模式和虹膜库管理模式,下面是三种工作模式软件流程的简要说明。

       训练模式:在该模式下可以对虹膜图像进行训练(即把识别对象的虹膜特征存入数据库)。选择训练模式后,系统提示输入虹膜对象信息,包括姓名、性别、年龄、职位等,接着开始读取虹膜图像(此处虹膜图像的读取是配合硬件虹膜图像的评估模块的,只有在硬件评估模块确定虹膜图像有效才能够读到虹膜图像),然后对图像进行软件评估,通过评估后才进行特征提取,否则回到虹膜图像读取过程,提取得到虹膜特征后对提取得到的特征的可靠性和充分性进行判别(特征的可靠性和充分性保证主要通过多次提取录入对象虹膜的特征信息,进行条件平均运算以及对最终得到的特征进行一些经验判别实现),若未通过则回到虹膜图像读取过程,通过才将特征写入数据库(写入数据库过程在系统中体现为将虹膜特征写入系统的FLASH芯片,包括虹膜特征向量的组织,以及各个虹膜特征向量在FLASH中的存放位置管理和FLASH存储空间管理,具体方式见功能描述部分的相关说明),完成后询问用户是否继续训练,若是则继续采集图像进行训练,否则回到模式选择过程进入待机状态。流程中的提取特征过程较为复杂,具体处理流程如图4.5。

       识别模式:在该模式下可以对采集的虹膜图像进行识别。流程中除特征匹配过程外,其他过程在训练模式下均有出现。图4.6是特征匹配过程的具体处理流程图。

       虹膜库管理模式下可以对整个虹膜库进行清除或对各个虹膜特征进行浏览、删除等操作。

图4.4 虹膜识别系统总体软件流程图

图4.5 提取特征过程算法流程图

图4.6 特征匹配算法流程图

(Revision: 10 / 2008-09-09 17:55:59)

5. 设计方法 (Final Project Paper)

      本系统在设计中充分体现SOPC的概念,系统硬件以DE1上的2C20芯片为核心,除存储芯片,显示设备,传感器和键盘外无其它附加设备。系统的所有软硬件处理程序在单片FPGA内实现。下面将系统设计分模块进行详细描述。

一、图像采集模块设计

      系统采用的图像传感器为5M像素的数字彩色CMOS传感器,最大支持2592×1944像素,最高支持96Mhz的像素时钟,内部自带PLL,内部AD的精度是10比特,图像输出格式和传感器暴光时间、增益可编程。这些特性使得该传感器的使用非常灵活,通过测试,系统采用取图像有效像素中间的640×480图像区域,图像采集模块进行隔行采集,取红色分量点的方式得到规格为320×240像素的灰度图像,舍弃低两位数据位使精度变为8比特。设计中像素时钟设置为25MHz,帧速率超过15帧/秒。这个图像效果和采集速度完全能满足算法要求,因此可以采用性能较低的图像传感器代替,从而降低系统成本。

      分析系统需求,本模块需要实现摄像头的配置和图像数据的采集并将图像数据实时的送入CPU供软件程序处理。此处可以考虑使用SRAM作为数据中转,即先设计一个模块使SRAM由CPU和图像采集模块复用,采集模块将采集到的图像数据写入SRAM,CPU则在SRAM读取图像数据。但是由于显示模块需要使用SRAM作为显存,于是本设计采用片上RAM作为缓冲,按行通知CPU读取数据的方式。这种方式是在CPU中添加一个512字节的片上双向RAM作为数据缓冲,然后设计一个带有一个主端口和一个从端口的自定义模块,由主端口向数据缓冲中写数据,从端口在写完一行数据以后通知CPU(提供中断和寄存器置位两种方式)取数。模块在SOPC系统中的结构如图5.1所示。

图5.1 SOPC中图像采集模块结构图

      为该模块设计的软件驱动函数为:
          int readImage(Img *irisImage); 
         C程序只需调用该函数即可得到一幅完整的图像。

二、显示模块设计

      系统采用3.6英寸的320×240像素全真彩显示屏,该屏可以满足显示精细的虹膜图像要求,也可以显示其他信息提高系统的人性化程度。

      分析系统需求,本模块需要实现摄像头采集到的图像在液晶显示屏上实时显示为用户调整眼睛位置提供参考,还需要可以接受CPU控制切换显示模式,并由CPU来控制显示帮助信息、提示信息以及一些处理效果图。为了实现以上功能,此处采用图5.2所示的结构进行设计。此处SRAM复用控制模块由于有三个模块都要通过它对SRAM进行读写,对时序要求非常严格,因此我们采用逻辑锁定功能对调整好时序的这个模块进行逻辑锁定,保证该模块的运行性能。显示屏为320×240像素的全真彩显示屏,在显示实时虹膜图像时图像为8比特灰度图像,显示其他图像均为真彩效果。为了方便的显示各种提示信息和帮助信息,系统添加了英文字母以及一些标点的字库。

      该设计结构实现了在同一屏幕上显示图像和字符,并且所有扫描显示处理完全由硬件语言实现,不需要CPU干预,极大的提高了系统效率,还达到了更好的显示效果。该模块使用了不到1%的逻辑资源。
 

图5.2 显示模块设计结构图

      为该模块设计的软件驱动函数有:
          int displaymodesel(int sel);
          int cusPrintf(int x0,int y0,char string[]);
          int dispPicture(alt_u16 *data);
      C程序可以调用displaymodesel 函数选择显示实时虹膜图像或者由CPU控制显示信息,调用cusPrintf函数在屏幕的指定位置上显示一个字符串,调用dispPicture函数在屏幕上显示一幅彩色图像。

三、键盘模块设计

      DE1上有4个按键,10个拨盘开关对于系统一些比如复位,模式选择等功能应用已经足够,但是本系统还需要输入虹膜对象信息,需要输入英文字符,为了系统的完整性,系统添加了一个标准PS/2键盘给用户进行信息录入,以及一些其他控制使用。DE1有提供标准的PS/2接口,这极大的方便了设计,系统将硬件键盘扫描模块设计成自定义从模块,当有按键按下时,硬件扫描模块通过中断将键盘扫描码发送给CPU,软件通过将扫描码跟内存中的键盘码表比对从而识别按键。键盘模块接口如图5.3所示。

图5.3 键盘模块接口图

      为该模块设计的软件驱动函数有:
          void initKeyboard();
          void keyboard_irq (void*context,alt_u32 id);
          int CUS_Scanf();
      C程序调用initKeyboard函数进行键盘模块初始化,keyboard_irq函数为键盘模块的中断服务函数,C程序调用CUS_Scanf函数输入一个按键。

四、NiosⅡ系统构建

      确定了系统的各个必须外设后NiosⅡ系统的基本架构也就基本确定。为了调试需要,我们添加了JTAG串口、RS232串口以及两个定时器;为了方便功能扩展,我们在系统中添加了DE1上的按键、拨盘开关、LED、七段显示数码管等外设。我们最终得到的NiosⅡ系统如图5.4所示,其中onchip_mem和CUS_M_WR_inst两个部件为图像采集模块使用;其中CUSTOM_DISPLAY_inst和DISPLAY_SEL两个部件为显示模块使用;其中GABORFILTER_inst部件为Gabor滤波处理模块;其中keyboard_0部件为PS/2键盘模块使用。经过时序分析,然后对硬件语言程序反复调整优化后,系统中除Gabor滤波模块因其中有大量的DSP运算其最高运行时钟只有68.5MHz外,其它模块的最高运行时钟均超过100MHz,因此系统采用给Gabor滤波模块单独提供50MHz的时钟,其他模块均采用100MHz时钟。

图5.4 NiosⅡ系统连接图

五、软件设计及硬件加速

      系统软件包括虹膜图像采集、虹膜内外圆定位、定位效果及清晰度评估、虹膜图像的归一化展开、特征码提取、特征匹配和特征库管理等部分内容,大致结构如图5.5所示。对程序中大量使用的开方、求平方根和三角函数等较为复杂的数学函数,设计中采用了自定义指令的方式以提高运行速度;而且针对耗时大的归一化展开函数和gabor滤波函数,分别采用了C2H和自定义模块来对系统进行加速,取得了很好的效果。

图5.5 系统软件结构框图

      系统软件分三种工作模式:训练模式、识别模式和特征库管理模式。软件大致的工作流程是在系统上电复位后首先根据开发板上的拨键状态判断当前所处模式,若处于训练模式,则等待用户按键后开始采集图像,然后对采集到的图像进行定位和评估,如果图像未通过评估则继续采集,评估通过后把虹膜圆环归一化展开为512×64的矩形图像,为防止因采集的虹膜图像不正带来的旋转误差,我们对展开后的图像进行多次平移,对每次平移后的图像进行特征提取,然后将这些特征当作该对象的虹膜特征样本存入特征库(FLASH)完成一次训练操作;若处于识别模式,则与训练模式一样进行系列操作归一化展开,然后直接提取特征与特征库中各个特征进行匹配寻找满足距离要求的最近特征,若存在则在液晶屏上提示匹配成功并显示识别结果,不存在则提示匹配失败;若处于特征库管理模式,用户可以进行浏览、删除单个对象、清空特征库操作。在系统各工作模式中,真彩液晶和PS/2键盘提供十分友好的人机交互,使得操作十分方便。下面对设计中某些较复杂的部分的一些设计方法作进一步的描述。

1、虹膜定位

      在本设计中虹膜内外圆定位采用先搜寻若干边界点再由点定位圆的方式,即根据虹膜圆环内外存在的灰度差等特征,设计相应的边界检测算子来得到内圆(或外圆)边界上的若干个点坐标,然后再由三点定位圆的方式得到内(外)圆的圆心坐标和半径。具体实现见功能描述的相应部分描述,由于该定位算法本身的计算量不大,所以一次定位过程的速度较快,但由于系统是在定位后进行图像评估,所以在一次识别或训练过程中可能需要进行许多次定位,定位速度直接关系到虹膜图像采集的快慢,因此设计中还是通过缩小边界点搜索范围和对程序中使用的复杂数学函数如求平方根、求正弦以及求余弦等使用用户自定义指令方式进行硬件加速,同时其他程序也使用这些用户自定义指令实现硬件加速。设计中添加的用户自定义指令如图5.6所示。

图5.6 用户自定义指令

2、虹膜图像评估

      虹膜图像评估的目的是提高系统的可靠性,在本系统中,图像评估分为虹膜图像的定位效果评估和清晰度评估。

1) 定位效果评估

      为了确保虹膜图像定位的准确性,需要对定位后的图像进行评估,定位效果评估函数的原型为:
      int locateAppraisal(CPoint oIn,int rIn,CPoint oOut,int rOut),定位效果评估主要从以下几方面进行:
      a  内外圆半径大小是否合理;
      b  内外圆心坐标是否合理;
      c  偏心率是否在允许的范围内;
      d  内圆半径和外圆半径的比值是否合理。
      实验表明,加入定位效果评估模块后,能够在很大程度上保证虹膜定位的准确性,从而也大大高了识别率。
 

2) 清晰度评估

      由于虹膜的纹理是否清晰直接影响系统的识别效果,所以有必要对采集到的图像做清晰度方面的评估,清晰度评估函数的原型为:int blurAppraisal(Img *irisImage,CPoint oIn,int rIn),其中irisImage为虹膜图像,oIn为内圆定位后得到的内圆圆心坐标,rIn为内圆圆心半径。清晰度评估的基本思路是:判断虹膜图像内圆边界外与虹膜纹理垂直方向一系列点的灰度变化,并用一个清晰度系数记录这些点的灰度变化的剧烈程度,当该系数大于设定的阈值时,则认为待评估图像的清晰度满足系统要求。

3、虹膜图像的归一化展开

      虹膜图像的归一化展开一方面消除了因为瞳孔扩张收缩而带来的虹膜形变,另一方面把虹膜图像展开后可以表示为二维数组,方便后续处理。归一化展开函数的原型为:int expandNormalize(Img *irisImage,Img *dstImage,CPoint oIn,int rIn,CPoint oOut,int rOut),其中irisImage为虹膜图像,oIn和oOut分别为内外圆心坐标,rIn和rOut分别为内外圆半径。由于展开过程中需要涉及大量的三角函数运算、浮点型运算、乘方开方运算和大量的循环语句,使得归一化展开过程耗时较大(6s),为了提高展开的速度,我们采用软件优化和调整,调用自定义指令,并用C2H对大量的循环语句进行加速,加速效果比较理想(60ms)。

4、特征提取

      归一化展开后,需要对展开后的图像进行特征提取操作,特征提取函数的原型为:int codeExtract(Img *normalImg,FeatureCodes *resultCode),其中normalImg为归一化展开后的图像,resultCode为提取到的特征。特征提取过程的本质就是对归一化展开后的图像进行Gabor滤波,Gabor滤波过程涉及大量的DSP运算,软件实现非常耗时(超过6分钟),设计中采用用户自定义模块的方式实现速度达到41ms内完成一次图像的Gabor滤波。Gabor滤波模块的硬件电路如图5.7所示。电路的工作原理是将要使用的16组Gabor滤波器参数预先计算好后固化在片上ROM中,CPU将需要滤波的图像子块通过接口写入滤波模块,滤波模块启动16个硬件乘法器和相关运算逻辑并行处理实现Gabor滤波,然后将结果返回给CPU。

图5.7 Gabor滤波模块的硬件电路图

5、特征匹配

      特征匹配是把识别对象的虹膜特征码与特征库中的已有特征进行匹配,特征匹配函数的原型为:MatchResult irisMatch()。该函数完成的工作就是求取待识别对象的虹膜特征码与虹膜库中各特征码的距离,取最小的距离与设定的匹配阈值进行比较,若小于阈值则表示匹配成功,然后在液晶屏上提示匹配成功并显示识别结果,否则表示匹配失败,也在液晶屏上进行提示。由于本系统为小型的虹膜识别系统,因此系统没有设计复杂的数据库,也没有采用分类机制对虹膜特征进行分类。

6、特征库操作

      为了更加灵活地管理特征库并且使用尽量小的内存空间,在本设计中采用单向链表的方式存储特征库,特征链表的数据结构如下:

typedef struct FeatureCodes
{
      char name[20];            /*特征所属者信息*/
      alt_u16  code[TOTALNUM]; /*特征数组*/
}FeatureCodes;
typedef struct FeatureNode
{
    FeatureCodes       feaData; /*由一组特征组成的节点*/
    struct FeatureNode *next;   /*指向下一组特征的指针*/
}FeatureNode,*FeaturesList;

      在特征库管理模式下,程序先将特征库中的特征从Flash中读出并组成特征链表,然后所有的特征库操作都是针对该链表进行,操作完毕后将链表重新写入Flash即可,这样最大程度地减少了Flash的读写次数,从而在优化系统性能的同时也减少了Flash芯片的使用损耗。在训练模式下,由于特征录入操作不会改变特征库中已有的特征数据,所以只需将得到的特征追加到Flash中即可,这样可以避免对Flash的大量读写操作且减少训练所需时间。识别模式下,涉及的特征库操作只有读取特征,只需按链表进行操作即可。

(Revision: 2 / 2008-09-09 19:06:34)

6. 设计特点 (Preliminary Paper)

本设计的主要特点如下:

1、  高度集成的SOPC设计结构结合大量自定义逻辑

       系统从结构上采用SOPC的设计思想,这使系统具有硬件结构简单,开发成本低,开发周期短,可方便灵活的对本设计的软硬件进行升级、移植等特点。此外系统充分利用FPGA的并行处理能力来提升系统性能。如系统直接使用硬件语言模块实现虹膜图像的初评估和显示,无需CPU的任何干预,这很大程度上减轻了CPU的负担,提高了程序执行效率;用主从自定义模块结合的方式方便快速的实现图像数据采集到CPU;另外,对系统算法处理中耗时严重的部分,如Gabor滤波模块使用自定义模块方式进行加速。

2、使用定制指令实现软件性能优化

      由于NiosⅡ软核处理器本身的主频并不高,通常的C程序在其上运行得不到很高的执行效率,定制指令很好的解决了这个问题。定制指令在完全不改变原来软件结构的情况下实现软件性能的大幅度提升。如软件在不得以情况下使用了浮点乘法运算会很大程度降低程序执行效率,若此处选择使用浮点乘法定制指令就会很大程度提高程序执行效率。

       系统有大量的算法处理程序,对于那些在C语言中执行效率低又相对独立的程序模块可以用定制指令的方式进行硬件化处理。如求取正弦值、余弦值、开方运算等。这又使系统性能得到了很大程度的提升。

3、C2H硬件加速

       Altera公司新推出的C2H硬件加速工具使得硬件加速工作变得十分简单,用户只需要选中需要硬件化的程序,然后右键点击使用C2H硬件加速就可以实现。C2H硬件加速对于有大量循环的程序模块具有很好性能提升效果

      系统中的许多图像处理过程可以使用C2H进行硬件加速,如归一化展开过程,从而实现提高系统的总体性能。

4、使用逻辑锁定功能锁定独立模块逻辑,保证设计整体效果

      使用Quartus II 提供的逻辑锁定功能使我们不用担心分模块设计的各个模块在一起使用时改变性能,从而使我们大胆的进行分模块设计,多人分工合作,提高设计效率。

5、选择Altera CycloneⅡ系列器件实现本系统,系统更具性价比

       使用Altera 器件和开发工具进行开发,可充分的利用芯片的资源,达到很高的资源利用率,降低硬件成本;芯片中多个数字PLL可以方便的为各个模块提供需要的时钟;芯片内嵌大容量各种接口形式的片上存储器使设计变得更方便、高效(如用FIFO实现图像数据缓冲);可以方便的调用大量的IP模块实现功能模块,缩短开发周期(如采用FFT的IP,设计虹膜评估模块)。

6、采用本系统设计的虹膜定位方法使系统能够快速准确的定位虹膜

      系统采用搜索边界点的方式进行虹膜定位,经过测试可以快速准确的进行定位。传统的Hough变换法计算量非常大,不能满足系统对速度的要求。灰度投影法定位速度较快,但是对图像质量要求非常高,抗干扰性能差。

7、采用归一化处理和旋转匹配处理使提高系统可靠性

      由于瞳孔随时可能收缩或扩张,虹膜采集时也可能因为各种因素导致虹膜旋转。采用了归一化处理可以对瞳孔收缩或扩张后得到的拉伸或压缩的虹膜图像进行还原,从而消除此因素导致的虹膜纹理畸变,旋转匹配处理后可以消除因为虹膜旋转导致无法匹配的问题。

(Revision: 2 / 2008-09-09 16:40:55)

7. 总结 (Final Project Paper)

      通过不懈努力,我们按时顺利成功的完成了一个基于NiosⅡ的虹膜识别系统的设计,性能指标达到预期目标。设计中我们深刻体会到了FPGA设计的灵活性和其功能的强大。几个月的设计学习过程也使收获颇多,获益匪浅。下面是我们在设计中的几点体会和本系统中存在的一些不完善的地方。

设计体会:

1、SOPC技术具有极大的优越性。通过此次设计,我们加深了对片上可编程系统(SOPC)的理解。SOPC是基于可编程逻辑器件的可重构片上系统,它作为SOC和PLD/FPGA相结合的一项综合技术,结合了两者的优点。SOPC集成了CPU、DSP、锁相环、存储器、I/O接口及可编程逻辑,灵活高效地解决了SOC方案,可以替代现行大量使用的DSP+FPGA和ARM+FPGA方案。SOPC架构可以满足大多数系统的需求,系统间硬件具有极大的相似性,SOPC解决方案中还可以使用大量的标准接口模块和常用IP,这些都大大的缩短了系统的设计周期;随着FPGA技术的进一步发展和成熟,SOPC技术的功能将更加强大,而FPGA价格的不断平民化以及SOPC技术的可裁减性可以使系统硬件设计成本降至最低。

2、NiosⅡ的优异特性。设计中我们仅使用2400个逻辑资源就构建了一个性能超过100DMIP的CPU。作为一款32位处理器,其性能远远超过了各种单片机。然而NiosⅡ本身的指令执行性能可能远不及那些高端DSP或ARM处理器等,但是NiosⅡ可以方便的使用FPGA资源对各个关键算法,如DSP运算,图像处理过程进行加速,这使得系统性能得到极大程度的提高,可以与主频上G的专业处理器想媲美。NiosⅡ的优异性还体现在其可裁减性上,当系统经过评估确定硬件资源后可以使硬件资源浪费降至最低。另外随着技术的发展和其稳定性的进一步提高,NiosⅡ的应用领域将越来越广阔。

3、硬件可以实现惊人的加速效果。由于设计中包含了大量的浮点运算、大量的DSP运算以及一些图像处理过程,在我们刚开始将我们的代码移植到NiosⅡ上运行时,软件几乎无法工作,一次训练过程要运行超过6分钟,这使我们十分担心,我们经过简单的分析,开始对各部分代码采用各种不同的硬件加速或软件优化措施,如对含有大量DSP运算的Gabor滤波模块使用用户自定义模块的方式调用大量硬件乘法器进行并行运算使该部分程序加速了几百倍;对一些可以降低精度的浮点运算使用整型扩大2的N次方处理最后缩小2的N次方的方式;对于一些不方便优化的浮点乘除法,我们选择使用硬件乘除法单元进行加速;对一些如取正弦,余弦等较为复杂的函数,我们采用用户自定义指令方式进行加速,经过这一系列的加速后,我们的代码逐渐提高到了可以在十余秒内完成一次训练,这使我们信心大增,然而我们没有满足这个效果,我们发现当前软件中运行最花时间的归一化展开程序含有大量的循环,我们尝试使用C2H进行加速处理,经过反复的修改和漫长的编译等待后,C2H加速成功了,我们的代码又实现了上十倍的提高,最终达到了数秒内完成一次训练或识别过程。此次设计中我们亲身感受到了硬件加速的惊人效果,C2H无疑是我们的另一惊喜发现。我们将耗时比较多的程序进行C2H硬件加速后,性能得到了极大提高,耗时是以前的几十分之一,甚至是几百分之一,将整个系统的性能提高了一个台阶。而我们需要做的只是右键单击我们需要加速的函数,点击C2H加速。然后查看报告,根据报告提示修改程序,直至程序满足我们系统性能的要求,操作简单且实用,只不过加速过程确实有点慢。

4、方法的重要性。由于我们以前没有独立完成过一个大系统的完整开发,没有重视逻辑锁定功能的使用,时序分析工具的使用以及一些约束条件的设置,这使设计之初我们走了很多弯路,如一个模块单独编译下载后运行良好,而在和一些其他模块一起编译下载后则运行不正常,后来经过使用逻辑锁定功能后解决了问题;一些模块中的部分程序在反复检查后确定逻辑正确和仿真结果也正确的情况下,下载后一直无法正常运行,最后在使用时序分析工具进行分析发现有几行代码因为延迟过大,最高运行速度跟不上模块时钟,我们采用优化代码和调整模块频率的方式解决了问题。因此,需要掌握全面设计方法,才可以顺利的完成一个优秀的作品。

5、面对问题需要耐心和细心。设计中我们遇到了无数的问题和难题,有的问题通过请教老师和同学及时的得到了解决,可是有的问题经过几天的苦思冥想和反复调试也没法得到解决,这无疑对我们的身心都是严重的打击,为了解决问题,我们还是不断的分析每个细节,耐心的调整参数来尝试,最后才得以解决问题。

      由于时间紧迫以及一些设备条件的限制,系统还存在一些不足之处有待改进,如系统使用保鲜盒制作虹膜采集外罩,在采集虹膜的时候用户摆放眼睛的位置不是很方便;由于没有购到合适的红外LED作为虹膜采集设备的光照系统,系统采用白光LED使用户在使用设备时眼睛会有不适感;在当今这个网络时代,给系统增加网络管理功能可以扩大系统的应用范围等,我们将对系统进行不断的完善和改进。

      我们在此次设计的过程中遇到很多问题,尤其调试时,出现很多不能预知的问题,但是我们通过共同的努力,都一一加以解决了。通过此次设计大赛,我们对FPGA设计,对NIOS嵌入式系统设计,对SOPC等等的认识都有了质的改变和提高,积累了宝贵的经验,这些经验必将使我们在今后的学习设计中获益。在此,感谢Altera公司为我们提供的这次机会,让我们得以将所学加以应用,积累了宝贵知识财富,也感谢在设计中给予指导和帮助的老师和同学!

(Revision: 3 / 2008-09-09 16:47:34)