人脸关键点检测方法和人脸关键点检测装置与流程

文档序号:15589114发布日期:2018-10-02 18:44阅读:234来源:国知局

本发明涉及人脸检测技术领域,特别涉及一种人脸关键点检测方法和一种人脸关键点检测装置。



背景技术:

近年来,生物识别技术的出现,能够有效的保障人们的财产安全、人身安全、隐私安全以及社会秩序的稳定,生物识别包括声音识别、手掌识别、指纹识别、人脸识别等,而其中的人脸识别技术是生物识别的一个较新的研究方向,和其它的识别技术相比较,人脸识别有着非接触性、非强制性和并行性的优点,已经广泛应用在银行、企业、安防、手机、电子商务等领域。

目前,人脸识别方面比较成熟的是二维人脸识别,在特定条件下能够满足人们的需求,但是,实际的外界环境时刻在变化,人脸本身也丰富多样,二维人脸识别往往受到光照、姿态和表情的影响,这些因素都可能导致识别失败或者错误识别。

为了克服上面的问题,近几年好多人开始研究三维人脸识别,三维人脸比二维人脸有着更加丰富的信息,即增加了深度信息,如果能够在这些信息中提取到一些表征人脸的唯一特征,有望打破二维人脸识别的瓶颈。考虑到识别速度,直接用整个三维人脸去做匹配不太现实,而在人脸上找到一些能够表征人脸整体和局部特征的关键点,利用关键点构造一些人脸的唯一特征,能够有效的提高人脸识别的效率,因此,关键点检测是人脸识别过程中重要的一步,检测关键点的个数影响识别的速度,检测关键点的精度影响人脸识别的识别率。

目前已有一些三维人脸关键点检测方法,例如,相关技术中通过判断人脸上每一点的凹凸性,从而得到鼻尖点,利用鼻尖点构造出一些人脸特征来匹配识别,这种方法只用到一个关键点,提取的特征不够丰富,只能区分几十张人脸,在大数据情况下并不实用。再例如,还有的相关技术中,将si和一些曲率特征相结合,检测到人脸上14个关键点(左内外眼角、鼻跟点、右内外眼角、鼻根点、左鼻翼,右鼻翼,鼻隔点,左右嘴唇,上下嘴唇,颏前点),这种检测方法在噪声、缺失影响下,误差比较大,会直接影响人脸识别的识别率。此外,还有的相关技术中,利用一些手工标记关键点的训练集,得到每个关键点周围的一些平均特征,利用这些平均特征在输入人脸上寻找对应的关键点,因为这些平均特征没有唯一表征性,往往会导致关键点检测较大偏差,甚至完全不对应,更不利于之后的人脸识别。



技术实现要素:

本发明旨在至少解决现有技术中存在的技术问题之一,提出了一种人脸关键点检测方法和一种人脸关键点检测装置。

为了实现上述目的,本发明的第一方面,提供了一种人脸关键点检测方法,包括:

步骤s110、获取当前用户的人体深度图像,其中,所述人体深度图像包括人脸深度图像、身体深度图像和背景深度图像;

步骤s120、提取所述人体深度图像中的人脸深度图像;

步骤s130、根据所述人脸深度图像,生成初始三维人脸点云;

步骤s140、对所述初始三维人脸点云进行预处理,消除所述初始三维人脸点云中的噪点和/或空洞,并进行归一化处理,以获得中间三维人脸点云;

步骤s150、根据所述中间三维人脸点云,检测人脸鼻尖点;

步骤s160、根据所述人脸鼻尖点,将所述中间三维人脸点云进行姿态矫正,以获得目标三维人脸点云;

步骤s170、根据预设的巴塞尔人脸模型与所述目标三维人脸点云,建立优化模型,并根据所述优化模型生成拟合三维人脸图像;

步骤s180、根据所述拟合三维人脸图像,确定人脸关键点。

可选地,所述人体深度图像包括m×n个像素,其中,m表示像素列数,n表示像素行数,且m和n均为大于或等于1的正整数;

所述步骤s120包括:

设定深度阈值;

将所述人体深度图像中的深度值大于所述深度阈值的深度值设置为0,以去除所述背景深度图像;

分别判断每一行像素中像素值不为0的个数,并记录为c1,c2,…,cn;

判断c1,c2,…,cn中像素值不为0的个数的最小值,并提取最小值所在的行数,生成目标行;

根据所述人体深度图像,将所述目标行以下的深度值设置为0,以去除所述身体深度图像,获得所述人脸深度图像。

可选地,所述步骤s130包括:

根据下述关系式,根据所述人脸深度图像,生成初始三维人脸点云:

