APP下载

基于生物形状知识的人眼定位方法①

2018-10-24方淑仙张立武

计算机系统应用 2018年10期
关键词:人眼虹膜眼睑

方淑仙, 张立武

1(中国科学院大学, 北京 100049)

2(中国科学院 软件研究所, 北京 100190)

1 引言

随着社会的快速发展, 身份识别的重要性与日俱增. 但是, 口令容易被遗忘, 容易受到字典攻击和撞库攻击等;Ukey又因其携带不便、人证统一等问题阻碍了其应用. 仅仅依靠口令和Ukey已经无法满足信息时代对身份认证的需求. 近年来, 基于人的生理或行为特征的生物特征识别技术应用越来越广泛, 其中具有代表性的人脸识别技术因其无侵扰性等优点广泛地应用在机场、火车站等安防监控领域.

在人脸识别技术中, 准确地定位人眼具有特别重要的意义. 一方面, 人眼作为人脸图像中承载信息较多的特征之一, 相比于嘴鼻等器官提供了更多更重要的信息;另一方面, 人眼在人脸图像中的位置相对比较固定, 在进行人脸特征提取时常常将瞳距作为特征矢量归一化的依据. 除此之外, 在针对人脸进行三维建模时,需要定位出人眼各区域位置来对人眼部分细化建模.

然而, 在借助已有的虹膜识别方法定位人眼位置时, 发现现有虹膜识别方法在定位低分辨率图像时, 结果不够理想. 目前已有的虹膜及眼睑定位方法更多的是针对高清眼部区域图像, 目的在于分割出清晰的虹膜图像获得纹理来进行后续的虹膜识别. 而在进行人脸识别或人脸三维重建时, 获取的图像通常达不到虹膜识别的清晰度, 在这种条件下对人眼图像进行定位是一项非常具有挑战性的工作.

因此, 本文提出一种新的算法, 对人眼的虹膜、眼睑、巩膜等各区域进行准确快速的分割, 并对人眼定位过程中存在的干扰因素如光照条件、镜面反射光斑、睫毛或头发的遮挡进行了处理, 在实验室环境下的眼部高清图像及姿态幅度较小的无遮挡模糊人脸图像的定位都取得了良好的定位效果, 具有较强的泛化能力.

2 相关工作

虹膜检测中最著名的算法是在1993年由Daugman[1]提出的, 为目前许多虹膜识别技术提供了研究基础. Daugman使用了公式(1)的积分微分算子分别检测出虹膜的内外边界:

除了Daugman外, 最有名的是Wildes的虹膜识别系统. 1997年, Wildes[4]结合边缘检测与Hough变换来定位虹膜区域. 由于虹膜区域的边缘灰度变化比较明显, 通过低通高斯滤波器和空间子采样方法分离出虹膜区域, 接着对图像进行Hough变换, 选出最符合限制条件的圆作为虹膜边界轮廓的圆心和半径. Wildes的方法相对Daugman的方法来说, 受噪声等干扰的影响小, 但是对图像边缘提取要求较高, 容易受到异常的边缘检测点的影响. 2008年, Dey[5]对Wildes的定位方法进行了改进, 在对虹膜图像进行边缘检测之前, 先对图像进行缩放和颜色变换, 显著地减小了搜索空间, 提高了图像的阈值化效果. 然后寻找瞳孔边界扩张区域, 再进行垂直边缘检测, 有效地去除了虹膜图像中边缘噪点的影响. 2015年, Umer和Dhara[6]提出一种基于反演变换与带约束Hough圆变换的虹膜快速分割方法, 通过反演变换确定虹膜外边界, Hough圆变换定位瞳孔,减少了Hough变换的搜索空间. 2016年, Kumar等人[7]提出边缘映射图与自适应Hough圆变换相结合的虹膜检测算法, 通过形态学运算、Sobel边缘检测两种算法检测边缘取交集, 生成瞳孔边界映射图, 得到包含噪声的最小伪边缘, 再利用自适应的Hough圆变换算法将虹膜的内外边界同时累加计算, 提高了定位效率和准确度, 对噪声有一定的容忍能力. 但是, 该方法在图像边缘对比度不高时, 计算出的边缘映射图受噪声影响较大, 定位效果较差.

