一种人脸轮廓提取方法与流程

文档序号:15387283发布日期:2018-09-08 00:43阅读:463来源:国知局

本发明涉及图像处理的技术领域,尤其是指一种人脸轮廓提取方法。



背景技术:

在人脸图像的相关应用中,经常需要根据输入的人脸图像,自动定位出脸部的关键特征点,如眼睛、鼻尖、嘴角点以及人脸的轮廓。现有的方法可以精确地定位眼睛、鼻尖和嘴角等特征明显的位置,而位于脸颊以及下巴的人脸轮廓则具有挑战性。对于目前大部分基于特征点的人脸对齐方法只是在人脸边缘设置几个特征点,难以提取出人脸轮廓线的弯曲的形状细节。但是这些细节特征在很多计算机视觉应用中非常重要,例如人脸识别、表情识别和三维人脸重构等。提高人脸轮廓的精确度对于数字图像处理和计算机视觉研究领域具有重要的意义和价值,但是目前提取出像素级别精确的连续人脸轮廓曲线是一个非常挑战的问题。

人脸轮廓检测的较早期一些方法是简单地使用一条抛物线拟合人脸的下巴区域,但是这种方法过于简单,只能用于下巴区域,而且一条抛物线无法表现出人脸轮廓的弯曲特征。kass等[m.kass,a.witkin,andd.terzopoulos,“snakes:activecontourmodels,”ijcv,vol.1,no.4,pp.321–331,1988.]提出的主动轮廓模型,可以用来描述目标轮廓曲线,主要应用于基于形状的目标分割。一些研究者[v.perlibakas,“automaticaldetectionoffacefeaturesandexactfacecontour,”patternrecognitionletters,vol.24,no.16,pp.2977–2985,2003.]将这种方法应用在人脸领域提取人脸轮廓线。主动轮廓模型对于其中的参数较为敏感,并且会因为初始化位置的不同而收敛到不同的局部最优解,而得到不理想的结果。所以主动轮廓法通常需要不断调整参数以及准确的初始化,而这在自然环境下很难做到。同时主动轮廓模型通过迭代将曲线从初始化的位置向目标轮廓拟合,而这个过程通常很容易受到噪音干扰,以至于经常在中途或者局部最优停止。

人脸分割也是一种可以提取人脸轮廓的方法,例如wang等[b.wang,x.chang,andc.liu,“skindetectionandsegmentationofhumanfaceincolorimages,”internationaljournalofintelligentengineeringandsystems,vol.4,no.1,pp.10–17,2011.]提出的皮肤检测和人脸分割方法,通常这类方法通常是将图像分为人脸区域和非人脸区域,如此两部分之间的边界就可以作为人脸轮廓。但是这些方法对于人脸边界的处理比较粗糙,以至于边界曲线过于曲折而且不贴合人脸的实际轮廓,同时经常将靠近脸部的一部分脖子区域和上部的头发部分囊括到人脸的区域中,而无法得到良好的人脸轮廓曲线。

人脸对齐的方法则是在人脸照片上寻找预先定义好的人脸关键点,比如眼睛、鼻尖、嘴角点、眉毛以及人脸各部分轮廓点,是一种基于有监督学习的策略。近年来,级联形状回归模型在关键特征点定位问题上有着不错的表现,例如kazemi等[v.kazemiandj.sullivan,“onemillisecondfacealignmentwithanensembleofregressiontrees,”incvpr,2014,pp.1867–1874.]使用回归模型,直接学习从人脸图像到人脸形状模型额映射函数,简单高效,在实验室场景和自然场景中都获得了不错的实验结果。人脸对齐的方法大大提升了人脸关键点定位的鲁棒性。但是在人脸轮廓上关键点数目稀少,而且由于真实情况下的复杂情景,会出现偏内或者偏外的情况。所以这样稀疏的几个点,难以表现出不同人的脸部轮廓线各不相同的特征。

