摘 要: 虹膜的定位包括瞳孔(内圆)和虹膜外圆的定位。该方法首先预判断瞳孔中心和半径截取目标区域小图,然后对目标区域提取边缘采用最小二乘抛物线拟合,算出左右固定区域内边缘点极值点坐标,得到瞳孔初始的中心坐标和半径。最后利用边缘点搜索方法精确定位虹膜。实验结果表明,该虹膜定位方法在速度和精度上都能达到较好效果。
关键词: 虹膜定位;OTSU;灰度积分投影;抛物线拟合;hough变换;圆周点搜索
1 分割瞳孔和虹膜
目前,生物特征识别用于身份认证已是大势所趋,其方式有很多,例如:人脸识别、指纹识别、声音识别、掌纹识别,等等[1],而虹膜识别是人体除DNA以外精确度最高的生物特征识别方式。对于当今个人网络的身份认证,迫切需要一种稳定、可靠、便捷的认证方式。目前,图像中目标物体的定位方式最重要的信息还是基于目标的纹理轮廓进行定位[2]。虹膜是人眼生理结构中的一部分,它位于瞳孔和巩膜之间,其分布大致呈现出圆环状,但虹膜的采集相当困难,目前基本上都以Daughman教授提出的圆环法对它进行提取,其定位方法有很多,例如:Hough圆检测定位[3-6]、圆或椭圆拟合定位、基于模板定位[7-8]以及其他方法[9-10],方法基本都可行,但存在的最大问题是速度和精度很难达到实时性。
1.1 二值化
在人眼图像中,瞳孔的灰度信息呈现出最直观的特点,目前对瞳孔的定位大部分都基于它的低灰度信息。
目前二值化动态阈值的确定有以下常用的几种方法:(1)最大内间方差法(OTSU);(2)迭代法(最佳阀值法);(3)聚类算法;(4)一维最大熵阈值法。比较几种方法二值化效果以及速度,其中最大内间方差法[11-12]效果更加适合于瞳孔的分割。
1.2 灰度积分投影法找瞳孔中心和半径
在二值化图上利用灰度积分投影法[4]预判断瞳孔的位置以及其半径。灰度积分投影的原理比较简单,其计算量较小,对于瞳孔的定位非常实用。本文采用水平和垂直灰度积分投影定位瞳孔,首先,对于m×n大小的图像,在水平方向上对图像的每一行进行遍历,寻找像素值为0的像素点作累加:
然后对每一行的累加次数做比较,寻找累加最多的行数,其行数pre_y和最多累加次数Max_num1分别作为瞳孔预定位的纵坐标和半径。同理,通过垂直灰度积分可以找到瞳孔预定位的横坐标pre_x和半径Max_num2,如图1所示。
1.3 截取瞳孔和虹膜小图
因为正常情况下瞳孔位于虹膜内部,并且两者的中心几乎重合,根据对中科院提供的虹膜库进行大量分析,瞳孔和虹膜中心错位大约在10像素以内,所以几乎可以看作同心,并且虹膜外圆半径正常情况下小于125像素,然后以(pre_x,pre_y)为中心,以L=(250+5)为边长,在原图上将虹膜区域截图已备后期处理。
2 边缘提取及抛物线拟合找瞳孔中心
目前常用的边缘提取算法有很多,例如:Roberts边缘检测算子、sobel算子、prewitt算子、canny算子、小波分解算法等。它们各有优点,Roberts、sobel、prewitee算子计算量较小,但边缘提取效果较差,小波分解算法对细节提取较好,但其实现相对复杂,计算量较大、耗时;canny算子边缘提取效果很好,其计算量也能接受。为了得到较好的边缘,获得准确定位,本文选取canny算子。
在图中需要快速且准确地判断瞳孔的中心和半径,那么,常用的方法是Hough圆检测以及在此基础之上的改进方法,该方法在定位精度较高,但是定位速度相当慢,非常耗时,并不能很好地应用于实时的虹膜识别系统。
本文采用另一种方法进行定位。首先在其预定位中心左侧选定半圆形区域R1,如图2所示。
对所有的边缘点采用最小二乘法进行抛物线拟合,其抗噪性较好,其拟合公式方程组如式(2)所示:
这里用高斯消元法编程实现解抛物线方程组,求出抛物线方程的3个系数a、b、c:
y=ax2+bx+c(3)
得到抛物线的系数,从而确定区域R1的左抛物线方程。同理可以拟合右半圆矩形区域R2,得到右抛物线,根据抛物线的性质,可以计算出左右抛物线的极值点,公式如下:
求出极值点P_left(x1,y1),P_right(x2,y2),如图3、图4所示,那么就可以得到比较精确的瞳孔中心坐标(P_center_x,P_center_y)和半径accurate_r,其中:
此时的瞳孔中心和半径已经比较精确,但是如果在区域R1和R2噪声边缘点较多的情况下,还会存在一定的误差。
3 圆周点搜索方法精确定位
为了得到瞳孔最精确的中心点和半径,本文最后基于圆周点搜索原理,快速且精准地定位瞳孔以及虹膜外圆。
3.1 内圆精确定位
基于传统Hough原理,本文采用一种新的方法对圆进行检测。
该方法的基础是找到圆心的预估位置,将预估位置附近坐标作为圆心坐标,半径取值范围是:(accurate_r-5~accurate_r+5),计算其圆周点坐标,然后在边缘图上统计圆周上存在边缘点的个数,比较并记录圆周上边缘点最多的圆心和半径,即可以精确定位。
该方法利用了不同于Hough的圆检测原理,但准确性和抗干扰性都保留了传统Hough的优点,并且速度比传统Hough快。
3.2 外圆精确定位
对虹膜外圆的定位也采用此圆周边缘点搜索原理检测算法。根据对中科院所提供的虹膜库进行大量分析,正常人的瞳孔中心和虹膜外圆中心几乎重合,偏离最严重的情况下,外圆中心也不会超出瞳孔区域,并且虹膜外半径最大值为125左右,根据这一特性,外圆的中心检测在瞳孔中心已知的情况下,采用与瞳孔检测相同的原理,遍历瞳孔的最大内接矩形区域找中心,检测半径在r1~r2之间,这里r1=pupil_r+10,pupil_r是瞳孔的精确半径,r2取125。通过此方法,可以快速且精确地找到边缘点最多的某个圆心和半径。
3.3 本文方法和传统hough比较
传统的Hough圆检测原理基于圆的基本公式:
(x-a)2+(y-b)2=r2(6)
其中,(a,b)为圆心,r为圆的半径,把x-y平面上的圆转换到a-b-r三维参数空间,遍历图中的每一个边缘点在参数空间做累加,然后遍历参数空间寻找叠加次数最多的点,即得到圆心点。该方法的准确性及抗干扰能力非常好,但因其需要遍历每一个边缘点计算量非常大,比较耗时。
本文方法与传统Hough变换及其改进方法相比有如下优点:(都在原图的边缘图上进行检测,并未缩小)遍历的像素点较少。因为传统Hough遍历的是圆周边缘点,而本文遍历的是中心点,在预估中心点较精确的情况下,需要遍历的次数就很少,从而省时。
本文方法不需要人为设定内圆的半径检测范围。因为算法本身可以通过灰度积分投影和抛物线拟合自动找到较为精确的半径和圆心坐标,所以计算量很小。实现方式上比较简单。传统Hough是不断地在二维和三维空间切换,而本文只在二维空间操作。
4 实验结果
本文对传统Hough和参考文献[5]中改进的Hough圆检测算法及本文算法已基于VS平台和OpenCV图像处理库,利用中科院提供的200张虹膜图片,采用C语言编程实现。
3种算法都统一进行边缘提取。在图上使用不同算法分别对虹膜内圆进行定位,其中传统Hough和参考文献[5]在外圆定位之前,首先清除虹膜内圆周围部分边缘点,以减小计算量和误差。
测试3种方法对于200张图片的定位精度和速度,并进行比较和分析,其结果如表1所示。
由此可见,本文定位算法相对于其他两种算法,在精度和速度上都有一定提升,具有较好的实时性。
5 结论
在传统Hough定位和改进Hough定位[5]的比较之下,本文方法提高了定位效率和精度,该方法步骤虽多,但每一步的计算量很小。文中算法在一些方面有待进一步提高,例如:鲁棒性、考虑用椭圆进行定位、预处理等。在不影响定位精度的情况下还可以在适当地缩小图片之后再定位,速度会更快。
参考文献
[1] 王雨晴,谢晓尧.基于生物模式识别的网络身份认证研究[J].微型机与应用,2014,33(18):42-44.
[2] 李文锋,张红英.基于纹理特征的车牌定位方法[J].微型机与应用,2014,33(3):41-43.
[3] 刘念,苏杭,郭纯红,等.基于Hough变换圆检测的人眼定位方法改进[J].计算机工程与设计,2011,32(4):1359-1362.
[4] 蒋丹丹,冯晓毅.改进的Hough与梯度直方图的人眼定位算法[J].电子设计工程,2014,22(21):127-130.
[5] 张林,王保强.一种改进的基于Hough变换的虹膜定位算法[J].电子技术应用,2014,40(4):66-69.
[6] 涂娟,王海滨,曹林,等.基于Hough变换的快速虹膜识别算法研究[J].电视技术,2014,38(19):211-215.
[7] 韩丽娜.基于几何特征的虹膜定位算法[J].传感器世界,2013,19(9):11-13.
[8] 刘源.基于模板匹配算法的人眼定位方法[J].火力与指挥控制,2014,39(5):124-126.
[9] 史少龙,尹达一.改进型灰度质心实时算法研究[J].光电工程,2013,40(12):18-24.
[10] 邹德旋,王鑫,段纳.一种基于修正差分进化的虹膜定位算法(英文)[J].控制理论与应用,2013,30(9):1194-1200.
[11] 黄丽丽,杨帆,王东强,等.基于改进型最大类间方差法的瞳孔定位方法[J].计算机工程与应用,2013,49(23):137-140.
[12] 陈滨,田启川.改进的快速Otsu自适应分割算法及其应用[J].计算机应用研究,2012,29(4):1572-1574.