基于HOG特征和FAST算法的双眼定位方法与流程

文档序号:11231129阅读:761来源:国知局
基于HOG特征和FAST算法的双眼定位方法与流程

本发明涉及计算机视觉、图像处理、模式识别等技术领域,是一种针对红外光单摄像头设备采集的人脸图像中实现双眼快速定位的方法,该方法可用于学校、银行、监狱、工厂等公共场合,对于私人住宅的门禁和周围区域同样适用。



背景技术:

生物特征识别技术是一种利用自动化技术检测个人生理特征或个人行为特征进行身份验证的技术,在商业领域、军事领域、刑侦领域等方面都得到了广泛应用。在众多的生物特征中,虹膜识别以其唯一性、稳定性、可采集性、非侵犯性等优点,具有重要的学术研究价值以及广阔的应用前景,在近几十年中得到了飞速的发展,在中国就已广泛的应用于公安、安全、海关、金融、军队、机场、边防口岸、安防等多个重要行业及领域,以及智能门禁、门锁、考勤、手机、数码相机、智能玩具等民用市场。然而,在实际应用中,虹膜识别依然面临着诸多的挑战,如何快速精确地定位由单摄像头设备采集的人脸图像中的双眼位置,是下一步虹膜定位、提取特征和识别的必要前提。

由于虹膜识别的应用范围广泛,摄像头设备可能处在任意位置,并且受到诸多环境因素影响,造成采集的图片具有复杂且不恒定的背景噪声;此外人们日常生活中佩戴眼镜的比例增大,由眼镜遮挡造成的问题也就越来越普遍。这些干扰因素都增加了双眼定位的精度与难度,影响了整个认证系统中接下来虹膜识别的准确率,成为了虹膜识别技术中亟待解决的关键问题。

随着实际生活场景虹膜识别研究的深入,研究对嘈杂背景的双眼定位方法有着重要的理论意义和应用价值。例如可以将其运用于疲劳驾驶检测中,可根据所定位的双眼进行分析快速判别驾驶员状态,从而减少安全事故发生的频次。



技术实现要素:

为了克服现有的双眼定位方法无法稳定适应环境的变化、复杂背景对虹膜识别准确率的影响较大、误报率较高的不足,本发明提供一种稳定适应环境的变化、对环境的鲁棒性和准确率较高、误报率较低的基于hog特征和fast算法的双眼定位方法。

本发明解决其技术问题所采用的技术方案是:

一种基于hog特征和fast算法的双眼定位方法,包括如下步骤:

1)载入训练好的svm模型文件;

2)获取待定位的第i张帧图像srcimage,并复制出图像midimage,i为正整数;

3)对图像midimage进行预处理;

4)对图像midimage使用fast算法进行光斑检测,获取候选区域中心点坐标向量points;

5)依次对图像midimage上的候选区域是否为眼睛区域进行判断,获取眼睛区域中心点向量pointstru;

6)对于向量pointstru中的点进行筛选,获取最终返回向量大小最多为2的眼睛区域中心点向量pointsfnl;

7)若只检测到一只眼睛,即向量pointfnl的大小为1,则进行修复;

8)返回眼睛区域中心点向量pointsfnl,并遍历向量pointsfnl,截取以pointsfnl为中心的矩形区域为眼睛区域。

进一步,所述步骤3)中,预处理的过程如下:

3.1)对图像midimage进行灰度变换,将图像转化为灰度图;

3.2)对图像midimage进行高斯平滑处理,对嘈杂点进行过滤;

3.3)对图像midimage进行膨胀操作,将光斑点放大。

再进一步,所述步骤4)中,fast算法的过程如下:

4.1)设置阈值t,用于比较周围像素点与中心像素点的灰度差值;

4.2)依次选取图像midimage中的像素点p,并设该点的灰度值为i(p)。在以p为圆心,半径为3像素的圆周上,取16个像素点。以点p正上方的像素点为1号,顺时针对16个像素进行编号,依次设为p'[1]、p'[2]、...、p'[16];

4.3)选取p'[1]、p'[5]、p'[9]与p'[13]像素点,若这四个像素点中有至少3个像素点的灰度值同时大于i(p)+t或者同时小于i(p)-t时,则跳至步骤4.4,否则返回步骤4.2);

4.4)此时初步判断点p为角点,遍历1至16号像素点p'[i](i=1,2,...,16),设p'[i]处的灰度值为i(p'[i])。若存在连续9个像素点上的灰度值i(p'[i])同时大于i(p)+t或者同时小于i(p)-t,则判断点p为角点,将点p加入temp_points向量,否则返回步骤4.2);