以上的几种方法或过于受参数和初始化的限制无法鲁棒在自然图片上正常运行,或能找到人脸轮廓的大致位置无法准描述人脸轮廓的弯曲特征。在目前的日益爆发的各种视觉应用中,需要能够鲁棒、快速得获取高精度的人脸轮廓的方法,为上层的例如人脸识别,人脸表情识别,3d人脸重建等应用提供关键的轮廓信息。



技术实现要素:

本发明的目的在于克服现有技术的缺陷和不足,提出了一种人脸轮廓提取方法,在任意输入一张人脸图像,能够迅速找到精确到像素级别的完整连续人脸轮廓曲线。

为实现上述目的,本发明所提供的技术方案为:一种人脸轮廓提取方法,包括以下步骤:

1)人脸图像预处理

输入一张图像之后,使用人脸检测的算法提取出其中人脸的区域,并通过关键特征点定位算法找到人脸轮廓的大致区域;

2)局部正方形区域采样

在沿着人脸轮廓的大致区域采样生成一系列稠密的正方形,将整个人脸轮廓区域包含其中;

3)局部轮廓曲线提取

在每个局部正方形区域中,都提取一条抛物线引导基于梯度信息的局部轮廓曲线,构成局部轮廓曲线组成的局部结果集合;

4)全局轮廓曲线融合

通过基于pca的全局融合算法,将稠密冗余的局部轮廓曲线融合成为一条全局轮廓曲线结果,得到完整的人脸轮廓线。

在步骤1)中,所述的通过关键特征点定位算法找到人脸轮廓的大致区域,对初始化位置有鲁棒性,具体如下:

使用人脸检测算法提取人脸在图片中所在的区域,得到人脸区域的包围框,同时获取这张图片中人脸的位置以及尺度的大小信息;然后使用人脸对齐算法得到脸部轮廓上的几个粗糙的关键点作为初始化,连成一条表示人脸轮廓区域的初始化曲线;

在步骤2)中,所述的在沿着人脸轮廓的大致区域采样生成一系列稠密的正方形,将整个人脸轮廓区域包含其中,具体如下:

步骤1)中已经得到表征人脸轮廓区域的一条初始化曲线,沿着这条曲线将整个人脸轮廓区域划分为多个重叠的正方形区域,且这些正方形区域的中心点位于初始化曲线上,正方形区域的大小设置为人脸检测算法提取的人脸包围框大小的预设倍率,这些重叠的正方形区域要覆盖全部的人脸轮廓区域,正方形区域的方向设置为当前中心点的初始化曲线的切线方向,得到的局部轮廓曲线结果总是从正方形区域的顶部开始,到正方形底部结束,初始化曲线位于真实人脸轮廓的附近,这些重叠的正方形区域就覆盖住整个真实的人脸轮廓;另外,在此采用密集采样人脸轮廓区域的方法能够得到大量重叠冗余的局部轮廓曲线结果,满足在步骤4)全局轮廓曲线提取步骤中交叉验证的需要;

在步骤3)中,所述的在每个局部正方形区域中,都提取一条抛物线引导基于梯度信息的局部轮廓曲线,构成局部轮廓曲线组成的局部结果集合,具体如下:

步骤2)中得到大量重叠的正方形区域,在每个正方形区域中都包含一段真实的人脸轮廓曲线,而且每一块正方形区域的方向,即任意一个正方形边的垂直方向,均与初始化曲线的方向一致;在这一步骤中根据以下方法得到抛物线引导基于梯度信息的局部轮廓曲线:

每一块正方形的方向均与初始化曲线的方向一致,则局部以这个正方形区域的边作为直角坐标系单独看这块正方形区域,局部的人脸轮廓线c一定是从正方形区域的顶部开始,到正方形区域的底部结束;这个正方形区域是n×n的像素矩阵,那么局部轮廓曲线c表示为n个来自不同行的像素集合:

c=<p1,p2,...,pi,...,pn>