pz=double(i(i,j))/camera.scale;

px=(j-camera.cx)*pz/camera.fx;

py=(i-camera.cy)*pz/camera.fy;

其中,(i(i,j)为所述人脸深度图像中各像素点的深度值,px为点云x坐标,py为点云y坐标,pz为点云z坐标,double命令是为了转换i(i,j)的类型,i为人脸深度图像的行数,j为人脸深度图像的列数,camera.fx、camera.fy为摄像头焦距,camera.cx、camera.cy为摄像头主点,camera.scale为摄像头平移参数。

可选地,所述初始三维人脸点云的初始点集为{p1,p2,…,pn},所述初始点集的质心为p0;

所述步骤s140包括:

采用高斯平滑滤波去除所述初始三维人脸点云中的噪点;

采用双三次插值的方法填补所述初始三维人脸点云中的空洞;

将所述初始点集平移到原点,以得到平移之后的目标点集{p1-p0,p2-p0,…,pn-p0};

根据所述目标点集和下述关系式,计算所述初始三维人脸点云的大小:

根据所述目标点集和下述关系式,获得中间三维人脸点云s0:

可选地,所述步骤s150包括:

根据贪婪投影网格化方法,对所述s0进行网格化,得到面片信息;其中,对于s0上任意一点si,设与si相关的面有f1,f2,…,fm,计算每个面的法向量,然后对所有的法向量求平均并单位化,将此单位向量作为si的法向量;

将所述中间三维人脸点云上包含在以si为中心,以预设的r为半径的点作为si的邻域点,计算该邻域点的质心,记为mi,并连接mi和si,以构成向量

计算在si的法向量上的投影大小di;

根据所述di确定人脸鼻尖点。

可选地,所述根据所述di确定人脸鼻尖点的步骤包括:

计算所述中间三维人脸点云上所有点的d值,构成标量集{d1,d2,…,dn},并提取所述标量集中大于0所对应的点形成第一次筛选结果集合;

根据所述第一次筛选结果集合,取到原点的距离在预设的阈值t以内的点,形成第二次筛选结果集合;

根据所述第二次筛选结果集合,取d值最大的点作为最终的鼻尖点。

可选地,所述步骤s160包括:

对所述鼻尖点的邻域点进行主成分分析,以得到三个相互垂直的方向;

利用三个相互垂直的方向计算旋转矩阵,完成姿态矫正,获得目标三维人脸点云。

可选地,在所述步骤s170中:

所述巴塞尔人脸模型满足下述关系式:

所述优化模型满足:

其中,f为巴塞尔人脸模型,为平均人脸,为身份系数,为表情系数,sinput为所述目标三维人脸点云,icp{f,sinput}为计算f和sinput的最小匹配误差,argmin{icp{f,sinput}}为求f和sinput的最小匹配误差最小的时候的取值;

根据所述优化模型,拟合三维人脸图像。

可选地,所述步骤s180包括:

预先标定所述巴塞尔人脸模型f中的人脸68个关键点;

分别确定拟合的所述三维人脸图像中距离所述巴塞尔人脸模型f中的68个关键点的最近点,生成最近点集合,所述最近点集合形成所述人脸关键点。

本发明的第二方面,提供了一种人脸关键点检测装置,包括:

获取模块,用于获取当前用户的人体深度图像,其中,所述人体深度图像包括人脸深度图像、身体深度图像和背景深度图像;

提取模块,用于提取所述人体深度图像中的人脸深度图像;

生成模块,用于根据所述人脸深度图像,生成初始三维人脸点云;

预处理模块,用于对所述初始三维人脸点云进行预处理,消除所述初始三维人脸点云中的噪点和/或空洞,并进行归一化处理,以获得中间三维人脸点云;

检测模块,用于根据所述中间三维人脸点云,检测人脸鼻尖点;

姿态矫正模块,用于根据所述人脸鼻尖点,将所述中间三维人脸点云进行姿态矫正,以获得目标三维人脸点云;

优化模块,用于根据预设的巴塞尔人脸模型与所述目标三维人脸点云,建立优化模型,并根据所述优化模型生成拟合三维人脸图像;

确定模块,用于根据所述拟合三维人脸图像,确定人脸关键点。

本发明的人脸关键点检测方法和装置。在初始三维人脸点云被预处理后,根据获得的所述中间三维人脸点云,得到点周围的凹凸性,并通过筛选最终得到人脸鼻尖点位置,可以提高精确度。此外,通过所建立的优化模型,拟合出最优的三维人脸,进一步能够得到精准的人脸关键点的位置。

附图说明

附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明,但并不构成对本发明的限制。在附图中:

图1为本发明一实施例中人脸关键点检测方法的流程图;

图2为本发明一实施例中获取的人脸深度图像;

图3为对图2中所示的人脸深度图像生成的初始三维人脸点云;

图4为本发明一实施例中第一次筛选结果的示意图;

图5为本发明一实施例中第二次筛选结果的示意图;

图6为本发明一实施例中第三次筛选结果的示意图;

图7为本发明一实施例中姿态矫正前的姿态示意图;

图8为图7中进行姿态矫正后的示意图;

图9为本发明一实施例中人脸关键点检测装置的结构示意图。

附图标记说明

100:人脸关键点检测装置;

110:获取模块;

120:提取模块;

130:生成模块;

140:预处理模块;

150:检测模块;

160:姿态矫正模块;

170:优化模块;

180:确定模块。

具体实施方式

以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。

如图1所示,本发明的第一方面,涉及一种人脸关键点检测方法s100,包括:

s110、获取当前用户的人体深度图像,其中,所述人体深度图像包括人脸深度图像、身体深度图像和背景深度图像。

s120、提取所述人体深度图像中的人脸深度图像。

s130、根据所述人脸深度图像,生成初始三维人脸点云。

s140、对所述初始三维人脸点云进行预处理,消除所述初始三维人脸点云中的噪点和/或空洞,并进行归一化处理,以获得中间三维人脸点云。

s150、根据所述中间三维人脸点云,检测人脸鼻尖点。

s160、根据所述人脸鼻尖点,将所述中间三维人脸点云进行姿态矫正,以获得目标三维人脸点云。

s170、根据预设的巴塞尔人脸模型与所述目标三维人脸点云,建立优化模型,并根据所述优化模型生成拟合三维人脸图像。

s180、根据所述拟合三维人脸图像,确定人脸关键点。

本实施例中的人脸关键点检测方法s100,在初始三维人脸点云被预处理后,根据获得的所述中间三维人脸点云,得到点周围的凹凸性,并通过筛选最终得到人脸鼻尖点位置,可以提高精确度。此外,通过所建立的优化模型,拟合出最优的三维人脸,进一步能够得到精准的人脸关键点的位置。

可选地,所述人体深度图像包括m×n个像素,其中,m表示像素列数,n表示像素行数,且m和n均为大于或等于1的正整数;

所述步骤s120包括:

设定深度阈值;

将所述人体深度图像中的深度值大于所述深度阈值的深度值设置为0,以去除所述背景深度图像;

分别判断每一行像素中像素值不为0的个数,并记录为c1,c2,…,cn;

判断c1,c2,…,cn中像素值不为0的个数的最小值,并提取最小值所在的行数,生成目标行;

根据所述人体深度图像,将所述目标行以下的深度值设置为0,以去除所述身体深度图像,获得所述人脸深度图像。

本实施例中的人脸关键点检测方法s100,对所述人体深度图像中的背景深度图像以及身体深度图像进行去除,这是因为,背景深度图像以及身体深度图像对于后续的人脸关键点检测为干扰信息,因此,在关键点检测之前,需要将背景深度图像以及身体深度图像去除,从而得到仅仅包括人脸的人脸深度图像,因此,能够进一步得到精准的人脸关键点的位置。

可选地,所述步骤s130包括:

根据下述关系式,根据所述人脸深度图像(如图2所示),生成初始三维人脸点云(如图3所示):

pz=double(i(i,j))/camera.scale;

px=(j-camera.cx)*pz/camera.fx;

py=(i-camera.cy)*pz/camera.fy;

其中,其中,(i(i,j)为所述人脸深度图像中各像素点的深度值,px为点云x坐标,py为点云y坐标,pz为点云z坐标,double命令是为了转换i(i,j)的类型,i为人脸深度图像的行数,j为人脸深度图像的列数,camera.fx、camera.fy为摄像头焦距,camera.cx、camera.cy为摄像头主点,camera.scale为摄像头平移参数。

需要说明的是,上述所提及的摄像头的相关参数,例如摄像头焦距,摄像头主点,摄像头平移参数中,所提及的摄像头,为获取当前用户的人体深度图像的摄像机。

可选地,所述初始三维人脸点云的初始点集为{p1,p2,…,pn},所述初始点集的质心为p0;

所述步骤s140包括:

采用高斯平滑滤波去除所述初始三维人脸点云中的噪点;

采用双三次插值的方法填补所述初始三维人脸点云中的空洞;

将所述初始点集平移到原点,以得到平移之后的目标点集{p1-p0,p2-p0,…,pn-p0};

根据所述目标点集和下述关系式,计算所述初始三维人脸点云的大小:

根据所述目标点集和下述关系式,获得中间三维人脸点云s0:

可选地,所述步骤s150包括:

根据贪婪投影网格化方法,对所述s0(其为预处理阶段得到的点云人脸)进行网格化,得到面片信息;其中,对于s0上任意一点si,设与si相关的面有f1,f2,…,fm(面的个数跟点密度有关系),计算每个面的法向量,然后对所有的法向量求平均并单位化,将此单位向量作为si的法向量;

将所述中间三维人脸点云上包含在以si为中心,以预设的r为半径的点作为si的邻域点,计算该邻域点的质心,记为mi,并连接mi和si,以构成向量

计算在si的法向量上的投影大小di,作为si的一个特征,di的值越大,si的邻域点所在的曲面越凸,而一般情况下,人脸的鼻尖点所在的邻域曲面属于脸上最凸的部分,所以,可以根据所述di确定人脸鼻尖点。

可选地,为了更加精确的定位鼻尖点,通过三次筛选得到最终的鼻尖点位置:

计算所述中间三维人脸点云上所有点的d值,构成标量集{d1,d2,…,dn},并提取所述标量集中大于0所对应的点形成第一次筛选结果集合,如图4所示;

根据所述第一次筛选结果集合,取到原点的距离在预设的阈值t以内的点,形成第二次筛选结果集合,如图5所示;

根据所述第二次筛选结果集合,取d值最大的点作为最终的鼻尖点,如图6所示。

可选地,所述步骤s160包括:

对所述鼻尖点的邻域点进行主成分分析,以得到三个相互垂直的方向;

利用三个相互垂直的方向计算旋转矩阵,完成姿态矫正,获得目标三维人脸点云,如图7和图8所示。

可选地,在所述步骤s170中:

所述巴塞尔人脸模型满足下述关系式:

所述优化模型满足:

其中,f为巴塞尔人脸模型,为平均人脸,为身份系数,为表情系数,sinput为所述目标三维人脸点云,icp{f,sinput}为计算f和sinput的最小匹配误差,argmin{icp{f,sinput}}为求f和sinput的最小匹配误差最小的时候的取值;

根据所述优化模型,拟合三维人脸图像。

可选地,所述步骤s180包括:

预先标定所述巴塞尔人脸模型f中的人脸68个关键点;

分别确定拟合的所述三维人脸图像中距离所述巴塞尔人脸模型f中的68个关键点的最近点,生成最近点集合,所述最近点集合形成所述人脸关键点。

本发明的人脸关键点检测方法,首先,在鼻尖点检测部分通过计算点云人脸上每一点的d值,得到点周围的凹凸性,并通过三次筛选得到鼻尖点位置,和已有的方法相比较,精确度大大提高。其次,本发明结合巴塞尔人脸模型,可以检测到点云人脸上68个关键点,也就是说能够提取到更丰富的信息,对人脸的表征性更强。此外,本发明构造的优化模型,通过不断的迭代减小拟合误差,理论上有着更高的精确度。最后,对于输入的任意姿态和表情的人脸图像,本发明是拟合出它的对应三维人脸,然后在输入人脸上找距离三维人脸上68个关键点最近的点作为检测到的关键点,具有一定的抗姿态和抗表情特性。

本发明的第二方面,如图9所示,提供了一种人脸关键点检测装置100,包括:

获取模块110,用于获取当前用户的人体深度图像,其中,所述人体深度图像包括人脸深度图像、身体深度图像和背景深度图像;

提取模块120,用于提取所述人体深度图像中的人脸深度图像;

生成模块130,用于根据所述人脸深度图像,生成初始三维人脸点云;

预处理模块140,用于对所述初始三维人脸点云进行预处理,消除所述初始三维人脸点云中的噪点和/或空洞,并进行归一化处理,以获得中间三维人脸点云;

检测模块150,用于根据所述中间三维人脸点云,检测人脸鼻尖点;

姿态矫正模块160,用于根据所述人脸鼻尖点,将所述中间三维人脸点云进行姿态矫正,以获得目标三维人脸点云;

优化模块170,用于根据预设的巴塞尔人脸模型与所述目标三维人脸点云,建立优化模型,并根据所述优化模型生成拟合三维人脸图像;

确定模块180,用于根据所述拟合三维人脸图像,确定人脸关键点。

本实施例中的人脸关键点检测装置100,在初始三维人脸点云被预处理后,根据获得的所述中间三维人脸点云,得到点周围的凹凸性,并通过筛选最终得到人脸鼻尖点位置,可以提高精确度。此外,通过所建立的优化模型,拟合出最优的三维人脸,进一步能够得到精准的人脸关键点的位置。

可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。

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