一种二维人脸图片变形方法及系统转让专利

申请号 : CN202010442141.4

文献号 : CN111640055B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 林文林郑泽彬张彬彬黄志超朱健卢雨晨项博文李多春

申请人 : 构范(厦门)信息技术有限公司

摘要 :

本发明提供了计算机图形学领域的一种二维人脸图片变形方法及系统,方法包括:步骤S10、获取二维人脸图片、三维人脸模型,将三维人脸模型转换为人脸区域二维网格后叠加于二维人脸图片上;步骤S20、选取二维人脸图片与人脸区域二维网格对应特征点,并基于特征点得到坐标映射关系;步骤S30、基于人脸区域二维网格创建非人脸区域二维网格;步骤S40、基于人脸区域二维网格、坐标映射关系、非人脸区域二维网格、非人脸区域过渡规则,对二维人脸图片的像素点进行像素映射,生成变形后的人脸图片。本发明的优点在于:极大的提升了人脸图片变形的灵活性、过渡平滑性,进而极大的提升了最终生成图片的显示效果。

权利要求 :

1.一种二维人脸图片变形方法,其特征在于:包括如下步骤:步骤S10、获取待处理的二维人脸图片以及三维人脸模型,将所述三维人脸模型转换为由三角形组成的人脸区域二维网格后,叠加于所述二维人脸图片的上方;

步骤S20、选取所述二维人脸图片与人脸区域二维网格一一对应的30个特征点,并基于

30个所述特征点计算得到二维人脸图片与人脸区域二维网格的坐标映射关系;

步骤S30、基于所述人脸区域二维网格创建一非人脸区域二维网格;

步骤S40、基于所述人脸区域二维网格以及坐标映射关系对二维人脸图片的像素点进行像素映射,生成变形后的人脸区域图片;

步骤S50、设定一非人脸区域过渡规则,基于所述非人脸区域二维网格、非人脸区域过渡规则以及坐标映射关系对二维人脸图片的像素点进行像素映射,生成变形后的非人脸区域图片,将所述人脸区域图片以及非人脸区域图片叠加生成变形后的人脸图片;

步骤S60、获取叠加图片,将所述叠加图片转换为由三角形组成的叠加区域二维网格后,与所述二维人脸图片进行叠加,并利用所述坐标映射关系以及叠加区域二维网格将位于下层图片的像素点进行像素映射到上层图片,生成叠加后的人脸图片;

所述步骤S20具体为:

基于人脸轮廓选取所述二维人脸图片与人脸区域二维网格一一对应的30个特征点,获取30个所述特征点的二维坐标以及三维坐标,将30个所述特征点的二维坐标以及三维坐标带入如下公式:uv=pos*modelview*projectview*viewport;

求解得到modelview、projectview以及viewport;其中uv表示二维坐标;pos表示三维坐标;modelview表示旋转矩阵;projectview表示缩放矩阵;viewport表示视图矩阵;

设所述二维人脸图片左上方顶点的二维坐标为(0,0),所述二维人脸图片上任意一个像素点的二维坐标为uvp(x2,y2),像素点所在所述人脸区域二维网格的三角形的三维坐标为a(ax3,ay3),b(bx3,by3),c(cx3,cy3);

基于质心坐标公式求解uvp(x2,y2)、a(ax3,ay3),b(bx3,by3),c(cx3,cy3)、modelview、projectview以及viewport,得到所述二维人脸图片与人脸区域二维网格的坐标映射关系:x2=ax3*u+bx3*v+cx3*w;

y2=ay3*u+by3*v+cy3*w;

其中u、v、w表示计算过程变量,且u+v+w=1;a、b、c表示坐标系数;x2表示二维人脸图片的横坐标;y2表示二维人脸图片的纵坐标;x3表示人脸区域二维网格的横坐标;y3表示人脸区域二维网格的纵坐标。

2.如权利要求1所述的一种二维人脸图片变形方法,其特征在于:所述步骤S30具体为:以所述人脸区域二维网格的外边缘为中心,从内至外设置15个由三角形组成的网格圈,各网格圈的宽度均为1个三角形,进而生成非人脸区域二维网格。

