- 论坛徽章:
- 59
|
(一)各类美颜算法的基础技术是什么,是图像、是视频、还是AI?
“美颜”是一个深度学习+图像处理+图形学的技术。“美颜”牵涉到这些技术包括:人脸检测、人脸关键点定位、瘦脸、磨皮、美白等。其中,人脸检测、人脸关键点定位是用深度学习技术来做的;而瘦脸、磨皮和美白就牵涉到计算机图形学里的技术,使用OpenGL,Metal来对检测到的人脸进行渲染。所以从技术大伽的解释中我们不难看出,美颜算法的基础应该 是图像图形学还有深度学习(AI)等。主要涉及人脸检测、人脸关键点、瘦脸、磨皮与美白等关键点。
(2)如何通过算法实现抖音视频中抖动、闪白、霓虹、时光倒流、视频反复、慢动作?
颜色偏移+微弱的放大效果,代码如下:
- precision highp float;
- uniform sampler2D Texture;
- varying vec2 TextureCoordsVarying;
- //传入的纹理时间
- uniform float Time;
- void main (void) {
-
- //周期
- float duration = 0.7;
- //放大的最大比例
- float maxScale = 1.1;
- //颜色偏移值
- float offset = 0.02;
-
- //当前时间在整个周期中的进度,在0~1
- float progress = mod(Time, duration) / duration; // 0~1
- //具体的偏移量
- vec2 offsetCoords = vec2(offset, offset) * progress;
- //图层放大缩小的比例
- float scale = 1.0 + (maxScale - 1.0) * progress;
-
- //获取缩放之后实际纹理坐标
- vec2 ScaleTextureCoords = vec2(0.5, 0.5) + (TextureCoordsVarying - vec2(0.5, 0.5)) / scale;
-
- //设置缩放之后的纹理坐标和经过具体的颜色偏移坐标
- //三组分别代表RGB不同方向的纹理像素值
- vec4 maskR = texture2D(Texture, ScaleTextureCoords + offsetCoords);
- vec4 maskB = texture2D(Texture, ScaleTextureCoords - offsetCoords);
- vec4 mask = texture2D(Texture, ScaleTextureCoords);
-
- //根据不同的纹理坐标值得到经过颜色偏移之后的颜色
- gl_FragColor = vec4(maskR.r, mask.g, maskB.b, mask.a);
- }
复制代码
添加白色图层,白色图层的透明度随着时间变化;添加白色图层还是比较简单的,看代码实现- precision highp float;
- uniform sampler2D Texture;
- varying vec2 TextureCoordsVarying;
- uniform float Time;
- const float PI = 3.1415926;
- void main (void) {
-
- float duration = 0.6;
- float time = mod(Time, duration);
- //这部分其实是添加了一个白色的纹理像素值,透明度为1.0
- vec4 whiteMask = vec4(1.0, 1.0, 1.0, 1.0);
- float amplitude = abs(sin(time * (PI / duration)));
- vec4 mask = texture2D(Texture, TextureCoordsVarying);
- //纹理像素的混合公式进行混合
- gl_FragColor = mask * (1.0 - amplitude) + whiteMask * amplitude;
- }
复制代码
(3)国际上通用的视频美颜或美图类先进技术有哪些?国内和国际上的通用技术有区别吗?
1)跨平台。我们的业务场景涵盖了移动端和PC端。为了提高开发效率,我们要把平台无关的逻辑抽象成公共组件,例如渲染管线、后处理算法等,实现一份代码,多端共用。
2)可扩展。跨平台解决了横向的平台差异问题,而可扩展就是解决业务迭代的纵向问题。我们将渲染逻辑分解成一个一个的小“零件”,业务方可以像搭积木一样自由组合这些“零件”,而算法同学也可以很容易的造“零件”。这样业务迭代就简化成了简单的加减法,效率大大提升。
3)高性能。音视频渲染,尤其是视频渲染,是很耗费计算资源的。在端侧有限的计算资源前提下,还要能实现快速、高质量的渲染效果,就需要我们厘清渲染链路中的每个环节,剔除冗余逻辑,实现高效渲染。 |
评分
-
查看全部评分
|