数据驱动的3D人头重建
文中提出的框架可以通过一张图片重建出3D人头模型。图片首先通过卷积神经网络把图片进行分割,使用Gabor滤波器提取头发方向。之后,以标志点为约束求解FLAME面参数化模型。利用人脸图像的高频信息对细节进行增强,并利用反照率参数化模型对纹理进行补充。最后,建立了条状网格毛发数据库,并利用该数据库和图像中提取的信息,对图像中的头发进行了重建
头部重建是人体重建中较为困难的。本文主要有以下几点贡献:
- 提出一种简单快速的细节增强方法,并将增强后的细节作为法线贴图应用到人头模型,达到实时渲染的目的。
- 建立了FLAME网格的反照率参数化模型,对人头纹理进行了补充。
- 建立了一个头发-面部图像分割的数据库,并使用全卷积网络从图像中分割出头发与面部区域。
- 从发型数据集生成的条状网格数据库是实时渲染的关键。
文中提出方法的处理管线图
给定一幅图像首先将其分割成头发、面部以及背景区域,计算毛发方向图并检测面部标志点;接着将FLAME面部参数模型与检测到的特征点进行匹配,得到一个粗糙的人脸网格。为捕捉更多细节使用了Z-buffer技术。文章还通过回归参数反照率模型的PCA系数,来生成完整的纹理贴图。
在头发重建阶段,通过计算多视角方向图,将头发模型数据库离线转换为网格。然后给定图像中的方向图可以从分割出的头发区域计算。通过将图像方向图与3D模型方向图进行匹配,最终可以找到3D头发网格模型。
面部与头发分割
使用全卷积网络进行学习、分类,得到分割后的图像。
面部重建
在FLAME网格上手动添加68个特征点(上图b)。把FLAME模型的3D特征点投影到2D,并尽可能接近原始图像中提取的特征点(上图a),以得到初始网格模型(上图c)
FLAME网格模型与原始图像的匹配能量可以写成
Elank=k=1∑68∥Π(RMk+t)−Uk∥+γ1(wβTβ)2+γ2(wθTθ)2+γ3(wψTψ)2(1)
假设相机是沿z轴方向的弱透视投影,Π=[α00α00]
其中β,θ,ψ分别表示300维的形状向量、6维的姿态向量和100维的表达式参数向量,面部模型可以唯一的被这三个变量所确定。Mk=Wvk(β,θ,ψ)∈R3和Uk∈R2分别是3D特征点和对应图像上的2D特征点。wβ,wθ,wψ分别是β,θ,ψ的权重。t∈R3,r∈R3×3分别是平移向量,旋转矩阵。
使用坐标下降法通过改变β,θ,ψ,Π,R,t,最小化式(1)直至收敛得到上图c的结果。
由于FLAME分辨率低,表达褶皱和波纹有一定困难。于是文中对FLAME做出了修改。从原始的图片中基于特征裁剪和均匀缩放生成一张512*512的图像,使用z-buff光栅化算法获得高度场曲面。由于面积细节是图像中的高频分量,那么可以在高频分量的指导下移动网格顶点。
为获得高频分量。可用顶点对图像进行采样,得到c(vi)=(r(vi),g(vi),b(vi)),并计算强度fI(vi)=0.299r(vi)+0.587g(vi)+0.114b(vi),实际上是我们所表示网格上的标量场。而低频分量为fl(M)=(I−λL)−1fI(M)。可通过去除低频分量获得高频分量fh(M)=fI(M)−fl(M)
在顶点向高频分向移动的过程中,为保证相邻顶点的一致性,顶点的移动距离取1-ring neighbors的平均值(不太理解是啥,是周边顶点距离的平均值?)
d(v)=W1u∈N(v)∑w(∥u−v∥)(1−∥u−v∥∣(v−u)⋅n(v)∣)(fh(v)−fh(u))
其中,w(x)=2(rx)3−3(rx)2+1;0≤x<r
v移动后的位置通过v′=v+d(v)n(v)计算得到。完成移动后进行拉普拉斯平滑得到一个具有几何细节的网格
(a)输入图像;(b)初始FLAME网格;©细化FLAME网格;(d)提取出的高度网格;(e)细节增强结果;(f)计算的法线贴图;(g)通过法线贴图和纹理的渲染结果
整个过程如上图所示。根据含有与原图相一致的几何细节的模型(上图e),计算原始FLAME网格的法线贴图,结果如上图f。最终使用FLAME网格实时渲染细节,如上图g。
FLAME网格的完整纹理贴图
首先将FLAME参数化到平面区域(如下图a),然后将FLAME网格与BFM(巴塞尔人脸模型)网格对齐,得到无组织的纹理如下图b,通过光栅化算法渲染成纹理贴图(如下图c)。对于渲染纹理出现的瑕疵使用PULL-FILL算法修复(如下图d),最终给FLAME网格贴上纹理如下图e
在给FLAME贴反照率纹理时,首先使用FLAME反照率参数化模型计算反照率系数
β~ρmin(i,j)∈Av∑∣Av∣∥∥∥Iij−Iijρ(βρ)∥∥∥+wrk=1∑∣β~ρ∣σpckβ~ρk(2)
Av是带颜色的像素区域,Iρ(βρ)是对应像素的反照率;第二项是正则项,wr是权重。解出式(2)中的βρ,则输入缺失的图像的完整区域反照率可以通过混合系数Iρ(βρ)得到,简记为Iρ。
假设面层材料为朗伯材料,并从照明方程中剔除镜面反射,得到了红色通道漫反射率的球谐展开式。
rij=Rijρn=0∑NM=−n∑nlnmαnYnm(ij)(3)
Rijρ是像素点(i,j)的红色反照值,lnm是球谐展开系数,是只与发现方向有关的常系数。由于文中只取第一三阶球谐函数就可以表示98%的能量,所以式(3)又可化简为
rij=RijρLY(nij)
其中L=[1,lx,ly,lz,lxy,lxz,lyz,lxy2,lz2]是照明系数向量,Y(nij)=[nx,ny,nz,nx,ny,nx,nz,ny,nz,nx2−nv2,3nz2−1]是仅与法向方向有关的函数。
为了求出光照与反照率可以解下面的最小化方程
l~,ρ~Rmin(i,j)∈Av∑(∥∥∥ρ~RL~Y(nij)−IijR∥∥∥2+wσR∥∥∥ρ~R−R~ijρ∥∥∥2)
解此方程先不考虑第二项,使用初始反照率Rijρ作为光照系数的初始值。然后固定光照系数去解ρ~R,由于这是个病态问题,所以把第二项当做常项,wσR设置为1。其他的通道可以用相同的方法去解。把求解出的反照率作为最终补充完整的表面纹理。
上图展示的是该过程的求解过程:(a)输入图像;(b)提取出的有空洞的纹理;(c)经过补全的纹理;(d)在光照条件下的渲染结果
这篇论文中还是有很多地方不是很理解,在纹理上许多基础的概念以及原理都不是了解,接下来打算在这方面做一些工作。