3.如权利要求2所述的一种二维人脸图片变形方法,其特征在于:所述像素映射具体为:设所述二维人脸图片坐标为(w,h)的像素为RGB(w,h)=(r,g,b),映射前的三角形网格点为origpos(ox,oy),映射后的三角形网格点为nowpos(nx,ny);

设点(w,h)变形后的坐标为(w1,h1),像素为nowRGB(w1,h1)=(r1,g1,b1);基于所述坐标映射关系,得到:w1=nax*u+nbx*v+ncx*w;

h1=nay*u+nby*v+ncy*w;

进而得到变形后的坐标(w1,h1)的像素为:

nowRGB(w1,h1)=RGB(oax*u+obx*v+ocx*w,oay*u+oby*v+ocy*w);

其中o和n均表示坐标系数;

所述非人脸区域过渡规则具体为:

外层网格圈的位置偏移量=相邻内层网格圈的位置偏移量*0.9。

4.一种二维人脸图片变形系统,其特征在于:包括如下模块:初始化模块,用于获取待处理的二维人脸图片以及三维人脸模型,将所述三维人脸模型转换为由三角形组成的人脸区域二维网格后,叠加于所述二维人脸图片的上方;

坐标映射关系计算模块,用于选取所述二维人脸图片与人脸区域二维网格一一对应的

30个特征点,并基于30个所述特征点计算得到二维人脸图片与人脸区域二维网格的坐标映射关系;

非人脸区域二维网格创建模块,用于基于所述人脸区域二维网格创建一非人脸区域二维网格;

人脸区域变形模块,用于基于所述人脸区域二维网格以及坐标映射关系对二维人脸图片的像素点进行像素映射,生成变形后的人脸区域图片;

变形图片生成模块,用于设定一非人脸区域过渡规则,基于所述非人脸区域二维网格、非人脸区域过渡规则以及坐标映射关系对二维人脸图片的像素点进行像素映射,生成变形后的非人脸区域图片,将所述人脸区域图片以及非人脸区域图片叠加生成变形后的人脸图片;

图片叠加模块,用于获取叠加图片,将所述叠加图片转换为由三角形组成的叠加区域二维网格后,与所述二维人脸图片进行叠加,并利用所述坐标映射关系以及叠加区域二维网格将位于下层图片的像素点进行像素映射到上层图片,生成叠加后的人脸图片;

所述坐标映射关系计算模块具体为:

基于人脸轮廓选取所述二维人脸图片与人脸区域二维网格一一对应的30个特征点,获取30个所述特征点的二维坐标以及三维坐标,将30个所述特征点的二维坐标以及三维坐标带入如下公式:uv=pos*modelview*projectview*viewport;

求解得到modelview、projectview以及viewport;其中uv表示二维坐标;pos表示三维坐标;modelview表示旋转矩阵;projectview表示缩放矩阵;viewport表示视图矩阵;

设所述二维人脸图片左上方顶点的二维坐标为(0,0),所述二维人脸图片上任意一个像素点的二维坐标为uvp(x2,y2),像素点所在所述人脸区域二维网格的三角形的三维坐标为a(ax3,ay3),b(bx3,by3),c(cx3,cy3);

基于质心坐标公式求解uvp(x2,y2)、a(ax3,ay3),b(bx3,by3),c(cx3,cy3)、modelview、projectview以及viewport,得到所述二维人脸图片与人脸区域二维网格的坐标映射关系:x2=ax3*u+bx3*v+cx3*w;

y2=ay3*u+by3*v+cy3*w;

其中u、v、w表示计算过程变量,且u+v+w=1;a、b、c表示坐标系数;x2表示二维人脸图片的横坐标;y2表示二维人脸图片的纵坐标;x3表示人脸区域二维网格的横坐标;y3表示人脸区域二维网格的纵坐标。

5.如权利要求4所述的一种二维人脸图片变形系统,其特征在于:所述非人脸区域二维网格创建模块具体为:以所述人脸区域二维网格的外边缘为中心,从内至外设置15个由三角形组成的网格圈,各网格圈的宽度均为1个三角形,进而生成非人脸区域二维网格。

