一种人脸皮肤皱纹自动识别和皱纹严重程度自动分级的方法与流程

文档序号:18398444发布日期:2019-08-09 23:38阅读:1318来源:国知局
一种人脸皮肤皱纹自动识别和皱纹严重程度自动分级的方法与流程

本发明采用的方法涉及人脸识别、图像分割、皱纹识别、特征提取与皱纹自动分级,涉及人工智能的计算机视觉领域和生物统计学领域。



背景技术:

人类可以通过肉眼自动去寻找人脸或是人脸图像中的皱纹区域,并对观察到的皱纹进行主观的严重程度评价。但受主观情感的影响和专业知识的限制,普通人对皱纹严重程度的评价往往不够准确;专业医师的评价往往较为合理,但受时间、地点等环境因素的限制,邀请专业医师进行评判并不现实可行。因此,亟需一种方便而准确的皱纹严重程度自动化评估方法,可以让普通群众快速便捷的得到合理的评估结果,同时也可辅助皮肤相关的研究或研发。



技术实现要素:

针对以上难题,我们发明了一种人脸皮肤皱纹自动识别和皱纹严重程度自动分级的方法,该方法对人脸图像的进行人脸识别、图像分割、皱纹识别和特征提取,再结合机器学习(machinelearning)的方法对皱纹进行分级预测。本发明方法可以基于一张眼部或额头皱纹区域清晰无遮挡的人脸照片,自动对图像中人脸皮肤皱纹严重程度进行分级。自动分级结果的准确度经训练外数据的验证,可达0.85左右。

本发明采用的技术方案包括以下几个步骤:

1.输入清晰的人脸图像,分割人脸图像中的皱纹区域;

2.使用步骤1.1中分割的人脸皱纹区域图像进行皱纹识别,并计算皱纹纹理相关物理值(以下称纹理值);

3.在分割的人脸皱纹区域图像中,提取皱纹相关特征和其他非皱纹相关特征;

4.利用人脸皱纹区域图像的特征进行皱纹严重程度自动分级。

所述的步骤1具体包括:

1.1.使用dlib工具包(python调用)进行人脸识别并检测68个面部特征点;

1.2.将面部特征点按面部轮廓、左侧眉毛、右侧眉毛、鼻子、左侧眼睛、右侧眼睛和嘴巴进行分类;

1.3.计算左侧眉毛特征点的平均水平间距与右侧眉毛特征点的平均水平间距的差值,根据图像的尺寸设置该差值的阈值,比较差值与阈值判断人脸侧向;

1.4.根据人脸侧向选择需要分割的人脸皱纹区域:

侧向朝前时可选择分割额头区域、眼袋区域;

侧向朝右时可选择分割额头区域、左侧眼角区域、左侧眼袋区域;

侧向朝左时可选择分割额头区域、右侧眼角区域、右侧眼袋区域;

1.5.结合五官特征点的位置、图像尺寸和人脸侧向,分割皱纹区域:

侧向朝前时,额头区域的大小随图像尺寸变化,中心位置根据眉毛特征点计算;眼袋区域大小随图像尺寸变化,中心位置根据眼睛特征点计算;

侧向朝右时,额头区域的大小随图像尺寸变化,比朝前时稍小,中心位置根据眉毛特征点计算;左侧眼角区域的大小随图像尺寸变化,中心位置根据眼睛特征点和眉毛特征点计算;

侧向朝左时,额头区域的大小随图像尺寸变化,比朝前时稍小,中心位置根据眉毛特征点计算;左侧眼角区域的大小随图像尺寸变化,中心位置根据眼睛特征点和眉毛特征点计算。

所述的步骤2具体包括:

2.1.首先将整张待分析皱纹图像归一化处理,利用毛发区域的局部均值相对较小的特点设置阈值剔除毛发的影响,再利用皮肤皱纹区域局部方差比平滑区域较大的特点,设置局部方差的阈值进行筛选,从而得到整幅图像皱纹区域的掩码,最后对皱纹区域归一化处理得到归一化的皱纹图像,后续处理都基于该归一化皱纹图像;

2.2.利用高斯滤波器构建x和y两个方向的梯度算子,使用梯度算子计算归一化图像在x和y方向上的微分,利用微分结果计算图像中每个像素点处的二倍角正余弦,再利用反正切函数计算每个像素处的纹理方向值,扩展到整幅图像上,则得到皱纹纹理方向图像,它反映了在每个像素点处的纹理方向;

2.3.对图像中每个相同大小的区块,利用区块的方向值旋转区块,使得区块纹理呈现竖直状态,使用求和的方式,将所有竖直方向上的信息投影到同一水平方向上,从而使整个区块上的纹理信息投影为一个类正弦波形,计算该类正弦波形的频率作为该区块的皱纹频率参考值,设置类正弦波形的最大波长阈值和最小波长阈值对频率参考值进行筛选作为最终的区块皱纹频率,扩展到整幅图像上每个区块的皱纹频率和整幅图像的皱纹频率平均值;

2.4.使用对局部皱纹纹理的频率和方向都有分析作用的gaborfilter对图像纹理进行分析。首先根据整幅图像的皱纹平均频率计算gaborfilter的尺寸,以该尺寸矩形的中心为原点,计算得到相位角为0°的gaborfilter,当对当前像素进行滤波时,根据该像素点的纹理方向计算相位角,将gaborfilter旋转相位角后,再对当前像素点对应的滤波区域进行滤波,以得到当前像素点的纹理相关物理值,扩展到整幅图像上即可得到皮肤皱纹纹理值图像;

2.5.对皮肤皱纹纹理值图像设置适当的阈值(纹理值<-2.5)进行分割得到初始的皱纹区域,计算初始皱纹区域的8连通区域面积,筛选面积最大的前15%的皱纹作为皱纹的识别结果。

所述的步骤3具体包括:

3.1.根据皮肤皱纹纹理值图像和识别的皱纹,提取皱纹深度、长度、面积和密度等皱纹相关特征:

1)根据皱纹识别的结果,统计每条皱纹或每个局部区域的相关特征作为皱纹特征分布;

2)根据获取的皱纹特征分布,计算单个分布的不同特征值;

3)根据获取的皱纹特征分布,计算皱纹特征分布之间的结合特征值;

3.2.根据原始皮肤皱纹图像,直接获取非皱纹相关特征:

1)计算原始皮肤皱纹图像的局部二值图像(localbinarypattern)的uniform模式,统计lbp的概率密度直方图;

2)采用mahotas工具包(python调用)计算原始皮肤皱纹图像的haralicktexturefeatures,它包含了灰度共生矩阵(glcm)的13个相关特征值。

每张图像收集至少200个不同的皱纹特征。

所述的步骤4具体包括:

将提取的图像特征输入至多分类随机森林模型中,使用包外数据(outofbaggingdata)评估此预测模型的准确度。重复此过程30次,得到平均预测准确度为0.854,中位预测准确度为0.875。

本发明的有益效果:

本发明通过运用人脸识别、图像特征提取、机器学习的方法,提出了一种人脸皮肤皱纹自动识别和皱纹严重程度自动分级的方法,自动分级结果的准确度为0.85左右;

本发明可对任意一张皱纹区域清晰无遮挡的图像进行分析,获取人脸皱纹的严重程度评判结果,可广泛应用于医美、皮肤衰老研究等领域,也可方便快捷地为普通人群提供合理的皮肤皱纹分级分析。

附图说明

图1是本发明的人脸侧向朝前示例图。

图2是本发明的人脸侧向朝前时,皱纹区域分割示例图。

图3是本发明的人脸侧向朝左示例图。

图4是本发明的人脸侧向朝左时,皱纹区域分割示例图。

图5是本发明的人脸侧向朝右示例图。

图6是本发明的人脸侧向朝右时,皱纹区域分割示例图。

图7是一张人脸眼袋区域皮肤皱纹图。

图8是本发明的方法针对该眼袋区域皮肤皱纹图获取的局部纹理方向示例图。

图9是本发明的方法针对该眼袋区域皮肤皱纹图获取的人脸皱纹纹理示例图。

图10是本发明的方法针对该眼袋区域皮肤皱纹图获取的人脸皱纹识别结果示例图。

图11是本发明的人工分级轻度皱纹示例图。

图12是本发明的人工分级中度皱纹示例图。

图13是本发明的人工分级重度皱纹示例图。

图14是本发明的设计流程图。

具体实施方式

人脸皮肤图像的捕获与接受条件:

本发明中,实验使用的人脸皮肤图像是使用visia皮肤检测仪拍照获取,但本发明提出的方法也同样适用于通过其他的数字摄像机或者光学仪器采集的人脸皮肤图像。人脸图像应当清晰,拍摄光照良好,眼袋、眼角和额头皱纹区域无阴影或头发的遮挡,此外图像不得经过滤镜或ps等处理。

人脸图像识别和人脸特征点分类:

本发明中,使用dlib工具包(python调用)对人脸图像进行检测识别,同时获取包含68个人脸特征点的集合,按照以下方式对人脸特征点进行划分:

特征点集合中0~16特征点为人脸轮廓特征点;

特征点集合中17~21特征点为左侧眉毛特征点;

特征点集合中22~26特征点为右侧眉毛特征点;

特征点集合中27~35特征点为鼻子特征点;

特征点集合中36~41特征点为左侧眼睛特征点;

特征点集合中42~47特征点为右侧眼睛特征点;

特征点集合中48~67特征点为嘴巴特征点。

人脸侧向判断:

本发明中,计算左侧眉毛特征点的平均间距与右侧眉毛的平均间距的差值,同时根据图像的尺寸对差值设定适当的阈值(本实验图像尺寸为3456x5184,设置阈值50):

当差值大于设定的阈值时,人脸侧向朝右(示例图见图5);

当差值小于设定阈值的相反数时,人脸侧向朝左(示例图见图3);

当差值绝对值小于设定阈值时,人脸侧向朝前(示例图见图1)。

分割皱纹区域:

1.当人脸侧向朝右时,可选择分割额头区域、左侧眼角区域、左侧眼袋区域(示例图见图6),相同尺寸的不同图像同一类皱纹区域面积固定,由图像尺寸决定,分布位置由以下方式决定:

1.1.额头区域的中心由左侧眉毛特征点中点和右侧眉毛特征点中点决定:

x(forehead)=[x(left_brow_midp)+x(right_brow_leftp)]/2

y(forehead)=min{y(left_brow),y(right_brow)}-a

其中x(forehead)和y(forehead)分别是额头区域的中心x坐标和y坐标,x(left_brow_midp)是左侧眉毛特征点中点的x坐标,x(right_brow_leftp)是右侧眉毛特征点最左点的x坐标,y(left_brow)是所有左侧眉毛特征点的y坐标,y(right_brow)}是所有右侧眉毛特征点的y坐标,a是随图像尺寸变化的值;

1.2.左侧眼角区域的中心由左侧眼睛特征点的左眼角点和左侧眉毛特征点的左眉毛点决定:

x(left_canthus)=x(left_brow_leftp)-b

y(left_canthus)=y(left_eye_leftp)

其中x(left_canthus)和y(left_canthus)分别是左侧眼角区域中心的x坐标和y坐标,x(left_brow_leftp)是左侧眉毛特征点的最左点的x坐标,b是随图像尺寸变化的值,y(left_eye_leftp)是左侧眼睛特征点的最左点的y坐标;

1.3.左侧眼袋区域的中心由左侧眼睛特征点决定:

x(left_pouch)=mean{x(left_eye)}

y(left_pouch)=max{y(left_eye)}+c

其中x(left_pouch)和y(left_pouch)分别是左侧眼袋区域中心的x坐标和y坐标,x(left_eye)和y(left_eye)分别是所有左侧眼睛特征点的x坐标和y坐标,c是随图像尺寸变化的值。

2.当人脸侧向朝左时,可选择分割额头区域、右侧眼角区域、右侧眼袋区域(示例图见图4),相同尺寸的不同图像同一皱纹区域面积固定,由图像尺寸决定,分布位置由以下方式决定:

2.1.额头区域的中心由左侧眉毛特征点中点和右侧眉毛特征点中点决定:

x(forehead)=[x(right_brow_midp)-x(left_brow_rightp)]/2

y(forehead)=min{y(left_brow),y(right_brow)}-a

其中x(forehead)和y(forehead)分别是额头区域的中心x坐标和y坐标,x(right_brow_midp)是右侧眉毛特征点中点的x坐标,x(left_brow_rightp)是左侧眉毛特征点最右点的x坐标,y(left_brow)是所有左侧眉毛特征点的y坐标,y(right_brow)}是所有右侧眉毛特征点的y坐标,a是随图像尺寸变化的值;

2.2.右侧眼角区域的中心由右侧眼睛特征点的右眼角点和右侧眉毛特征点的右眉毛点决定:

x(right_canthus)=x(right_brow_rightp)+b

y(right_canthus)=y(right_eye_rightp)

其中x(right_canthus)和y(right_canthus)分别是右侧眼角区域中心的x坐标和y坐标,x(right_brow_rightp)是右侧眉毛特征点的最右点的x坐标,y(right_eye_rightp)是右侧眼睛特征点的最右点的y坐标,b是随图像尺寸变化的值;

2.3.右侧眼袋区域的中心由右侧眼睛特征点决定:

x(right_pouch)=mean{x(right_eye)}

y(right_pouch)=max{y(right_eye)}+c

其中x(right_pouch)和y(right_pouch)分别是右侧眼袋区域中心的x坐标和y坐标,x(right_eye)和y(right_eye)分别是所有右侧眼睛特征点的x坐标和y坐标,c是随图像尺寸变化的值。

3.当人脸侧向朝前时,可选择分割额头区域、左侧眼袋区域、右侧眼袋区域(示例图见图2),相同尺寸的不同图像同一皱纹区域面积固定,由图像尺寸决定,分布位置由以下方式决定:

3.1.额头区域的中心由左侧眉毛特征点中点和右侧眉毛特征点中点决定:

x(forehead)=[x(right_brow_midp)+x(left_brow_midp)]/2

y(forehead)=min{y(left_brow),y(right_brow)}-a

其中x(forehead)和y(forehead)分别是额头区域的中心x坐标和y坐标,x(left_brow_midp)是左侧眉毛特征点中点的x坐标,x(right_brow_midp)是右侧眉毛特征点中点的x坐标,y(left_brow)是所有左侧眉毛特征点的y坐标,y(right_brow)}是所有右侧眉毛特征点的y坐标,a是随图像尺寸变化的值;

3.2.左侧眼袋区域的中心由左侧眼睛特征点决定:

x(left_pouch)=mean{x(left_eye)}

y(left_pouch)=max{y(left_eye)}+c

其中x(left_pouch)和y(left_pouch)分别是左侧眼袋区域中心的x坐标和y坐标,x(left_eye)和y(left_eye)分别是所有左侧眼睛特征点的x坐标和y坐标,c是随图像尺寸变化的值;

3.3.右侧眼袋区域的中心由右侧眼睛特征点决定:

x(right_pouch)=mean{x(right_eye)}

y(right_pouch)=max{y(right_eye)}+c

其中x(right_pouch)和y(right_pouch)分别是右侧眼袋区域中心的x坐标和y坐标,x(right_eye)和y(right_eye)分别是所有右侧眼睛特征点的x坐标和y坐标,c是随图像尺寸变化的值。

归一化皱纹区域灰度值:

1.将图像由rgb三通道彩色图像转换为单通道灰度图像,使用整幅图像的平均值和标准差对图像进行归一化处理:

p(x,y)=[i(x,y)-mean(i)]/std(i)

其中i使输入图像的灰度图像,mean(i)是i的平均灰度值,std(i)是i的灰度值标准差,i(x,y)是i位于每个像素处的灰度值,p(x,y)是归一化图像中对应像素点的灰度值;

2.计算归一化处理后的图像的局部标准差和平均值,设置标准差阈值和平均值阈值,利用毛发区域局部平均值较小的特点剔除掉毛发区域,再利用皱纹区域标准差较平滑皮肤区域大的特点筛选出大致的皱纹区域;

