一种基于单幅照片的三维人脸建模方法及系统与流程

文档序号:12472233阅读:618来源:国知局
一种基于单幅照片的三维人脸建模方法及系统与流程

本发明涉及计算机图形学和计算机视觉领域,具体涉及一种基于单幅照片的三维人脸建模方法及系统。



背景技术:

在计算机图形学和计算机视觉领域,三维人脸建模是最困难和最具挑战性的问题之一,同时,它也是包括在物理学、生理学以及心理学等不同领域的跨学科问题。

随着硬件计算能力和计算机图像学的飞速发展,人们已经可以用计算机和移动设备产生各种各样高质量的图像以及3D模型,计算机构造的虚拟人物对大家来说早已不陌生,当下移动设备也具有较强的三维图像处理能力,人们对三维建模的真实感、实时性和便利性的等要求也越来越高。自上世纪七十年代起,三维人脸建模就成为了计算机图形学和视觉领域的一个研究热点。在人类视觉系统中,人脸是最为复杂的对象之一,富含重要的心理与生理信息。三维人脸建模的发展可以为更为复杂的建模提供借鉴,同时对于类似的科学问题有着非常重要的促进意义。

除了科学研究意义外,三维人脸建模在虚拟现实、人脸识别、公共安全、电脑游戏、影视制作、表情动画、情感分析以及3D打印等领域具有巨大作用。它不仅可以用来制作虚拟现实环境中的各种虚拟人物及动画,还可以应用于可视电话、远程网络会议等多媒体的制作和传输;另外,它在人机交互等日益增长的信息通信技术领域也有着很好的发展前景。三维人脸模型还可以促进人脸识别和检索技术的进步,在安全领域有着重要作用。

由于计算机人脸建模有着上述非常广泛的应用价值,自从Parke在1972年开创这个领域以来,人脸建模和人脸动画成为了一个新的研究热点,越来越多的研究者努力尝试创造具有真实感的人脸模型和表情动画。但是由于人脸的生理结构非常复杂,而且人们对人脸的细节变化非常敏感,其中对头发进行模拟、对表情动作进行仿真、还有如何添加逼真纹理信息和进行光照处理等仍是一个难题。人类视觉系统非常精妙,天生具备识别人脸模型的能力,人眼可以准确快速地从一张照片中恢复出人脸三维形状信息,从而进行身份识别。如果计算机能够模拟人类的认知机制,从而实现基于单幅二维人脸照片的三维人脸建模,不但能够在一定程度上提高计算机对人脸数据信息的处理能力和理解能力,促进虚拟现实和人机交互技术的发展,而且能够进一步促进其他交叉学科的发展。

现有技术中,公开了以下几种三维建模技术:

(1)基于三维扫描仪等的三维人脸建模:主要指利用三维数字扫描仪对人脸进行扫描来获取人脸的三维信息,根据获取的三维数据在计算机中进行人脸模型的三维重建,该方法能够获得精确的人脸模型。

(2)基于多幅人脸照片的建模:指通过多幅多角度的人脸图像,如正面、左侧面、右侧面等图像来获取更多人脸的三维数据来进行人脸的三维建模。基于多幅人脸图像的建模能够更直观、完整地获得人脸的正面纹理信息、深度信息等,从而有利于建立起更加精确的三维人脸模型。

(3)基于单幅人脸照片的建模:基于单幅人脸图像的建模:一般是指通过采集单张人脸的图像进行数据的分析以及人脸的拟合与三维重建,其都是通过光流算法或网格重采样的算法进行形变模型的建立,再对其进行重建获得精确的人脸模型,具有真实感强,建模方便等特点。

现有技术的不足之处在于,(1)采用三维扫描仪等硬件设备通用性和灵活性较差,操作较为复杂,且其硬件设备的成本也较高,一般只适用于某些特殊的场合;(2)采用多幅人脸照片进行建模的方法在一定程度上增加了人工操作的步骤,降低了操作的灵活性;(3)基于单幅人脸照片进行建模需要的手动初始化繁琐,运算量特别大,人脸建模的速度慢,并且获得的人脸模型的真实感差。