6.如权利要求5所述的一种二维人脸图片变形系统,其特征在于:所述像素映射具体为:设所述二维人脸图片坐标为(w,h)的像素为RGB(w,h)=(r,g,b),映射前的三角形网格点为origpos(ox,oy),映射后的三角形网格点为nowpos(nx,ny);

设点(w,h)变形后的坐标为(w1,h1),像素为nowRGB(w1,h1)=(r1,g1,b1);基于所述坐标映射关系,得到:w1=nax*u+nbx*v+ncx*w;

h1=nay*u+nby*v+ncy*w;

进而得到变形后的坐标(w1,h1)的像素为:

nowRGB(w1,h1)=RGB(oax*u+obx*v+ocx*w,oay*u+oby*v+ocy*w);

其中o和n均表示坐标系数;

所述非人脸区域过渡规则具体为:

外层网格圈的位置偏移量=相邻内层网格圈的位置偏移量*0.9。

说明书 :

一种二维人脸图片变形方法及系统

技术领域

[0001] 本发明涉及计算机图形学领域,特别指一种二维人脸图片变形方法及系统。

背景技术

[0002] 随着网络技术和数字图像获取技术的方展,人们产生了将拍摄的图片或者视频传送到网络上进行分享的欲望,而为了获得更好的互动效果,时常需要对图片的人脸进行变形。
[0003] 针对二维人脸图片的变形,传统上采用机器学习,训练得到变化参数,进而通过变化参数对人脸进行变形的方法。但是传统的方法存在如下缺点:依赖于大量的训练结果,由于训练模型遍历不完全,容易使人脸变形的效果差强人意。
[0004] 因此,如何提供一种二维人脸图片变形方法及系统,实现提升人脸图片变形的灵活性、过渡平滑性,进而提升最终生成图片的显示效果,成为一个亟待解决的问题。

发明内容

