美颜特效SDK的工作原理,原相机如何实现视频实时美颜

简介: 美颜特效SDK的工作原理,原相机如何实现视频实时美颜

我们常吐槽手机(尤其是苹果)原相机丑,其实并不是原相机丑,是“耿直”,不对拍摄出的图片做出任何修饰,镜头怎么歪就怎么扭曲图像、不能自主实现左右翻转、没有磨皮效果且镜头高清,不给美白并对细节真实还原,照出你的全部缺点。如何解决该问题?给耿直的手机原相机加个美颜特效SDK,一切问题都能迎刃而解。

那么,美颜特效SDK的工作原理是怎么样的?

接触过UI或者有PS兴趣的朋友可能会理解的更快一些,这里简单讲一下在大名鼎鼎的PS中,通过后期对图片视频进行美颜的技术是如何实现的(是的,ps+pr能实现视频美颜吗,想不到吧)

以下是工作的具体步骤:

1、 磨皮

使用双边滤波/导向滤波/表面模糊等滤波算法模糊图像,这里要注意保边处理,避免人脸和背景同时被模糊造成边界不清。

以双边滤波为例。取出绿色通道,对绿色通道进行模糊,得到模糊后的值sampleColor。再用原图绿色通道值减去sampleColor,加上0.5(即128),这两个步骤即PS中的高反差保留。

vec3 centralColor = texture2D(inputImageTexture, textureCoordinate).rgb;

float highpass = centralColor.g - sampleColor + 0.5;

再对上述结果值进行3-5次强光处理,此步骤可以使得噪声更加突出

if(color <= 0.5){

color = color color 2.0;

}else{

color = 1.0 - ((1.0 - color)(1.0 - color) 2.0);

}

美颜特效SDK自动计算原图的灰度值,公式为0.299R + 0.587G + 0.114*B得到灰度图片之后,将灰度值作为阈值,用来排除非皮肤部分,根据灰度值计算,将原图与结果图合成。

float alpha = pow(lumance, 0.333333);

vec3 smoothColor = centralColor + (centralColor-vec3(highpass))alpha0.1;

接下来提高亮度,消除噪声

pow函数中第二个参数可调(1/3~1),值越小,alpha越大,磨皮效果越明显,修改该值可作为美颜程度。

并对混合后结果增加亮度,调整饱和度等参数得到最终图。

2、 美白

在美颜特效SDK对人脸进行美白时,要用肤色检测算法保护头发、眉毛等区域,仅提亮人脸皮肤部分的亮度,保护其他地方,这里会涉及到人脸分割、关键点识别和人脸检测等知识点。

3、 将模糊后的图像和原图进行图像融合并进行锐化处理。

手机原相机实现视频实时美颜的意义何在?

首先举几个反应快的案例:美图手机、VIVO和OPPO手机

然后举一个反应慢的案例:苹果手机

后者在手机系统上完爆前者五条街,但后者的相机在女性用户的喜爱程度上,被前者甩了五条街。前者如果没有美颜,根本不会成长为现在这个体量,后者如果有美颜,也许就不会失去一部分爱好原相机美颜的客户。

而原相机,说白了就是一个软件,给它接入个美颜特效SDK能有多难,连“直男手机”华为都加上了美颜。

扯远了,以上就是本篇文章全部内容,转载请注明原文出处及作者。

相关文章
|
3月前
|
监控 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
48 0
|
3月前
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Force IP强制修改网口IP功能(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Force IP强制修改网口IP功能(C++)
29 0
|
3月前
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用ForceIP强制修改网口IP功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用ForceIP强制修改网口IP功能(C#)
26 0
|
3月前
|
安全 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用短曝光功能(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用短曝光功能(C++)
40 0
|
3月前
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置软件触发模式(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置软件触发模式(C++)
31 0
|
3月前
|
存储 数据处理 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机的高速图像保存(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机的高速图像保存(C#)
39 0
|
3月前
|
存储 数据处理 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机的高速图像保存(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机的高速图像保存(C++)
41 0
|
3月前
|
编解码 监控 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C++)
45 0
|
3月前
|
监控 算法 开发工具
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现获取图像并对图像进行边缘检测(C#)
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现获取图像并对图像进行边缘检测(C#)
41 1
|
3月前
|
存储 数据处理 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机图像转换由Mono10转换为Mono8(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机图像转换由Mono10转换为Mono8(C++)
45 0