技术实现要素:

本发明的目的是提供一种基于单幅照片的三维人脸建模方法及系统,以解决灵活性差,操作复杂,以及需要繁琐的手动初始化、运算量大、建模的速度慢、获得的人脸模型的真实感差的问题。

为了实现上述目的,本发明提供如下技术方案:

一种基于单幅照片的三维人脸建模方法,包括以下步骤:

获取人脸图像以及单幅人脸照片;

将所述人脸图像二维展开,并通过薄板样条变换对展开得到的纹理图像进行稠密点对应,获得中间图像;

通过对所述中间图像的主成分分析得到形变模型;

将所述形变模型的特征点与所述人脸照片的特征点对齐,并在对齐后的形变模型上垂直投影所述人脸照片的纹理,生成人脸模型。

上述三维人脸建模方法,通过薄板样条变换对展开得到的纹理图像进行稠密点对应包括以下步骤:

从所述纹理图像中确定一图像作为参考图像;

根据cpselect函数对所述纹理图像进行特征点标记;

通过映射函数将所述纹理图像的特征点与所述参考图像的特征点对齐;所述映射函数为:

其中,U为薄板样条基函数:U(r)=r2logr2;a1、ax、ay为系数,wi为权重,该函数还满足条件:

上述三维人脸建模方法,获得中间图像包括以下步骤:

通过逆映射函数计算所述纹理图像的特征点坐标;

将二维展开时标记的柱面坐标匹配至所述纹理图像相应的特征点坐标上;

根据匹配后的坐标关系将所述纹理图像变换为中间图像。

上述三维人脸建模方法,通过对所述中间图像的主成分分析得到形变模型包括以下步骤:

定义所述中间图像为形状向量S和纹理向量T,并据其计算获得平均人脸:其中m为人脸图像的个数;

求出对应的协方差矩阵,进行奇异值分解:

通过调用Matlab中的svd函数提取形状特征向量s1、s2……sk、……和纹理特征向量t1、t2……tk、……,获得形变模型;形变的原理为:其中,Ai为形状系数,Bi为纹理系数。

上述三维人脸建模方法,将所述形变模型的特征点与所述人脸照片的特征点对齐包括以下步骤:

选取所述形变模型的特征点,并根据所述人脸照片上对应的特征点估算两者间的仿射变换;

仿射变换的公式为:S″f=(logc+1)T+S'f,其中T∈R2t表示平移向量,c∈R表示正则形状系数,为新的子形状向量;

根据所述仿射变换的求解结果计算所述形变模型的形状系数

求代价函数在最优解时的值,其中形变模型的坐标为输入的二维图像坐标为Sinput(x,y),F为Frobanius范数;

上式是一个最优化问题,目的是使得变形后的三维人脸的正投影坐标与输入图像的坐标最接近,利用Matlab中的fminunc函数求解上式即可得到形状系数

根据所述形状系数对所述形变模型进行变换,得到人脸形状模型。

由代入公式对形变模型进行变换得到新的形状向量,这个形状向量就是与输入人脸一致的形状向量,如此获得单幅人脸照片对应的人脸形状模型。

上述三维人脸建模方法,所述人脸照片上的特征点的获取方式为:通过Face++的API接口参照所述形变模型的特征点,对所述人脸照片相应的特征点进行标记。

上述三维人脸建模方法,获取人脸图像包括以下步骤:

采集人脸图像并将其存储至人脸数据库;

从所述人脸数据库中调取所述人脸图像。

上述三维人脸建模方法,生成人脸模型后还包括以下步骤:

对所述人脸模型进行是否有纹理缺失的检测;

若有纹理缺失,则记录所述人脸模型边缘的纹理特征的坐标,并将其向人脸中心平移;在所述纹理特征上垂直投影所述人脸照片的纹理,并平移回记录的坐标处。