除了Daugman和Wildes的虹膜识别系统外, 其他许多专家学者也对虹膜定位进行了很多研究提出了许多新方法. 1998年, Boles和Boashash等[8]提出基于小波变换的虹膜检测算法. 他们采用微分型的拉普拉斯或高斯卷积作为过滤器, 使用边缘检测技术检测边缘,将虹膜看作圆形, 其边缘连接形成闭合轮廓, 将其质心作为瞳孔的参考点. 他们假设虹膜的内外轮廓为圆形,并具有共同的圆心, 对半径大小不同的同心圆进行采样, 再进行小波变换获得虹膜位置. 这种方法没有考虑虹膜图像是二维结构, 仅考虑了虹膜中同心圆周的一维信号. 2009年, He等人[9]提出一种新的分割方法. 首先通过自适应阈值法消除虹膜部分的镜面反射光斑,再建立一个AdaBoost级联虹膜检测器来提取虹膜中心的大致位置, 最后利用胡克定律从圆形虹膜边界的中心和半径以迭代的方式推导出弹性模型, 最终定位虹膜中心和边界. 他们的方法在CASIA虹膜数据库上达到了99.6%的准确率, 但是没有考虑虹膜图像可能包含的虚假边缘如双眼皮、皱纹等因素.

对于眼睑检测与定位的研究也有很多. 1993年,Daugman[1]提出基于抛物线的积分微分算子检测眼睑边缘. 这种方法与定位虹膜一样, 存在搜索空间大、检测速度较慢等问题.

1994年, Wildes[10]也通过抛物线来提取眼睑的上下边缘. 首先经过水平或垂直方向上的边缘检测算子进行边缘检测, 接着进行二值化, 然后利用基于抛物线的Hough变换来检测眼睑边缘, 将上下眼睑按照抛物线进行拟合. 这种方法需要对三个参数在参数空间内搜索, 计算量较大, 并且没有考虑眼睑、睫毛等噪声的影响. 2003年, Masek[11]利用改进的线性Hough变换来检测上下眼睑, 首先利用Canny算子进行边缘检测, 然后通过在瞳孔的外边缘画一条水平的直线, 保留水平线与虹膜外边界上最近的相交点来提取眼睑的直线段.然而, 线性的Hough变换比较耗时, 并且只在固定的数据库上有效. 2008年, Min和Park[12]在归一化的虹膜图像中, 利用基于抛物线的Hough变换来定位眼睑边界,避免了人眼图像旋转问题, 减小了参数空间的维数, 但是耗时仍然较大.

此外, 还有先定位若干个眼睑点, 再寻找眼睑边缘的方法. 例如, 2000年, Pardas[13]提出基于最短路径的眼睑边缘检测算法, 首先找到两个眼角点作为起终点,在两个眼角点间搜索最短路径来得到眼睑边缘. 这种方法检测速度较慢, 检测结果依赖于定位眼角点的精确度. 2013年, Radman等人[14]提出一种基于livewire的眼睑检测方法, 通过以不同权重加权组合Canny边缘检测、梯度方向、梯度幅值、拉普拉斯四个算子构造代价函数, 在HSI (Hue Saturation Intensity)颜色空间中对虹膜外边界进行径向边缘检测, 对于每一个像素计算相邻十个像素的饱和度平均值, 如果超过一个固定的阈值就认为它是虹膜与眼睑的交点, 据此确定虹膜外边缘与眼睑之间的四个交点, 生成路径代表眼睑边缘. 这种方式与基于最短路径的方法一样, 对四个交点定位要求非常严格.