其中,c是局部轮廓曲线,pi=(i,j)是这个局部轮廓曲线c上的第i个点,而且这个点的位置是在这个正方形区域的第i行、第j列,其中i和j的范围都是[1,n];p1是第一个点,pn是最后一个点;对于局部人脸轮廓线上相邻的两个点pi和pi+1,要求其相邻两列数差不大于1,确保像素之间的平滑性;

抛物线引导基于梯度信息的局部轮廓曲线通过下面能量函数确定所在位置:

其中,是优化得到最优的局部轮廓曲线,g(c)表示局部轮廓曲线c的梯度值,而s(c)表示局部轮廓曲线c的曲率,α值是调节这条局部轮廓曲线c的平滑程度;上面的能量函数难以直接求解,因此使用动态规划的方法来求解这个问题,同时没有直接求解整条局部轮廓曲线的平滑度s(c),而是利用贪心算法引导结果更像一条抛物线;c*(i,j)是使用动态规划算法得到的第i行的局部轮廓曲线,那么它一定来自于之前的{c*(i-1,j-1),c*(i-1,j),c*(i-1,j+1)}三条轮廓线中的一个,使用di-1,j+δ(i,j)表示点(i,j)到抛物线c*(i-1,j+δ),δ={-1,0,1}的距离,使用表示偏离抛物线的误差,动态规划算法的过程如下表示:

其中,m表示动态规划的矩阵,m(i-1,j+δ)是矩阵上一行对应点的能量,g(i,j)表示这个点处的梯度值,i是行数,j是列数,ei-1,j+δ(i,j)表示偏离抛物线的误差,α值是控制平滑度的参数,不同α值对局部轮廓曲线c结果有影响,需经过实验取一个合适的值。

在步骤4)中,所述的通过基于pca的全局融合算法,将稠密冗余的局部轮廓曲线融合成为一条全局轮廓曲线结果,得到完整的人脸轮廓线,具体如下:

通过步骤2)在人脸轮廓区域上通过密集采样得到正方形区域集合,然后通过步骤3)在每个正方形区域中得到一条局部轮廓曲线;现在就得到由多段重叠的局部轮廓曲线的集合;令表示第k条局部轮廓曲线上的第i个点;m表示局部人脸轮廓线的数目,n表示每条局部人脸轮廓线的长度;如此所有的局部轮廓曲线通过一系列的点表示因为步骤2)对人脸轮廓区域的密集采样,p点的集合大量冗余,不仅包含真是人脸轮廓上的点,而且还有失败的局部轮廓曲线上的点,在全局轮廓曲线融合中找出一条单像素宽度精确的全局轮廓曲线;

人脸轮廓曲线通常包含大量的弯曲细节特征,无法通过简单的参数化形式表示;因此需要使用一系列点q={ql}l∈[1,l]的队列来表示最终的全局轮廓曲线结果,其中l为全局轮廓曲线的长度,同时q中的点都来在于p以保持全局轮廓曲线的弯曲细节特征;

在最开始队列q是空的,很显然q0就是第一条局部轮廓曲线上的第一个点p0,然后每次通过pca算法来寻找下一个点;

为了计算点处的pca方向,首先计算点对于p中所以其他点的协方差矩阵如下:

其中,就是点的协方差矩阵,表示第k条局部轮廓曲线上的第i个点,表示其他的点,并且i'∈[1,n]\{i},k'∈[1,m]\{k},m表示局部人脸轮廓线的数目,n表示每条局部人脸轮廓线的长度;函数θ(·)表示r是两点之间的距离,h是一个固定阈值;当点之间的距离越远,则之间的影响越小;所以pca并不是作用在整个点的集合上的,使用一个阈值h来加速计算;通过这步计算就得到协方差矩阵的特征值和对应最大特征值的特征向量就是所需要的点处的主方向

