发明内容
本发明提供一种虹膜图像清晰度判别方法,该方法能够有效的判别虹膜图像是否清晰,计算量适中,能满足实时虹膜识别的要求。
本发明将瞳孔的边缘峰态系数和虹膜的梯度能量作为支持向量机判断虹膜图像是否清晰的最优分类面的两个参数。计算瞳孔边缘峰态系数的时候,本发明采用了傅里叶级数来自适应跟踪瞳孔的边界点,从而保证计算出的边缘峰态系数能真实反应图像的清晰程度。最后通过支持向量机对虹膜图片提取的特征向量进行训练,从而确定最优分类面。在应用中,当前虹膜图片提取的特征向量位于最优分类面上方(对应最优分类面判别函数值为1)的时候判定图像的清晰度合格;否则,判定图像质量不合格。
为了方便地描述本发明内容,首先对一些术语进行定义。
定义1:虹膜。人眼中瞳孔和巩膜之间的区域。
定义2:灰度图像。图像中只包含亮度信息而没有任何其他颜色信息的图像。
定义3:自适应。定位的结果可以跟踪真实的瞳孔边界。
定义4:梯度。灰度值跳变程度的度量。
定义5:瞳孔边缘峰态系数。位于瞳孔和虹膜之间区域的灰度值跳变快慢的度量。
定义6:虹膜梯度能量。虹膜区域中的一点和它邻域内点的灰度值之差的平方和。
本发明技术方案如下:
一种虹膜图像清晰度判别方法,包括支持向量机最优分类面的确定和待测虹膜图像清晰度判别两个过程;
所述支持向量机最优分类面的确定过程包括以下步骤:
步骤1:准备支持向量机训练用虹膜灰度样本图像。虹膜灰度样本图像包括已经确定为清晰和不清晰的虹膜图像,其中清晰的虹膜灰度样本图像为正样本,不清晰的虹膜灰度样本图像为负样本,所有虹膜灰度样本图像的大小一致(如:640×480像素)。
步骤2:确定虹膜灰度图像的瞳孔中心和半径。具体包括以下步骤:
步骤2-1:根据设定的阈值T对虹膜灰度图像gray进行二值化,得到虹膜二值化图像bin:
公式(1)中,gray(i,j)表示指虹膜灰度图像gray中像素点(i,j)的灰度值,bin(i,j)表示虹膜二值化图像bin中像素点(i,j)的灰度值。
步骤2-2:把虹膜二值化图像bin等分成M1个区域,统计每个区域中所有像素点的灰度值和,找出灰度值和最小的区域。M1取值为12或16。
步骤2-3:将步骤1-2灰度值和最小的区域等分成M2个子区域,统计每个子区域中所有像素点的灰度值和,找出灰度值和最小的子区域,将该子区域的中心点作为瞳孔中的一点,记为P(y,x)。当M1取值为12时,M2取值为16或25;当M1取值为16时,M2取值为12或15。
步骤2-4:以点P(y,x)为中心,分别向左、向右和向下在虹膜二值化图像bin中搜索第一个灰度值为255的点,并依次记录其位置坐标为(Y0,X0)、(Y1,X1)和(Y2,X2)。
步骤2-5、把点(Y0,X0)、(Y1,X1)和(Y2,X2)代入瞳孔的边界方程,即公式(2),得到瞳孔中心坐标(Yc,Xc)和瞳孔半径Rc。
(Y-Yc)2+(X-Xc)2=Rc 2 (2)
步骤3:自适应地确定瞳孔的边界,具体包括以下步骤:
步骤3-1:在虹膜灰度图像gray中,以(Yc,Xc)为中心,在360度的N等分角度方向上计算Rc±10范围内像素点的灰度梯度值,记录每个角度方向下灰度梯度值最大的像素点的坐标(ri,θi),其中i=0,...N-1。其中N为不小于30的正整数。
步骤3-2:用d(θi)代表在角度θi方向上瞳孔边界点到瞳孔中心(Yc,Xc)的距离,则d(θi)用傅里叶级数表示表示为:
其中an和bn分别是余弦项和正弦项的系数,且b0=0;L表示截止谐波的次数,且L≥8。
步骤3-3:确定an和bn,使得公式(4)中的E值最小。
分别对公式(4)中的an和bn求偏导,并零结果为零,如方程(5)和(6)所示。
根据方程(5)、(6)求得an和bn,并将其代入公式(3)中,就可求得瞳孔任意角度处的准确边界。
步骤4:计算瞳孔边缘峰态系数和虹膜平均梯度能量,具体包括以下步骤:
步骤4-1:计算瞳孔边缘峰态系数均值K。
在[3π/2-a,3π/2+a]的角度范围内,以b为步长,先利用公式(3)计算相应角度上瞳孔中心(Y
c,X
c)到瞳孔边缘的距离,从而精确确定相应角度上瞳孔边缘点的位置坐标,记为(Y
i,X
i),其中
符号
表示向下取整;然后以(Y
i+5,X
i)为起始点,以(Y
i-5,X
i)为终点,沿着X=X
i方向,依次取虹膜灰度图像gray中对应像素点的灰度值组成向量,并计算该向量的一阶导数向量Z
i;再由公式(7)计算(Y
i,X
i)点的边缘峰态系数;最后由公式(8)计算瞳孔边缘峰态系数均值K。其中a的取值范围为[π/8,π/6],b的取值范围为[π/60,π/50]。
公式(7)中zi表示一阶导数向量Zi中的第i个一阶导数;E表示数学期望,ui表示zi的均值,σi表示zi的标准差。
步骤4-2:计算虹膜平均梯度能量E1。
在虹膜灰度图像gray中截取一个矩形区域[Yc+Rc+c:Yc+Rc+d,Xc-e:Xc+e],记为S,并按照公式(9)计算虹膜平均梯度能量E1:
其中c的取值范围是[5,10),d的取值范围是[c+20,c+25),e的取值范围是[10,15);公式(9)中的H为矩形区域S的高度,W为矩形区域S的宽度。
步骤5:通过步骤2~步骤4计算出步骤1准备的所有虹膜灰度样本图像的瞳孔边缘峰态系数均值K和虹膜平均梯度能量E
1,将每个虹膜灰度样本图像的这两个参数值组成特征向量
设虹膜灰度样本图像的数量为Q,则共有Q个特征向量
步骤6:将步骤5所述Q个特征向量
作为支持向量输入支持向量机进行训练,确定最优分类面判别函数,具体包括以下步骤:
步骤6-1:确定分类面准则函数:
公式(10)中,
表示分类面的权系数向量;b是分类的域值;
α
i为Lagrange系数且大于零;
为第i个输入样本的特征向量(K,E
1);y
i为
的样本标记,y
i∈{+1,-1}分别表示
为正样本或负样本。
公式(10)是一个不等式约束下二次函数极值问题,存在唯一解;利用最优化理论中的外点法得到最优解
其中i=1,2,L.Q(详见文献傅英定、成孝予等,《最优化理论与方法》,国防工业出版社)。
令
令
求解方程(11)和(12),得到
的最优解
即最优分类面的权系数向量
为:
b的最优解b*,即最优分类面的分类域值b*为:
公式(13)、(14)中为任意的支持向量。
步骤6-3:确定最优分类面判别函数:
所述待测虹膜图像清晰度判别过程包括以下步骤:
步骤7:先将与步骤1中虹膜灰度样本图像相同大小的待测虹膜图像转换成灰度格式,然后按照步骤2~步骤4所述方法计算待测虹膜灰度图像的瞳孔边缘峰态系数均值K和虹膜平均梯度能量E
1,并组成一个特征向量
最后把特征向量
代入到公式(15)中,计算出的
为1时,表明图像清晰;否则判定图像质量不合格。
需要说明的是:
步骤3-1中在确定N时取30个角度比较合适;步骤3-2中傅里叶级数截止谐波的次数L取8。这样可以自适应的跟踪瞳孔边界,又可以提高计算速度。
步骤4-1中计算瞳孔边缘峰态系数时,a取π/6、b取π/60时具有较高的计算精度。
步骤4-2中计算虹膜的梯度能量的时候,为了尽可能的避免眼睑和睫毛的遮挡,选取的区域为瞳孔正下方的一个20×20的矩形区域。
步骤6确定的最优计算出的分类面,只有当特征向量位于分类面上方的时候才判定图像清晰。
本发明的创新之处在于:
1、本发明采用了傅里叶级数的方式自动追踪瞳孔的边缘,而以前只是把瞳孔当作圆进行拟合。这样在测试边缘峰态时可以保证所找的瞳孔边缘点的准确性,进而在后续处理过程中可以更加准确地确定虹膜的真实区域。
2、本发明同时采用了边缘峰态均值和虹膜梯度能量的检测,这样可以提高算法的鲁棒性。单一的边缘峰态均值检测清晰度抗睫毛和眼睑遮挡等噪声的能力较小,单一的虹膜梯度能量检测对本身虹膜较少的用户存在困难。同时采用这两个特征,可以提高算法的鲁棒性。
3、本发明采用最优分类面的方式,对样本进行训练和测试,可以最终确定边缘峰态和虹膜梯度能量两个参数的最优取值,从而使算法的鲁棒性得到提高。
具体实施方式
采用本发明的方法在VC6.0软件中实现,而虹膜图像则由红外线的摄像头采集获得。用VC6.0在PC Intel Celeron 2.0GHZ中完成一幅虹膜图像清晰度判定的平均时间为0.4s。
下面给出一个具体的本发明的实现例。
需要说明的是:下例中的参数并不影响本专利的一般性。
一、训练分类器,确定最优分类面。
采集适当数目的清晰的和不清晰的虹膜图像,清晰的为正样本,不清晰的为负样本。按照下述步骤训练分类器:
1、对图像进行图像二值化,这里采取的阈值为35。
2、把图像分块,并统计每块中的灰度值的和,找出灰度值和最小的块。这里的块选取为160×160大小。
3、把灰度和最小的块进一步分块,并统计每块中的灰度值和,找出灰度值和最小的块。这个块的中心就是瞳孔中的一点。这里的块选取为32×32。
4、以步骤3中的点为起始点,分别向左、向右和向下在二值化的图像中搜索第一个灰度值大于0的点,记录该点的坐标。把这三个点代入圆的方程,找到瞳孔的近似中心和半径。
5、在原始图片中,以瞳孔的近似中心为中心,把圆周等分成N份。在这N个方向上,分别计算灰度值的梯度,找到梯度最大值的位置作为瞳孔边界点的位置,这里的N选取为30。
6、把步骤6中的点代入傅里叶级数的表达式中,确定傅里叶级数的系数。
7、在确定了真实的瞳孔边界后,选取瞳孔的下方为候选区域。分别向左和向右取10列,计算瞳孔的边缘峰态系数,最后取中值作为结果。
8、在瞳孔的下方取一个矩形区域,计算区域内的虹膜梯度能量,最后取其平均值作为结果。
9、把步骤7和步骤8中的两个参数组成一个向量,每个向量对应了瞳孔边缘峰态系数和虹膜梯度能量两个参数确定的二维平面中的一个点。把所有的向量输入到支持向量机进行训练,确定清晰度的分界面。
二、实时判定图像清晰度是否合格。
1、判定采集图片中的眼睛是否正视摄像头。如果没有正视摄像头则重新采集图片,不进行后面的操作。
2、计算当前图片的两个清晰度参数,并组成一个向量。如果该向量位于训练获得的分类面的上方,判定图像清晰。否则,判定图像不清晰。