4.5)重复步骤4.2)-4.4),直至图像midimage中像素遍历完成,获得temp_points向量;

4.6)对向量temp_points中的角点进行非极大值抑制,重新得到temp_points向量;

4.7)选取temp_points向量中的第一个点,将其加入points向量中;

4.8)继续依次选取temp_points向量中的角点tp,并与points向量中的每个点cp[i]进行比较,i为正整数;

4.9)如果存在cp[i],使得cp[i]在tp的20*20像素邻域中,则直接返回步骤4.7),否则将点tp加入points向量中,返回步骤4.7),直到遍历temp_points向量结束;

4.10)输出points向量。

更进一步,所述4.6)中,非极大值抑制过程如下:

4.6.1)依次取temp_points中的点tp;

4.6.2)取以角点tp为中心的3*3像素邻域,对邻域中的每一个角点p计算得分函数的值v,v的值为i(p)与i(p'[i])(i=1,2...,16)的差值的绝对值的总和,公式如为:

4.6.3)取v值最大的角点p,作为该邻域中的极大值角点保留,在temp_points向量里删除邻域中的其他点。

所述步骤5)中,获取眼睛区域中心点向量pointstru的过程如下:

5.1)获取第j个候选区域中心点坐标center,j为正整数;

5.2)截取以center为中心点,长为2*a,宽为2*b的矩形候选区域图像cndimage,若候选区域越界,则将其向图像中心平移相对量;

5.3)计算图像cndimage的hog特征向量;

5.4)若是第一次对图像进行hog特征向量计算,则计算hog特征向量维数,并初始化图像的特征向量矩阵featuremat,行数为1,列数为hog特征向量维数;

5.5)将计算好的图像cndimage的特征向量复制到特征向量矩阵featuremat;

5.6)用训练好的svm分类器对于图像cndimage的特征向量进行分类;

5.7)若分类器返回的结果为真,则将中心点center放入到向量pointstru。

所述步骤6)的过程如下:

6.1)将向量pointstru中第0个点放入向量pointsfnl中,将其标记为点pointstru[0];

6.2)依次循环读入点pointstru[k];

6.3)若点pointstru[k]的x坐标与点pointstru[0]的x坐标相差足够大,且点pointstru[k]的y坐标与点pointstru[0]的y坐标相差足够小,则认为pointstru[k]是区别于pointtru[0]的另一只眼睛,则将其放入向量pointsfnl,k为正整数;

6.4)若向量pointsfnl的大小等于2,则跳出循环。

所述步骤7)中,修复的过程如下:

7.1)获取眼睛区域中心点向量pointsfnl,根据先验的人脸五官比例知识与pointsfnl[0]的值,判定所得的单眼位置为左眼还是右眼并进行标记,称之为基准眼睛;

7.2)根据基准眼睛区域中心点的坐标,在对称区域(即如果标定为左眼则在图像右半部分区域)划定一个长为l,高为h且中心点纵坐标与基准眼睛区域中心点纵坐标值相同的矩形区域r,满足条件:

h=8atan10

其中imglen是指图像srcimage的长度;

7.3)定义长为2*a,宽为2*b的矩形r在矩形区域r中线性滑动,步长设置为d,截取修复样本,称之为配对眼睛,保存结果图像到集合t中;

7.4)以pointsfnl[0]的坐标(x,y)为中心,从原灰度图像中切割出大小为p*q的小块灰度图像ac,将图像ac沿边缘反转180°得到bc;

7.5)对于集合t中的每一个结果ti,在中心切割出大小为p*q的小块灰度图像记为tic,i=0,1,...,k.k为集合t的大小;

7.6)对于每一个tic,计算与bc的相似性:

取li值最大的图像,若li>0.7,则将其中心点坐标放入向量pointsfnl,否则舍弃;

所述步骤8)中,截取以pointsfnl[i]为中心,长为2*a,宽为2*b的矩形区域为眼睛区域。

本发明针对红外单摄像头虹膜采集仪提出一种双眼定位算法,可以对任意复杂背景下采集到的图片进行快速而精确的双眼定位并在定位区域内收集虹膜信息以供身份认证。本发明提供了一种对环境变化、光照、噪声、图像质量等鲁棒性强、适应眼镜佩戴情况的检测方法,利用红外单摄像头设备采集到图像中眼睛瞳孔存在光斑这一特性,通过fast算法提供候选区域,使用支持向量机进行分类筛选出真正的眼睛区域,有效降低系统的误报率,提高系统对环境的鲁棒性和准确率。