当队列q中最后一个点为ql,对应p中的点为为了获取下一个点ql+1,先使用k近邻算法找到离点ql最近的k个点在此将k设为7,如果所有k个点都是属于第k条局部轮廓曲线,则沿着这条局部轮廓曲线往下走,如果有不属于第k条局部轮廓曲线的点,那么需要找到点处最符合pca方向的一个点,通过下面公式计算:

其中,是两个方向间的内积,点处最符合pca方向的一个点为通过求极值得到的这个过程不断迭代,直到没有点再加入队列q中,而q所有点构成的曲线就是所需的全局轮廓曲线。

本发明与现有技术相比,具有如下优点与有益效果:

1、本发明在初始人脸轮廓区域上采用了密集采样的方法,不同采样所得的正方形区域包含不同的图像信息,会找到不同的局部轮廓曲线结果。在其中一个区域无法贴合真实人脸轮廓曲线,也许在另外一个区域会得到准确的结果。这种交叉验证的机制,保证了算法的准确性和鲁棒性。

2、本发明采用抛物线引导的局部轮廓曲线的方式,生成局部的人脸轮廓线,充分利用真实人脸轮廓线是符合抛物线状的特点,巧妙地利用动态规划算法找到布局最优解。抛物线引导的方法既加速了算法的速度,又使得全局轮廓曲线符合真实情况。

3、本发明采用从局部到全局三个步骤获取高质量的连续人脸曲线,计算过程简单,准确率较高,具有像素级别的精度,且不易受到图片光照变化的干扰。

4、在实际应用中可以全自动,也可以用户交互,对人脸轮廓提取的初始化的位置鲁棒。

附图说明

图1是人脸轮廓提取方法流程图。

图2是人脸轮廓提取方法各个步骤结果示例图。

图3是预处理和采样正方形区域示例图。

图4是不同α值局部轮廓曲线变化的对比图。

图5是(a)(b)抛物线引导和(c)(d)没有抛物线引导的对比图。

图6是本发明和ert等方法的比较的示例图。

图7是本发明(g)(h)(i)与acm方法(d)(e)(f)在不同初始化位置的结果对比图。

具体实施方式

下面结合具体实施例对本发明作进一步说明。

如图1和图2所示,本实施例所提供的人脸轮廓提取方法,包括以下步骤:

1)人脸图像预处理:输入一张图像之后,使用人脸检测的算法提取出其中人脸的区域,并通过关键特征点定位算法找到人脸轮廓的大致区域;

2)局部正方形区域采样,在沿着人脸轮廓的大致区域采样生成一系列稠密的正方形,将整个人脸轮廓区域包含其中;

3)局部轮廓曲线提取,在每个局部正方形区域中,都提取一条抛物线引导基于梯度信息的局部轮廓曲线,构成局部轮廓曲线组成的局部结果集合;

4)全局轮廓曲线融合,通过基于pca的全局融合算法,将稠密冗余的局部轮廓曲线融合成为一条全局轮廓曲线结果,得到完整的人脸轮廓线。

在步骤1)中,输入一张图像,首先对其进行预处理,提取图像中人脸部分所在的区域,并找到人脸轮廓的大致区域,对人脸轮廓提取算法进行初始化。

首先使用人脸检测算法提取人脸在图片中所在的区域,得到人脸区域的包围框,同时可以确定这张图片中人脸尺度的大小。然后使用任意一种人脸对齐算法为本发明的人脸轮廓提取算法提供脸部轮廓上的几个粗糙的关键点作为初始化,连成一条表示人脸轮廓区域的初始化曲线。

在本发明中,使用了kazemi等[v.kazemiandj.sullivan,“onemillisecondfacealignmentwithanensembleofregressiontrees,”incvpr,2014,pp.1867–1874.]提出的ensemblesofregressiontrees(ert)算法,本发明的人脸轮廓提取算法并不要求初始化具有较高的准确性,只需要指示出人脸轮廓所在的大致区域。为了加速整个算法,本发明使用ert算法检测出5个人脸轮廓附近的关键特征点。他们的位置分别在眼睛两边、嘴巴两边以及下巴尖的区域。图3(a)显示了5个关键特征点位置的一个例子,由图可见本发明仅仅使用了非常粗糙的初始化位置的输入。

