人脸图像发型检测方法与流程

文档序号:16357837发布日期:2018-12-22 07:59阅读:827来源:国知局
人脸图像发型检测方法与流程
本发明涉及生物特征识别领域,尤其是一种人脸图像发型检测方法。
背景技术
识别人脸图像的技术以非接触的方式完成识别过程,随着深度学习方法的应用,识别人脸图像的技术的识别率已经得到质的提升,目前识别人脸图像的技术率已经达到99%。头发区域的不规则性,以及图像的不同光照变化,为发型检测中的干扰因素。目前提取人脸图像中的发型特征相关研究较少,较早的研究使用头发颜色和位置建立高斯混合模型,再用图割算法最小化能量函数,得到头发区域。也有研究对头发区域进行建模,提取头发长度、颜色、分头点等特征,有较好的效果。技术实现要素:本发明的目的在于克服现有技术中存在的不足,提供一种人脸图像发型检测方法,能够在复杂背景下较好地获得人脸图像中头发区域,进而判断发型特征;本方法能有效地排除背景的干扰,检测快速准确。本发明采用的技术方案是:一种人脸图像发型检测方法,包括以下步骤:步骤s1,对人脸图像进行头部边缘特征提取;确定头部区域;步骤s1.1,首先进行人脸图像的灰度化;步骤s1.2,对灰度化后的人脸图像进行高斯滤波;步骤s1.3,用canny算子进行梯度幅值计算;步骤s1.4,进行梯度幅值的非极大值抑制;步骤s1.5,进行边缘连接,确定人脸图像中头部边缘像素点位置;步骤s2,在人脸图像中确定头发区域;确定头发区域与脸部区域的分割线;步骤s3,依据上述分割线进行发型特征判定。进一步地,步骤s2具体包括;步骤s2.1,在人脸图像的灰度化后的图像中头部区域,在图像顶端向下选取一个头发区域判断的起始点h;步骤s2.2,以h点为中心取3*3窗口,计算该窗口中的平均灰度值gm;步骤s2.3,依次计算h点相邻像素点为中心的3*3窗口平均灰度值g;步骤s2.4,如果|gm-g|<tk,灰度差阈值tk,则判定h点的该相邻像素点为头发区域,该相邻像素点标记为新的“头发像素点”h[m,n]点;步骤s2.5,以递归方式重复上述s2.1~s2.4步骤;步骤s2.6,若遇到该新的“头发像素点”h[m,n]同时为“头部边缘像素点”,则将该像素点标记为“头发边缘像素点”e[a,b];步骤s2.7,延x轴方向左至右扫描人脸图像,扫描列起始位置的确定:所有“头发像素点”h[m,n]和所有“头发边缘像素点”e[a,b]所在列中,取列值的较小值,作为起始列;步骤s2.8,对于从起始列开始扫描的每一列;如果该列中只有“头发像素点”,则将该列中“头发像素点”最下方的那个像素点标记为“头发边缘像素确认点”e′[m,n];如果该列中只有“头发边缘像素点”,则将该列中“头发边缘像素点”最下方的那个像素点标记为“头发边缘像素确认点”e′[m,n];如果该列中既有“头发像素点”,也有“头发边缘像素点”,则将该列中满足这两个标记的像素点中最下方的像素点标记为“头发边缘像素确认点”e′[m,n]。进一步地,步骤s3具体包括:步骤s3.1,截取人脸图像中头部区域的上部1/3部分;步骤s3.2,将截取的图像部分横向六等分,六等分时以“头发边缘像素确认点”e′[m,n]列号最小值开始,最大值结束;步骤s3.3,分别在六等分线上取“头发边缘像素确认点”:e′[m1,n1],e′[m2,n2]……e′[m6,n6]共六个点;判断分割线是比较平稳或者起伏较大;判断条件为:q值取人脸图像头部区域的行数的1/30-1/22;若满足以上条件,即e′[m1,n1]和其它每个点之间的行值差均小于阈值q,则认为分割线比较平稳,否则认为起伏较大;a.分割线比较平稳的情况;设定一个p值,计算六个点e′[m1,n1],e′[m2,n2]……e′[m6,n6]的行值平均值判定为“齐眉”发型;判定为“短发”发型;b.分割线起伏较大的情况;对于e′[m1,n1],e′[m2,n2]……e′[m6,n6]共六个点,*如果连续有4个点的行值连续变大,且差值均大于阈值q,则判定为“左遮挡”发型;*如果连续有4个点的行值连续变小,且差值均大于阈值q,则判定为“右遮挡”发型;*如果连续有3个点的行值连续变小,且差值均大于阈值q;有3个点的行值连续变大,且差值均大于阈值q,则判定为“中分”发型;除上述情况,归为无法判断的情况。本发明的优点在于:本方法应用canny算子边缘检测和头发区域检测相结合方法,确定头发边缘,可以有效地排除背景的干扰;判定形状方法简单、计算量小,可是有效实现人脸图像中发型特征的准确判断。附图说明图1为本发明的计算h点为中心的窗口平均灰度值示意图。图2为本发明的标记头发边缘像素确认点示意图。图3为本发明的发型特征判断示意图。具体实施方式下面结合具体附图和实施例对本发明作进一步说明。本发明提出一种人脸图像发型检测方法,包括以下步骤:步骤s1,对人脸图像进行头部边缘特征提取;确定头部区域;图像边缘属于最基本的比较固定的特征,包含了图像的大部分信息。在此采用canny算子来提取人脸图像中的头部边缘;头部包括头发区域和脸部区域;步骤s1.1,首先进行人脸图像的灰度化;人脸图像按照以下公式(1)进行灰度化:gray[m,n]=0.299r[m,n]+0.587g[m,n]+0.114b[m,n](1)r代表红色,g代表绿色,b代表蓝色,m为像素点行号,n为像素点列号;步骤s1.2,对灰度化后的人脸图像进行高斯滤波;步骤s1.2.1计算高斯卷积核:在此采取16*16的方差值窗口进行高斯模糊,k[x,y]是方差值窗口中对应的点的权重值矩阵,即高斯卷积核;方差值窗口的横号x,列号y,由于采取16*16的方差值窗口,因此x=0,1,2……15;y=0,1,2……15;高斯半径σ越小,曲线越高越尖,模糊越小;σ越大,曲线越低越平缓,模糊程度越大;对于人脸图像选取σ为2;步骤s1.2.2,用高斯卷积核对灰度化后的人脸图像进行高斯卷积模糊;将上述16*16的方差值窗口在灰度化人脸图像中遍历,每个方差值窗口的中心点位置灰度值按下列公式(3)转换:gray[x,y]为转换前灰度值,gray′[x,y]为转换后灰度值;步骤s1.3,用canny算子进行梯度幅值计算;canny算子为:x方向梯度为:y方向梯度为:梯度幅值为:梯度方向为:在此将人脸图像的灰度值gray′[m,n]全部都转换为梯度幅值m[mm,n]。步骤s1.4,进行梯度幅值的非极大值抑制;梯度幅值越大的像素点,并非就是边缘点;非极大值抑制是边缘检测的重要步骤,目的是要寻找像素点的局部最大值,在相邻范围内将非极大值点所对应的灰度值置为0,以剔除掉一大部分非边缘的点。为了在当前梯度方向上找出局部最大值:a)0≤θ[m,n]<22.5°m[m,n-1]m[m,n]m[m,n+1]如上表所示,如m[m,n-1]和m[m,n+1]其中之一的值大于m[m,n],则m[m,n]所对应像素点的灰度值置为0;b)22.5°≤θ[m,n]<67.5°m[m-1,n+1]m[m,n]m[m+1,n-1]如上表所不,如m[m+1,n-1]和m[m-1,n+1]其中之一的值大于m[m,n],则m[m,n]所对应像素点的灰度值置为0;c)67.5°≤θ[m,n]<112.5°或者θ[m,n]≥157.5°m[m-1,n]m[m,n]m[m+1,n]如上表所示,如m[m-1,n]和m[m+1,n]其中之一的值大于m[m,n],则m[m,n]所对应像素点的灰度值置为0;d)112.5°≤θ[m,n]<157.5°如上表所示,如m[m-1,n-1]和m[m+1,n+1]其中之一的值大于m[m,n],则m[m,n]所对应像素点的灰度值置为0;步骤s1.5,进行边缘连接,确定人脸图像中头部边缘像素点位置;为了舍去少量的非边缘像素,既起到过滤非边缘的作用,又保留真正的图像边缘,采取基于双阈值的方法进行头部边缘的选取,并且同时实现头部边缘连接;a)m[m,n]<tl,则m[m,n]所对应像素点的灰度值置为0;b)m[m,n]>th,则m[m,n]所对应像素点的灰度值保留;c)tl≤m[m,n]≤th,如果m[m,n]所对应像素点的相邻像素点梯度幅值都大于tl,而且通过相邻像素点至少能连接到一个梯度幅值大于tl的像素点,则m[m,n]所对应像素点的灰度值保留;tl下阈值,取0.3,th上阈值,取0.9;至此确定了人脸图像中头部边缘像素点位置。头部边缘像素点一旦确认,则人脸图像中的头部区域就可以确定;接下来的步骤,将实现头部区域中划分头发区域和人脸区域;步骤s2,在人脸图像中确定头发区域;步骤s2.1,由于人脸图像中已经很好地确定了头部在人脸图像中的位置,在人脸图像的灰度化后的图像中头部区域,在图像顶端向下取图像高度1/5~1/10处,典型的如1/6处,取横向中点h,作为头发区域判断的起始点,标记为“头发像素点”;此步骤第一个“头发像素点”是按照经验标定的;步骤s2.2,以h点为中心取3*3窗口,计算该窗口中的平均灰度值gm;如图1所示;步骤s2.3,依次计算h点相邻像素点(如图1中h点相邻的h1、h2、h3、h4)为中心的3*3窗口平均灰度值g;步骤s2.4,如果|gm-g|<tk(取灰度差阈值tk为80-100),则判定h点的该相邻像素点为头发区域,该相邻像素点标记为新的“头发像素点”h[m,n]点;步骤s2.5,以递归方式重复上述s2.1~s2.4步骤;步骤s2.6,若遇到该新的“头发像素点”h[m,n]同时为“头部边缘像素点”,则将该像素点标记为“头发边缘像素点”e[a,b];步骤s2.7,如图2,延x轴方向左至右扫描人脸图像,扫描列起始位置的确定:所有“头发像素点”h[m,n]和所有“头发边缘像素点”e[a,b]所在列中,取列值的较小值,作为起始列;步骤s2.8,对于从起始列开始扫描的每一列;如果该列中只有“头发像素点”,则将该列中“头发像素点”最下方的那个像素点标记为“头发边缘像素确认点”e′[m,n];如果该列中只有“头发边缘像素点”,则将该列中“头发边缘像素点”最下方的那个像素点标记为“头发边缘像素确认点”e′[m,n];如果该列中既有“头发像素点”,也有“头发边缘像素点”,则将该列中满足这两个标记的像素点中最下方的像素点标记为“头发边缘像素确认点”e′[m,n];所有的“头发边缘像素确认点”就可以形成区分头发区域和人脸区域的分割线;步骤s3,发型特征判定;步骤s3.1,截取人脸图像中头部区域的上部1/3部分;步骤s3.2,将截取的图像部分横向六等分,如图3所示,六等分时以“头发边缘像素确认点”e′[m,n]列号最小值开始,最大值结束;步骤s3.3,分别在六等分线上取“头发边缘像素确认点”:e′[m1,n1],e′[m2,n2]……e′[m6,n6]共六个点;如图3所示;判断分割线是比较平稳或者起伏较大;判断条件为:q值取人脸图像头部区域的行数的1/30-1/22;若满足以上条件,即e′[m1,n1]和其它每个点之间的行值差均小于阈值q,则认为分割线比较平稳,否则认为起伏较大;a.分割线比较平稳的情况;设定一个p值,例如p值为所述截取的图像部分(头部区域的上部1/3部分)的行数的1/2;计算六个点e′[m1,n1],e′[m2,n2]……e′[m6,n6]的行值平均值即分割线变化幅度小,而且总体在截取的图像部分中靠下,判定为“齐眉”发型;即分割线变化幅度小,而且总体在截取的图像部分中靠上,判定为“短发”发型;b.分割线起伏较大的情况;对于e′[m1,n1],e′[m2,n2]……e′[m6,n6]共六个点,*如果连续有4个点的行值连续变大,且差值均大于阈值q,则判定为“左遮挡”发型;*如果连续有4个点的行值连续变小,且差值均大于阈值q,则判定为“右遮挡”发型;*如果连续有3个点的行值连续变小,且差值均大于阈值q;有3个点的行值连续变大,且差值均大于阈值q,则判定为“中分”发型;除上述情况,归为无法判断的情况。最后所应说明的是,以上具体实施方式仅用以说明本发明的技术方案而非限制,尽管参照实例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1