本发明的有益效果主要表现在:稳定适应环境的变化、对环境的鲁棒性和准确率较高、误报率较低。

附图说明

图1是基于hog特征和fast算法的双眼定位方法的基本流程图;

图2是基于hog特征和fast算法的双眼定位方法的详细流程图;

具体实施方式

下面结合附图对本发明作进一步描述。

参照图1和图2,一种基于hog特征和fast算法的双眼定位方法,包括如下步骤:

1)载入训练好的svm模型文件;

2)获取待定位的第i张帧图像srcimage,并复制出图像midimage,i为正整数;

3)对图像midimage进行预处理,具体过程如下:

3.1)对图像midimage进行灰度变换,将图像转化为灰度图;

3.2)对图像midimage进行高斯平滑处理,对嘈杂点进行过滤;

3.3)对图像midimage进行膨胀操作,将光斑点放大。

4)对图像midimage使用fast算法进行光斑检测,获取候选区域中心点坐标向量points,具体过程如下:

4.1)设置阈值t,用于比较周围像素点与中心像素点的灰度差值。在本专利中,阈值t设置大小为10;

4.2)依次选取图像midimage中的像素点p,并设该点的灰度值为i(p)。在以p为圆心,半径为3像素的圆周上,取16个像素点。不妨假设点p正上方的像素点为1号,顺时针对16个像素进行编号,依次设为p'[1]、p'[2]、...、p'[16];

4.3)选取p'[1]、p'[5]、p'[9]与p'[13]像素点,若这四个像素点中有至少3个像素点的灰度值同时大于i(p)+t或者同时小于i(p)-t时,则跳至步骤4.4,否则返回步骤4.2;

4.4)此时初步判断点p为角点,遍历1至16号像素点p'[i](i=1,2,...,16),设p'[i]处的灰度值为i(p'[i])。若存在连续9个像素点上的灰度值i(p'[i])同时大于i(p)+t或者同时小于i(p)-t,则判断点p为角点,将点p加入temp_points向量,否则返回步骤4.2;

4.5)重复步骤4.2-4.4,直至图像midimage中像素遍历完成,获得temp_points向量;

4.6)对向量temp_points中的角点进行非极大值抑制,重新得到temp_points向量,非极大值抑制过程如下:

4.6.1)依次取temp_points中的点tp;

4.6.2)取以角点tp为中心的3*3像素邻域,对邻域中的每一个角点p计算得分函数的值v,v的值为i(p)与i(p'[i])(i=1,2...,16)的差值的绝对值的总和,公式如为:

4.6.3)取v值最大的角点p,作为该邻域中的极大值角点保留,在temp_points向量里删除邻域中的其他点。

4.7)选取temp_points向量中的第一个点,将其加入points向量中;

4.8)继续依次选取temp_points向量中的角点tp,并与points向量中的每个点cp[i]进行比较;

4.9)如果存在cp[i],使得cp[i]在tp的20*20像素邻域中,则直接返回步骤4.7,否则将点tp加入points向量中,返回步骤4.7。直到遍历temp_points向量结束;

4.10)输出points向量。

5)依次对图像midimage上的候选区域是否为眼睛区域进行判断,获取眼睛区域中心点向量pointstru,具体过程如下:

5.1)获取第j个候选区域中心点坐标center,j为正整数;

5.2)截取以center为中心点,长为2*a,宽为2*b的矩形候选区域图像cndimage(若候选区域越界,则将其向图像中心平移相对量);

5.3)计算图像cndimage的hog特征向量;

5.4)若是第一次对图像进行hog特征向量计算,则计算hog特征向量维数,并初始化图像的特征向量矩阵featuremat(行数为1,列数为hog特征向量维数);

5.5)将计算好的图像cndimage的特征向量复制到特征向量矩阵featuremat;

5.6)用训练好的svm分类器对于图像cndimage的特征向量进行分类;

5.7)若分类器返回的结果为真,则将中心点center放入到向量pointstru。

6)对于向量pointstru中的点进行筛选,获取最终返回向量大小最多为2的眼睛区域中心点向量pointsfnl,具体过程如下:

6.1)将向量pointstru中第0个点放入向量pointsfnl中,将其标记为点pointstru[0];

6.2)依次循环读入点pointstru[k];

6.3)若点pointstru[k]的x坐标与点pointstru[0]的x坐标相差足够大,且点pointstru[k]的y坐标与点pointstru[0]的y坐标相差足够小,则认为pointstru[k]是区别于pointtru[0]的另一只眼睛,则将其放入向量pointsfnl,k为正整数;