除了以上几种方法外, 还有许多其他专家学者提出的方法. 2015年, Cai和Wang[15]通过形态学开闭运算去除睫毛、阴影及光斑干扰, 尽可能地保留眼睑边缘. 通过分析眼睑边缘区域每一列的灰度值, 将灰度值分布的谷点视为眼睑边缘, 然后使用最小二乘法拟合抛物线得到眼睑. 这种方法效率较高, 但是易受眼睑、阴影等噪声的影响. 2016年, Fuhl等人[16]基于平均强度、标准差、偏差和水平Sobel算子等特征构造出眼睑似然图, 用方框滤波器连接不连通的高似然区域, 然后利用非极大值抑制重建眼睑边缘. 选择得分最高的边分别重建上下眼睑, 最后利用贝塞尔曲线来拟合眼睑的轮廓. 这种方法在视频跟踪检测眼睑时实时性很高, 但是对镜面反射光斑等干扰因素处理不够, 在包含眼镜等的人眼图像中效果不好.

本文的后续章节安排如下:第3章对本文方法进行了概述, 第4–6章详细阐述了本文算法的实现细节,第7章给出本文的实验结果及分析, 第8章总结了本文的工作.

3 基于生物形状知识的人眼定位方法概述

本章首先介绍人眼定位相关的背景知识, 以及在人眼定位中存在的挑战, 然后分步骤概述本文方法的技术细节.

3.1 背景知识

人眼的精准定位包括虹膜的边界以及上下眼睑的定位. 如图1所示, 人眼包含上下眼睑、巩膜、虹膜、瞳孔等部分, 瞳孔为中间深色部分, 眼睑与虹膜包围着的白色部分为巩膜, 瞳孔和巩膜之间的环状部分为虹膜, 在虹膜、巩膜外面包围着上下眼睑和睫毛[17]. 对人眼部分进行分割需要对虹膜、巩膜、眼睑等区域进行定位, 在此过程中通常会受到一些挑战:虹膜通常容易受到睫毛、眼睑和阴影的遮挡;上下眼睑边缘容易受到睫毛和巩膜的干扰;虹膜边缘可能受到镜面反射光斑的影响. 因此, 在定位过程中, 要尽可能的排除眼睫毛、阴影和光照等因素的影响.

图1 人眼结构图

3.2 方法概述

人眼区域由虹膜、眼睑、巩膜三个区域组成, 虹膜和上下眼睑检测完成后, 虹膜及上下眼睑包围部分即为巩膜. 本文针对姿态幅度较小的无遮挡人眼图像的定位问题, 将人眼虹膜及上下眼睑按照其生物形状分别进行定位. 对虹膜的定位在Jan[18]关于人眼灰度分布规律阐述的启发下, 在Wildes[4]的基础上进行了改进;对眼睑的定位受到Cai和Wang的启发[15], 结合全局动态阈值、局部自适应阈值及形态学算法对上下眼睑分别定位并拟合. 本文算法步骤如下:

步骤1. 利用已有的人脸对齐方法定位出人脸关键点坐标, 选择其中的人眼区域关键点, 分割出人眼感兴趣区域;

步骤2. 二值化人眼图像, 建立镜面反射光斑映射表, 利用双线性插值法对光斑处像素点进行插值, 去除人眼图像由光照、眼睛遮挡等导致的镜面反射光斑;

步骤3. 分析人眼区域虹膜、巩膜、皮肤等灰度分布规律, 确定虹膜分割阈值的上限, 为下一步定位虹膜做准备;

步骤4. 将步骤3确定的阈值上限作为Hough圆检测算法中边缘检测的高阈值, 并检测出虹膜位置(包括虹膜圆心和半径);

步骤5. 利用OTSU方法对虹膜图像进行全局二值化, 保留最大连通域后获取连通域上边缘作为过滤模板;利用局部自适应阈值对虹膜图像进行二值化;

步骤6. 二值化图像去掉小连通区域后与过滤模板结合定位眼睑, 并利用最小二乘法对眼睑进行拟合.