一种基于单幅照片的三维人脸建模系统,包括:

图像获取模块,用以获取人脸图像以及单幅人脸照片;

变换模块,用以将所述人脸图像二维展开,并通过薄板样条变换对展开得到的纹理图像进行稠密点对应,获得中间图像;

分析模块,用以通过对所述中间图像的主成分分析得到形变模型;

成型模块,用以将所述形变模型的特征点与所述人脸照片的特征点对齐,并在对齐后的形变模型上垂直投影所述人脸照片的纹理,生成人脸模型。

上述三维人脸建模系统,还包括Face++API接口,通过所述Face++API接口参照所述形变模型的特征点,对所述人脸照片相应的特征点进行标记。

在上述技术方案中,本发明提供的一种基于单幅照片的三维人脸建模方法,具有以下有益效果:

1)相对于三维扫描仪等硬件设备通用性和灵活性好,操作简单,且成本低,适用于大众;

2)相对于多幅人脸照片进行建模的方法简化了人工操作的步骤,以及降低了运算的时间;

3)相对于传统的单幅人脸照片进行建模的方法,仅需要简单的手动初始化,运算量小,人脸建模的速度快,并且获得的人脸模型的真实感强。

还提供一种基于单幅照片的三维人脸建模系统,具有以下有益效果:

1)生成的人脸模型具有很强的真实感,并且建模时间快,自动化程度高。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的基于单幅照片的三维人脸建模方法的流程示意图;

图2为本发明一优选实施例提供的进行稠密点对应的流程示意图;

图3为本发明一优选实施例提供的中间图像获取的流程示意图;

图4为本发明一优选实施例提供的形变模型获取的流程示意图;

图5为本发明一优选实施例提供的人脸形状模型获取的流程示意图;

图6为本发明一优选实施例提供的获取人脸图像的流程示意图;

图7为本发明一优选实施例提供的纹理缺失处理的流程示意图;

图8为本发明实施例提供的基于单幅照片的三维人脸建模系统的结构示意图;

图9为本发明一优选实施例提供的Face++API接口的结构示意图;

图10(A)-图10(C)分别为为本发明一优选实施例提供的参考图像、纹理图像以及稠密点对应后的纹理图像的示意图;

图11为本发明一优选实施例提供的平均人脸的示意图;

图12(A)-图12(B)为本发明一优选实施例提供的单幅人脸照片以及生成的人脸模型的示意图;

图13(A)-图13(B)为本发明一优选实施例提供的纹理缺失以及纹理缺失修复后的示意图。

具体实施方式

为了使本领域的技术人员更好地理解本发明的技术方案,下面将结合附图对本发明作进一步的详细介绍。

如图1所示,本发明实施例提供的一种基于单幅照片的三维人脸建模方法,包括以下步骤:

S101、获取人脸图像以及单幅人脸照片;

如图6所示,作为本实施例中优选的,本步骤中人脸图像的获取包括以下步骤:

S601、采集人脸图像并将其存储至人脸数据库;

S602、从所述人脸数据库中调取所述人脸图像。

具体的,可以采用精密的激光扫描仪直接获取三维人脸数据,也可以是利用照相或者摄像技术,对二维图像数据进行运算得到三维人脸数据,即立体视觉方法,并将该三维人脸图像存储至人脸数据库,也可是现有技术中的其他三维人脸图像获取方式;采集要求为:在自然表情、面部无饰物和环境光照的情况下仅需图像采集,保证图像质量,且尽量选择长相较为突出的人作为采集对象;从人脸数据库中筛选获取一定数量(本实施例中采用100个人脸图像,分布在年龄段16岁-49岁,50男、50女)的人脸图像作为成型的样本,在调取人脸图像的同时,导出相应选取的人脸图像的三维顶点信息和每个顶点对应的纹理信息,便于进行下一步的计算和处理。单幅人脸照片通过移动设备、照相设备等直接获取,照片要求为:正脸照,具有一定的图像分辨率,仅需一副照片。

