怎么给照片加眼镜(二):3D眼镜模型合成法

上一篇:怎么给照片加眼镜(一):UV空间融合法
一、背景
上节我们使用UV空间融合法给人脸图像戴上了各类眼镜。但是也指明了该方法存在明显的缺陷,即:人脸yaw角度稍大时眼镜像是涂在皮肤上一样,缺乏立体感。现实中眼镜在侧脸时会伸出去一部分。
本节我们着重介绍第二种眼镜合成的方法:3D模型生成法。
在这里插入图片描述
二、3D模型生成法
该方法有几类实现方式,我们主要参考[1]中实现方法。
其示意图如下:
在这里插入图片描述
如上,
首先需要对2维人脸进行3维重建,比如基于3DMM fitting[2,3,4],我们采用PRnet[5,6]的方法完成三维重建。

然后我们从free3D等网站上下载免费的3D眼镜模型。该类模型通常为.obj或者3dmax等形式,我们选择含.obj文件格式的眼镜模型,obj文件格式可自行查阅资料解析。

接下来我们需要估计每一个3D眼镜模型相对3D重建人脸的位置关系。该估计的方法是在3D眼睛模型和3D人脸上选取一些anchor点,然后计算一个三维映射关系,包括:缩放、旋转、平移,该估计过程可描述为:
在这里插入图片描述
其中Pr为正交投影矩阵,pg为3D眼镜上的anchor点,pf为3D重构人脸的anchor点,R为3x3旋转矩阵,旋转角度由pitch、yaw、roll决定,t3d为平移向量。
笔者理解的话Pr应该是不需要的,因为这是两个三维点集的映射,不存在投影变换的问题,可以简化为三维相似变换。可参见我的另一篇博文3D点集之间计算转移矩阵,旋转R,转移T,新增缩放s (总结全面) 中的求解方式。
该问题总共包含1(缩放)+3(旋转)+3(平移)共7个自由度,每个点对的x,y,z坐标可构成3个方程,故最少需要3对点进行求解。我们选取3d眼镜上的4个anchor点,即左右耳朵,鼻梁处上下两点。

然后将合成后的3D眼镜人脸模型render到2维平面。

最后将render后的戴眼镜人脸与原图背景混合,得到最终的效果。

细心的读者也许注意到了上图中我们将戴眼镜的3D人脸在yaw方向上做了一定角度的旋转,再render出不同视角的戴眼镜人脸。

对于正脸人脸,UV空间合成法和3D眼镜模型合成法差别不大。左图为UV空间合成法,右图为3D眼镜合成法。
在这里插入图片描述
对于侧脸人脸,3D眼镜模型合成图像更立体感,更真实。
在这里插入图片描述
我们选取了7副眼镜,合成效果如下:
在这里插入图片描述
UV空间合成法效果
在这里插入图片描述
3D模型合成法效果(眼镜颜色数据增强)
在这里插入图片描述
三、总结
3D模型生成法效果基本可以接近真实图片效果,但是仍然存在以下待改进方向:
(1) 眼镜玻璃片的效果,反光效果,材质相关等方面的渲染暂未实现,因此显得不够逼真,尤其眼镜反光在现实中非常常见。
(2)本文中所使用的render效果还欠佳,尤其是侧脸时,内侧眼镜框看着比外侧眼镜框还大,比例上有点不协调。
(3) 该方法眼镜多样性受限于3D眼镜模型素材,虽然采用颜色数据增强的方式生成了均匀各色眼镜,但是与真实眼镜色彩还是存在较大差距。

参考文献:
[1] Guo J , Zhu X , Lei Z , et al. Face Synthesis for Eyeglass-Robust Face Recognition[J]. 2018.
[2] Zhu X, Lei Z, Yan J, Yi D, Li SZ: High-fidelity pose and expression normalization for face recognition in the wild. CVPR (2016)
[3] Guo J, Zhu X, Lei Z: 3DDFA. https://github.com/cleardusk/3DDFA (2018)
[4] Guo J, Zhu X, Yang Y, Yang F, Lei Z, Li SZ: Towards Fast, Accurate and Stable 3D Dense Face Alignment. ECCV (2020)
[5]https://github.com/YadiraF/PRNet
[6] Feng Y , Wu F , Shao X , et al. Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network[J]. arXiv, 2018.
[7]https://github.com/YadiraF/face3d

声明:本文中图片素材来源于公开人脸数据集celebA 和 ms1m,若有侵权,请告知删除。

获取更多该方法技术细节,可以
欢迎关注微信公众号 opencv520,获取CV前沿动态
在这里插入图片描述
opencv520专注于机器视觉领域知识,包括但不限于:相机成像、双摄全景深度相机、图像处理、相机标定、双目视觉、3D视觉、3维重建、机器学习、深度学习、人脸检测识别、GAN、自动驾驶、智能驾舱、机器人等领域。分享基础知识,传递前沿动态。

上一篇:怎么给照片加眼镜(一):UV空间融合法

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值