法律状态公告日
法律状态信息
法律状态
2016-07-20
未缴年费专利权终止 IPC(主分类):G06K9/00 授权公告日:20090114 终止日期:20150601 申请日:20070601
专利权的终止
2009-01-14
授权
授权
2007-12-19
实质审查的生效
实质审查的生效
2007-10-24
公开
公开
技术领域
本发明属于图像处理和模式识别技术的应用领域,特别涉及一种人眼定位及人眼状态识别方法。
背景技术
人脸检测和脸部各器官定位是当前计算机视觉领域中最具挑战性的研究课题之一。人眼作为人脸最显著的特征,与嘴、鼻相比较,能够提供更可靠、更重要的信息,因此往往是人脸识别中必要的处理对象。人眼识别在人脸图像识别应用中起着重要的作用,如人脸识别、面部表情分析、姿势判定、视觉跟踪、人机交互、疲劳检测等;在脸部器官定位方面,只要人眼被精确定位,则眉毛、鼻、嘴等其它特征就可由潜在的分布关系比较准确的定位;眼睛定位还可以使人脸较好的归一化,预处理的效果也更明显。
从人脸图像中识别人眼的位置及状态,是一个复杂的过程。由于人脸是一类具有复杂变化的自然结构目标,并且具有以下特征:(1)人脸由于外貌、表情、肤色等的不同,具有模式的可变性;(2)人脸上可能存在眼镜、胡须等附属物;(3)作为三维物体,人脸影像容易受到光照产生的阴影和头部偏转的影响;(4)人眼有自然生理状况下的眨眼,在一定状况下跟眉毛有很大的相似度,同时跟疲劳状态下的睁闭容易混淆。因此从人脸中识别出人眼的位置和状态是一个非常复杂的模式识别技术。
一般的人眼定位方法通常分为两个步骤:第一步是粗定位,即在图像中找到可能的眼睛块,或者初步定位人眼附近的位置;第二步是精确定位,应用一定的规则或验证方法来确定眼睛的确切位置。国内外人眼定位的研究有很多,涉及的学科领域也很广,比如计算机图形学、图像处理、模式识别、统计学、生物物理和神经生物学等。将这些研究方法归纳后主要有以下几类:(1)模板匹配,是用眼睛模板在图像中进行匹配,得到相似度最大的点作为定位的眼睛,该方法运算量大,很难用于实时眼睛追踪,并且模板中的加权因子很难合理的设置,难以同时兼顾所有条件下的人脸,准确率低。(2)边缘提取,通过检测瞳孔的圆形特征或眼睑形成的椭圆特征来定位人眼,该方法对人眼区域的像素精度要求很高,并且当眼睛闭合时,提取不到边缘而使得检测失败。(3)灰度分布,根据眼睛区域的特征:眼睛区域与周围区域相比比较暗,即灰度值较低;眼睛区域的灰度变化率较大,则对人脸进行水平和垂直灰度投影来分割出眼睛,该方法定位速度较快,但波峰波谷的分布对不同的人脸和姿态变化非常敏感,定位精度较差。(4)眨眼检测,通过图像帧之间的差异,根据眼睛形状的改变来捕捉眨眼,从而定位出人眼,但眨眼频率和帧之间的间隔关系不好确定,受外界干扰大。(5)人脸结构特征,最常用的是根据人眼的中心强对称性,通过搜索人脸图像中的对称块来定位人眼,该方法适用于背景单一的正面标准人脸,适用范围窄。(6)神经网络,该方法仅能给出眼睛的大致位置,并且点到点的检测机制使得计算量非常庞大。
在人眼状态识别领域,目前也有很多方法,这些方法大致可以分为两大类:基于特征分析的人眼状态识别和基于模式分类的人眼状态识别。基于特征分析的人眼状态识别,眼睛状态主要是由内外眼角、上下眼睑、虹膜和巩膜等特征决定的,有以下三种典型的方法:灰度模板匹配法、虹膜和眼白提取法、Hough变换检测瞳孔法,这些都对人眼区域的像素精度要求较高,适用范围受到限制。基于模式分类的人眼状态识别,是根据样本自动学习规则或知识的方法判断出人眼状态,目前主要有特征眼、神经网络、SVM、HMM等方法,该类方法一般需要对图像进行缩放、旋转等复杂的归一化处理,运算量大,而且对像素精度也有一定要求。
发明内容
针对上述人眼定位和人眼状态识别方法中存在的不足,本发明提供一种人眼定位及人眼状态识别方法,该方法对人脸没有任何条件限制,在现有技术的基础上,进一步提高了算法的鲁棒性、准确性和实时性。
本发明方法由以下步骤组成:
步骤一,人脸图像预处理;
对定位后的人脸图像进行彩色图灰度化、直方图均衡、根据Otsu法设定初始阈值二值化图像、调整阈值重新二值化图像,则对所有条件下的人脸均可得到较好的二值化图像。
步骤二,人眼粗定位;
首先创建人脸样本库,该人脸样本库是2005年9月6日至2006年4月12日期间采集得到,包含11个人,共930幅,分辨率为320*240,每一个测试者都要求在不同时间,不同光照条件,不同距离,不同面部表情,不同面部细节(是指戴眼镜与否,睁闭眼)和不同脸部朝向条件下获取人脸图像;然后根据人脸面部几何特征设计眼睛分类器,设计眼睛分类器如下:
(1)眼睛黑块几何中心在图片中的位置范围:横坐标:0.15a~0.85a(a为图片的宽度);纵坐标:26.384~b/2(b为图片的高度);
(2)眼睛黑块所含像素的个数:5~724;
(3)眼睛黑块外接矩形宽高比:0.95~7.26;
(4)眼睛黑块外接矩形面积:13~1100;
(5)眼睛黑块下面的一定区域内不能有其他黑块:该区域的高度为min(眉毛下边缘到眼睛上边缘的学习距离19,b/2-黑块纵坐标);宽度以黑块质心为中心,4为半径;
然后根据眼睛分类器在被检测图像中初步筛选出人眼黑块;由于人脸的差异和条件的多变性,少部分情况下的人脸经分类器筛选出来的人眼黑块数目为0,为了提高算法的鲁棒性,阈值先调低3次,再调高4次,步长分别为0.08和0.04,便达到了较好的效果。
步骤三,人眼精确定位;
首先根据肤色匹配分割出肤色和唇色;再设计Fisher线性分类器,找到肤色和唇色的最佳投影方向;然后根据分类器分割出嘴唇;根据人脸面部特征,即使在人脸有偏转的情况下,两个嘴角的连线(或唇线)和两只眼睛中心的连线平行,即垂直于人脸对称轴,而且人脸对称轴过嘴巴中心,并且嘴唇中心与两只眼睛的中心连线构成等腰三角形,则可定位出人脸对称轴;最后根据人脸对称轴定位出另一只人眼或排除非眼睛黑块,从而实现人眼的精确定位。
步骤四,人眼状态识别。
从上述人眼定位结果的二值图中,分割出左眼区域,考虑二值图中黑色像素数占整幅图像像素总数的比值rat,以及人眼黑块的中心高度h(人眼黑块质心到黑块上下边缘的距离)与分割高度(即最小外接矩形的高度)H的比值r1,与睁闭眼的阈值相比较,判断出人眼状态:
rat>0.2413,且r1>0.5,则人眼睁开;rat>0.2413,且r1<=0.5,则人眼闭合;
否则,对于部分边缘情况下的人脸,所得的人眼区域二值图并不是完整的,会影响到人眼状态识别,考虑到局部阈值可以得到较好的二值化效果图,这里,从RGB图中分割出左眼区域根据,根据Otsu法设定局部阈值将人眼RGB图二值化,重新计算人眼黑块的中心高度h与分割高度H的比值r2,再做如下判断:
r2>=0.5,则人眼睁开;r2<0.5,则人眼闭合。
本发明的优点与积极效果在于:
1.全面采集人脸样本,包括不同姿势、表情、面部细节、时间和光照、背景等条件下的人脸,使算法适用范围广,且对人脸没有任何条件限制。
2.二值化人脸图像时,采用新的自适应阈值调整方法。首先用Otsu法设定初始阈值二值化图像,计算该二值图中四个顶点的像素值之和k,以区分出背景与人脸区域的对比度,根据不同的k值设定不同的门限值th;再计算二值图中黑色象素占整幅图片的比率r,当r>th时,阈值要调整变小直到r<=th。该方法对不同条件下的人脸都达到了很好的效果。
3.在粗定位人眼时,打破了传统算法通过搜索对称黑块来定位人眼的局限性,根据人脸面部几何特征设计眼睛分类器,筛选出两只眼睛黑块,提高了算法的准确率和速率。
4.通过人脸对称轴来精确定位人眼,并提出采用嘴唇辅助定位对称轴的方法,将Fisher线性变换和肤色匹配结合起来定位嘴唇,缩小了检测范围,降低Fisher线性变换的复杂度。
5.在进行人眼状态识别时,传统算法都是在精度足够高的图像中检测虹膜或眼白来判断眼睛睁闭,本发明在人眼区域对比度较低的情况下,提出一种新的算法,通过比较眼睛黑块的中心高度占人眼区域分割高度的比值与阈值,来判断人眼状态,简单适用,降低了算法的复杂度。
6.本发明的思路为以后的进一步研究工作打下了基础,比如,嘴唇定位在疲劳检测系统中,除了根据眼睛状态来判断人的疲劳程度,还可以从嘴巴状态(如打呵欠)来进一步判断人的疲劳状况。
附图说明
图1是人眼定位及人眼状态识别算法框图;
图2是人眼定位算法流程图;
图3是人眼状态识别算法流程图。
具体实施方式
结合附图,本发明提出的人眼定位和人眼状态识别方法的框图如图1所示,具体实施步骤如下:
步骤一:人脸图像预处理;
步骤二:人眼粗定位;
步骤三:人眼精确定位;
步骤四:人眼状态识别。
其中步骤一的具体实施步骤为:
第一步,将定位后的人脸彩色图像灰度化;
摄像头采集到的是具有R、G、B分量的彩色图片,基于后续图像处理的需要,需将彩色图像转化为灰度图像。灰度图像中每个像素的颜色只具有从黑到白256个灰度等级,没有颜色,其转换格式如下:v=0.259R+0.587G+0.144B;式中v表示转换后的灰度值,R、G、B为图片的红、绿、蓝分量。
第二步,直方图均衡;
直方图均衡化使灰度图像的灰度级均匀地分布在[0,255]之间,可以有效地解决样本由于图片光照不均匀带来的干扰。
第三步,根据初始阈值二值化图像;
二值化指的是将灰度标尺归并为黑白两个等级的过程,可看作是对原扫描图像的映射变换过程,当像素灰度值小于一定阈值时,被映射成黑点。二值化阈值的选取对二值图象的效果以及识别率有着重大影响,如果阈值太低,图象会过于白,使得某些笔画断裂;如果阈值太高,图象会过于黑,使得字符笔画相连,不易区分,所以自适应地调整阈值是必须的。这里先采用Otsu法设定初始阈值,得到二值化图像。
第四步,调整阈值重新二值化图像。
由于样本的多样性,选用直方图均衡为预处理方法后,用Otsu法选取初始阈值得到的二值图像并不能满足后续人眼定位的要求。二值图片中黑色像素过多,面部器官几何特征消失,例如眼睛与眉毛、眼睛与背景、嘴巴与鼻子、嘴巴与背景相连,无法区分,导致后续工作无法进行或准确率很低。因此为了最大可能地使脸部清晰的呈现出眼睛黑块,必须调低初始阈值,重新二值化图像,使得二值化后图像眼睛黑块具有最佳的效果。
考虑到样本尺寸的不同,可以根据初始阈值二值化后黑色像素占整幅图片像素总数的比率r来调节阈值。虽然尺寸不同,但同类光照条件和面部特征下样本的r是相同的,得到最佳二值化效果时黑色像素占整幅图片像素总数的比率也是相同的。根据此思路,可以将样本依据光照条件大致分为几类,每一类都对应有一个最佳二值化效果时的门限值th。只需将阈值调低,直到二值化后的r小于或等于门限值th。
同时,当背景(这里背景包括人脸图片时的拍摄背景、光照条件、服饰颜色等)为黑色时,样本二值化后图片较黑;当背景较白时,样本二值化后相对较白。黑白程度不同,不同r对应的门限值th也不相同。为了区分出背景与人脸的对比度,利用初始阈值二值化后图像的四个顶点之和k。k=0,即图片四个顶点上均为黑色像素,背景为全黑,必须设定一个大的th值做为门限值;k=1,既图片四个顶点中有三个顶点为黑色像素,背景大部分为黑色,设定一个相对k=0时较小的th做为门限值;依次类推k=2,k=3时,th依次减小。因此详细步骤如下:
计算初始二值图中四个顶点的像素值之和k(显然,k值范围为0到4)以及二值图中黑色象素占整幅图片的比率r。对每一个k值设定一个r的门限值th。当r>th时,阈值要调整变小,直至r<=th,阈值调小的步长为0.01。通过训练样本,寻找不同背景下即不同k值时的最佳r门限值。实验发现:k=0,取门限值th=0.35;k=1,取门限值th=0.3;k为其它,取门限值th=0.15。
其中步骤二的具体实施步骤为:
第一步,人脸样本库创建;
训练样本时,最重要的一点是必须尽量使学习的对象包括各种情况下的样本,否则用设计出来的分类器对黑块样本进行分类决策时会将眼睛黑块错误的判定为非眼睛黑块,导致定位眼睛失败。人脸样本可以从现有的人脸数据库中提取,也可以根据实际需要自己创建。目前国际国内常用的有三种人脸库:
(1)Yale人脸库
美国耶鲁大学,包含15个人,每人11幅图像,总共165幅图。每一幅图像的位置、表情、光照强度、光照方向都不同。人脸中的表情有:正常、悲哀、喜悦、惊讶等;光照方向有:左光、右光、中光。
(2)ORL(Olivetti Research Library)人脸库
该库由英国剑桥大学Olivetti Research Library于1992年4月到1994年4月期间采集得到,包含40个人,每人10幅,共400幅,分辨率为112×92,256个灰度级的人脸图像组成,每一个测试者都要求在不同时间,不同光照条件,不同面部表情,不同面部细节(戴眼镜与不戴眼镜)和不同脸部朝向下获取人脸图像。所有的图像都是在黑色均匀背景下摄取,并基本保持垂直和正面的姿态。该人脸库在人脸识别的早期经常被人们采用,但由于变化模式较少,多数系统的识别率均可以达到90%以上,因此进一步利用的价值已经不大。
(3)BioID人脸库
23个人的正面人脸图像,分辨率为384×286,1521个灰度灰度级。
现有的人脸数据库大多数据量较小或者图像变化情况比较单一,而本发明的初衷是尽可能的适用于所有情况下的人脸,因此需要尽可能多状况下的样本。此外,现有人脸数据库中提供面部图像的志愿者多为西方人,由于东西方人在面部特征上存在一定的差异,使用西方人的面部图像进行识别系统的研究可能会给我们所开发的技术在国内的应用带来不利因素。因此,本文的人脸数据库是根据实际需要自己创建。
本发明的人脸数据库是2005年9月6日至2006年4月12日期间采集得到,包含11个人,共930幅,分辨率为320*240,每一个测试者都要求在不同时间、光照条件、距离、面部表情、面部细节(戴眼镜与否、睁闭眼)和脸部朝向等条件下获取人脸图像。
第二步,根据人脸面部几何特征设计眼睛分类器;
通过训练上述样本,设计眼睛分类器如下:
(1)眼睛黑块几何中心在图片中的位置范围:横坐标:0.15a~0.85a(a为图片的宽度);纵坐标:26.384~b/2(b为图片的高度)
(2)眼睛黑块所含像素的个数:5~724
(3)眼睛黑块外接矩形宽高比:0.95~7.26
(4)眼睛黑块外接矩形面积:13~1100
(5)眼睛黑块下面的一定区域内不能有其他黑块
这一点是排除眉毛的主要判据,搜索区域的高度为眉毛下边缘到眼睛上边缘的距离,宽度以黑块质心为中心,4为半径,由于不同人脸的差异,导致眉毛下边缘到眼睛上边缘的距离有很大差异,为了防止距离过大,导致眼睛黑块往下搜索到鼻孔等黑块而被误排除,因此这个距离取min(眉毛下边缘到眼睛上边缘的学习距离19,b/2-黑块纵坐标)。
第三步,根据眼睛分类器粗定位人眼;
根据上述眼睛分类器,初步筛选出人眼黑块,并用黑框的最小外接矩形框标记出来作为人眼定位结果。实验发现,初步定位人眼后,一部分样本会漏检,分类器筛选出来的黑块数目为0,失败原因可以总结为以下两种情况:
1.二值化后两只眼睛黑块与眉毛,眼镜或是背景连在一起,眼睛黑块失去其几何特征,故不能将眼睛定位出来。需调低阈值再次进行二值化,把眼睛黑块分离出来。
2.一部分深色背景或衣领,以及晚上的样本图片,即人脸相对背景偏白,二值化阈值过低,二值化后背景黑色像素过多导致眼睛黑块消失,需调高阈值再进行二值化,使眼睛黑块显示出来。
因此对样本进一步调整阈值是必要的。考虑到人脸的差异和条件的多变性,阈值先调低3次,再调高4次,步长分别为0.08和0.04,达到了较好的效果,人眼定位算法流程图如图2所示。
其中步骤三的具体实施步骤为:
第一步,Fisher线性分类器设计;
Fisher线性分类器的作用是把d维空间的样本投影到一条直线上,形成一维空间,即将维数压缩到一维。这里是找到某个方向,使在这个方向的直线上,肤色和唇色样本的投影能分开得最好。学习步骤如下:
(1)由于归一化RGB颜色对光照和人脸运动和旋转具有不变性,因此本发明取颜色像素x=(r,g,b)T来区分唇色和肤色:
(2)计算人脸肤色和唇色样本均值:
(3)计算类内分布矩阵:
Sw=S1+S2
(4)计算fisher最佳投影方向:
(5)计算肤色和唇色样本投影的均值:
这里,i=1,表示人脸肤色;i=2,表示唇色。
(6)计算肤色和唇色的分割阈值:
式中,N1,N2分别为肤色和唇色样本的个数。
为了保证Fisher线性变换的顽健性,训练采用了在不同光照条件下的400帧图像,手动标定9812个唇色像素和11578个肤色像素,存入唇色和肤色训练集中。通过上面计算步骤进行Fisher线性变换训练学习,得到最佳投影方向w*。
第二步,根据Fisher线性分类器分割嘴唇;
为了减少背景等因素的干扰,先用HSV模型进行肤色匹配,分割出肤色和唇色区域。嘴唇一般位于图片的下三分之一区域,因此后面的步骤主要是针对这一区域进行分析。
利用Fisher线性变换分割嘴唇,步骤如下:
(1)用肤色匹配方法,去掉待检图像中的非肤色和非唇色区域,其中,0.010204=<H<=0.125为肤色范围,0.92857<=H<=0.99702为唇色范围。
(2)结合上述公式计算出的投影方向w*,计算肤色和唇色颜色像素的Fisher线性变换值;
(3)将投影点yn与上述公式计算出的y0作比较,便可将肤色和唇色区分出来;
if yn≥y0 then x∈唇色
if yn<y0 then x∈肤色
(4)用连通成分标示法,标记出唇色区域,由于背景等影响,还含有部分小面积的相似唇色点,提取最大的连通区域为嘴唇即可。
第三步,根据嘴唇定位人脸对称轴;
即使在人脸有偏转的情况下,两个嘴角的连线(或唇线)和两只眼睛中心的连线平行,即垂直于人脸对称轴,而且人脸对称轴过嘴巴中心。分析还发现,嘴唇中心与两只眼睛的中心连线构成等腰三角形。基于这些几何特征,我们可以从嘴唇入手来找人脸对称轴。
根据嘴唇分割的结果,搜索出两嘴角点,得出其横纵坐标(x1,y1)、(x2,y2),用两嘴角点横纵坐标差值的比值(即斜率)k=(y2-y1)/(x2-x1),表征嘴巴的方向。则人脸对称轴的斜率即为1/k,又知人脸对称轴上一点(即两嘴角连线中点(x0,y0)),这样人脸对称轴便能确定出来。
第四步,根据人脸对称轴进行人眼精确定位。
(1)由于头发、眉毛、眼镜、背景的影响,或者由于旋转角度过大,粗定位结果中只出现一只眼睛,这里通过对称轴定位出另一直眼睛。
因为对称轴已经存在一定的误差,而重复计算过程中,误差会更大,因此这里对只定位出一只眼睛的情况,不需要根据对称轴来确定另外一只人眼。前面已经提到,两只眼睛的中心连线与嘴角连线是平行的,即两条直线的斜率相等,而且嘴巴中心与两只眼睛的中心连线构成等腰三角形,则两只眼睛中心到嘴巴中心的距离应该相等。根据上述关系,可以列出一个二元二次方程组,求解方程,便能求出另外一只眼睛的中心坐标。直接计算出来的眼睛中心坐标有一定的误差,在误差范围允许范围内搜索眼睛黑块,并用相同大小的矩形框框出。
(2)由于眼镜框等因素的影响,定位结果中常常包括眼睛之外的区域,这里通过计算黑块几何中心到对称轴的距离,排除多余眼睛黑块。
设黑块几何中心的坐标为(m,n),人脸对称轴方程为
人眼到对称轴的距离d必在一定范围内,由此在误差允许范围内(允许有20%的容错度)去掉离对称轴太近或太远的黑块。
将人眼定位算法在window xp下仿真,用VC++编程实现,PC的基本配置为:CPU 2.4G,Memory512M,图像的分辨率为320*40,仿真数据如表1所示。
表1
其中步骤四的具体实施步骤为:
在光照条件好,并且像素精度足够高的情况下,采用边缘或饱和度的方法可以获得较好的效果。但是,在非均匀光照下,或者精度低造成眼部区域对比度较低时,边缘信息不稳定,有时可能找不到边缘,而饱和度受光照的影响也很大。模板匹配的计算量大,且易受环境因素(如光照条件)的影响。基于模式分类的人眼状态识别,常常是通过提取左右眼角、上下眼睑顶端及瞳孔中心等特征点的纹理特征值进行分类识别来判别眼睛状态,该类方法一般需要对图像进行缩放、旋转等复杂的归一化处理,运算量大,而且对像素精度也有一定要求。
对很多像素对比度较低的实际系统而言,目前的方法都难以做到准确度和速度的协调。而且,考虑到硬件系统的存储空间和运行速度,一般的像素精度是较低的。本发明在拍摄图像时,像素精度是320*240,而且包含的是整幅人脸图像以及背景等,所以眼部区域的对比度是很低的,常常会提取不到瞳孔或虹膜边缘,也提取不到眼白部分,使得判断错误。而且本发明还考虑到很多状况,如戴眼镜、旋转、偏转、夜晚不同光照效果等,会导致提取边缘或眼白失败,或者提取错误而导致错误的结论。
因此,本发明提出一种新的、行之有效的方法,兼顾速率和准确率。从上述人眼定位结果的二值图中,分割出左眼区域,发现睁眼和闭眼的二值化效果图是有着明显差异的,又考虑到人眼的差异性,这里讨论人眼黑块的中心高度h(人眼黑块质心到黑块上下边缘的距离)与分割高度
(即最小外接矩形的高度H)的比值,参见图3,具体步骤如下:
(1)根据上述人眼定位结果,从根据全局阈值二值化处理的图像中分割出人的左眼区域;
(2)求该二值图中黑色像素数占整幅图像像素总数的比值rat;
(3)从图中找出最大黑块,并标记出质心;
(4)过质心做垂线,求出垂线与最大黑块的最大及最小纵轴坐标,分别记为Ymax、Ymin,则h=Ymax-Ymin;
(5)求h与左眼分割图像高度H的比值r1=h/H;
(6)作如下判断:
rat>0.2413,且r1>0.5,则人眼睁开,跳至步骤(10);
rat>0.2413,且r1<=0.5,则人眼闭合,跳至步骤(10);
否则,跳至步骤(7);
(7)根据人眼定位结果,从RGB图中分割出左眼区域;
(8)根据Otsu法设定局部阈值将人眼RGB图二值化;
(9)重复步骤(3)、(4)、(5),(5)中的比值记为r2,作如下判断:
r2>=0.5,则人眼睁开,跳至步骤(10);
r2<0.5,则人眼闭合,跳至步骤(10);
否则,跳至步骤(10);
(10)结束。
人眼状态识别仿真结果统计表参见表2。
表2
机译: 人眼定位方法及装置和存储介质
机译: 人眼定位方法和装置
机译: 利用透明显示将图像与人眼定位融合的系统和方法