在一些实施例中,所述人脸照片上的特征点的获取方式为:通过Face++的API接口参照所述形变模型的特征点,对所述人脸照片相应的特征点进行标记。

在一些实施例中,直接从三维人脸数据库中调取符合上述条件的人脸图像,三维人脸数据库包括但不限于,3D_RMA、University Rey Juan Carlos创建的GavabDB、MPI face database和BJUT-3D。

在一些实施例中,通过BJUT-3D调取人脸图像,所述BJUT-3D包括500个三维人脸图像,男、女各250个,从中调取符合采集要求的人脸图像。

在一些实施例中,所述人脸图像进行了预处理,预处理包括但不限于,消除光照条件影响、人脸表面光滑处理以及消除头发因素的影响。

S102、将所述人脸图像二维展开,并通过薄板样条变换对展开得到的纹理图像进行稠密点对应,获得中间图像;

具体的,二维展开是指将三维的人脸图像平铺到正面,并将离散化的柱面坐标(即三维坐标中深度方向的坐标值)做相应的标记,在相对应的平面坐标上也做标记,形成三维坐标中的对应关系;在此过程中,由于离散化过程会导致纹理缺失,可通过插值算法补齐缺失的部分。薄板样条变换为将图像表示成由特征点构成的特征点集,然后提出基于薄板样条(Thin-Plate Spline,TPS)弯曲能量的非刚性匹配能量函数,再采用迭代求解点集之间的匹配矩阵和映射函数。中间图像为三维图像,在稠密点对应后需将纹理图像转换为三维的人脸图像,从而完成三维的人脸图像的稠密点对应,使三维人脸图像建立稠密点对应关系更加简单,运算量也大幅减小。

如图2所示,进一步的,本步骤中稠密点对应包括以下步骤:

S201、从所述纹理图像中确定一图像作为参考图像;

人脸图像二维展开后,生成纹理图像,该纹理图像保留了原图像的所有特征,包括有嘴角上扬、嘴角往下、眯眼等面部表情、无面部表情以及抬头动作等,从中选择一副无面部表情的作为参考图像,或者选择一副相对面部表情最小的作为参考图像。如图10(A)所示为本实施例中优选的一副参考图像,其具有无面部表情的特点;如图10(B)所示为本实例中优选的四副不同表情特征的纹理图像。

S202、根据cpselect函数对所述参考图像进行特征点标记;

特征点标记是指在参考图像上将眼角、瞳孔、鼻尖、鼻翼、嘴角、耳垂、人脸轮廓等具有突出特性的点进行标记,标记的方式为:利用Matlab中的imread函数将参考图像读入Matlab中,再利用cpselect函数对参考图像进行特征点标记;标记后的数据将被导出,方便下一步计算。

S203、通过映射函数将所述纹理图像的特征点与所述参考图像的特征点对齐。

假设参考人脸图像P上标记的控制点(特征点)为P{pi},i=1,...,n,要变形的人脸图像T上对应的控制点为T{ti},i=1,...,n,其中pi和ti分别为第i个控制点。通过一个映射函数f将T上的每一个点都映射到P上,该映射函数为:其中,U为薄板样条基函数:U(r)=r2logr2;a1、ax、ay为系数,wi为权重,该函数还满足条件:通过求解方程可以得出权向量和各个系数,从而确定人脸之间的稠密点对应关系,即完成所述纹理图像的特征点对齐于所述参考图像的特征点。如图10(C)所示经过稠密点对应后,使纹理图像的表情均趋向于无表情、无动作。步骤S201-S203仅需少量的手工初始化,并且可以达到非常好的对应效果;TPS与其他非刚性匹配算法相比,该算法性能突出,不仅保证了图像特征点之间的一一对应的双向约束,还避免了陷入局部最小的情况。

如图3所示,进一步的,本步骤中获得中间图像包括以下步骤:

S301、通过逆映射函数计算所述纹理图像的特征点坐标;

S302、将二维展开时标记的柱面坐标匹配至所述纹理图像相应的特征点坐标上;

S303、根据匹配后的坐标关系将所述纹理图像变换为中间图像。

具体的,首先根据参考图像中导出的特征点坐标,通过逆映射函数计算出纹理图像相应的特征点坐标,特征点坐标的个数根据之前标记的控制点决定;再从离散化的柱面坐标中搜寻二维展开时的标记过的坐标,并将其和该纹理图像的特征点坐标相匹配,形成先前的三维坐标关系;最后根据该三维坐标关系将纹理图像变换为中间图像,则完成了二维稠密点对应到三维稠密点对应的过渡;从而避免了直接通过三维人脸图像进行稠密点对应,节省了运算时间,使对应更简单。

S103、通过对所述中间图像的主成分分析得到形变模型;

主成分分析是一种多元统计分析方法,可以对数据进行分析,并且基于数据的重要性对数据进行降维和简化。主要进行提取出所有中间图像的形状特征向量和纹理特征向量。

如图4所示,进一步的,得到形变模型包括以下步骤:

S401、定义所述中间图像为形状向量(S)和纹理向量(T),并据其计算获得平均人脸;

参考图像由64,140个顶点和127,202个三角面片构成。每个人连的表示均采用了形状向量(S)和纹理向量(T)来表示。首先,求出形状向量的平均值和纹理向量的平均值:其中m为人脸图像的个数;如图11所示为对所有中间图像进行合成,得到的平均人脸的侧面图和正面图。

S402、求出对应的协方差矩阵,进行奇异值分解;即求取协方差矩阵的特征值和特征向量,通过计算需要降维向量的协方差矩阵,对其协方差矩阵进行奇异值分解,选取所需的特征向量便可对原始向量进行降维。

计算公式如:

S403、通过调用Matlab中的svd函数提取形状特征向量(s1、s2……sk、……)和纹理特征向量(t1、t2……tk、……),获得形变模型;

形变模型形变的原理为:其中,Ai为形状系数,Bi为纹理系数。通过计算得到一形变模型的公式,即为平均人脸的变形提供了程序运算上的理论支持,结合两者形成形变模型;通过改变形变模型的公式中的形状系数Ai和纹理系数Bi就可以得到新的形状向量和纹理向量,就可改变平均人脸的特点,即可得到新的人脸。

S104、将所述形变模型的特征点与所述人脸照片的特征点对齐,并在对齐后的形变模型上垂直投影所述人脸照片的纹理,生成人脸模型。

对齐后,得到人脸形状模型,再将人脸照片上的纹理垂直投影至该人脸形状模型上,进行纹理映射,得到人脸模型,完成建模;直接投影效率高,并且避免了复杂的坐标计算,使人脸建模速度得到加快,真实感也比较强。

如图5所示,进一步的,本步骤中将所述形变模型的特征点与所述人脸照片的特征点对齐包括以下步骤(即获取人脸形状模型的步骤):

S501、选取所述形变模型的特征点,并根据所述人脸照片上对应的特征点估算两者间的仿射变换;

具体的,首先选取三维形变人脸模型上的t个特征点并保存,然后通过二维图像上的t个特征点估计出二维人脸与三维模型之间的仿射变换,因为有t个特征点,一个新的人脸可以表示为:

其中P∈R3t×m表示前m个特征向量,表示形状系数向量,

在二维图像与三维人脸对齐时,设Sf=(X1,Y1,X2,Y2,……Xt,Yt,)T∈R2t为三维人脸特征点的坐标集合,Sf为S的子形状向量。则新的子形状向量为:

其中S'f=(x1,y1,x2,y2,……xt,yt,)∈R2t,其中P∈R2t×m分别为和P的二维表示;设S″f为变形后的形状向量,可以得出仿射变换的公式为:

S″f=(logc+1)T+S'f,其中T∈R2t表示平移向量,c∈R表示正则形状系数。