本文具体方法概述图如图2所示, 下面按图像预处理、带约束的Hough变换定位虹膜、基于自适应双阈值定位眼睑三部分详细介绍本文算法细节.

图2 本文方法概述图

4 图像预处理

要对人眼区域进行定位, 首先需要获得包含人眼区域的图像. 由于人的鼻子、嘴等非眼睛区域特征并不属于我们要精确定位的范围, 并且会对人眼的精确定位造成一定的影响. 因此, 我们首先需要正确地分割出人眼区域, 得到其中的ROI (Region Of Interest)区域.在这里, 我们使用了开源的SDM (Supervised Descent Method)算法[19]对每个人脸图像提取68个关键点坐标(眼睛、眉毛、鼻子、嘴巴、脸部轮廓等部位).SDM算法的人脸对齐误差达到了2.7个像素, 在人脸相对大姿态偏转时, 仍然具有不错的定位效果. 因此,我们使用其定位的12个眼部关键点(左右各6个)分割出矩形人眼区域. 按照人脸三庭五眼的先验知识, 我们以眼角点为基准, 将人眼定位搜索范围宽度从眼角处向上下左右分别扩张一定宽度, 得到人眼定位搜索区域, 减小了搜索范围, 最终的人眼区域如图3所示.对反射点插值, 我们对每个反射点定义周围四个方向上的点:

图3 人眼ROI区域定位

由于光照、遮挡、变形等影响, 对人眼的检测及定位一直是一个具有挑战性的课题. 目前大部分针对人眼定位的研究都是针对比较高清的眼部图像, 为了得到合适的光照, 许多研究还会额外引入红外光源照明来拍摄图像. 这样, 许多红外光被瞳孔吸收而被虹膜反射出去, 这往往造成人眼区域出现较多的镜面反射光斑, 这些反射不可避免地会破坏虹膜、巩膜的结构.因此, 要对人眼图像进行精准定位前必须去除这些光照带来的亮斑. 通常情况下, 这些亮斑在图像中都是比较亮的区域, 受到文献[9]的启发, 我们使用双线性插值法来填充反射区域. 首先, 将图像灰度化, 并使用自适应阈值来计算二值反射映射表M, 如图4中所示. 为了

其中,

L控制插值点与其周围点的距离, 则反射点处的灰度值为:

根据实验效果, 这里我们将L设置为5. 通过计算得到的图像如图4所示.

图4 图像预处理

5 带约束Hough变换定位虹膜

Hough变换是一种用于检测图像中是否存在特定形状如直线、抛物线、圆等特征的算法, 它在计算机视觉中的应用非常广泛. 在图像中, 任何形式的曲线都可以由点集定义, 通常由一组参数来描述, 即曲线是可以通过数学方程参数化的[6].

人眼的虹膜部分可以看作是一个圆环, 对于分辨率较低的人眼图像而言, 虹膜和瞳孔区域混为一体. 因此, 对于虹膜的定位实际上是对虹膜外边缘的定位. 在这里, 我们使用基于Hough变换的圆检测来确定虹膜边缘的圆心和半径. Hough变换的解析式可表示为:

其中,

然而, 标准的Hough圆变换需要在全局范围内做参数搜索, 相当耗时. 因此, 我们对标准的Hough圆检测增加约束. 我们观察到, 人眼图像包括皮肤、巩膜、虹膜、瞳孔、眼睑、眉毛、镜面反射光斑等区域, 在这些区域中, 瞳孔、睫毛、眉毛和头发可能具有相近的灰度强度[18], 与周围皮肤、巩膜区域相比, 通常灰度值较低;并且对于不同人而言, 虹膜与眼眶大小比值相差不大, 总在一个特定的阈值内. 因此, 我们结合灰度图像统计和Hough变换, 提出一种方案来定位虹膜边界.

