一种虚拟上妆方法、系统及设备
文献发布时间:2023-06-19 10:24:22
技术领域
本发明涉及虚拟上妆技术领域,特别是一种虚拟上妆方法、系统及设备。
背景技术
随着时代发展,人们,尤其是女性对于颜值有更高要求。化妆对于女性来说是必不可少。海量的化妆产品会让试妆者耗费时间和金钱。虚拟现实技术的问世给予试妆者更好的试妆体验。虚拟试妆可以在极短的时间内向试妆者呈现其化妆后的效果。
目前的虚拟试妆技术主要有2D人脸特征点插值方法和3D人脸模型重建方法。2D人脸特征点插值方法,先对2D人脸特征点进行插值,构建人脸网格模型,再利用顶点坐标和纹理坐标的坐标对进行纹理映射。这种方法映射到人脸上除五官区域外的纹理会随人脸姿态产生拉伸,即纹理无透视感。3D人脸模型重建方法以2D人脸特征点和对应的3DMM人脸特征点作为约束进行单图人脸重建,得到能够较好表征2D图像中人脸的3D模型和投影参数,利用3D模型的顶点坐标、纹理坐标和投影参数把纹理映射到2D人脸上。由于这种方法需要进行单图人脸重建和参数优化,相对于2D人脸特征点插值方法,计算复杂性高,稳定性差,导致3D模型映射到2D人脸上时轮廓无法贴合。
发明内容
本发明为解决上述问题,提供了一种虚拟上妆方法、系统及设备,可以有效克服虚拟上妆中纹理拉伸、透视感弱和贴合性差的问题。
为实现上述目的,本发明采用的技术方案为:
一种虚拟上妆方法,包括以下步骤:在3DMM模型中标注多个3D人脸特征点,所述3DMM模型投影得到UV展开图,所述3D人脸特征点投影得到3D特征纹理点,提取所述3D特征纹理点的纹理坐标;对2D图像进行人脸检测和特征点检测,得到与所述3D人脸特征点个数相同的2D人脸特征点和欧拉角参数;根据所述2D人脸特征点和欧拉角参数,修正所述3D特征纹理点中的轮廓纹理点的纹理坐标,得到修正轮廓纹理点,以及修正3D特征纹理点;对所述修正3D特征纹理点进行扩展插值,得到扩展纹理点,所述扩展纹理点和所述修正3D特征纹理点构成3D纹理点;将所述2D人脸特征点归一化,以归一化的所述2D人脸特征点和所述修正3D特征纹理点作为控制点,对所述3D纹理点进行变换,得到所述3D纹理点的变换坐标;在所述UV展开图上设计妆容;根据所述妆容上的所述3D纹理点的纹理坐标和变换坐标,对所述2D图像上的人脸图像进行上妆。
优选的,修正所述3D特征纹理点中的轮廓纹理点的纹理坐标的方法为:以正脸0°的3D人脸特征点中的3D轮廓点为基准,将所述3DMM模型绕Z轴每隔1°旋转到一个姿态,计算所述姿态下的所述轮廓纹理点的纹理坐标;将所述2D人脸特征点旋转至水平角度并归一化,根据所述欧拉角参数选取对应所述姿态下的所述轮廓纹理点,修正所述轮廓纹理点的纹理坐标。
优选的,所述3DMM模型绕Z轴的旋转范围为从正脸0°到侧脸50°。
优选的,计算所述姿态下的所述轮廓纹理点的纹理坐标的方法为:均匀采样所述姿态下的5个所述3D轮廓点,根据B样条曲线拟合出该姿态下所有的所述3D轮廓点,并计算所述轮廓纹理点的纹理坐标。
优选的,以旋转至水平角度并归一化的所述2D人脸特征点中的五官点和对应所述状态下所述3D特征纹理点中的五官点为基准,修正所述轮廓纹理点的纹理坐标。
优选的,采用拉格朗日插值算法、牛顿插值算法和线性插值算法对所述修正3D特征纹理点进行扩展插值。
优选的,对所述3D纹理点做三角剖分,得到所述3D纹理点的三角网格,采用保相似形变算法对所述3D纹理点进行变换。
优选的,为所述修正3D纹理点的变换坐标赋予Z值。
基于同样的发明构思,本发明还提供了一种虚拟上妆系统,包括:标注模块,用于在3DMM模型中标注3D人脸特征点;UV模块,用于将所述3DMM模型投影得到UV展开图,将所述3D人脸特征点投影得到3D特征纹理点,提取所述3D特征纹理点的纹理坐标;检测模块,用于对2D图像进行人脸检测和特征点检测,得到与所述3D人脸特征点个数相同的2D人脸特征点和欧拉角参数;修正模块,用于根据所述2D人脸特征点和欧拉角参数,修正所述3D特征纹理点中的轮廓纹理点的纹理坐标,得到修正轮廓纹理点,以及修正3D特征纹理点;插值模块,用于对所述修正3D特征纹理点进行扩展插值,得到扩展纹理点和所述扩展纹理点的纹理坐标,所述扩展纹理点和所述修正3D特征纹理点构成3D纹理点;变换模块,用于将所述2D人脸特征点归一化,以归一化的所述2D人脸特征点和所述修正3D特征纹理点作为控制点,对所述3D纹理点进行变换,得到所述3D纹理点的变换坐标;设计模块,用于在UV展开图上设计妆容;上妆模块,用于根据妆容上的所述3D纹理点的纹理坐标和变换坐标,对所述2D图像上的人脸图像进行上妆。
基于同样的发明构思,本发明还提供了一种虚拟上妆设备,所述设备用于运行程序,其中,所述程序运行时执行上述的虚拟上妆方法。
本发明的有益效果是:
(1)修正了轮廓纹理点的纹理坐标,提高虚拟妆容上妆在2D人脸图像上的贴合性;
(2)对修正3D特征纹理点进行扩展插值,产生额外的顶点进行纹理映射,提高虚拟妆容上妆在2D人脸图像上的真实感;
(3)为修正3D特征纹理点的变换坐标赋予Z值,提高虚拟妆容上妆在2D人脸图像上的透视感。
附图说明
图1为2D人脸特征点插值方法与本发明所述的方法的上妆效果的对比示意图;
图2为3D人脸模型重建方法与本发明所述的方法的上妆效果的对比示意图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合具体实施例对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
实施例一
如图1~2所示,本实施例结合2D人脸特征点插值方法和3D人脸重建方法提供一种基于2.5D的虚拟上妆方法,应用于实时虚拟上妆和贴图。
在发明中,2.5D技术即结合2D图像信息和3D图形信息的技术。2D图像只包含一个平面维度信息,3D图形包含多维度空间立体信息。2.5D同时存储2D像素信息和3D深度信息,同时可以和2D图像信息或3D图形信息进行相互转换。
该方法包括以下步骤:
在3DMM模型中标注118个3D人脸特征点,3DMM模型圆柱投影得到UV展开图,对应的,3D人脸特征点投影得到在UV展开图上的3D特征纹理点,提取3D特征纹理点的纹理坐标。
3DMM(人脸3D形变统计模型)是一种较为基础的三维人脸统计模型,用固定的点数来表示人脸。它的核心思想就是人脸可以在三维空间中进行一一匹配,并且可以由其他许多幅人脸正交基加权线性相加而来。
在其他实施例中,可以在人脸模型上标注更多的3D人脸特征点,但是,这需要更精细的算法和更强大的硬件运算能力。
计算不同姿态下3D人脸特征点中的3D轮廓点的纹理坐标。3D轮廓点圆柱投影得到在UV展开图上的轮廓纹理点,即计算不同姿态下3D特征纹理点中的轮廓纹理点的纹理坐标。以正脸0°的3D轮廓点为基准,将3DMM模型绕Z轴每隔1°旋转到一个姿态,均匀采样该姿态下的5个3D轮廓点,根据B样条曲线拟合出该姿态下所有的3D轮廓点。计算该姿态下的3D轮廓点的纹理坐标。
不同姿态下3D特征纹理点中的五官纹理点的纹理坐标直接使用正脸0°的五官纹理点的纹理坐标。
3DMM模型绕Z轴旋转范围为从正脸0°到侧脸50°。该旋转范围基本覆盖了人头部的水平转动的区域。
通过采集少量的3D轮廓点,拟合出所有3D轮廓点的方法,可以减少采样工作,同时保证拟合的3D轮廓点的精度,以及提高轮廓纹理点的纹理坐标的计算效率。
输入包含人脸的视频进行检测。对每一帧2D图像进行人脸检测和2D人脸特征点检测,得到118个2D人脸特征点和欧拉角参数。即2D人脸特征点与3D特征纹理点形成一一对应。
将2D人脸特征点旋转至水平角度并归一化。根据Z轴对应的欧拉角,选取对应姿态下的3D特征纹理点。以2D人脸特征点中的五官点、2D轮廓点和3D特征纹理点中的五官点为基准,利用X、Y、Z轴对应的欧拉角修正该姿态下的轮廓纹理点的纹理坐标,得到修正轮廓纹理点,使修正轮廓纹理点的形状接近于2D轮廓点的形状。修正轮廓纹理点和其他3D特征纹理点构成修正3D特征纹理点。
通过对轮廓纹理点的形状进行修正,可以提高后续妆容进行纹理映射时,纹理与2D图像上的人脸轮廓的贴合效果。
利用拉格朗日插值算法、牛顿插值算法和线性插值算法对修正3D特征纹理点进行扩展插值,得到扩展纹理点及其纹理坐标。扩展纹理点覆盖整个脸部区域。扩展纹理点和修正3D特征纹理点构成3D纹理点。对3D纹理点做三角剖分,构建3D纹理点的三角网格。
3D人脸特征点只标注3D五官点和3D轮廓点,即3D特征纹理点只包括五官纹理点和轮廓纹理点。由于视频中人脸的姿态会发生变换,需要对五官纹理点和轮廓纹理点扩展插值,得到能够动态覆盖人脸区域的扩展纹理点。扩展纹理点不仅可以增加纹理映射的顶点,而且这些顶点可以适应不同位置朝向的人脸图像,提高妆容纹理投影到2D人脸图像上的精度,有效避免纹理拉伸的现象,提高妆容的真实感。
对2D人脸特征点进行归一化,以归一化的2D人脸特征点和3D纹理点作为控制点,利用保相似形变算法对3D纹理点的纹理坐标进行变换,确保得到的2D人脸扩展点的相对位置和3D纹理点的相对位置的相似性,得到3D纹理点的变换坐标。
其中,2D人脸扩展点为扩展纹理点的纹理坐标进行变换后在2D图像上的点。
2D人脸扩展点和2D人脸特征点构成2D人脸点。2D人脸点作为当前帧的2D图像的顶点,覆盖2D图像上的整个脸部区域。
通过3D纹理点的纹理坐标和变换坐标对2D图像进行纹理映射,可以提高虚拟妆容上妆在2D人脸图像上的真实感。
根据自研3D人脸点实时重建技术,赋予每个3D纹理点的变换坐标Z值,即赋予2D人脸点深度值,使纹理映射在2D人脸图像上的虚拟妆容具有透视感。
设计师在UV展开图上设计妆容。妆容与3D纹理点在UV展开图上的位置形成对应的关系。
根据妆容上的3D纹理点的纹理坐标和变换坐标,将妆容纹理映射在2D人脸图像上,利用OpenGL进行纹理贴图,完成上妆过程。
本实施例所述的方法利用人脸检测和特征点检测技术,插值技术,2D网格变形技术和模型展开技术,可以有效克服2D人脸特征点插值方法产生的纹理拉伸和透视感弱的问题,以及3D人脸重建方法产生的轮廓无法贴合的问题。
本实施例所述的方法可以让用户只需一键上妆就能体验化妆后的效果,操作简单,降低了体验成本,还可以让用户快速体验抬头、低头以及转动脸部等各种状态下的上妆效果。
2D上妆效果和2.5D效果对比如图1所示,左边为2D人脸特征点插值方法的上妆效果示意图,右边为本实施例所述的方法的上妆效果示意图,2D上妆产生纹理拉伸使上妆效果失真,2.5D上妆能极大改善纹理拉伸,保持原有底图形状。
3D上妆效果和2.5D上妆效果对比如图2所示,左边为3D人脸重建方法的上妆效果示意图,右边为本实施例所述的方法的上妆效果示意图,在低头姿态下3D上妆在下巴处纹理会向外飘,不贴合人脸轮廓,2.5D上妆的纹理贴合人脸轮廓。
本领域技术人员可以理解,实现上述方法实施例中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
实施例二
本实施例提供一种基于2.5D的虚拟上妆系统,包括:
标注模块,用于在3DMM模型中标注3D人脸特征点。
UV模块,用于将3DMM模型圆柱投影得到UV展开图,将所述3D人脸特征点圆柱投影对应得到3D特征纹理点,提取3D特征纹理点的纹理坐标。
计算模块,以正脸0°的3D人脸特征点中的3D轮廓点为基准,将3DMM模型绕Z轴从正脸0°旋转到侧脸50°,每隔1°为一个姿态。计算模块用于均匀采样每个姿态下的5个3D轮廓点,根据B样条曲线拟合出所有的3D轮廓点,以及计算3D轮廓点的纹理坐标。3D轮廓点圆柱投影得到在UV展开图上的轮廓纹理点,即计算3D特征纹理点中的轮廓纹理点的纹理坐标。
检测模块,用于对2D图像进行人脸检测和特征点检测,得到与3D人脸特征点个数相同的2D人脸特征点和欧拉角参数。
修正模块,用于根据2D人脸特征点和欧拉角参数,以2D人脸特征点中的五官点、2D轮廓点和3D特征纹理点中的五官点为基准,修正轮廓纹理点的纹理坐标,得到修正轮廓纹理点。
修正轮廓纹理点和其他3D特征纹理点构成修正3D特征纹理点。
插值模块,用于利用拉格朗日插值算法、牛顿插值算法和线性插值算法对修正3D特征纹理点进行扩展插值,得到扩展纹理点和扩展纹理点的纹理坐标。
扩展纹理点覆盖整个脸部区域。扩展纹理点和修正3D特征纹理点构成3D纹理点。
三角剖分模块,用于对3D纹理点做三角剖分,构建3D纹理点的三角网格。
变换模块,用于将2D人脸特征点归一化,以归一化的2D人脸特征点和修正3D特征纹理点作为控制点,对3D纹理点进行变换,得到3D纹理点的变换坐标,以及赋予每个3D纹理点的变换坐标Z值。
3D纹理点的纹理坐标进行变换在2D图像上的点为2D人脸点。
2D人脸点作为当前帧的2D图像的顶点,覆盖2D图像上的整个脸部区域。
设计模块,用于在UV展开图上设计妆容。
上妆模块,用于根据妆容上的3D纹理点的纹理坐标和变换坐标,对2D图像上的人脸图像进行上妆。
实施例三
本实施例提供了一种基于2.5D的虚拟上妆设备,该设备用于运行程序,其中,程序运行时执行实施例一所述的虚拟上妆方法。
该设备可以采用便携式设计,使用户可以在家中即可使用该设备体验各种妆容在脸部上妆的效果,用户可以对妆容进行随意搭配,直至试出满意的妆容。该设备可以定时对妆容进行更新,如最新的美妆产品的色号,提高用户的体验感。
上述说明示出并描述了本发明的优选实施例,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
- 一种虚拟上妆方法、系统及设备
- 具有虚拟人物上妆功能的化妆品直播系统及方法