3.针对大致的皱纹区域计算平均值与标准差,再次归一化处理皱纹区域,得到最终的皱纹区域归一化图像。

计算皱纹纹理方向(示例图见图8,示例图原图见图7):

1.计算高斯滤波器在水平和竖直两个方向上的梯度作为梯度算子,利用梯度算子与预处理结果图像进行卷积,获得图像中每个在水平和竖直两个方向上的偏微分;

2.使用高斯滤波器对偏微分进行平滑滤波,以减小偏微分矩阵的噪声;

3.根据偏微分矩阵计算出每个点处纹理方向的二倍角正余弦:

sin2θ=2dx(u,v)dy(u,v)/[dx2(u,v)+dy2(u,v)]

cos2θ=[dx2(u,v)+dy2(u,v)]/[dx2(u,v)+dy2(u,v)]

其中sin2θ和cos2θ皱纹纹理方向角的二倍角正弦和二倍角余弦,dx(u,v)和dy(u,v)是位于点(u,v)的x方向和y方向上的微分;

4.通过二倍角正余弦计算出纹理方向的二倍角正切值,再利用反正切函数计算得到图像上每个像素点的皱纹纹理方向角。

计算皱纹频率:

1.将图像分为若干同样大小的区块,计算区块上的皱纹纹理方向平均值作为该区块的皱纹纹理方向,根据皱纹纹理方向旋转区块使得皱纹纹理呈竖直状态;

2.皱纹的纹理在三维空间内呈现出类正弦平面波的形状,使用将同一竖直方向上的灰度值累加的方式将三维空间内的类正弦平面波投射到同一平面上,形成和皱纹纹理形状相关的类正弦波形;

3.计算类正弦波形的波形总长(第一个波峰或波谷和最后一个波峰或波谷之间的像素数)和数量(波峰或波谷数),设置波形数量阈值,过滤掉波形数量小于阈值的区块,计算保留区块上的皱纹纹理平均波长λ(λ=波形总长/数量);

4.利用阈值分割的方法对λ进行筛选:λmin≤λ≤λmax,以获取合理的皱纹纹理波长,当波长过大或过小时,均设置皱纹纹理频率为0;

5.利用筛选后的皱纹纹理波长计算区块图像的皱纹纹理频率,从而估计出整幅图像上所有局部区域的皱纹纹理频率和整幅图像的皱纹纹理平均频率。

计算皱纹纹理值(示例图见图9):

gaborfilter滤波器是用于分析纹理的滤波器,与纹理频率与方向相互关联,使用该滤波器对图像进行滤波可以获取得到皱纹纹理值,具体包括以下步骤:

1.使用皱纹纹理平均频率计算gaborfilter的尺寸,使得gaborfilter可以尽可能包含一条皱纹纹理在法线方向上的所有信息;

2.计算最初始相位角为0°的gaborfilter:

gaborfilter=exp[-(x2+y2)/σ2]cos(2πfx)

其中exp为自然对数的底数,x和y表示gaborfilter内的每个离散点的横纵坐标,σ是gaussfilter的标准差,为gaborfilter大小的1/6,i表示虚数,f表示整幅图像的皱纹平均频率;

3.将gaborfilter按特定相位角步长(5°)进行旋转,直到旋转相位角度达到180°,存储每个旋转后的gaborfilter以方便滤波时直接调用;

4.根据gaborfilter的大小分割出图像的滤波边界,对边界内的每个像素进行滤波,具体滤波步骤如下:

4.1.以当前像素为中心,获取一个和gaborfilter同大小的滤波区域;

4.2.根据当前像素的纹理方向值,将小于0°的纹理方向值增加180°,将大于180°的纹理值减去180°,使得所有纹理方向值都映射到(0°,180°)的范围内;

4.3.根据当前像素的纹理方向值,获取对应相位角的gaborfilter;

4.4.将当前像素对应的滤波区域与相应的gaborfilter相乘并求和,所获值即为当前像素点的纹理值,再遍历滤波边界内所有像素点,则可获取原始皱纹图像的纹理值图像。

识别皱纹(示例图见图10):