已有研究表明, 在可见光波段下拍摄的一些人眼图像由于存在光照不均或者强烈的镜面反射光斑, 虹膜与巩膜之间的边界有时难以分开[1,20]. 我们观察到,当图像从RGB颜色空间转换为HSI颜色空间时, 在色调和饱和度通道中, 原本难以分开的同一图像的虹膜与巩膜边界区域清晰可见. 一些研究如文献[14]、文献[20]和文献[21]在图像的色调通道也做了一些应用, 但是根据实验效果最终我们选择了图像的饱和度通道. 首先,计算图像饱和度通道的灰度直方图, 如图5所示. 一般来说, 人眼的灰度通常包含三个显著区域, 一个灰度较低的区域, 如瞳孔、睫毛和眉毛;一个中间区间, 通常包含虹膜区域;以及一个表示巩膜和部分眼部皮肤的区域. 通过实验我们观察到, 实际的虹膜区域灰度值一般在80–150的范围内, 利用自适应阈值计算出所有灰度值最低的20%作为虹膜区域的上限, 直接忽略超过这个范围最大值的灰度级区间. 将此灰度阈值作为Canny算子边缘检测的高阈值, 缩小候选点数量, 并设置检测圆的半径小于图像一半的高度大于1/5图像的高度. 最终检测效果如图6所示.

图5 人眼灰度直方图

本文算法依赖于人眼各区域的灰度分布规律中阈值设置的准确性, 根据实验效果我们给出了经验值, 在截取的人眼部分图像包含完整的眼角和上下眼睑时,该值都是准确的, 因为由此算出的灰度阈值一定会落在直方图中虹膜的灰度分布区域中, 在虹膜区域存在部分眼睑、睫毛遮挡等影响时仍能取得较好的效果.当人眼图像不包含完整眼角和上下眼睑时, 可以针对具体图像适当增加阈值比例, 根据实际效果进行调整.另外, 本文算法在虹膜被浓密的毛发(如头发)遮挡时,图像灰度可能不再遵循正常分布规律, 会影响虹膜区域灰度阈值的判断, 导致无法准确地定位出虹膜.

图6 人眼虹膜外圆定位图

6 基于自适应双阈值定位眼睑

人的眼睑包含上眼睑和下眼睑, 目前大部分的研究都是只检测出靠近或者远离虹膜区域的眼睑边缘[22,23],

如图7所示. 事实上, 眼睑是有厚度的, 尤其是上眼睑.

因此, 本文对上眼睑的上下边缘及下眼睑分别进行检测, 找到眼睑的边缘点集, 并对边缘点进行拟合.

图7 已有研究中眼睑定位

(1) 上眼睑定位

人眼图像通过预处理减小了镜面反射光斑的干扰,但往往还存在其他噪声. 在这里, 我们使用双边滤波对图像进行去噪. 通常情况下, 我们认为传感器引入的噪声符合正态分布, 使用高斯滤波器来对图像进行滤波达到去噪的目的[24]. 对于检测边缘点集而言, 双边滤波是一个保边去噪的滤波器, 它由两个函数构成, 一个函数是由几何空间距离决定滤波器系数, 另一个由像素差值决定滤波器系数. 相比高斯滤波而言, 不仅有效地去除了图像中的噪声, 而且更好地保留了图像的真实边缘.

由于巩膜与眼睑像素比较接近, 实验发现用一个全局阈值无法完整地将眼睑、虹膜与巩膜分开. 因此,本文使用局部自适应阈值来二值化人眼图像. 局部自适应阈值中每个像素的二值化阈值与该像素邻域块的像素值分布有关. 假设图像在像素点 (x,y)处的灰度值为G(x,y), 我们以像素点(x,y)为中心选取边长为(2k+1,2k+1)窗口Sxy, 则图像中像素点(x,y)的阈值T(x,y)为:

对图像中各个像素点 (xi,yi)用B(xi,yi)值逐点进行二值化, 即:

二值化结果如图8所示. 由于人眼图像中存在眉毛、睫毛、双眼皮等的干扰, 利用局部自适应阈值对图像进行二值化后, 可以看到图像中除虹膜区域外, 还存在许多非眼睑区域. 针对这些非眼睑区域的噪点, 本文采取如下两个步骤来尽可能的减小干扰:

