人像美妆效果实现(贴纸) |
您所在的位置:网站首页 › 人脸的贴纸 › 人像美妆效果实现(贴纸) |
一、贴纸美妆
人像美妆效果的实现方式有很多种,其中贴纸美妆是最常见也是应用最广泛的一种实现方式。它有实现简单、素材可移植和可复用性高等优点,是目前众多美颜美妆相关的App中应用最多的美妆实现方式。 它有点像我们玩的贴在脸上或手臂上的的纹身贴纸,原理类似:![]() ![]() 一般来说,在进行美妆效果之前,都需要进行人脸检测,得到人脸部位的若干人脸点。(这一步一般在渲染之前就已经完成,由人脸SDK完成)。目前主流人脸检测都是基于深度学习算法,各大厂自研或使用第三方算法,如商汤等。 人脸检测点位例子:![]() OpenGL是基于三角形进行绘制图像的,在绘制贴纸的时候,可以将人脸的区域划分成若干个三角形,然后将贴纸绘制在这些三角形当中。 将这些离散的零散的点位,按照一定规则划分成不重叠的三角形,这叫“三角剖分算法”。三角剖分算法有很多。可以参考:三角剖分算法 三角剖分后的人脸三角形:![]() 使用贴纸美妆时,需要先定义一个标准模特的人脸网格(一般使用标准模特图进行人脸检测即可)。设计师在Photoshop或其他工具制作贴纸时,需要在标准人脸网格下进行设计。在实际绘制时,将实际人脸点与标准人脸点一一匹配对应进行绘制,就能将贴纸按照网格绘制到人脸上。 在绘制的时候,可以选择不同的叠加方式进行绘制。 原图:![]() ![]() ![]() 经过上述方案,已经可以实现基础贴纸美妆效果。但是这种方案只能一次性输出全脸的妆容贴纸,当有不同部位的妆容需要分别应用时,每个妆容部位都需要一个完整的大妆容贴纸(例如需要分别应用口红、腮红、眼瞳、眼影4种效果,就需要4个全脸贴纸),这将造成极大的内存消耗和性能浪费。因为一张贴纸图片,可能90%以上是无效的部分: ![]() 按照上图的有效部分和无效部分,如果可以只裁剪出来红框的有效部分,那么有以下几个优点: 1.贴纸素材包大小可以大大降低。1000×1000的图片大小为4Mb,100×100的图片大小仅为40kb2.程序运行时,内存占用降低3.渲染绘制速度变快,不需要再每一帧绘制大图 裁剪优化需要在标准人脸点位中,也对照裁剪出各个部位的三角网格,每个部位都用小网格进行绘制: ![]() 在4.1优化后的基础上,可以再进行更进一步的优化。 4.1方案优化后,如果有N个部位的贴图,那么就需要进行N次绘制。事实上这N次绘制可以合并成一次绘制,大大节省性能浪费,可以提升渲染速度和实时渲染的帧率。 绘制网格合并可以将不同部位的网格拼接起来,在单次渲染中按照顺序依次绘制。 效果图:![]() ![]() ![]() |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |