我个人一向对磨皮类算法不抱有兴趣,初衷还是美化自然场景,所以看官若是对人像美化感兴趣的,可以看人在旅途的博客。
先前对磨皮印象不过是用一种保边滤波器平滑处理一下,但见旅途这段时间做的工作都是磨皮,索性看一下。方法也很简单,就一个公式,我用matlab测试了一下,确实很有效果。
Dest=(Src∗(100−Opacity)+(Src+2∗GuassBlur(EPFFilter(Src)−Src+128)−256)∗Opacity)/100
这里EPFFilter是一个保边滤波器,双边滤波,导向滤波,域变换滤波器都可以。
至于为什么可以会有这样的效果。旅途说,也无需明白背后有什么道理。嗯,我挺赞同的。
就是一个公式,直接编码就可以了。
I= double(imread('1.jpg'));
H = RF(I,30,100) - I + 128;
G = imfilter(H,fspecial('gaussian',[3 3],100));
opacity = 50;
Dest = (I*(100 - opacity)+(I+2*G-256)*opacity)/100;
imshow([uint8(I) uint8(Dest)]);
这里,我用的是递归域变换滤波器 RF 。加上前面的读取图像还有最后的显示图像才只有6行代码。对了,最好设置一个程序接口,因为需要调节相关参数才能达到最好效果的。
效果(依次为输入,磨皮,磨皮美白)
更多阅读
简单探讨可牛影像软件中具有肤质保留功能的磨皮算法及其实现细节,人在旅途
Licenses
作者 | 日期 | 联系方式 |
---|---|---|
风吹夏天 | 2015年8月14日 | wincoder#qq.com |