图8 人眼自适应阈值二值化

首先, 观察二值化图像可以看到, 人眼图像的上半部分区域噪点明显多很多, 这是因为眉毛、双眼皮都在上眼睑区域附近;另外, 睫毛像素灰度值偏低, 其总是与其他睫毛像素点或者眼睑像素点相连, 连通区域较小. 根据这一特点, 我们计算二值化图像中连通域大小, 去掉面积小于Φ 的连通域(实验中我们选取Φ 为20),最终去除掉一部分连通域较小或者离散的像素点. 此时, 由于双眼皮、眉毛等区域连通域通常较大, 在这一步对这类噪点的消除较小, 如图9所示.

图9 去除较小连通域

然后, 我们通过OTSU方法将人眼图像进行二值化. 该方法认为存在一个阈值将图像分成前景区域和背景区域两个部分, 计算将这两个区域分开的最佳阈值作为全局阈值使得两者差异最大[25]. 根据图像二值化的实验结果, 我们发现, 某些人眼图像的上眼睑区域的眼睑边缘与巩膜颜色较为接近, 直接使用OTSU方法难以直接得到完整的上眼睑, 对于某些低分辨率图片只能获取到外眼角到虹膜顶端的部分像素. 因此, 我们利用得到的二值化图像, 使用泛洪算法保留最大的连通区域. 然后, 取其上边缘作为过滤睫毛、头发、双眼皮等遮挡因素的模板, 如图10所示. 将二值化图像按照模板进行过滤.

图10 过滤模板图

经过以上两步操作后, 局部阈值二值图的眼睑上边缘完整地保留了下来. 因此, 取此二值图的上边缘作为最终的上眼睑上边缘. 对于上眼睑上边缘, 除了找出边缘点集外, 我们将定位出的边缘点集的最左及最右点作为眼角点的初始预估位置. 对于上眼睑的下边缘,我们以已经定位的虹膜的圆心为中心, 向四周引射线,留下射线与二值图的第一个交点, 并利用定位上眼睑上边缘时估计的眼角点作为约束, 最终得到一组上眼睑下边缘点集. 由于虹膜区域的存在, 上眼睑下边缘点集在虹膜区域存在较大缺口, 虹膜与眼睑的分界线不明确. 我们观察到, 上眼睑下边缘已探测出较多点, 这些点可近似连成曲线. 我们利用最小二乘法从已知点集拟合圆来估计虹膜与眼睑的分界线, 即上眼睑下边缘. 圆的平面二次曲线的一般方程可以表示成

最小二乘法就是通过找到一组参数 (a,b,c)使得所有已知点集到曲线圆之间的距离最小. 图11为上眼睑上边缘点集, 图12为上眼睑上边缘最小二乘拟合结果.

图11 上眼睑上边缘点集

图12 上眼睑上边缘最小二乘拟合

(2) 下眼睑定位

人眼下眼睑通常与皮肤、眼白颜色较为相近, 直接利用最大类间方差法找出动态阈值再进行二值化的结果并不好. 除此之外, 专门研究虹膜检测使用的图像一般只包含眼睛部位, 图像分辨率通常较高, 而本文使用的检测图像虹膜区域半径低达5个像素, 这对眼睑检测造成了困难. 经过反复实验, 本文最终选取3×3元素值为1的圆盘形态学结构元素, 对分割的下眼睑区域进行形态学灰度闭-开运算. 对进行形态学运算后的图像使用Canny算子进行一次边缘检测, 对大部分图片来说, 下眼睑被完整的保留下来. 对于某些边缘仍然不清晰的图片直接使用眼角点和眼球最低点直接拟合圆,拟合结果如图13所示, 图14为人眼各区域分割结果.

图13 下眼睑最小二乘拟合结果

图14 人眼各区域分割结果

7 实验结果及分析