之后通过曲线拟合算法将这5个点构成一条初始化曲线,表示这个人脸轮廓区域,并为下一步的局部正方形区域采样提供正方形中心位置和方向信息。关键点只有5个非常稀疏,为了保证这条拟合曲线通过所有的关键点而不会偏离人脸区域,本发明使用了catmull-rom算法。图3(b)显示了使用catmull-rom曲线将5个关键特征点拟合成为一个初始化曲线。

在步骤2)中,所述的局部正方形区域采样的方法,具体如下:

在上面步骤1)中已经得到表征人脸轮廓区域的一条初始化曲线,沿着这条曲线我们可以将整个人脸轮廓区域划分为很多较小重叠的正方形区域。这些正方形区域的中心点位于初始化曲线上,正方形区域的大小设置为人脸检测算法提取的人脸包围框大小的一定倍率(范围在0~0.5之间),本发明设置为人脸包围框大小的0.2倍。正方形区域的方向设置为当前中心点的初始化曲线的切线方向,以便于得到的局部轮廓曲线结果总是从正方形区域的顶部开始,到正方形底部结束。

初始化曲线位于真实人脸轮廓的附近,这些重叠的正方形区域就可以覆盖住整个真实的人脸轮廓。为了结果的准确度,采用密集采样人脸轮廓区域的方法,本发明默认值设置为70个正方形区域。这样可以得到大量重叠冗余的局部轮廓曲线结果,满足在步骤4)全局轮廓曲线提取步骤中得到高精度的全局轮廓曲线结果的需要。图3(c)显示了密集采样的正方形区域。

在步骤3)中,所述的局部轮廓曲线提取的方法,具体如下:

上一步骤中得到了大量重叠的正方形区域,在每个正方形区域中都包含了一段真实的人脸轮廓曲线,而且每一块正方形区域的方向(任意一个正方形边的垂直方向)均与初始化曲线的方向一致。在这步中将要找出抛物线引导基于梯度信息的局部轮廓曲线。

每一块正方形的方向均与初始化曲线的方向一致,则局部以这个正方形区域的边作为直角坐标系单独看这块正方形区域,局部的人脸轮廓线c一定是从正方形区域的顶部开始,到正方形区域的底部结束。这条曲线不仅拥有最大的梯度,同时还拥有尽可能地像抛物线一样平滑。这个正方形区域是n×n的像素矩阵,那么局部轮廓曲线c可以表示为n个来自不同行的像素集合:

c=<p1,p2,...,pi,...,pn>

其中pi=(i,j)是这个局部轮廓曲线c上的第i个点,而且这个点的位置是在这个正方形区域的第i行、第j列,其中i和j的范围都是[1,n]。p1是第一个点,pn是第一个点。对于局部人脸轮廓线上相邻的两个点pi和pi+1,本发明要求其相邻两列数差不大于1,确保像素之间的平滑性。

局部轮廓曲线拥有很大的梯度值,并且有像抛物线一样的平滑性。本发明中的抛物线引导基于梯度信息的局部轮廓曲线通过下面能量函数确定所在位置:

其中是优化得到最优的局部轮廓曲线,g(c)表示局部轮廓曲线c的梯度值,而s(c)表示局部轮廓曲线c的曲率,α值是调节这条局部轮廓曲线c的平滑程度。上面的能量函数难以直接求解,本发明使用动态规划的方法来求解这个问题。同时为了便利本发明并没有求解整条局部轮廓曲线的平滑度s(c),而是利用了贪心算法引导结果更像一条抛物线。