[0005] 本发明要解决的技术问题,在于提供一种二维人脸图片变形方法及系统,实现提升人脸图片变形的灵活性、过渡平滑性,进而提升最终生成图片的显示效果。
[0006] 一方面,本发明提供了一种二维人脸图片变形方法,包括如下步骤:
[0007] 步骤S10、获取待处理的二维人脸图片以及三维人脸模型,将所述三维人脸模型转换为由三角形组成的人脸区域二维网格后,叠加于所述二维人脸图片的上方;
[0008] 步骤S20、选取所述二维人脸图片与人脸区域二维网格一一对应的30个特征点,并基于30个所述特征点计算得到二维人脸图片与人脸区域二维网格的坐标映射关系;
[0009] 步骤S30、基于所述人脸区域二维网格创建一非人脸区域二维网格;
[0010] 步骤S40、基于所述人脸区域二维网格以及坐标映射关系对二维人脸图片的像素点进行像素映射,生成变形后的人脸区域图片;
[0011] 步骤S50、设定一非人脸区域过渡规则,基于所述非人脸区域二维网格、非人脸区域过渡规则以及坐标映射关系对二维人脸图片的像素点进行像素映射,生成变形后的非人脸区域图片,将所述人脸区域图片以及非人脸区域图片叠加生成变形后的人脸图片。
[0012] 进一步地,还包括:
[0013] 步骤S60、获取叠加图片,将所述叠加图片转换为由三角形组成的叠加区域二维网格后,与所述二维人脸图片进行叠加,并利用所述坐标映射关系以及叠加区域二维网格将位于下层图片的像素点进行像素映射到上层图片,生成叠加后的人脸图片。
[0014] 进一步地,所述步骤S20具体为:
[0015] 基于人脸轮廓选取所述二维人脸图片与人脸区域二维网格一一对应的30个特征点,获取30个所述特征点的二维坐标以及三维坐标,将30个所述特征点的二维坐标以及三维坐标带入如下公式:
[0016] uv=pos*modelview*projectview*viewport;
[0017] 求解得到modelview、projectview以及viewport;其中uv表示二维坐标;pos表示三维坐标;modelview表示旋转矩阵;projectview表示缩放矩阵;viewport表示视图矩阵;
[0018] 设所述二维人脸图片左上方顶点的二维坐标为(0,0),所述二维人脸图片上任意一个像素点的二维坐标为uvp(x2,y2),像素点所在所述人脸区域二维网格的三角形的三维坐标为a(ax3,ay3),b(bx3,by3),c(cx3,cy3);
[0019] 基于质心坐标公式求解uvp(x2,y2)、a(ax3,ay3),b(bx3,by3),c(cx3,cy3)、modelview、projectview以及viewport,得到所述二维人脸图片与人脸区域二维网格的坐标映射关系:
[0020] x2=ax3*u+bx3*v+cx3*w;
[0021] y2=ay3*u+by3*v+cy3*w;
[0022] 其中u、v、w表示计算过程变量,且u+v+w=1;a、b、c表示坐标系数;x2表示二维人脸图片的横坐标;y2表示二维人脸图片的纵坐标;x3表示人脸区域二维网格的横坐标;y3表示人脸区域二维网格的纵坐标。
[0023] 进一步地,所述步骤S30具体为:
[0024] 以所述人脸区域二维网格的外边缘为中心,从内至外设置15个由三角形组成的网格圈,各网格圈的宽度均为1个三角形,进而生成非人脸区域二维网格。
[0025] 进一步地,所述像素映射具体为:
[0026] 设所述二维人脸图片坐标为(w,h)的像素为RGB(w,h)=(r,g,b),映射前的三角形网格点为origpos(ox,oy),映射后的三角形网格点为nowpos(nx,ny);
[0027] 设点(w,h)变形后的坐标为(w1,h1),像素为nowRGB(w1,h1)=(r1,g1,b1);基于所述坐标映射关系,得到:
[0028] w1=nax*u+nbx*v+ncx*w;
[0029] h1=nay*u+nby*v+ncy*w;
[0030] 进而得到变形后的坐标(w1,h1)的像素为:
[0031] nowRGB(w1,h1)=RGB(oax*u+obx*v+ocx*w,oay*u+oby*v+ocy*w);
[0032] 其中o和n均表示坐标系数;
[0033] 所述非人脸区域过渡规则具体为:
[0034] 外层网格圈的位置偏移量=相邻内层网格圈的位置偏移量*0.9。
[0035] 另一方面,本发明提供了一种二维人脸图片变形系统,包括如下模块:
[0036] 初始化模块,用于获取待处理的二维人脸图片以及三维人脸模型,将所述三维人脸模型转换为由三角形组成的人脸区域二维网格后,叠加于所述二维人脸图片的上方;
[0037] 坐标映射关系计算模块,用于选取所述二维人脸图片与人脸区域二维网格一一对应的30个特征点,并基于30个所述特征点计算得到二维人脸图片与人脸区域二维网格的坐标映射关系;
[0038] 非人脸区域二维网格创建模块,用于基于所述人脸区域二维网格创建一非人脸区域二维网格;
[0039] 人脸区域变形模块,用于基于所述人脸区域二维网格以及坐标映射关系对二维人脸图片的像素点进行像素映射,生成变形后的人脸区域图片;
[0040] 变形图片生成模块,用于设定一非人脸区域过渡规则,基于所述非人脸区域二维网格、非人脸区域过渡规则以及坐标映射关系对二维人脸图片的像素点进行像素映射,生成变形后的非人脸区域图片,将所述人脸区域图片以及非人脸区域图片叠加生成变形后的人脸图片。
[0041] 进一步地,还包括:
[0042] 图片叠加模块,用于获取叠加图片,将所述叠加图片转换为由三角形组成的叠加区域二维网格后,与所述二维人脸图片进行叠加,并利用所述坐标映射关系以及叠加区域二维网格将位于下层图片的像素点进行像素映射到上层图片,生成叠加后的人脸图片。
[0043] 进一步地,所述坐标映射关系计算模块具体为:
[0044] 基于人脸轮廓选取所述二维人脸图片与人脸区域二维网格一一对应的30个特征点,获取30个所述特征点的二维坐标以及三维坐标,将30个所述特征点的二维坐标以及三维坐标带入如下公式:
[0045] uv=pos*modelview*projectview*viewport;
[0046] 求解得到modelview、projectview以及viewport;其中uv表示二维坐标;pos表示三维坐标;modelview表示旋转矩阵;projectview表示缩放矩阵;viewport表示视图矩阵;
[0047] 设所述二维人脸图片左上方顶点的二维坐标为(0,0),所述二维人脸图片上任意一个像素点的二维坐标为uvp(x2,y2),像素点所在所述人脸区域二维网格的三角形的三维坐标为a(ax3,ay3),b(bx3,by3),c(cx3,cy3);
[0048] 基于质心坐标公式求解uvp(x2,y2)、a(ax3,ay3),b(bx3,by3),c(cx3,cy3)、modelview、projectview以及viewport,得到所述二维人脸图片与人脸区域二维网格的坐标映射关系:
[0049] x2=ax3*u+bx3*v+cx3*w;
[0050] y2=ay3*u+by3*v+cy3*w;
[0051] 其中u、v、w表示计算过程变量,且u+v+w=1;a、b、c表示坐标系数;x2表示二维人脸图片的横坐标;y2表示二维人脸图片的纵坐标;x3表示人脸区域二维网格的横坐标;y3表示人脸区域二维网格的纵坐标。
[0052] 进一步地,所述非人脸区域二维网格创建模块具体为:
[0053] 以所述人脸区域二维网格的外边缘为中心,从内至外设置15个由三角形组成的网格圈,各网格圈的宽度均为1个三角形,进而生成非人脸区域二维网格。
[0054] 进一步地,所述像素映射具体为:
[0055] 设所述二维人脸图片坐标为(w,h)的像素为RGB(w,h)=(r,g,b),映射前的三角形网格点为origpos(ox,oy),映射后的三角形网格点为nowpos(nx,ny);
[0056] 设点(w,h)变形后的坐标为(w1,h1),像素为nowRGB(w1,h1)=(r1,g1,b1);基于所述坐标映射关系,得到:
[0057] w1=nax*u+nbx*v+ncx*w;
[0058] h1=nay*u+nby*v+ncy*w;
[0059] 进而得到变形后的坐标(w1,h1)的像素为:
[0060] nowRGB(w1,h1)=RGB(oax*u+obx*v+ocx*w,oay*u+oby*v+ocy*w);
[0061] 其中o和n均表示坐标系数;
[0062] 所述非人脸区域过渡规则具体为:
[0063] 外层网格圈的位置偏移量=相邻内层网格圈的位置偏移量*0.9。
[0064] 本发明的优点在于:
[0065] 1、通过选取二维人脸图片与三维人脸模型的人脸区域二维网格一一对应的30个特征点,基于质心坐标公式和特征点的坐标求解得到二维人脸图片与三维人脸模型的坐标映射关系,进而利用坐标映射关系以及三维人脸模型对二维人脸图片进行变形,使得二维人脸图片的变形完全参照三维人脸模型,若要变换不同的脸型仅需替换不同的三维人脸模型即可,相对于传统上通过机器学习存在遍历不完全的情况,极大的提升了人脸图片变形的灵活性,极大的提升了最终生成图片的显示效果。
[0066] 2、通过基于人脸区域二维网格创建一非人脸区域二维网格,并设定非人脸区域过渡规则,即将人脸区域和非人脸区域按照不同策略进行变形,极大的提升了人脸区域和非人脸区域过渡的平滑性,极大的提升了最终生成图片的显示效果。