为了测试本文提出算法的有效性, 我们使用葡萄牙的Beira大学组织采集的UBRIS v1.0[26]虹膜数据库进行实验. UBIRIS数据库包含241个人共1877幅虹膜图片, 被采集人大部分为西方人, 在两个不同的时间拍摄. UBIRIS数据库模拟了非理想的拍摄环境, 包含较多影响人眼定位的不利因素, 如非线性变形、眼睑睫毛等遮挡、镜面反射光斑、图像不聚焦等噪声. 除此之外, 我们还从互联网采集了分辨率高低不等的人脸图像, 包含10个人共100幅图片, 人眼区域分辨率低至20×10像素, 来测试我们的算法在低分辨率图像上的检测效果. UBIRIS v1.0数据库图片仅包含眼部区域, 无需使用SDM算法对人眼区域进行分割.

本文实验均在一台10核CPU、8 G内存的Ubuntu 14.04中进行, 实验程序使用OpenCV 2.4.8开发. 下面分别展示虹膜、人眼上下眼睑的定位结果.

7.1 虹膜定位实验

我们使用本文算法对UBIRIS v1.0数据库上及从互联网采集的图像分别进行虹膜的定位. 图15为UBIRIS v1.0数据库上虹膜定位结果, 图16为模糊图像上虹膜定位结果.

图15 UBIRIS数据库虹膜定位实验结果

图16 模糊图像上虹膜定位实验结果

从图15和图16可以看出, 本文提出算法不论在姿态幅度较小的无遮挡环境还是实验室环境下, 都能比较准确的检测出虹膜图像中的虹膜外圆部分. 另外,从实验结果可以看出, 本文算法在高清图片上定位效果更精准, 这是因为利用Hough变换进行检测时, 候选像素点投票过程中, 噪点对高清图片的影响较小, 而对低分辨率的图片影响较大, 这导致了部分虹膜定位时出现偏差.

为了更好地展示本文算法的有效性, 我们对UBIRIS v1.0中虹膜图像和低分辨率人眼图像的虹膜检测结果进行对比, 对比结果如图17所示. 图17(a)、(b)与(c)中, 左边两幅图片来自UBIRIS v1.0数据库,右边两幅图片来自互联网上人脸图片截取的人眼部分,图17(a)与(b)中定位结果来自github中对Wildes及Daugman的虹膜定位算法的开源实现[27]. 图中展示了四种具有挑战性的人眼图片的虹膜定位结果, 从左至右依次存在具有明显阴影干扰、具有较严重眼睑遮挡、像素分辨率较低、像素分辨率较低且具有阴影干扰等问题.

图17 虹膜定位实验对比图

由图17可以看出, Wildes与Daugman的方法对于睫毛、眉毛等阴影干扰及眼睑遮挡处理效果不佳,在定位时容易受其影响导致定位出现偏差, 在低分辨率图像上定位也不准确. 本文方法利用双线性插值法对图像进行预处理, 并利用人眼图像的灰度分布规律有效避免了阴影和遮挡的影响. 与Wildes及Daugman的方法相比, 本文方法在处理低分辨率图像时具有明显优势;另外, 在处理具有阴影和眼睑遮挡图像时, 本文方法也取得了更好的效果. 但是, 对于人眼虹膜部分变形较大的图像, 对人眼虹膜定位的精度有时不是很高, 定位出的虹膜半径偏小. 主要是因为Hough变换依赖于候选像素点投票, 本文虽然对镜面反射光斑和阴影等进行了有效处理, 但是在变形较大图像上, 实际虹膜边缘的投票数有时低于伪边缘, 导致结果出现偏差.对于此种情况, 可对检测边缘周围像素进行一次检验,排除检测偏差结果.

7.2 眼睑定位实验

我们使用本文算法对UBIRIS v1.0数据库及从互联网采集的图像分别进行眼睑的定位. 图18为UBIRIS v1.0数据库中眼睑定位结果, 图19为模糊图像中眼睑定位结果.

