基于灰度积分投影与霍夫圆变换算法的人眼瞳距自动检测①
2022-08-04党媛媛陈兆学
党媛媛,华 侨,陈兆学
(上海理工大学 健康科学与工程学院,上海 200093)
瞳距是人脸识别中特征归一化的稳定特征,也是视光学研究和眼镜配置过程中的重要参数,实现瞳孔中心的快速定位并精确测量瞳距,有十分重要的现实意义和应用价值. 然而,在瞳孔定位的过程中,由于人眼外观的高度可变性,使人眼的精确定位具有一定难度. 这里的可变性主要由眼睛内在的动态特征或由周围环境的变化引起,特别是面部表情的变化、物品遮挡及成像条件等. 目前国内外已有许多瞳孔定位的相关研究,总体可概括为3 大类: 基于几何特征的方法、基于外观统计的方法及基于模板匹配的方法. Guan[1]提出了基于灰度积分投影的人眼定位算法,这种方法虽有精确度差的特点,但运算量少,经常被用于人眼的粗定位; 张勇忠等人[2]提出了基于对称变换的瞳孔定位方法,虽鲁棒性较强,但其计算量大且只描述了局部对称性,精确度相对不足; 余罗等人[3]提出基于椭圆拟合的瞳孔中心点的瞳孔识别方法,该方法可以识别眼睛完全睁开及半闭合状态下的瞳孔位置,但同时其算法复杂性高且运算量大,不适合实时性定位; 主动近红外成像方法[4]对可见光照变化具有鲁棒性,主动红外光照下,瞳孔反射率大于虹膜导致瞳孔出现亮点,可用于定位瞳孔,但该方法需要满足近红外光硬件条件限制,具有一定局限性.
为了弥补上述各种既有方法的不足,本文在高斯肤色模型的基础上,提出了一种瞳孔定位和瞳距的自动测量的方法. 该方法利用光照补偿与高斯肤色模型检测出正面人脸,剔除光照和非肤色区域的双重影响,鲁棒性较强. 具体先对图像进行光照补偿,然后找到肤色区域,采用灰度积分投影的方法,实现人眼图像预处理; 通过边缘检测及膨胀等一系列形态学操作获取完整的瞳孔边界,接着利用霍夫圆变换拟合瞳孔轮廓,获得相应的瞳孔中心位置,通过公式计算输出瞳距.
1 人脸检测
1.1 光照补偿预处理
在实际获取人脸图像的过程中,通常由于周围环境不稳定、设备存在色彩偏差、物体遮挡或光照条件等因素的影响,光照分布不均匀,从而导致图像的视觉效果和应用价值降低[5]. 为了确保下一步肤色检测的准确性,需要进行光照补偿处理,尽可能消除可能存在的色彩偏差. 本文采用多尺度高斯函数与基于二维伽马函数的自适应亮度校正相结合的方法来进行光照补偿,在保留图像有效信息的同时,实现对光照的校正,有效地提升图像的视觉效果. 算法实现步骤如下:
(1)在该模型中首先将亮度与色调、饱和度分开,避免颜色受到光照的干扰. YCbCr 色彩空间受光照强度的影响较小,相较于其他色彩空间具有更加灵活的格式与更为简单的空间坐标表示形式,而且肤色在YCbCr色彩空间中具有较好的聚类特性,它将色彩中的亮度分量分离出来,此后仅考虑两个色度分量[6],因此本文选用YCbCr 空间进行基于肤色概率模型的人脸检测.
一般情况下,一幅自然图像可以由该场景下的光源照度场及物体反射光产生的反射场两者的乘积来表示,称为该图像的照度-反射模型[7]. 对于获取到的人脸图像,通常是由光照分量和反射分量共同作用产生的.基于Retinex 理论作如下假设: 人脸图像的光照分量主要集中于图像中变化平缓的低频部分,而反射分量则集中于图像中边缘、纹理等变化剧烈的高频部分[8]. 因此需要尽可能地滤除掉人脸图像中的细节信息,使提取出的光照分量只包含反映光照变化的信息. 本文基于多尺度高斯函数提取目标人脸图像中的光照分量,对图像进行光照补偿.
在确保高斯函数满足归一化的条件下,将高斯函数与输入图像函数做卷积提取出光照分量:
为使提取出的光照分量兼具较好地整体与局部效果,采用多尺度高斯函数,即对不同尺度高斯函数提取出的人脸图像中的光照分量加权求和估计光照分量,其表达式为:
其中,G(x,y)为高斯函数,F(x,y)为输入图像,I(x,y)为提取的光照分量,ωi为第i个尺度下高斯函数提取出的光照分量的加权系数,*表示卷积.
(2)针对多尺度高斯函数提取出的目标人脸图像中的光照分量,采用二维伽马函数进行处理,结合光照分量参数的分布特性,实现二维伽马函数参数的自适应调整,减少光照过强区域的亮度值,增加光照不足区域的亮度值,从而对目标人脸图像的光照分量进行非线性校正,达到提高图像质量的目的[9]. 二维伽马函数的表达式如下:
其中,H(x,y)为自适应光照补偿后图像的亮度值函数,γ为亮度值校正参数,m为提取出的光照分量的亮度均值.
通过本文涉及的算法对目标人脸图像进行光照补偿,有 效地改善了图像质量,极大地方便了图像的后续处理.
1.2 基于高斯模型的肤色检测
肤色模型是用函数的形式来表示目标人脸图像中属于肤色的像素点以确定肤色的分布规律,或者表达特定像素点的色彩与肤色的接近程度的模型[10],本文利用高斯函数来模拟肤色在YCbCr 色度空间的分布,基于统计学原理,在YCbCr 色彩空间构建高斯肤色模型,如图1 所示. 一般来讲,高斯肤色模型[11]的具体形式如下:
图1 肤色检测
2 基于积分投影的人眼粗定位
灰度积分投影是常用的定位方法,通过分析灰度图像在某一特定方向上投影的分布特征,快速对图像局部区域进行定位. 考虑到人眼区域在投影方向上的灰度积分值明显低于人脸其他部位,本文采用积分投影的方法获取眼睛的大致位置.
具体过程如下: 首先对肤色检测过的人脸图像沿坐标轴X 方向进行灰度积分投影,分别将每列中所有像素点的灰度值进行累加. 由于人脸五官的垂直积分投影几乎平均分配在垂直积分投影图上,因此只通过垂直投影并不能直接定位出人眼区域的位置; 于是再沿坐标轴Y 方向进行灰度积分投影,即分别把每行中所有像素点的灰度值进行累加. 人的眉毛、眼睛、鼻子和嘴巴部分的灰度值明显区别于周围区域,所以水平积分投影图中会形成凹凸不平的曲线.
设F(x,y)为图像中像素点(x,y)的灰度值,则在一幅大小为M×N图像中,其水平灰度积分投影函数为:
垂直灰度积分投影函数为:
对人脸的投影曲线如图2 所示.
图2 灰度积分投影图
观察积分投影图像,垂直灰度积分投影函数曲线的两个波谷位置对应着眉眼区域,水平积分投影函数曲线的两个波峰位置对应人面部的额头和鼻子中间区域,波谷对应眉眼区域,于是通过搜索垂直和水平两个方向的灰度积分投影函数分布特征极值,便可以快速定位出眉眼的大致位置. 粗定位出眉眼位置如图3 所示.
图3 眉眼粗定位
根据左右眼图像灰度值分布特征,提取双眼区域的边界,实现双眼区域的分别划定,方便后续利用霍夫圆变换分别对两只眼睛的瞳孔边界进行拟合,实现瞳孔的独立定位,如图4 所示.
图4 双眼独立定位
3 基于Hough 变换的瞳孔细定位
3.1 人眼区域边缘检测
在眼部区域图像中,瞳孔边缘中包含着重要的边界定位信息,瞳孔与虹膜之间存在着灰度值变化很大的阶跃型边缘[12],这为检测瞳孔边缘提供了方便. Canny算子对噪声的抑制能力强,在抑制噪声和边缘检测方面有良好的平衡性,而瞳孔区域图像常受到眼睫毛和光照噪声的影响,故本文在获得左、右眼的大致位置后,在粗定的人眼区域内利用Canny 算子检测瞳孔边缘.
Canny 算子边缘检测[13]的基本步骤如下:
(1)使用高斯平滑滤波器卷积降噪,对待检测图像进行平滑操作,去除噪声;
(2)增强边缘,利用不同梯度算子模板,获取图像梯度幅值以及方向;
(3)遍历图像,找出图像梯度幅值的局部极大值点;
(4)通过设置双阈值的方法来提取并连接图像边缘,即设置一个高阈值Thigh和低阈值Tlow,梯度幅值大于Thigh,一定在边缘上,小于Tlow,排除边界,位于两者之间,则搜寻其邻域像素,大于Tlow则保留,反之剔除为背景点.
假设待检测图像为f(x,y),高斯滤波函数为Gα(x,y),则梯度矢量g(x,y)为:
梯度矢量的模Mα为:
梯度矢量的方向Aα为:
其中,α为尺度因子,使得在Aα方向上Mα取得局部区域中极大值的点即为边缘点. 由于睫毛眼皮等因素影响,完整获取瞳孔边缘还需要进行一系列形态学处理,边缘检测结果如图5 所示.
图5 Canny 边缘检测结果
3.2 Hough 圆变换
霍夫变换的基本思想是对于边界上的点所组成的集合,找出共线的点集和相应的方程. 构造一个参数空间,把传统坐标空间中的图像像素点一一对应映射到该参数空间,由于传统坐标系中的一个点映射到参数空间是一条曲线或一个面,因此可以建立一个交点累加器,基于投票的机制选取参数空间中的最多累积点的坐标作为参数确定原始图像中物体的位置与形状[14–16].
Hough 变换最早应用于对直线的检测,后来随着算法的改进与发展,逐渐被推广到类似于圆和椭圆的曲线检测. 本文选用Hough 圆变换检测算法拟合瞳孔边界. 其算法流程如下: 先估算圆心,沿同一圆上边缘点的梯度画线,这些线一定会交于圆心; 再估算半径,统计从圆心到边缘点的距离值,出现几率最大者即为半径,符合该半径的边缘点在圆上.
图像空间中圆心为 (a,b),半径为r的圆的表达式为:
霍夫圆检测的问题就是求解经过像素点最多的(a,b,r)参数对,在累加空间(a,b,r)中:
如图6 所示,对于图像空间上任一点(x,y),其对应着参数空间中的一个圆锥,而在参数空间中,经Hough变换得到的锥面簇的交点对应的就是原图在(x,y)平面上的圆,由此得到检测圆的圆心位置和半径.
图6 霍夫变换图示
霍夫圆变换算法流程如算法1 所示.
算法1. 霍夫圆变换算法流程1)构建(a,b,r)参数空间,把(x,y)平面上的像素点一一映射,同时创建一个记录参数空间圆锥簇的交点累加器,设置初始值为0;2)遍历图像,依据公式对测试圆上的边缘点依次进行霍夫变换,将结果在累加器上进行记录;3)寻找累加器的局部最大值获取目标参数(a,b,r),为提高准确性,不直接采用最大值,求取大致的平均位置来拟合测试圆.
拟合双眼瞳孔边界结果如图7 所示.
图7 瞳孔边界拟合图
4 实验结果与分析
本文瞳孔测距实验在以Matlab R2016a 为平台的Intel(R)Core(TM)i5-7200U @2.50 GHz 8 GB 内存Windows 10 操作系统的PC 机实现. 图8 为本文方法与基于模板匹配的瞳孔定位效果对比图,算法的运行时间分别为2.390 086 s 和4.626 804 s. 结果可见两种方法都可以定位到双眼的瞳孔区域,但是基于模板匹配的定位方法容易受模板影响而出现定位偏差.
图8 瞳孔中心定位效果图
表1 是用人工标定、基于模板匹配的方法与本文算法对同一帧图像进行识别所得的瞳孔中心数据及瞳距测量结果(数据皆进行3 次测量,取其平均值),结果表明,运用本文算法所得到的瞳孔中心坐标数据和瞳距结果与人工标定结果的一致性比模板匹配的方法更好,且算法运行时间更短,该算法能够更准确地测量瞳距,实时性更好.
表1 算法性能对比
为验证本文算法的有效性,另外对seeprettyface 数据库中15 幅包含人脸的图片进行瞳孔定位及瞳距测量. 图9 为本文方法部分实验结果,十字位置即为算法定位的瞳孔中心位置. 利用Matlab R2016a 搭建人工标定瞳孔中心系统(数据皆进行3 次标定,且标定过程互不干扰,取其平均值),将该结果作为标准瞳孔中心位置. 图10(a)与图10(b)分别是基于模板匹配的方法与本文算法对15 幅图像进行检测所得的双眼瞳孔中心数据与标准瞳孔中心位置的误差. 图10(c)分别表明双眼瞳孔中心X,Y 坐标中心距离误差的平均值以及瞳距的误差平均值.
图9 部分瞳孔中心定位实验结果
通过图10(a)与图10(b)可见,本文提出的方法检测出的左右双眼的像素误差基本稳定在0–10 pixels 的范围,部分定位效果欠佳,致使误差较大,但在可接受范围. 基于模板匹配的方法误差稳定在小于20 pixels的范围,较本文方法略大,识别精度略低. 由图10(c)可以看出本文方法识别的瞳距与标准瞳距偏离的误差小于模板匹配方法,X,Y 坐标中心距离误差和瞳距的平均误差都在0–10 pixels 内,基本满足面诊中瞳孔定位与瞳距测量要求.
图10 两种算法识别的瞳孔中心与标准瞳孔中心误差对比
5 结语
实现瞳距的自动检测,在身份识别、医疗诊断、视光学研究和计算机视觉等领域都有着重要且广泛的应用价值. 本文在人机交互技术高度发展的背景下,提出了一种基于光照补偿技术、高斯肤色模型、灰度积分投影和Hough 圆变换的瞳距测量方法. 本文首先结合二维伽马函数的自适应亮度校正方法对图像进行光照补偿,然后基于高斯肤色模型初步定位人脸,再运用灰度积分投影法,提取眼部区域,经过一系列形态学操作,最后采用Canny 边缘检测算子检测出瞳孔边缘,将边缘像素点信息转换到参数空间,通过Hough 圆变换算法分别对双眼瞳孔中心进行定位,计算瞳孔中心之间的距离来计算瞳距. 经实验检验,本文提出算法较好地实现了瞳孔中心的快速定位与瞳距的自动检测,具有一定的实用价值,对瞳孔测距的智能化改进有重要意义.