附图说明

[0067] 下面参照附图结合实施例对本发明作进一步的说明。
[0068] 图1是本发明一种二维人脸图片变形方法的流程图。
[0069] 图2是本发明一种二维人脸图片变形系统的结构示意图。
[0070] 图3是本发明人脸区域二维网格叠加于二维人脸图片的示意图。
[0071] 图4是本发明非人脸区域二维网格叠加于二维人脸图片的示意图。
[0072] 图5是本发明人脸变形示意图。
[0073] 图6是本发明图片叠加示意图。
[0074] 图7是本发明图片叠加效果图。

具体实施方式

[0075] 本申请实施例中的技术方案,总体思路如下:通过求取二维人脸图片与三维人脸模型的坐标映射关系,进而利用坐标映射关系对二维人脸图片的像素点进行像素映射,即重新采点,以提升人脸图片变形的灵活性和显示效果;通过设定非人脸区域过渡规则,将人脸区域和非人脸区域按照不同策略进行变形,以提升人脸区域和非人脸区域过渡的平滑性。
[0076] 请参照图1至图7所示,本发明一种二维人脸图片变形方法的较佳实施例,包括如下步骤:
[0077] 步骤S10、获取待处理的二维人脸图片以及三维人脸模型,将所述三维人脸模型转换为由三角形组成的人脸区域二维网格后,叠加于所述二维人脸图片的上方;所述三维人脸模型即二维人脸图片变形的参考对象;
[0078] 步骤S20、选取所述二维人脸图片与人脸区域二维网格一一对应的30个特征点,并基于30个所述特征点计算得到二维人脸图片与人脸区域二维网格的坐标映射关系;所述特征点即坐标点,基于人脸轮廓的明显特征进行选取,例如脸颊边缘、眼角、鼻子、嘴巴等;
[0079] 步骤S30、基于所述人脸区域二维网格创建一非人脸区域二维网格,便于对人脸区域和非人脸区域采用不同的变形策略,提升变形的过渡自然性;
[0080] 步骤S40、基于所述人脸区域二维网格以及坐标映射关系对二维人脸图片的像素点进行像素映射,生成变形后的人脸区域图片;即对像素点进行重新采点;
[0081] 步骤S50、设定一非人脸区域过渡规则,基于所述非人脸区域二维网格、非人脸区域过渡规则以及坐标映射关系对二维人脸图片的像素点进行像素映射,生成变形后的非人脸区域图片,将所述人脸区域图片以及非人脸区域图片叠加生成变形后的人脸图片。
[0082] 若要变换不同的脸型仅需替换不同的所述三维人脸模型即可,实现做出不同表情、旋转、叠加图片等变形,当替换不同的所述三维人脸模型时,所述非人脸区域二维网格也会跟随着发生变化。
[0083] 还包括:
[0084] 步骤S60、获取叠加图片,将所述叠加图片转换为由三角形组成的叠加区域二维网格后,与所述二维人脸图片进行叠加,并利用所述坐标映射关系以及叠加区域二维网格将位于下层图片的像素点进行像素映射到上层图片,生成叠加后的人脸图片。例如要在人脸图片上叠加牙齿图片,则将牙齿图片设为上层图片,将人脸图片设为下层图片,而叠加顺序是依据3D模型的深度值来确定的。
[0085] 由于视频是由若干帧图片组合而成的,本发明也可应用于视频里人脸的变形以及图片叠加。
[0086] 所述步骤S20具体为:
[0087] 基于人脸轮廓选取所述二维人脸图片与人脸区域二维网格一一对应的30个特征点,获取30个所述特征点的二维坐标以及三维坐标,将30个所述特征点的二维坐标以及三维坐标带入如下公式:
[0088] uv=pos*modelview*projectview*viewport;
[0089] 求解得到modelview、projectview以及viewport;其中uv表示二维坐标;pos表示三维坐标;modelview表示旋转矩阵;projectview表示缩放矩阵;viewport表示视图矩阵;
[0090] 设所述二维人脸图片左上方顶点的二维坐标为(0,0),所述二维人脸图片上任意一个像素点的二维坐标为uvp(x2,y2),像素点所在所述人脸区域二维网格的三角形的三维坐标为a(ax3,ay3),b(bx3,by3),c(cx3,cy3);
[0091] 基于质心坐标公式求解uvp(x2,y2)、a(ax3,ay3),b(bx3,by3),c(cx3,cy3)、[0092] modelview、projectview以及viewport,得到所述二维人脸图片与人脸区域二维网格的坐标映射关系:
[0093] x2=ax3*u+bx3*v+cx3*w;
[0094] y2=ay3*u+by3*v+cy3*w;
[0095] 其中u、v、w表示计算过程变量,且u+v+w=1;a、b、c表示坐标系数;x2表示二维人脸图片的横坐标;y2表示二维人脸图片的纵坐标;x3表示人脸区域二维网格的横坐标;y3表示人脸区域二维网格的纵坐标。质心坐标是指在几何结构中,图形中的点相对各顶点的位置。以三角形为例,三角形内的点都可以由一个矩阵表示,这个矩阵和三角形各顶点有关。
[0096] 所述步骤S30具体为:
[0097] 以所述人脸区域二维网格的外边缘为中心,从内至外设置15个由三角形组成的网格圈,各网格圈的宽度均为1个三角形,进而生成非人脸区域二维网格。
[0098] 所述像素映射具体为:
[0099] 设所述二维人脸图片坐标为(w,h)的像素为RGB(w,h)=(r,g,b),映射前的三角形网格点为origpos(ox,oy),映射后的三角形网格点为nowpos(nx,ny);
[0100] 设点(w,h)变形后的坐标为(w1,h1),像素为nowRGB(w1,h1)=(r1,g1,b1);基于所述坐标映射关系,得到:
[0101] w1=nax*u+nbx*v+ncx*w;
[0102] h1=nay*u+nby*v+ncy*w;
[0103] 进而得到变形后的坐标(w1,h1)的像素为:
[0104] nowRGB(w1,h1)=RGB(oax*u+obx*v+ocx*w,oay*u+oby*v+ocy*w);
[0105] 其中o和n均表示坐标系数;
[0106] 所述非人脸区域过渡规则具体为:
[0107] 外层网格圈的位置偏移量=相邻内层网格圈的位置偏移量*0.9。所述非人脸区域过渡规则达到的效果是离人脸区域越远,偏移量越小,即变形越小,以达到平滑过渡的效果。
[0108] 本发明一种二维人脸图片变形系统的较佳实施例,包括如下模块:
[0109] 初始化模块,用于获取待处理的二维人脸图片以及三维人脸模型,将所述三维人脸模型转换为由三角形组成的人脸区域二维网格后,叠加于所述二维人脸图片的上方;所述三维人脸模型即二维人脸图片变形的参考对象;
[0110] 坐标映射关系计算模块,用于选取所述二维人脸图片与人脸区域二维网格一一对应的30个特征点,并基于30个所述特征点计算得到二维人脸图片与人脸区域二维网格的坐标映射关系;所述特征点即坐标点,基于人脸轮廓的明显特征进行选取,例如脸颊边缘、眼角、鼻子、嘴巴等;
[0111] 非人脸区域二维网格创建模块,用于基于所述人脸区域二维网格创建一非人脸区域二维网格,便于对人脸区域和非人脸区域采用不同的变形策略,提升变形的过渡自然性;
[0112] 人脸区域变形模块,用于基于所述人脸区域二维网格以及坐标映射关系对二维人脸图片的像素点进行像素映射,生成变形后的人脸区域图片;即对像素点进行重新采点;
[0113] 变形图片生成模块,用于设定一非人脸区域过渡规则,基于所述非人脸区域二维网格、非人脸区域过渡规则以及坐标映射关系对二维人脸图片的像素点进行像素映射,生成变形后的非人脸区域图片,将所述人脸区域图片以及非人脸区域图片叠加生成变形后的人脸图片。
[0114] 若要变换不同的脸型仅需替换不同的所述三维人脸模型即可,实现做出不同表情、旋转、叠加图片等变形,当替换不同的所述三维人脸模型时,所述非人脸区域二维网格也会跟随着发生变化。
[0115] 还包括:
[0116] 图片叠加模块,用于获取叠加图片,将所述叠加图片转换为由三角形组成的叠加区域二维网格后,与所述二维人脸图片进行叠加,并利用所述坐标映射关系以及叠加区域二维网格将位于下层图片的像素点进行像素映射到上层图片,生成叠加后的人脸图片。例如要在人脸图片上叠加牙齿图片,则将牙齿图片设为上层图片,将人脸图片设为下层图片,而叠加顺序是依据3D模型的深度值来确定的。
[0117] 由于视频是由若干帧图片组合而成的,本发明也可应用于视频里人脸的变形以及图片叠加。
[0118] 所述坐标映射关系计算模块具体为:
[0119] 基于人脸轮廓选取所述二维人脸图片与人脸区域二维网格一一对应的30个特征点,获取30个所述特征点的二维坐标以及三维坐标,将30个所述特征点的二维坐标以及三维坐标带入如下公式:
[0120] uv=pos*modelview*projectview*viewport;
[0121] 求解得到modelview、projectview以及viewport;其中uv表示二维坐标;pos表示三维坐标;modelview表示旋转矩阵;projectview表示缩放矩阵;viewport表示视图矩阵;
[0122] 设所述二维人脸图片左上方顶点的二维坐标为(0,0),所述二维人脸图片上任意一个像素点的二维坐标为uvp(x2,y2),像素点所在所述人脸区域二维网格的三角形的三维坐标为a(ax3,ay3),b(bx3,by3),c(cx3,cy3);
[0123] 基于质心坐标公式求解uvp(x2,y2)、a(ax3,ay3),b(bx3,by3),c(cx3,cy3)、modelview、projectview以及viewport,得到所述二维人脸图片与人脸区域二维网格的坐标映射关系:
[0124] x2=ax3*u+bx3*v+cx3*w;
[0125] y2=ay3*u+by3*v+cy3*w;
[0126] 其中u、v、w表示计算过程变量,且u+v+w=1;a、b、c表示坐标系数;x2表示二维人脸图片的横坐标;y2表示二维人脸图片的纵坐标;x3表示人脸区域二维网格的横坐标;y3表示人脸区域二维网格的纵坐标。质心坐标是指在几何结构中,图形中的点相对各顶点的位置。以三角形为例,三角形内的点都可以由一个矩阵表示,这个矩阵和三角形各顶点有关。
[0127] 所述非人脸区域二维网格创建模块具体为:
[0128] 以所述人脸区域二维网格的外边缘为中心,从内至外设置15个由三角形组成的网格圈,各网格圈的宽度均为1个三角形,进而生成非人脸区域二维网格。
[0129] 所述像素映射具体为:
[0130] 设所述二维人脸图片坐标为(w,h)的像素为RGB(w,h)=(r,g,b),映射前的三角形网格点为origpos(ox,oy),映射后的三角形网格点为nowpos(nx,ny);
[0131] 设点(w,h)变形后的坐标为(w1,h1),像素为nowRGB(w1,h1)=(r1,g1,b1);基于所述坐标映射关系,得到:
[0132] w1=nax*u+nbx*v+ncx*w;
[0133] h1=nay*u+nby*v+ncy*w;
[0134] 进而得到变形后的坐标(w1,h1)的像素为:
[0135] nowRGB(w1,h1)=RGB(oax*u+obx*v+ocx*w,oay*u+oby*v+ocy*w);
[0136] 其中o和n均表示坐标系数;
[0137] 所述非人脸区域过渡规则具体为:
[0138] 外层网格圈的位置偏移量=相邻内层网格圈的位置偏移量*0.9。所述非人脸区域过渡规则达到的效果是离人脸区域越远,偏移量越小,即变形越小,以达到平滑过渡的效果。
[0139] 综上所述,本发明的优点在于:
[0140] 1、通过选取二维人脸图片与三维人脸模型的人脸区域二维网格一一对应的30个特征点,基于质心坐标公式和特征点的坐标求解得到二维人脸图片与三维人脸模型的坐标映射关系,进而利用坐标映射关系以及三维人脸模型对二维人脸图片进行变形,使得二维人脸图片的变形完全参照三维人脸模型,若要变换不同的脸型仅需替换不同的三维人脸模型即可,相对于传统上通过机器学习存在遍历不完全的情况,极大的提升了人脸图片变形的灵活性,极大的提升了最终生成图片的显示效果。
[0141] 2、通过基于人脸区域二维网格创建一非人脸区域二维网格,并设定非人脸区域过渡规则,即将人脸区域和非人脸区域按照不同策略进行变形,极大的提升了人脸区域和非人脸区域过渡的平滑性,极大的提升了最终生成图片的显示效果。
[0142] 虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。