所获的纹理值图像,皱纹的皮脊越凸或皮沟越凹纹理值绝对值越大。采用阈值分割的方法,设定皱纹纹理值最大值阈值条件(纹理值<-2.5)分割出皱纹的皮沟区域,再对分割出的皮沟区域筛选其中面积最大的前15%条皮沟,这些皮沟即是最终识别的皱纹。

获取皱纹相关特征分布:

选取皱纹的面积、密度、深度和长度作为特征提取的对象进行分析:

1.通过计算每条识别皱纹的像素数量作为每条识别皱纹的面积,统计每条识别皱纹的面积作为皱纹面积分布;

2.将皱纹图像分为若干区块,计算区块内皱纹面积与区块面积的比例作为该区域内的皱纹密度,统计每个区块的皱纹密度作为皱纹密度分布,同时统计每个区块的皱纹纹理值分布相关特征值信息作为局部皱纹深度相关分布;

3.将每条皱纹的纹理值作为深度分布,计算该条皱纹的若干深度特征值,统计所有皱纹的同一深度特征值作为皱纹深度相关分布;

4.提取每条识别皱纹的骨架,骨架的像素数量作为每条识别皱纹的长度,统计每条识别皱纹的长度作为皱纹长度分布。

提取皱纹特征:

根据整幅图像的皱纹相关特征分布,计算相应特征值用以表征图像:

1.根据皱纹相关特征分布,计算每个特征分布的相关特征值:

1.1.计算分布的最小值、最大值、平均值、10分位点、25分位点、50分位点、75分位点、90分位点等;

1.2.计算子分布的极差,如从最小值到最大值的分布极差,从10分位点到90分位点的子分布极差,从25分位点到75分位点的子分布极差;

1.3.计算子分布的平均绝对离差、标准差,如从最小值到最大值的分布平均绝对离差和标准差,从10分位点到90分位点的平均绝对离差和标准差;

1.4.计算分布的平方和及相关伸缩值;

1.5.计算分布的熵;

1.6.计算分布的统计直方图,计算落入每个直方图的概率密度平方和;

1.7.计算分布的三阶矩(偏度)、四阶矩(峰度);

2.根据皱纹相关特征分布,计算皱纹特征分布的结合特征值:

2.1.计算皱纹长度分布与皱纹深度特征值(如最大深度、平均深度等)分布之间的点积;

2.2.计算皱纹密度分布的密度特征值(如最大密度、50分位点密度)与该区域对应深度特征值(如最大深度、平均深度等)乘积;

2.3.计算皱纹密度分布的密度特征值分布与对应区域的深度特征值(如最大深度、平均深度等)分布的点积。

提取原始图像特征:

根据原始图像直接提取特征,不参考皱纹识别的结果。具体包括以下方案:

1.计算原始皱纹图像的局部二值图像(localbinarypattern)的uniform模式,计算局部二值图像的统计直方图,用以描述图像局部模式和像素排列规则;

2.使用mahotas工具包(python调用)计算原始皱纹图像的haralicktexturefeatures,它基于图像的灰度共生矩阵(glcm),用以描述图像灰度的方向、间隔、变化幅度等信息特征。

人脸皱纹严重程度人工分级:

人脸皱纹严重程度的人工分级分为三种程度,每种程度的分级标准具体包括以下:

1.轻度(mild,示例图见图11),满足如下任一标准:

1.1.皱纹完全不可见;

1.2.皱纹隐约可见;

1.3.可见皱纹非常浅,且可见皱纹只覆盖了局部区域(覆盖区域面积<50%);

2.中度(moderate,示例图见图12),满足如下任一标准:

2.1.部分皱纹可见且深度较浅;

2.2.皱纹较浅,可见皱纹覆盖面积较广(覆盖区域面积>50%);

3.重度(severe,示例图见图13),满足如下任一标准:

3.1.部分皱纹明显可见且深度较深;

3.2.皱纹较深,可见皱纹覆盖面积较广(覆盖区域面积>50%)。

皱纹严重程度分级:

使用多分类的随机森林方法,结合上述提取的图像特征和人工分级结果,训练所得的随机森林模型用于皱纹严重程度的自动分级。

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