c*(i,j)是使用动态规划算法得到的第i行的局部轮廓曲线,那么它一定来自于之前的{c*(i-1,j-1),c*(i-1,j),c*(i-1,j+1)}三条轮廓线中的一个,使用di-1,j+δ(i,j)表示点(i,j)到抛物线c*(i-1,j+δ),δ={-1,0,1}的距离,使用表示偏离抛物线的误差。动态规划算法的过程如下表示:

其中m表示动态规划的矩阵,m(i-1,j+δ)是矩阵上一行对应点的能量,g(i,j)表示这个点处的梯度值,i是行数,j是列数。ei-1,j+δ(i,j)表示偏离抛物线的误差。α值是控制平滑度的参数,图4显示了不同α值对局部轮廓曲线c结果的影响。本发明中将平滑参数的α值设为0.7。图5显示了抛物线引导和没有抛物线引导的单纯基于梯度的动态规划算法得到的不同结果。

在步骤4)中,所述的全局轮廓曲线融合的方法,具体如下:

之前的步骤2)在人脸轮廓区域上通过密集采样得到了正方形区域集合,然后通过步骤3)在每个正方形区域中得到了一条局部轮廓曲线。现在就得到了由很多较短且重叠的局部轮廓曲线的集合。令表示第k条局部轮廓曲线上的第i个点。m表示局部人脸轮廓线的数目,n表示每条局部人脸轮廓线的长度。如此所有的局部轮廓曲线可以通过一系列的点表示步骤2)对人脸轮廓区域的密集采样,p点的集合大量冗余,不仅包含真是人脸轮廓上的点,而且还有失败的局部轮廓曲线上的点。在全局轮廓曲线融合中本发明找出一条单像素宽度精确的全局轮廓曲线。

人脸轮廓曲线通常包含大量的弯曲细节特征,无法通过简单的参数化形式表示。因此需要使用一系列点q={ql}l∈[1,l]的队列来表示最终的全局轮廓曲线结果,其中l为全局轮廓曲线的长度。同时q中的点都来在于p以保持全局轮廓曲线的弯曲细节特征。

在最开始队列q是空的,很显然q0就是第一条局部轮廓曲线上的第一个点p0,然后每次通过pca算法来寻找下一个点;

为了计算点处的pca方向,本发明首先计算了点对于p中所以其他点的协方差矩阵如下:

其中就是点的协方差矩阵。表示第k条局部轮廓曲线上的第i个点,表示其他的点,并且i'∈[1,n]\{i},k'∈[1,m]\{k},m表示局部人脸轮廓线的数目,n表示每条局部人脸轮廓线的长度。函数θ(·)表示r是两点之间的距离,h是一个固定阈值。当点之间的距离越远,则之间的影响越小。所以pca并不是作用在整个点的集合上的,本发明使用一个阈值h来加速计算。然后就获得了协方差矩阵的特征值和对应最大特征值的特征向量就是所需要的点处的主方向

当队列q中最后一个点为ql,对应p中的点为为了获取下一个点ql+1,先使用k近邻算法找到离点ql最近的k个点本发明中将k设为7。如果所有k个点都是属于第k条局部轮廓曲线,则沿着这条局部轮廓曲线往下走,如果有不属于第k条局部轮廓曲线的点,那么需要找到点处最符合pca方向的一个点,通过下面公式计算:

其中是两个方向间的内积。点处最符合pca方向的一个点为通过求极值得到的这个过程不断迭代,直到没有点再加入队列q中,而q所有点构成的曲线就是所需的全局轮廓曲线。

综上所述,本发明方法具有精度高,速度快,在实际应用中可以全自动,也可以用户交互,最后得到的人脸轮廓曲线具有像素级别的精度,并且符合人脸轮廓抛物线状的特点。本发明与已有方法进行了比较实验,结果如图6表明本发明具有优越的性能。同时本发明的方法对人脸轮廓提取的初始化的位置鲁棒,在原有初始化位置进行一些改变并不影响结果,如图7所示使用了3个初始化位置,本发明的结果依然精确,而对比的acm的方法没有得到正确的结果。

以上所述实施例只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。

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