6.4)若向量pointsfnl的大小等于2,则跳出循环。

7)若只检测到一只眼睛,即向量pointfnl的大小为1,则对进行修复,具体过程如下:

7.1)获取眼睛区域中心点向量pointsfnl,根据先验的人脸五官比例知识与pointsfnl[0]的值,判定所得的单眼位置为左眼还是右眼并进行标记,称之为基准眼睛;

7.2)根据基准眼睛区域中心点的坐标,在对称区域(即如果标定为左眼则在图像右半部分区域)划定一个长为l,高为h且中心点纵坐标与基准眼睛区域中心点纵坐标值相同的矩形区域r,满足条件:

h=8atan10

其中imglen是指图像srcimage的长度;

7.3)定义长为2*a,宽为2*b的矩形r在矩形区域r中线性滑动,步长设置为d,截取修复样本,称之为配对眼睛,保存结果图像到集合t中;

7.4)以pointsfnl[0]的坐标(x,y)为中心,从原灰度图像中切割出大小为p*q的小块灰度图像ac,将图像ac沿边缘反转180°得到bc;

7.5)对于集合t中的每一个结果ti,在中心切割出大小为p*q的小块灰度图像记为tic(i=0,1,...,k.k为集合t的大小);

7.6)对于每一个tic,计算与bc的相似性:

取li值最大的图像,若li>0.7,则将其中心点坐标放入向量pointsfnl,否则舍弃。

8)返回眼睛区域中心点向量pointsfnl,并遍历向量pointsfnl,截取以pointsfnl[i]为中心,长为2*a,宽为2*b的矩形区域为眼睛区域。

基于高斯平滑和膨胀的图像预处理:高斯平滑可以有效减少图像中存在的噪声,同时二维高斯函数具有旋转对称性,即滤波器在各个方向上的平滑程度是相同的,这样即使事前不知道待处理图像的边缘方向,也可以在后续边缘检测中不会偏向任一方向。二维高斯函数可以表达为:

其中i(x,y)是点(x,y)经过平滑处理后的像素值,σ代表标准差。

膨胀则是对图像中的高亮部分进行扩张,使得效果图比原图具有更大的高亮区域,即可以扩大人眼图像中的光斑部分,从而提升候选区域的覆盖度。膨胀操作公式如下:

dst(x,y)=max{src(x+dx,y+dy)+b(dx,dy)|(dx,dy)∈db}

其中dst(x,y)是膨胀后的灰度图像,src(x,y)是原灰度图像,b为结构元素,dx和dy分别表示图像x和y方向上的分量,并且取值范围落在结构元素区域db内。膨胀运算是由结构元素确定的邻域块中选取图像值与结构元素值的和的最大值。

基于fast特征检测算法的候选区域检测:fast特征检测算法是一种基于灰度值比较的算法。算法通过比较候选特征点的灰度值与其周围一圈像素点的灰度值,从而确定该候选特征点是否为特征点。

其中p′是以p为圆心的圆周cp上任意一点,i(p′)为p′的灰度值,i(p)为圆心p的灰度值,εd为灰度值差的阈值,如果v大于给定阈值则认为p是一个特征点。在此原理基础上为了提高运算速度,本专利采用四邻域加速方法,即选取点周围上下左右四个点,如果有3个和候选点的灰度值足够大才认为此候选点为特征点候选点。如果不满足此条件直接丢弃。本专利中采用半径长度为3,共有16个周围像素需要比较,能够在保证检测到特征点的同时减少运行时间。

本专利利用fast算法检测红外虹膜采集器采集的人眼图像中因为反射而形成的光斑,这光斑通常会出现的瞳孔位置及附近区域。经测试虽然瞳孔区域能够比较准确的被选中在候选区域中,但是会出现很多特征点挤在一起的情况,所以需要通过一定的操作,将同一邻域中的特征点进行筛选。本专利对候选点进行归类,即根据图像的大小,选定在20*20像素的范围中只取一个特征点,这样既不会使特征点的检测结果出现较大的偏差,同时能够极大的减小候选点的数量。

基于hog特征和svm分类器的非人眼区域排除:对上一步获取到的候选区域统一缩放到标准大小,提取hog特征,使用svm分类器排除非人眼区域。其中hog特征的提取方法如下:

步骤1标准化gamma空间和颜色空间