由实验结果可以看出, 本文提出的算法能较为精确地对人眼上下眼睑进行定位. 对于部分人眼变形较大图片, 本文算法存在一定偏差. 这是因为本文算法对人眼上下眼睑使用圆形进行拟合, 但在实际情况中, 眼睑形状并不都为圆形, 尤其对于人眼部分变形较大的图像而言. 但是, 本文方法定位出的边缘点集是比较有效的, 后续研究中可采用多项式曲线如贝塞尔曲线等对其进行拟合, 或对拟合曲线增加更多的形状约束使其更贴进实际眼睑形状来进行改进.

图18 UBIRIS数据库眼睑定位实验结果

图19 模糊图像上眼睑定位实验结果

同样地, 我们使用本文算法对UBIRIS v1.0中虹膜图像和低分辨率的人眼图像的眼睑检测结果进行对比,对比结果如图20所示. 图20(a)、(b)与(c)中, 左边两幅图片来自UBIRIS v1.0, 右边两幅图片来自互联网上人脸图片截取的人眼部分, 图20(a)中定位结果为本人根据Wildes对眼睑部分定位算法的实现, 图20(b)中定位结果为本人对Cai等人的眼睑定位算法的实现.图中展示了四种具有挑战性的人眼图片的眼睑定位结果, 从左至右依次存在具有明显阴影干扰、具有较明显双眼皮干扰、像素分辨率较低、像素分辨率较低且具有阴影干扰等问题.

由图中可以看出, Wildes的方法对于双眼皮、睫毛等阴影处理不够, 定位结果容易受其影响导致出现较大偏差;Cai等人的方法在定位眼睑时, 需要对图像进行形态学闭开运算并使眼睑边缘区域灰度达到最低,在高清无明显阴影遮挡的虹膜图像上, 虹膜颜色较浅且与瞳孔区域颜色区分较为明显时效果较好, 但在具有明显阴影的高清虹膜图像及分辨率较低的人眼图像上, 该方法无法保证获得眼睑区域仍然具有最低的灰度, 达不到理想的效果;本文方法利用自适应双阈值算法对人眼图像进行处理, 既去除了双眼皮等的干扰, 又对睫毛等阴影进行了有效处理, 并且不依赖于虹膜与瞳孔灰度值具有较大差异这一条件. 与Wildes及Cai等人的方法相比, 本文方法对双眼皮和阴影的处理是非常有效的. 另外, 本文算法在处理低分辨率图像时,也取得了更好的效果.

图20 眼睑定位实验对比图

8 结论与展望

现有的人眼定位方法直接应用在低分辨率人脸图像时存在一些问题. 本文针对这种非理想环境下人脸图像上的人眼定位问题, 提出了一种人眼定位方法, 利用双线性插值法、动态阈值及双边滤波器对人眼图像定位存在的干扰因素如眼睑、睫毛、双眼皮、镜面反射光斑等进行处理, 利用带约束的Hough圆检测算法及自适应双阈值算法对人眼虹膜、上下眼睑分别进行定位. 另外, 基于像素单元的图像边缘放大后会呈现凹凸不平的锯齿边缘, 本文的定位方法能给出定位的矢量方程, 一定程度上解决了图像放大后边缘的锯齿问题, 得到的矢量描述可以应用在人脸识别、三维建模等领域中. 实验结果表明, 本文算法在模糊的低分辨率人脸图像上能较为准确地定位出人眼位置, 同时, 在高清虹膜图像上同样能取得较好的定位效果, 具有较强的鲁棒性.

猜你喜欢

人眼虹膜眼睑
田志强
双眼虹膜劈裂症一例
“刷眼”如何开启孩子回家之门
眼睑病的一些常识
一种基于虹膜识别技术的车辆启动系统
“刷眼”如何开启孩子回家之门
闪瞎人眼的,还有唇
皱眉视物或因上眼睑下垂
看人,星光璀璨缭人眼
患上眼睑假性黄色瘤要紧吗?