发明内容
本发明所要解决的技术问题是提供一种三维人脸模型的构造方法和系统,能够更加方便、快捷的构造三维人脸模型。
为解决上述技术问题,本发明公开了一种三维人脸模型构造方法,包括以下步骤:
依据在正面人脸图片中的轮廓控制点和人脸网格模型上对应网格控制点之间建立的第一映射关系,对所述人脸网格模型中所有的点作相应的位置调整;所述人脸网格模型由通用三维人脸模型投影得到,所述第一映射关系由多个选取的对应点计算得到;
在正面人脸图片器官上的轮廓控制点和已调整过的人脸网格模型器官上的网格控制点中选取对应的关键轮廓控制点和关键网格控制点,并确定各个点的邻域;所述邻域内还包括多个轮廓控制点和网格控制点;
依据关键网格控制点建立三角网,确定人脸网格模型上的非网格控制点所在的三角网中的三角形;
依据建立的邻域内对应的轮廓控制点和网格控制点的第二映射关系,对确定该邻域的关键网格控制点进行位置调整;
依据各个三角形的三个顶点调整前后的坐标,分别建立各自的第三映射关系,依据第三映射关系对所述三角形内的所有非网格控制点进行位置调整;
将调整后的人脸网格模型中的点的平面坐标作为通用三维人脸模型的X,Y坐标,对通用三维人脸模型进行调整;
对调整后的通用三维人脸模型添加纹理,得到三维人脸模型。
优选的,在投影得到人脸网格模型之前还包括对通用三维人脸模型进行姿态矫正步骤。
优选的,所述姿态矫正步骤包括:
在通用三维人脸模型上标出双眼中心的位置和嘴巴中心的位置,根据这三个点计算出经过这三个点的平面的法向量N;
调整通用三维人脸模型,直至法向量N与三维坐标的Z轴重合。
优选的,在建立第一映射关系之前进一步包括:将正面人脸图片和人脸网格模型上的坐标原点调整至脸部相同位置点的坐标归一化处理步骤。
优选的,通过以下方式建立第一映射关系:
将多个相应的轮廓控制点和网格控制点代入二元一次方程;
计算得到各个系数,建立具体的二元一次关系式。
优选的,所述确定关键轮廓控制点或关键网格控制点的邻域的预置规则为:
以该点为中心,长、宽为该点所在器官长度的1/3单位的正方形。
优选的,通过以下方式建立第二映射关系:
将邻域中的多个相应的轮廓控制点和邻域中的网格控制点代入二元一次方程;
计算得到各个系数,建立具体的二元一次关系式。
优选的,通过以下方式建立第三映射关系:
将三角网中某一三角形三个顶点的原坐标和调整后的坐标代入二元一次方程;
计算得到各个系数,建立针对该三角形的具体的二元一次关系式。
依据本发明的实施例,公开了一种三维人脸模型构造系统,包括:
投影装置,用于将通用三维人脸模型投影到二维平面得到人脸网格模型;
第一变形装置,用于依据在正面人脸图片中的轮廓控制点和人脸网格模型上对应网格控制点之间建立的第一映射关系,对所述人脸网格模型中所有的点作相应的位置调整;
邻域确定装置,用于在正面人脸图片器官上的轮廓控制点和已调整过的人脸网格模型器官上的网格控制点中选取对应的关键轮廓控制点和关键网格控制点,并确定各个点的邻域;
建网装置,用于依据关键网格控制点建立三角网,确定人脸网格模型上的非网格控制点所在的三角网中的三角形;
第二变形装置,用于依据建立的邻域内对应的轮廓控制点和网格控制点的第二映射关系,对确定该邻域的关键网格控制点进行位置调整;
第三变形装置,用于依据各个三角形的三个顶点调整前后的坐标,分别建立各自的第三映射关系,依据第三映射关系对所述三角形内的所有非网格控制点进行位置调整;
调整装置,用于将调整后的人脸网格模型中的点的平面坐标作为通用三维人脸模型的X,Y坐标,对通用三维人脸模型进行调整;
纹理添加装置,用于对调整后的通用三维人脸模型添加纹理,得到三维人脸模型。
优选的,所述的投影装置之前还还包括姿态矫正装置,姿态矫正装置用于对通用三维人脸模型进行姿态矫正。
优选的,所述姿态矫正装置包括:
平面单元,用于在通用三维人脸模型上标出双眼的位置和嘴巴中心的位置,根据这三个点计算出经过这三个点的平面的法向量N;
旋转单元,用于调整通用三维人脸模型,直至法向量N与三维坐标的Z轴重合。
优选的,公开的系统还包括坐标处理装置,坐标处理装置设于投影装置同第一变形装置之间,用于在建立第一映射关系之前将正面人脸图片和人脸网格模型上的坐标原点调整至脸部相同位置点的坐标进行归一化处理。
本发明的优点:
首先,本发明假设由通用三维人脸模型投影得到的人脸网格模型上的所有点都符合整体的一个映射关系,然后依据轮廓控制点同网格控制点之间的关系,对人脸网格模型上的所有点都进行相同的整体映射;既将人脸网格模型调整到与人脸图片上的器官位置相似,并且还保持了原来通用三维人脸模型各个点之间的拓扑结构,可以直接用于动画驱动和展示。
其次,本发明为了进一步得到更加逼真的三维人脸模型,假定人脸网格模型上一些网格控制点即关键网格控制点具有另外的局部映射关系,然后依据所建立的局部映射关系,对关键网格控制点进行局部映射调整;之后,还通过关键网格控制点建立的三角网内各个三角形的三个顶点调整前后的坐标,建立各个三角形变化前后的映射关系,按此映射关系对各个三角形内的非网格控制点进行调整,从而可以达到更加逼真的效果,与所给出的人脸图片更加相似。
另外,本发明在投影得到二维的人脸网格模型之前,还可以对通用三维人脸模型进行姿态矫正,以适合所给出的处于各种方向或角度的通用三维人脸模型;使得不论给出的通用三维人脸模型其方向、角度如何,都可以投射得到正面人脸的网格模型,与正面人脸图片相对应,以减少由于投影不正而导致的构造误差。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明的核心思想在于:依据建立人脸正面图片同人脸网格模型上点对点的联系,对人脸网格模型上的所有点都作相应的位置调整,之后,依据所建立的人脸正面图片同人脸网格模型上的局部映射关系,对人脸网格模型的关键网格控制点进行调整,之后,还通过关键网格控制点建立的三角网内各个三角形的三个顶点调整前后的坐标,建立各个三角形变化前后的映射关系,按此映射关系对各个三角形内的非网格控制点进行调整,将经过三次调整后的人脸网格模型中的点的平面坐标作为通用三维模型的X,Y坐标,对通用三维人脸模型进行调整,调整后的通用三维人脸模型能更加逼真的再现真实人脸。
参考图1,给出了一种三维人脸模型构造方法实施例,具体可以包括:
步骤101、依据在正面人脸图片中的轮廓控制点和人脸网格模型上对应网格控制点之间建立的第一映射关系,对所述人脸网格模型中所有的点作相应的位置调整;所述人脸网格模型由通用三维人脸模型投影得到,所述第一映射关系由多个选取的对应点计算得到。
步骤102、在正面人脸图片器官上的轮廓控制点和已调整过的人脸网格模型器官上的网格控制点中选取对应的关键轮廓控制点和关键网格控制点,并确定各个点的邻域;所述邻域内还包括多个轮廓控制点和网格控制点。
步骤103、依据关键网格控制点建立三角网,确定人脸网格模型上的非网格控制点所在的三角网中的三角形。
步骤104、依据建立的邻域内对应的轮廓控制点和网格控制点的第二映射关系,对确定该邻域的关键网格控制点进行位置调整;因为人脸网格模型按照第一映射关系调整后,整个人脸网格模型在大体上与真实人脸图片相似,但是由于采用的是多个对应关系取平衡的方式,所以在局部细节上,调整后的人脸网格模型与真实人脸图片还是存在一些不相似的地方,因此需要建立第二映射关系对局部关键的点进行调整。
步骤105、依据各个三角形的三个顶点调整前后的坐标,分别建立各自的第三映射关系,依据第三映射关系对所述三角形内的所有非网格控制点进行位置调整;我们从前面步骤可知,三角形的三个顶点是由关键网格控制点构成,而关键网格控制点在按照第二映射关系进行调整后其坐标发生了变化,所以原来落在三角形内的非网格控制点坐标也要作相应的调整。
步骤106、将调整后的人脸网格模型中的点的平面坐标作为通用三维人脸模型的X,Y坐标,对通用三维人脸模型进行调整;
步骤107、对调整后的通用三维人脸模型添加纹理,得到三维人脸模型。
在本发明的另一个优选实施例中,在实施步骤101时,可以通过如下方法找寻人脸正面图片的轮廓控制点和与之对应的人脸网格模型上的网格控制点。我们采用ASM(Active Shape Model)方法定位出正面人脸图片中人脸器官的轮廓,该方法的具体实现步骤在中国专利申请号200610088857.9,名称为:基于单张相片的快速人脸建模方法及系统的说明书中有公开,在实际应用中,ASM的人脸器官轮廓定位方法实际上已经成为人脸器官轮廓定位的标准方法。采用ASM方法定位得到图片轮廓的过程中,因为定位受外界光照等因素的影响,定位的结果不会非常精确,所以我们采用人机交互对定位的轮廓进行手工微调,得到人脸各个器官的准确轮廓,标识轮廓控制点并得到其坐标。为了在人脸网格模型上得到与轮廓控制点对应的网格控制点,我们可通过手工找寻的方法将轮廓控制点对应的网格控制点都选择出来。
在本发明的另一个优选实施例中,在实施步骤101时,可以通过以下方式建立第一映射关系:将轮廓控制点和网格控制点代入二元一次方程;计算得到各个系数,建立具体的二元一次关系式。即将相对应的人脸图片上的轮廓控制点坐标(x,y)和人脸网格模型中的网格控制点坐标(x′,y′),代入公式1
x′=ax+by+c
y′=dx+ey+f’
计算出它们之间的系数对应关系,即将已知的3个轮廓控制点坐标(x1,y1)...(x3,y3)和3个网格控制点坐标(x1′,y1′)...(x3′,y3′)代入上面的公式1,通过解二元一次多项式,得到a-f的值,建立了轮廓控制点同网格控制点之间的系数关系,我们认为人脸网格模型上所有的点都遵循这种系数关系。当然,我们也可建立多元一次多项式,依据建立的方程式不同,我们在选择轮廓控制点时也要相应的作出调整,一般情况下选择70个左右的轮廓控制点就可以比较精确的得到相应的系数对应关系。当我们将选择的70个轮廓控制点的坐标和对应的网格控制点的坐标代入到公式1中,可以得到很多不同的系数值,这时选用最小二乘法将这些系数值进行处理,得到最佳的一个系数值,用这个系数值建立轮廓控制点同网格控制点的对应关系,可以把对应关系的误差降低。
建立系数对应关系后,将人脸网格模型上所有点的坐标代入到公式1中,得到新坐标值,将人脸网格模型上的所有点移动到新坐标的位置,完成整体仿射。
在本发明的一个优选实施例中,在实施步骤101时,我们可以通过如下方法得到人脸网格模型。首先输入一个通用三维人脸模型,通用三维人脸模型一般可以采用三维造型软件(比如3DMax、Maya等)来制作;在将通用三维人脸模型投影到二维平面上时,本发明实施例中使用的通用三维人脸模型可以只用人脸部分的三维数据,因为正面人脸图片上的轮廓控制点不会在通用三维人脸模型的背面上,所以通用三维人脸模型背面上点的数据对于建立正面人脸图片中的轮廓控制点和通用三维人脸模型上对应模型控制点的映射关系没有意义,在投影时可以仅仅投影人脸正面即可。但是在选择投影人脸正面会出现一个问题就是,我们通常会选择人脸正面的中心点作为通用三维人脸模型的坐标原点,那么人脸正面的部分的点由坐标(x,y,z)来确定,z值对于我们建立所述映射关系没有意义,所以我们在投影之前,把三维模型从正面轮廓面积最大的平面上切分,仅仅对人脸这一面的模型进行投影即可;另外一种简单的方法就是在投影之前,我们可以把通用三维模型的人脸正面上的所有点的坐标的z值设为0,然后投影得到的网格模型的行列号作为x、y值。当然,在技术人员的具体操作中也可以采用OpenGL(Open Graphics Library,开放的图形程序接口)来实现。参考图3,是通用三维人脸模型在投影到二维平面上的通用网格模型示意图。
在本发明的另一个优选实施例中,在投影得到人脸网格模型之前还可以包括对通用三维人脸模型进行姿态矫正步骤。因为输入的三维人脸模型不一定是正面的模型,这样在将通用三维人脸模型投影到二维平面上的时候就会出现人脸上有的地方没有投影到二维平面上,或者是不同的人脸部位重合叠加在二维平面上的同一位置,所以为了适合所给出的处于各种方向或角度的通用三维人脸模型,使得不论给出的通用三维人脸模型其方向、角度如何,都可以投射得到正面人脸的网格模型,与正面人脸图片相对应,以减少由于投影不正而导致的构造误差,我们需要对通用三维人脸模型进行矫正。
在本发明的另一个优选实施例中,所述姿态矫正步骤可以包括:(参考图3-1)
步骤301、在通用三维人脸模型上标出双眼中心的位置和嘴巴中心的位置,根据这三个点计算出经过这三个点的平面的法向量N;
步骤302、调整通用三维人脸模型,直至法向量N与三维坐标的Z轴重合。
在实施步骤301时,我们主要的目的是在人脸上找出一个平面进而找出该平面的法向量,根据我们的观察就绝大部分人而言双眼中心和位置嘴巴中心的位置是处于一个平面上的,当然我们也可以选择嘴角同眉心这三个点构成一个平面。(参考图3-2)
在实施步骤302时,参考图3-3,EL,ER,MC代表矫正前的三维模型的右眼,左眼和嘴巴中心点。N代表了通过三个点的平面的法线方向。EL′,ER′,MC′代表了人脸正对前方时的右、左眼中心点位置和嘴巴中心点的位置,过这三点的平面的法线方向N′和Z轴的方向一致。因此姿态矫正的问题可以转换为如何将法向量N旋转到法向量N′的问题,我们可以利用四元数来解决这个问题,四元数将旋转看作是空间点绕着某个矢量轴旋转某个角度。参考图3-4所示,设旋转轴为N和N′的外积,即P=N×N′,那么P垂直于N和N′, 从N旋转到N′可以看作N绕着P旋转了θ角度,根据四元数的原理,只要知道旋转轴P和旋转角度θ就可以计算出旋转矩阵,将通用三维人脸模型上的所有点都按照得出的旋转矩阵进行旋转,从而完成通用三维人脸模型姿态的矫正。
在本发明的另一优选实施例中,在姿态矫正步骤之后还可以包括将正面人脸图片和人脸网格模型上的坐标原点调整至脸部相同位置点的坐标归一化处理步骤。因为通用三维人脸模型投影到平面后的坐标系和人脸正面图片轮廓点的坐标系有可能是不一致的,为了让投影后的网格模型同人脸正面图片对应,我们需要将两个坐标系进行归一化处理,在进行坐标系归一化处理时,脸部相同位置点我们可以选择将投影后得到的网格模型的坐标原点平移到网格模型中两个鼻孔的中心点,将人脸图片的坐标原点也平移到人脸图片中两个鼻孔的中心点;也可以选择将网格模型的坐标原点平移到网格模型中的眉心位置,将人脸图片的坐标原点也平移到人脸图片中的眉心位置。
在本发明的一个优选实施例中,在实施步骤102时,从器官上的轮廓控制点中选择关键轮廓控制点,这些器官我们可以选择在人脸表情发生变化时,变化比较明显的器官,例如我们可以选择眼睛、眉毛、嘴巴这些器官上的轮廓控制点作为关键轮廓控制点,因为当人脸的表情发生变化时,这些器官的变化比较明显,精确的定位这些器官就能较为逼真的反映真实人脸状态;当然,对于数量而言,关键轮廓控制点数量越多,越能逼真的反映真实人脸的细节上的变化。选择完关键轮廓控制点之后,在人脸网格模型中的网格控制点中选出与关键轮廓控制点对应的关键网格控制点;确定找出的点的邻域。
在本发明的另一个优选实施例中,所述确定关键轮廓控制点或关键网格控制点的邻域的预置规则可以是:以该点为中心,长、宽为该点所在器官长度的1/3单位的正方形。例如,当我们的关键轮廓控制点选择眼睛上的点时,在正面人脸图片上该点的邻域范围就是以该点为中心的长、宽为眼睛长度值的1/3单位的正方形范围内;当我们的关键轮廓控制点选择嘴巴上的轮廓控制点时,在人脸网格模型上对应的关键网格控制点的邻域范围就是以该关键网格控制点为中心的长、宽为嘴巴长度值的1/3单位的正方形范围内。
确定的邻域内包括至少三个轮廓控制点或者网格控制点,否则我们就更换关键轮廓控制点或者关键网格控制点来重新确定其邻域。
在本发明的一个优选实施例中,在实施步骤104时,可以通过以下方法建立第二映射关系:
将关键轮廓控制点确定的邻域内的轮廓控制点坐标和关键网格控制点确定的邻域内的网格控制点的坐标代入二元一次方程;计算得到各个系数,建立具体的二元一次关系式。即将相对应邻域内的人脸图片上的轮廓控制点坐标(x,y)和人脸网格模型中的网格控制点坐标(x′,y′),代入公式2
x′=a′x+b′y+c′
y′=d′x+e′y+f′’
计算出它们之间的系数对应关系,即通过解二元一次多项式,得到a′-f′的值,建立了对应邻域内轮廓控制点同网格控制点之间的系数关系,我们认为确定该邻域关键网格控制点遵循该系数关系,将该关键网格控制点坐标代入公式2中,得到其新坐标,按照得到的新坐标调整该关键网格控制点。
每一个关键网格控制点都可以通过建立第二映射关系的方法得到其新坐标,各个关键网格控制点分别按照其新坐标进行调整,完成人脸网格模型的第二次调整。
在本发明的另一个优选实施例中,在实施步骤105时,可以通过如下方法建立第三映射关系,通过上述实施例,我们可以知道关键网格控制点变化前后的坐标,因为三角形的顶点是由关键网格控制点构成的,这样我们就可以知道各个三角形的三个顶点变化前后的坐标了。按照建立第一映射关系的建立二元一次方程的方法,将三角形的三个顶点的前后三个坐标代入二元一次方程,计算得到各个系数,建立具体的二元一次关系式。我们认为三角形内的所有非网格控制点都遵循这个系数关系,那么我们就可以得到三角形内所有非网格控制点的新坐标,按照新坐标调整三角形内的所有非网格控制点。按照此方法对三角网的各个三角形内的非网格控制点进行调整,完成人脸网格模型的第三次调整。
进一步的优选方案,我们可以通过如下方法建立第三映射关系,因为人脸网格上的点的坐标都是已知的,所以我们可以知道任一三角形三个顶点坐标以及该三角形内任一非网格控制点到该三角形三个顶点的距离,当该三角形三个顶点调整后,得到三个顶点的新坐标,依据三角形内非网格控制点到三个顶点的距离的比值不随三角形三个顶点坐标的变化而变化的原理,我们可以根据三角形三个顶点的前后坐标以及任一非网格控制点到三角形三个顶点的距离,得到该非网格控制点随三角形三个顶点调整后的新坐标。同样的,所有的三角形内的非网格控制点都可以通过该方法计算得到新的坐标。按照此方法对三角网的各个三角形内的非网格控制点进行调整,完成人脸网格模型的第三次调整。
参照图4,给出了一种三维人脸模型构造系统实施例,具体可以包括:
投影装置401,用于将通用三维人脸模型投影到二维平面得到人脸网格模型;
第一变形装置402,用于依据在正面人脸图片中的轮廓控制点和人脸网格模型上对应网格控制点之间建立的第一映射关系,对所述人脸网格模型中所有的点作相应的位置调整;
邻域确定装置403,用于在正面人脸图片器官上的轮廓控制点和已调整过的人脸网格模型器官上的网格控制点中选取对应的关键轮廓控制点和关键网格控制点,并确定各个点的邻域;
建网装置404,用于依据关键网格控制点建立三角网,确定人脸网格模型上的非网格控制点所在的三角网中的三角形;
第二变形装置405,用于依据建立的邻域内对应的轮廓控制点和网格控制点的第二映射关系,对确定该邻域的关键网格控制点进行位置调整;
第三变形装置406,用于依据各个三角形的三个顶点调整前后的坐标,分别建立各自的第三映射关系,依据第三映射关系对所述三角形内的所有非网格控制点进行位置调整;
调整装置407,用于将调整后的人脸网格模型中的点的平面坐标作为通用三维人脸模型的X,Y坐标,对通用三维人脸模型进行调整;
纹理添加装置408,用于对调整后的通用三维人脸模型添加纹理,得到三维人脸模型。
在具体实施时,输入通用三维人脸模型到投影装置401,投影装置401将通用三维人脸模型投影到二维平面得到人脸网格模型;
然后将正面人脸图片和人脸网格模型输入第一变形装置402,第一变形装置402在正面人脸图片上确定轮廓控制点,并在人脸网格模型上找到与轮廓控制点对应的网格控制点,然后,第一变形装置402依据在正面人脸图片中的轮廓控制点和人脸网格模型上对应网格控制点之间建立的第一映射关系,对所述人脸网格模型中所有的点作相应的位置调整。
将确定轮廓控制点的正面人脸图片和经过调整的人脸网格模型输入邻域确定装置403,邻域确定装置403在正面人脸图片器官上的轮廓控制点和已调整过的人脸网格模型器官上的网格控制点中选取对应的关键轮廓控制点和关键网格控制点,并确定各个点的邻域。
将经过调整的人脸网格模型输入建网装置404,建网装置404依据关键网格控制点建立三角网,确定人脸网格模型上的非网格控制点所在的三角网中的三角形。
将已经确定邻域的正面人脸图片和人脸网格模型输入第二变形装置405,第二变形装置405,依据建立的邻域内对应的轮廓控制点和网格控制点的第二映射关系,对确定该邻域的关键网格控制点进行位置调整。
第三变形装置406依据建网装置404和第二变形装置405的输入信息,可以得到建立的三角网内各个三角形的三个顶点调整前后的坐标,,第三变形装置406依据各个三角形三个顶点的前后坐标分别建立每个三角形的第三映射关系,依据每个三角形的第三映射关系对该三角形内的所有非网格控制点进行位置调整。
将经过三次调整的人脸网格模型输入调整装置407,调整装置407将调整后的人脸网格模型中的点的平面坐标作为通用三维人脸模型的X,Y坐标,对通用三维人脸模型进行调整。
纹理添加装置408对调整后的通用三维人脸模型添加纹理,得到三维人脸模型。
在本发明的一个优选实施例中,所述的一种三维人脸模型构造系统还包括姿态矫正装置,所述姿态矫正装置设于投影装置之前,姿态矫正装置用于对通用三维人脸模型进行姿态矫正。
在本发明的一个优选实施例中,所述姿态矫正装置进一步包括:(参考图5)
平面单元501,用于在通用三维人脸模型上标出双眼的位置和嘴巴中心的位置,根据这三个点计算出经过这三个点的平面的法向量N;
旋转单元502,用于调整通用三维人脸模型,直至法向量N与三维坐标的Z轴重合。
在本发明的另一个优选实施例中,所述的一种三维人脸模型构造系统还包括坐标处理装置,坐标处理装置设于投影装置同第一变形装置之间,用于在建立第一映射关系之前将正面人脸图片和人脸网格模型上的坐标原点调整至脸部相同位置点的坐标进行归一化处理。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本发明所提供的一种三维人脸模型的构造方法和系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本邻域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。