为了减少光照因素的影响,采用gamma校正法对输入图像进行颜色空间的标准化。在图像的纹理强度中,局部的表层曝光贡献的比重较大,gamma校正可以调节图像的对比度,有效降低图像局部的阴影和光照变化所造成的影响,同时可以抑制噪音的干扰。因为颜色信息作用不大,通常先转化为灰度图。gamma校正公式为:i′(x,y)=i(x,y)gamma。其中i(x,y)是样本图像在坐标为(x,y)处的像素值。当gamma值小于1时,图像的整体亮度值得到提升,同时低灰度处的对比度得到增加,更利于分辩低灰度值时的图像细节。本专利中gamma的值为0.5。

步骤2计算图像梯度

计算图像横坐标和纵坐标方向的梯度,并据此计算每个像素位置的梯度方向值;求导操作不仅能够捕获轮廓、人影和一些纹理信息,还能进一步弱化光照的影响。图像中像素点(x,y)的梯度为:

gx(x,y)=i(x+1,y)-i(x-1,y)

gy(x,y)=i(x,y+1)-i(x,y-1)

式中gx(x,y),gy(x,y),i(x,y)分别表示输入图像中像素点(x,y)处的水平方向梯度、垂直方向梯度和像素值。像素点(x,y)处的梯度幅值和梯度方向分别为:

最常用的方法是:首先用[-1,0,1]梯度算子对原图像做卷积运算,得到x方向(水平方向,以向右为正方向)的梯度分量gradscalx,然后用[1,0,-1]t梯度算子对原图像做卷积运算,得到y方向(竖直方向,以向上为正方向)的梯度分量gradscaly。然后再用以上公式计算该像素点的梯度大小和方向。

步骤3构建细胞单元梯度方向直方图

目的是为局部图像区域提供一个编码,同时能够保持对图像中目标对象的姿势和外观的弱敏感性。将图像分成若干个连接区域cell,每个cell中包含n*n个像素。用n个直方图来统计这n*n个像素的梯度信息,也就是将cell的梯度方向360度分成n个方向块,对cell内每个像素用梯度方向在直方图中进行加权投影(映射到固定的角度范围),就可以得到这个cell的梯度方向直方图,即该cell对应的n维特征向量。

步骤4合细胞单元成块并归一化块内梯度直方图

对梯度强度做归一化。归一化能够进一步地对光照、阴影和边缘进行压缩。采取的办法是:把各个细胞单元组合成大的、空间上连通的区间(block)。每个block内所有cell的特征向量串联起来便得到该block的hog特征。将归一化之后的块向量称之为hog特征向量。

基于图像块匹配的单眼漏检检测:在实际的检测过程中会出现只检测出一只眼睛的情况,造成这种情况的原因可能有a)fast检测算法没有给出正确的包含另外一只眼睛区域的候选区域;b)fast检测算法已经给出了正确的包含另外一只眼睛区域的样本,但是训练出来的分类器分类错误。本专利中使用基于图像块匹配的单眼漏检检测来解决上述情况,具体步骤如下:

step1基准眼睛判定

根据已经检测出的那只眼睛,获取该眼区域中心点的坐标,根据先验的人脸五官比例知识判定所得的单眼位置为左眼还是右眼并进行标记,称之为基准眼睛;

step2滑动窗口大小定义

根据基准眼睛区域中心点的坐标,在对称区域(即如果标定为左眼则在图像右半部分区域)划定一个长为l,高为h且中心点纵坐标与基准眼睛区域中心点纵坐标值相同的矩形区域r,满足条件:

h=8atan10

其中imglen表示图像长度。x代表基准眼睛区域中心点的横坐标值,a是之前定义好的眼睛区域矩形长度的一半。定义长为2*a,宽为2*b的矩形r在矩形区域r中线性滑动,步长设置为d,截取修复样本,称之为配对眼睛,保存结果图像到集合t中;

step3计算配对眼睛与基准眼睛的相似度

首先从基准眼睛区域的中心切割出大小为p*q的小块灰度图像ac,将图像ac沿边缘反转180°得到bc;接着对于集合t中的每一只配对眼睛ti,在其中心切割出大小为p*q的小块灰度图像记为tic(i=0,1,...,k),对于每一个tic(i=0,1,...,k.k为集合t的大小),计算与bc的相似性:

li值越大表示配对眼睛与基准眼睛的相似度越高。

取所有的li值中的最大值l所对应的配对眼睛t,若l大于阈值ε,则t便是所修复出来的另一只眼睛,若l不大于阈值ε,则舍弃该配对眼睛t,不进行修复。本专利中所取阈值ε为0.7。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1