S502、根据所述仿射变换的求解结果计算所述形变模型的形状系数

利用正规方程求解出仿射变换后,假设三维人脸模型正投影到二维平面,求代价

函数在最优解时的值,其中形变模型的坐标为输入的二维图像坐标为Sinput(x,y),F为Frobanius范数。

上式是一个最优化问题,目的是使得变形后的三维人脸的正投影坐标与输入图像的坐标最接近,利用Matlab中的fminunc函数求解上式即可得到形状系数

S503、根据所述形状系数对所述形变模型进行变换,得到人脸形状模型。

由代入公式对形变模型进行变换得到新的形状向量,这个形状向量就是与输入人脸一致的形状向量,如此获得单幅人脸照片对应的人脸形状模型。

通过步骤S501-S503生成的人脸形状模型具有很强的轮廓感,接近于真实人脸的轮廓以及外表特点,并且运算时间短,一般仅在10S以内就可完成建模。

在上述技术方案中,本发明提供的一种基于单幅照片的三维人脸建模方法,具有以下有益效果:1)相对于三维扫描仪等硬件设备通用性和灵活性好,操作简单,且成本低,适用于大众;2)相对于多幅人脸照片进行建模的方法简化了人工操作的步骤,以及运算的时间;3)相对于传统的单幅人脸照片进行建模的方法,仅需要简单的手动初始化,运算量小,人脸建模的速度快,并且获得的人脸模型的真实感强。

如图7所示,本发明一优选实施例提供的纹理缺失处理包括以下步骤:

S701、对所述人脸模型进行是否有纹理缺失的检测;

S702、若有纹理缺失,则记录所述人脸模型边缘的纹理特征的坐标,并将其向人脸中心平移;在所述纹理特征上垂直投影所述人脸照片的纹理,并平移回记录的坐标处。

具体的,由于单幅人脸照片为二维图像,其正面比较清晰,采用垂直投影时有可能仅投影到了人脸形状模型的正面,造成其侧面纹理缺失的现象,具体如图13(A)所示;针对于此,对生成的人脸模型出现该现象进行纹理检测,若发现侧面有纹理缺失,则将该缺失的部分平移至人脸中心,再进行垂直投影(纹理映射),因为通过人眼看正脸时,人脸边缘的颜色与侧面人脸是一致的,所以平移映射后的缺失部分将有相同的纹理,再将该部分平移回记录的坐标处,就完成了纹理修复,修复后的人脸图像如图13(B)所示。解决了纹理缺失的问题,使最终生成的人脸模型的真实感更强,图像画面质量更好。

如图8所示,本发明实施例提供的一种基于单幅照片的三维人脸建模系统,包括:

图像获取模块,用以获取人脸图像以及单幅人脸照片;

变换模块,用以将所述人脸图像二维展开,并通过薄板样条变换对展开得到的纹理图像进行稠密点对应,获得中间图像;

分析模块,用以通过对所述中间图像的主成分分析得到形变模型;

成型模块,用以将所述形变模型的特征点与所述人脸照片的特征点对齐,并在对齐后的形变模型上垂直投影所述人脸照片的纹理,生成人脸模型;

Face++API接口,用以参照所述形变模型的特征点,对所述人脸照片相应的特征点进行标记。

根据形变模型的特征点,自动标记单幅人脸照片上相应的特征点,通过成型模块进行特征点对齐,生成相应的人脸模型;优选的,单幅人脸照片如图12(A)所示,人脸模型如图12(B)所示,可以看出通过本系统生成的人脸模型具有很强的真实感,并且建模时间更快,自动化程度更高。

以上只通过说明的方式描述了本发明的某些示范性实施例,毋庸置疑,对于本领域的普通技术人员,在不偏离本发明的精神和范围的情况下,可以用各种不同的方式对所描述的实施例进行修正。因此,上述附图和描述在本质上是说明性的,不应理解为对本发明权利要求保护范围的限制。

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