基于FPGA的虹膜识别系统
2021-04-27庞心怡
庞心怡,丁 斌
(西安文理学院 信息工程学院,陕西 西安 710000)
0 引 言
随着数字化、信息化社会的快速发展,人们对身份认证安全性的重视程度不断提高。目前,市场上应用最广泛的信息识别技术均存在一定缺陷,如:脸部整形手术、不同程度的化妆等均会影响到人脸识别技术的准确性;指纹识别会因过干、过湿、脏污等原因而影响识别准确率,且指纹容易被窃取或伪造;基于密码等传统身份识别方法会因密码泄露而对用户的人身财产安全造成威胁。与传统识别方法相比,虹膜识别是一种更安全的技术。一方面,虹膜稳定性强,难以改变纹理;另一方面,虹膜难以伪造,只有在用户配合的情况下才可以提取用户的虹膜图像。
DAUGMAN算法是自动识别系统的核心算法。据了解,国际民用航空组织即ICAO作为将该技术应用于机场安检的领头羊,已率先将多个成员国的持证人虹膜等生物信息嵌入电子护照并用于机场安检。美国德克萨斯州也在银行营业部安装了可以识别虹膜的系统设备以对办理银行业务的用户进行身份检验。许多国家和地区也有使用虹膜识别技术的示例[1]。
1 系统构成
以FPGA开发板为基础的虹膜识别系统具有诸多优势,比如体积小巧、识别速度快、精准度高等。将赛灵思公司生产的PYNQ作为硬件基础,将Python作为辅助开发环境,使用ARM外置摄像头进行图像采集和眼睛轮廓寻找,结合大量经典算法与创新应用,使得虹膜切割、比对更精细且迅速,在保证客户信息安全的基础上,提高识别速度,为用户提供便利[2]。系统构成如图1所示。
图1 系统结构
2 算法与功能实现
2.1 整体逻辑框架
系统逻辑框架如图2所示。
图2 系统逻辑框架
2.2 图像处理算法介绍
2.2.1 图像采集与预处理
由ARM摄像头拍摄的人眼图片中不仅有需要的虹膜,还有眼睑、睫毛、瞳孔等,因此有必要对收集的虹膜图像进行预先处理。定位并截取虹膜,因为虹膜和瞳孔的灰度值相对较大,即渐变值较大,所以我们通过阈值分割、数学形态运算和Hough变换来定位虹膜的内边缘。
Hough变换是一种基于图像全局分割结果的边缘连接技术,其抗干扰能力极强,可以检测任何形状的曲线。使用图像空间和Hough参数空间的对偶性,可将图像空间中的监测问题变换至参数空间[3-4]。通过Hough变换进行边缘检测,找出边缘点;对任何一个边缘点找到所有可能经过该点的直线,所有直线均各自对应参数空间中的某个点,并将参数空间中相对应边缘点的无数直线在参数空间中形成曲线[5],从而把检验整体特性变成检测局部特性问题。
通过Hough变换,将图像空间(x,y)对应到(a,b,r)参数空间。设置x-y坐标进行搜检并明确圆的参数,得到图像中等待检测的一组圆周点为{(xi,yi),i=1, 2, ...,n},其中(x,y)为该集合中的一点,其在参数坐标(a,b,r)下对应的解析式为:
如果集合中的点都在同一圆上,则这些圆锥形簇在参数空间上的一个点处相交[4],该点巧妙地对应于图像平面上圆的中心坐标和半径。
值得注意的是,在处理虹膜区域和孔膜区域时,因为两者灰度差较小,使用的Hough变换准确度低,所以在定位瞳孔后,需确定瞳孔圆心及半径,以1.5倍的瞳孔半径进行定位,截取两圆之间的圆环作为虹膜环[6]。将虹膜环在极坐标下转换成矩形,极坐标转换的效果如图3所示。
图3 虹膜环矩形化
2.2.2 Gabor滤波
Gabor滤波器可以提取空间局部频率特征,是一种惯用的纹理检测工具。在二维空间中,将正弦波(二维Gabor滤波器的平面波)与高斯函数相乘以获得Gabor滤波器的脉冲[7]。二维Gabor滤波器簇可以模拟简单皮质细胞的二维接收场轮廓,并且可以有效提取图像的局部方向和频率信息的特征,从而达到识别虹膜的目的[8]。
复数表达:
实数部分:
虚数部分:
式中:λ代表正弦因子的波长;θ代表Gabor函数平行条纹的法向方向;ψ为相位偏移;σ为高斯包络的标准差;γ为空间纵横比,指定Gabor函数支持的椭圆度。
Gabor滤波后的虹膜图像如图4所示。
图4 Gabor滤波后的虹膜图像
2.3 匹配算法介绍
感知哈希算法、均值哈希算法以及差值哈希算法是3种常用的匹配算法,各有侧重点,故将三者相结合来计算2张图片的相似度以提高效率。
2.3.1 均值哈希算法
该算法通过提取图片中的低频信息对相似度进行辨识,通过不同图片上的特征相似性判断每张图片上的特征字符串。
均值哈希算法使用简便,不受制于图形的尺寸分辨率。但是它受均值的影响较大,识别不够精确。若进行伽马矫正或者直方图均衡等操作,该算法会受到较大的影响,从而导致较大的判别误差。均值哈希算法步骤如下:
(1)缩小尺寸:将不同尺寸的图片缩小到统一规格。
(2)简化图片色彩:将缩小后的图片转换为灰度图像。
(3)计算期望:计算灰度处理后所有像素的灰度期望值。
(4)比较像素灰度:将所有像素的灰度值与标准值一一比较,大于或等于标准值,记为1;小于标准值,记为0。
(5)计算哈希值:将上述结果组合后构成一个64位的整数,即这张图片的特征字符串。组合的顺序不予考虑,只要求所有图片均采用相同的顺序。
(6)对比图片指纹:得到图片指纹后,可借助汉明距离(Hamming Distance)确定图片的相似度[9]。若不等同的数据位小于或等于5,则说明2张图片具有较大的相似性;若不等同的数据位小于或等于10,则说明2张图片完全不同。
2.3.2 感知哈希算法
该算法先将图片转化为哈希字符串,之后再进行比较。该算法采用DCT(离散余弦变换)降低频率,以识别图片是否变形,若变形程度小于或等于25%,则可匹配原图。感知哈希算法的结果可以避免伽马校正或直方图调整的影响[4]。
感知哈希算法具体步骤如下:
(1)缩小图片尺寸:pHash(感知哈希)对图片尺寸有要求,须方便DCT计算。
(2)转化为灰度图:把缩放后所得的图片进行灰度化处理,进一步简化计算。
(3)计算DCT:将图片分割成分率的集合,得到DCT系数矩阵。
(4)缩小DCT:结果保存到小矩阵中,代表图片的最低频率。
(5)计算平均值:计算缩小DCT后所有像素点的平均值。
(6)进一步减小DCT:将大于平均值的数据记录为1,反之记录为0。
(7)得到特征值:将64个信息位组合。
(8)对比指纹:求两张图片的特征值等同于求两张图片的汉明距。汉明距越大说明图片差异越大,反之,汉明距越小图片相似性越高,当2幅图片完全相同时,汉明距为0。
2.3.3 差值哈希算法
差值哈希算法基于渐变现实计算,因此运算速度较快,效果更好。差值哈希算法具体步骤如下:
(1)缩小图片尺寸:将图片缩小到72像素。
(2)简化色彩:将缩小后的图片转为64级灰度。
(3)计算差异值:相邻2个元素相减,得出8个不同的差异值。
(4)处理差异值:若差异值为正数或0,记为1;若为负数,记为0。
(5)得到“指纹”:将64个结果结合便可得到哈希值,即图像的“指纹”。
3 验证结果
设计依靠5人共10种虹膜样本进行验证,每个样本分别多次试验。在同一虹膜的识别对比中,成功率高于90%。在不同虹膜的识别判定实验中,成功率为0,可见此设计能够满足虹膜识别的基本要求。
4 结 语
本文讨论了一种可运行于FPGA平台的虹膜识别办法,经验证,行之有效。借助ARM+FPGA平台,可以将计算量相对较大的计算机图像处理过程转移到中小型开发板中。