一种人脸高光及粗糙度重建方法

文档序号:32300501发布日期:2022-11-23 08:10阅读:95来源:国知局
一种人脸高光及粗糙度重建方法

1.本发明涉及计算机图形学中的人脸材质重建领域,尤其涉及一种使用优化方法进行人脸材质重建的方法。


背景技术:

2.人脸材质重建在虚拟现实、数字娱乐等领域有广泛的需求。但是目前并没有全自动的可以通过正确性实验测试的人脸高光及粗糙度参数的重建方法。
3.目前通用的人脸材质求解方法虽然可以重建出符合人的直觉,但是其算法重建出的结果不能反映真实的人脸材质,现有重建方法不能通过synthetic实验测试(即用该材质渲染出的图片做目标图片进行材质重建不能重建出渲染所用的材质图),并且从渲染结果中可以感受到重建结果与真实人脸材质的较大差异。这些局限性是由于加入了过多的平均材质约束和平滑性约束所导致的。


技术实现要素:

4.本发明的目的在于针对现有技术的不足,提供一种人脸高光及粗糙度重建方法。
5.本发明的目的是通过以下技术方案来实现的:一种人脸高光及粗糙度重建方法,包括以下步骤:
6.(1)采集数据:采集环境由偏振光源以及6台单反相机组成,偏振光源以及6台单反相机分布在以被采集者为本中心的半圆上;其中,偏振光源的获取方式是在探照灯上蒙上一层偏振膜;6台单反相机中,4台相机的镜头前加平行于探照灯偏振膜的偏振片,另外2台不加;调整各个相机的延迟参数使得各个相机在同一时刻捕获被采集者不同角度的图像;
7.(2)重建漫反射贴图:该步骤使用的损失函数如式(1),其中albedo为漫反射贴图参数,函数f(albedo)表示兰伯特brdf渲染公式,img是目标图片,将渲染图片与目标图片的差作为优化时的能量:
8.e(albedo)=|f(albedo)-img|
ꢀꢀ
(1)
9.(3)求解高光与粗糙度的均值:本步骤有两种状态:
10.第一种状态是第一次执行本步骤时,人脸尚未被分块,求均值时的损失函数如式(2)所示:
[0011][0012]
其中为该区域的粗糙度均值,为该区域的高光均值,img是目标图片对应区域值,f表示用粗糙度和高光参数渲染出来的图片;
[0013]
第二种状态为不是第一次执行本步骤,人脸已经被分块分过了,求解分块后各子区域的均值:将本区域的上一次执行本步骤时所属区域的均值作为约束,求解本区域算法的高光与粗糙度均值;损失函数如式(3)、(4)、(5)、(6)所示;损失函数由三部分组成,第一部分能量e1是渲染图片与目标图片的差值,其中为该区域的粗糙度均值,
为该区域的高光均值,img是目标图片,f表示cook-torrance bsdf渲染函数;第二部分能量e2是该区域粗糙度与该区域所属的上一级区域的粗糙度的差值;第三部分能量e3是该区域高光与该区域所属的上一级区域的高光的差值;
[0014]
e=e1+0.1
×
e2+0.1
×
e3
ꢀꢀ
(3)
[0015][0016][0017][0018]
(4)对人脸进行分块:获取图像区域的坐标值之后,对这些坐标点建立索引,将分类属性添加到索引对应空间并且进行标准化、归一化;之后乘上每一个属性的分类权重;最后将每一块通过kmeans函数分成更小的类并且将本类坐标点的索引记录下来;在人脸分块算法之前,需要将所有的属性标准化和归一化,本发明采用的标准化和归一化算法如式(7)和(8)所示,其中mean(x)为数组x的均值,var(x)为数组x的方差,min(x),max(x)分别为数组的最小最大值;数据首先用式3处理,然后用式4处理,使数据均匀分布在[0,1]闭区间内;
[0019][0020][0021]
人脸分块算法采用kmeans聚类算法,以人脸几何形状表面的三维法向向量值和图片空间的二维坐标值作为聚类参数,如式(9),其中normalr,normalg,normalb表示的是储存在法向向量图三个通道中的三个维度的法向向量值,x,y是该点在图像空间中的坐标,errr,errg,err表示的是该点储存在上一次重建误差色温图三个通道中的值,normalr0,normalg0,normalb0表示的是聚类中心点储存在法向向量图三个通道中的三个维度的法向向量值x0,y0是聚类中心点在图像空间中的坐标,errr0,errg0,err0表示的是聚类中心点储存在上一次重建误差色温图三个通道中的值;这样的分类使得人面部属性相似的点被分在一类中;
[0022][0023]
(5)重复步骤(3)和(4),直到最后被分出的区域足够小,小于400像素则停止;
[0024]
(6)用人脸分块算法与人脸均值求解算法求得的解做约束,通过优化算法逐像素求解高光材质贴图与漫反射材质贴图,损失函数如式(10)、(11)、(12)和(13)所示;损失函数由三部分组成,第一部分能量e1是渲染图片与目标图片的差值,其中roughness为该像素点的粗糙度值,specular为该像素点的高光值,img是目标图片对应像素值,f表示用粗糙度和高光参数渲染出来的图片;第二部分能量e2是该像素粗糙度值roughness与该像素所属区域的粗糙度均值roughness0的差值;第三部分能量e3是该像素高光值specular与该像素所属区域的高光均值specular0的差值:
[0025]
e=e1+0.1
×
e2+0.1
×
e3
ꢀꢀ
(10)
[0026]
e1(roughness,specular)=|f(roughness,specular)-img|
ꢀꢀ
(11)
[0027]
e2(roughness)=|roughness-roughness0|
ꢀꢀ
(12)
[0028]
e3(specular)=|specular-specular0|
ꢀꢀ
(13)。
[0029]
本发明的有益效果是,本发明使用低成本的消费者级的硬件设备,通过先求区域均值,再该区域均值作为约束求该区域内逐像素值的方法,解决了人脸高光及粗糙度重建时的欠约束难题难题。本方法的重建过程不用加入平均材质约束和平滑性约束,本重建方法可以通过synthetic实验测试(即用该材质渲染出的图片做目标图片进行材质重建能重建出渲染所用的材质图),证明了重建结果的正确性,渲染结果中可以感受到重建结果可以反映重建用户的真实人脸材质,重建图片与真实图片的误差较原有方法有较大下降。
附图说明
[0030]
图1为逆向渲染流程图;
[0031]
图2为人脸分块流程图;
[0032]
图3为实施例中尚未被分块的人脸示意图;
[0033]
图4为实施例中被分块后的人脸示意图;
[0034]
图5为实施例中应用本发明的方法处理后的人脸示意图。
具体实施方式
[0035]
下面结合附图以及具体实施方式对本发明做进一步说明。
[0036]
本发明的大体流程为,先通过目标图片与几何模型重建出材质贴图,然后再同时优化高光和粗糙度贴图。接下来开始详细阐述本发明的具体流程。
[0037]
第一步:采集数据
[0038]
在进行人脸高感光及粗糙度重建之前,首先需要采集被重建者的照片。本文的照片采集环境由偏振光源以及6台单反相机组成,偏振光源以及6台单反相机分布在以被采集者为本中心的半圆上。其中,偏振光源的获取方式是在探照灯上蒙上一层偏振膜。6台单反相机中,4台相机的镜头前加平行于探照灯偏振膜的偏振片,另外2台不加。这么做的目的是消除镜面反射,使得在重建漫反射贴图时能够去除有粗糙度和高光属性造成的影响,使粗糙度和高光造成的效果不会影响到漫反射贴图。这样可以更加精确地重建漫反射贴图、高光贴图和粗糙度贴图。在采集时,应注意调整各个相机的延迟参数使得各个相机能够在同一时刻捕获被采集者不同角度的图像。在采集时,还应注意室内没有其他光源以保证室内光源基本为偏振光。
[0039]
第二步:重建漫反射贴图
[0040]
通过目标图片与几何模型运用优化算法重建出漫反射贴图,该步骤使用的损失函数如式(1),其中albedo为漫反射贴图参数,函数f表示兰伯特brdf渲染公式,img是目标图片。本文将渲染图片与目标图片的差作为优化时的能量。
[0041]
e(albedo)=|f(albedo)-img|
ꢀꢀ
(1)
[0042]
第三步:求解高光与粗糙度的均值
[0043]
在相关变量初始化之后,考虑显存限制,将图片分割成片分别进行逆向渲染。逆向渲染的过程是用正向渲染图片与目标图片的差作损失函数,算出梯度。如果有外加约束,获取约束部分的梯度。将两部分梯度叠加之后根据梯度和步长更新目标参数。上述过程在损
失函数收敛时停止。
[0044]
本步骤有两种状态:
[0045]
第一种状态是第一次执行本步骤时,如图3所示人脸尚未被分块。注意这里的分块并不是考虑显存限制所分的片,而是由分块算法所分的块。第一次执行本步骤时,求均值时的损失函数如式(2)所示。其中为该区域的粗糙度均值,为该区域的高光均值,img是目标图片,f表示cook-torrance bsdf渲染函数。
[0046][0047]
其中为该区域的粗糙度均值,为该区域的高光均值,img是目标图片对应区域值,f表示用粗糙度和高光参数渲染出来的图片。
[0048]
第二种状态即不是第一次执行本步骤,人脸已经被第四步人脸分块分过了,如图4所示。在求区域内子区域的均值时,本算法会将本区域的上一次执行本步骤时所属区域的均值作为约束,求解本区域算法的高光与粗糙度均值。损失函数如式3,4,5,6所示。损失函数由三部分组成,第一部分能量e1是渲染图片与目标图片的差值,其中为该区域的粗糙度均值,为该区域的高光均值,img是目标图片,f表示cook-torrance bsdf渲染函数。第二部分能量e2是该区域粗糙度与该区域所属的上一级区域的粗糙度的差值。第三部分能量e3是该区域高光与该区域所属的上一级区域的高光的差值。
[0049]
e=e1+0.1
×
e2+0.1
×
e3
ꢀꢀ
(3)
[0050][0051][0052][0053]
第四步:对人脸进行分块
[0054]
获取图像区域的坐标值之后,对这些坐标点建立索引,将分类属性添加到索引对应空间并且进行标准化、归一化。之后乘上每一个属性的分类权重。最后将每一块通过kmeans函数分成更小的类并且将本类坐标点的索引记录下来。
[0055]
在人脸分块算法之前,需要将所有的属性标准化和归一化,本发明采用的标准化和归一化算法如式(7)和(8)所示,其中mean(x)为数组x的均值,var(x)为数组x的方差,min(x),max(x)分别为数组的最小最大值。数据首先用式3处理,然后用式4处理,使数据均匀分布在[0,1]闭区间内。
[0056][0057][0058]
人脸分块算法采用kmeans聚类算法,以人脸几何形状表面的三维法向向量值和图片空间的二维坐标值作为聚类参数,如式(9),其中normalr,normalg,normalb表示的是储存在法向向量图三个通道中的三个维度的法向向量值,x,y是该点在图像空间中的坐标,errr,errg,err表示的是该点储存在上一次重建误差色温图三个通道中的值,normalr0,
normalg0,normalb0表示的是聚类中心点储存在法向向量图三个通道中的三个维度的法向向量值x0,y0是聚类中心点在图像空间中的坐标,errr0,errg0,err0表示的是聚类中心点储存在上一次重建误差色温图三个通道中的值。这样的分类使得人面部属性相似的点被分在一类中。
[0059][0060]
重复第三步与第四步,直到最后被分出的区域足够小,小于400像素则停止。
[0061]
最后,用人脸分块算法与人脸均值求解算法求得的解做约束,通过优化算法逐像素求解高光材质贴图与漫反射材质贴图,结果如图5所示。损失函数如式(10)、(11)、(12)和(13)所示。损失函数由三部分组成,第一部分能量e1是渲染图片与目标图片的差值,其中roughness为该像素点的粗糙度值,specular为该像素点的高光值,img是目标图片对应像素值,f表示用粗糙度和高光参数渲染出来的图片。第二部分能量e2是该像素粗糙度值roughness与该像素所属区域的粗糙度均值roughness0的差值。第三部分能量e3是该像素高光值specular与该像素所属区域的高光均值specular0的差值:
[0062]
e=e1+0.1
×
e2+0.1
×
e3
ꢀꢀꢀ
(10)
[0063]
e1(roughness,specular)=|f(roughness,specular)-img| (11)
[0064]
e2(roughness)=|roughness-roughness0|
ꢀꢀꢀ
(12)
[0065]
e3(specular)=|specular-specular0|
ꢀꢀ
(13)。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1