710官方网站1.用具有保边效果的滤波算法对图像进行模糊管理,笔者到时以为可牛印象的富含肤质量保证留效果的磨皮越发自然

     在一九七五年Lee公布的舆论《Lee Filter
Digital Image Enhancement and Noise Filtering by Use of Local
Statistics》中,提议了依附局地音讯去除加性噪音、乘性噪音及加性乘性混合噪音的方法,经过周到的学习和编码,开掘其去除加性噪音的法子效果非常好,具有当今有的EPF算法类似的边缘保留作用,而且其运算并不复杂,能够利用到临近于磨皮那系列型中。

   
 在几年前写的一篇关于BEEP的篇章时,小编早已说过Beep的去噪作用可以用来磨皮,何况付诸了结论BEEP比可牛和美图等的功能要进一步好,以后看来,那多少个结论真的是太为夸张和固定了。差别的人的审美观分裂,同一个人在差异有的时候候段审美观也集会场全部差别,以往总的来讲,笔者到时感觉可牛影象的带有肤质量保证留效果的磨皮尤其自然,也愈发符合实际的情形。

710官方网站 1

   
 简单的算法描述如下,对于一幅N*M大小灰度图像,用710官方网站 2表示(i,j)地方处的像素值,那么在(2*n+1)*(2*m+1)窗口内部的部分平均值及部分均方差可代表为:

   
 在下贰个月里,又随机的百度了下PS的磨皮教程,看到了累累的已经看过的事例,也观察了一些立刻反对的篇章。在那之中就总结http://www.missyuan.com/thread-468975-1-1.html此间讲的流水生产线,因为观望其第二步为:

现行反革命各大手提式有线话机创设商都在首荐美颜作用,各样前后2000万像素,照亮你的美,各样逆光也清晰。其实那么些类似神秘的美颜功用,除了凭仗于手机像素之外,更关键的是工程师们对于美颜算法的构造。除了那个手提式有线电话机承包商,各大拍照软件举个例子B612,faceu也决然会有美颜效能,紧随其后的是各大直播平台,未有美颜功用,网上红人都不愿意去平台直播啦~

               
  710官方网站 3

     2、用插件磨皮

那正是说这个美颜算法很难啊?独有大腕们能化解吗?答案是,很难。好的美颜算法确实很难,供给经过广大算法程序员的优化,重构,经过客户的陶冶,不断进步而成。不过,作者要说的是,若是各位有意思味,轻松的美颜算法依然OK的,稍微懂点图像管理的要么得以坚实时美颜功用,下边大家就聊一聊什么来进行美颜功用的落到实处。

       及

       
这一步很要紧,间接影响最后效果,磨光一些,不要操心纹理。

美颜差十分少上得以分为两块:美白和磨皮。假如玩过Photoshop的都晓得其实美颜其实便是四大步:1.用具备保边效果的滤波算法对图像实行模糊管理。2.用肤色检查测试算法保护非皮肤区域。3.将模糊后的图像和原图进行图像融合。4.对融入后的图像举办锐化管理。

           
 710官方网站 4

       
平湖教育工我只怕用的NeatImage,小编那边运用的是Portraiture,
把红框内的滑块都拉到最大。

对于步骤1,滤波算法能够选用两头滤波,导向滤波,表面模糊等,只要能保边缘就行,有些许人会说高斯模糊是十分的,但实际只做美白是足以的,高斯模糊不可能落到实处磨皮效果。借使单单使用高斯模糊来磨皮,得到的意义是缺憾的。原因在于,高斯模糊只考虑了像素间的偏离关系,没有思量到像素值本人之间的距离。举例来讲,头发与人脸分界处(颜色差别相当大,白色与人肌肤的颜料),要是使用高斯模糊则那个边缘也会搅乱掉,那明明不是咱们盼望见到的。而彼此滤波(Bilateral
Filter)
则思虑到了颜色的差别,它的像素点取值也是常见像素点的加权平均,何况权重也是高斯函数。分化的是,那个权重不独有与像素间距离有关,还与像素值本人的差异有关,具体讲是,像素值差距越小,权重越大,也是其一天性让它富有了维持边缘的特征,由此它是一个很好的磨皮工具。这里以两岸滤波为例。抽取银白通道,对深翠绿通道举办高斯模糊,得到模糊后的值sampleColor。再用原图白色通道值减去sampleColor,加上0.5(即128),那五个步骤即PS中的高反差保留。

       加性去噪后的结果为:

     
当时和煦从不NeatImage,也未安装Portraiture,所以对这一个课程就不感觉然了。

  vec3 centralColor = texture2D(inputImageTexture, textureCoordinate).rgb;      
  float highpass = centralColor.g - sampleColor + 0.5; 

         
 710官方网站 5

   
 当自个儿重新浏览此教程时,终于耐下心自身考试了下,
即使小编要么尚未安装NeatImage和Portraiture,不过足以一直用PS自带的表面模糊来代替,就算效用会迥然不一样,不过却不影响算法的为主职能。事实再一次证惠氏个真理:外人讲一千遍好,不及自个儿都贰回感受深。

再对上述结果值进行3-5次白内障管理,此步骤能够使得噪声越发优良

   其中:

   
 那么这几个课程的二个最重大的职能就是磨皮的同一时候保留了肤质,很左近于可牛影象的效用,而屡次的施行申明,可牛软件百分之百也是利用了类似的进程。

  if(color <= 0.5){  
     color = color * color * 2.0;  
  }else{  
     color = 1.0 - ((1.0 - color)*(1.0 - color) * 2.0);  
}  

             
  710官方网站 6

   
 大家把十二分教程的简便操作步骤列表如下:

诸有此类经过那么些手续获得如下图片:

     
 式(4)中σ为客商输入的参数。

  1、复制贰个图层,大家定义改层名叫HighPass

710官方网站 7

     
 正是如此个大约的进度,能平滑图像但同期保险边缘基本不受影响,比方下图的结果:

     2、用插件对HighPass层磨皮;

总括原图的灰度值,公式为0.299R + 0.587G +
0.114*B获得灰度图片之后,将灰度值作为阈值,用来撤废非皮肤部分,依照灰度值总计,将原图与结果图合成。

 

   
 3、应用图像,方式选拔减去,缩放值为1,偏差128;

  float alpha = pow(lumance, 0.333333);  
  vec3 smoothColor = centralColor + (centralColor-    vec3(highpass))*alpha*0.1;  

710官方网站 8

   
 4、改动HighPass层混合情势为线性光,不发光度合适取值。

原图rgb值与高反差后的结果比较,噪声越大,两个相减后的结果越大,在原结果基础上增添一定值,来抓牢亮度,消除噪声。

       

   
 5、对HighPass层实行高斯模糊,模糊半径0.5-2左右。

pow函数中第叁个参数可调(一半~1),值越小,阿尔法越大,磨皮效果越刚毅,修改该值可看做美颜程度。

   
  这么些优秀的灵魂让其能在图像磨皮方面发挥一定的机能。

  基本就这么收工了,就像并未有啥样高深复杂的东西。

并对混合后结果扩张亮度,调治饱和度等参数获得终极图:

     
在来会见那些算法的频率怎么着。由地方的总括公式能够看到,其关键的总计量是一对均值以及均布均方差,均值的乘除优化措施相当多,标准的比方说累计积分图。而至于均布均方差的优化,推荐大家看这里:http://fiji.sc/Integral_Image_Filters,其大旨的推翻公式为:

 
 至于效果:大家用几幅实际的图像来测验下(第二步用外表模糊来取代)。

710官方网站 9

  

 
 710官方网站 10 
  710官方网站 11   
 710官方网站 12

笔者们得以看下原图和美颜后的图相比较:

               
  710官方网站 13

              
 原图                          去斑须要的纹路图                结果图(表面模糊参数半径=10,阈值=16)

710官方网站 14

        which expands to

 
 710官方网站 15   710官方网站 16  
 710官方网站 17   

下图为原图,上海体育场面为磨皮效果暗示图

                   
 710官方网站 18

       
             原图                                        去斑必要的纹理图                          结果图(表面模糊参数半径=10,阈值=50)

上述正是最简便的美白磨皮效果达成啊。

                               
  710官方网站 19

     
为了程序的兑现,我们对各类步骤都进展相应的解析,为便于,大家只要原始图像层为Src层。

拓幻科学技术的美颜算法也是经进程序员和算法程序猿们的无休止优化才变得作用庞大的,最简单易行的美颜分明不可能满意商业客商的必要,大家的美颜算法提供的是高阶美白,磨皮效果,让普通手机也能照亮你的美,痘痘去无踪。除了这一个之外,大家的美颜还提供粉嫩效果,让我们的肌肤变得水嫩粉扑,吹弹可破哦~接待大家在应用程式Store寻找“TiFancy”看大家demo,也迎接大家关心我们的微信公众号:拓幻科学技术,能够留言,大家也会定时抽出幸运客官送出精美礼品哦~

                               
  710官方网站 20

      (1)复制图层:
这几个没啥好说的,无非是分配一个一致大小的内部存款和储蓄器,然后memcpy 函数复制
Src到HighPass层。

                               
 710官方网站 21

          HighPass=
Copy(Src);

                               
 710官方网站 22

     
(2)对HighPass层磨皮:那些算法可以挑选:表面模糊、导向滤波、双边滤波、各向异性扩散、BEEP、局地均方差、Domain
transfer、 Adaptive Manifolds、 Local Laplacian
Filters等别的具有保边效果的EPF-Filter,这里十分少说。

                               
 710官方网站 23

         表明式为:  HighPass =
EPF-Filter(HighPass);

                               
 710官方网站 24

     
(3)应用图像:这里的分界面看起来就像是很复杂,那代码是否很复杂呢,其实代码轻巧的吓人,正是上边的总结公式:

                             
  710官方网站 25

        HihgPass = HighPass – Src

       Both sums can be generated from
two Integral Images
over 710官方网站 26 and 710官方网站 27 respectively.

  • 128;

      
经过如此的推理,可以看出有个别均方差也能够因此累计积分图飞快完结,那样的结果是程序的效能和一部分的半径参数非亲非故,因而,功效非常高。

           
看上去这些公式是还是不是很熟练,不错,那一个和高反差保留的算法是大同小异的,只是Photoshop内嵌的高反差保留用的是高斯模糊,这里用的是EPF滤波器而已。

     
 笔者个人在这些的功底上,从编码角度更是开展了优化,对于一幅30W(500*600)像素的彩色图像处理时间约为20ms(I3的记录簿CPU)。

       (4)
从编程角度来讲,要把上述进程的第四步和第五步沟通顺序,不然会获得错误的结果,由此这里第四步是:

 

       HighPass =
GuassBlur(HighPass, Radius);

     
 上述公式是对准灰度图像举行的,对于常见的EnclaveGB彩色图,只要对LAND/G/B三通路分别打开管理就OK了。

    个中Radius为高斯模糊的半径。

 

        (5) 举行图层混合:
线性光混合的总括公式也很轻便:

     
 有了上述基础,经过个人的追寻,对于磨皮应用,那些算法的三个参数(1)半径可取:max(Src->Width,
Src->Height) * 0.02, 顾客输入的σ可取10 + DenoiseLevel *
DenoiseLevel * 5,在那之中DenoiseLevel
为磨皮的程度参数,范围从1到10,越大磨皮越厉害。

     假定多个相邻图层X和Y,X在尘世,Y在下边,X与Y混合,则X是本色,Y是混合色,X与Y混合得到的水彩是结果色Z,对于线性光混合方式,其总计公式为:

        

          Z = X + 2 * Y –
256;    (原先以为是  – 255,后用PS CS6验证是 – 256)

     
 正如笔者在文章《 一种具备细节保留功用的磨皮算法 》中提议的等同,磨皮算法必要思考眼睛头发等非肤色部位不被过度管理,一种简易的管理格局正是用非常简便的水彩决断来调节是各种像素点是不是为须求管理的部位,例如本人在骨子里的拍卖中就差非常少用了之类的不二法门:

     不光滑度的计算公式就特别简单,假设Opacity表示Y的不发光度,则合成公式为:

           

           Z = (X * (100-
Opacity) + Y * Opacity ) / 100;

     for (Y = 0; Y < Height; Y++)
    {
        LinePS = Src->Data + Y * Src->WidthStep;
        LinePD = Skin->Data + Y * Skin->WidthStep;
        for (X = 0; X < Width; X++)
        {
            if (LinePS[0] >20 && LinePS[1] > 40 && LinePS[2] > 50)  //    皮肤识别有很多算法,但没有一个能完美的包含所有的皮肤区域,我认为宁愿多处理一些非皮肤                                                                           区域,也比少处理更合理些
                LinePD[X] = 255;                                    //    为什么取这些数据,我只能告诉这些数据是前人的一些经验没有什么数学公式来推导和证明的
            LinePS += 3;            
        }
    }                                                               //    以上处理得到的是硬边界,直接使用会到底结果图有较为明显的痕迹,因此可使用模糊平滑下

     那么五个综合在共同的总计公式为:

   
 为了让识别的区域界线不是特别生硬,须要对分辨区域扩充自然的拍卖,一般就是用羽化算法,标准的物化算法是高斯模糊,但是高斯模糊有浮点计算,一种代替方式就是用方框模糊来代表,实际上三种格局得到的结果在视觉上是从未有过太多的分裂的,可是方框模糊独有整数运算,效能上会高非常多。

          Z =  (X * (100-
Opacity) + (X + 2 * Y – 256)* Opacity ) / 100;

   
 那样的辨认管理后,把拍卖后图和原图举行Alpha混合,那样即保留了磨皮的细腻区域,又能保证头发等地方不被平滑掉。

     
综合上述三个步骤,最终的总计公式即为:

        for (Y = 0; Y < Height; Y++)
        {
            LinePS = Src->Data + Y * Src->WidthStep;
            LinePD = Dest->Data + Y * Dest->WidthStep;
            LinePM = Mask->Data + Y * Mask->WidthStep;
            for (X = 0; X < Width; X++)
            {
                Alpha = LinePM[0]; 
                if (Alpha != 255)
                {
                    InvertAlpha = 255 - Alpha;                                         //    AlphaBlend的混合过程,使用DIV255来提高速度
                    LinePD[0] = Div255(LinePD[0] * Alpha + LinePS[0] * InvertAlpha);    //  Blue分量
                    LinePD[1] = Div255(LinePD[1] * Alpha + LinePS[1] * InvertAlpha);    //    Green分量    
                    LinePD[2] = Div255(LinePD[2] * Alpha + LinePS[2] * InvertAlpha);    //    Red分量
                }
                LinePS += 3;                                                            //    移动到下一个像素,24位                
                LinePD += 3;
                LinePM++;                                                               //    移动到下一个Mask值
            }
        }

      Dest =(Src * (100 – Opacity) + (Src + 2 * GuassBlur(EPFFilter(Src) – Src + 128) – 256) * Opacity) /100
;

   
 在拍卖完了后,从视觉角度思量,全体图还是有一点点模糊,那个时候理应打开了适合的锐化来增加图像的一体化锐度,最合适的是USM锐化,不过USM锐化是依附高斯模糊的,因而又万分耗费时间,那个时候能够设想用最简答的圈子锐化格局来管理,例如借助上边包车型客车卷积矩阵,就会博取准确的视觉效果。

   
 总的来讲,这一个算法并从未什么样极度复杂的地点,其关键的出山小草皮肤材料的手续是第四步的高斯模糊,那几个模糊的半径一般越大,质地越强,可是太大,磨皮效果就从未了,因而,这里供给把握合适的度,一般半径在0.5-2之间相比适宜。

        -1   0    -1 

   
 至于为何用了这么些高斯模糊就足以还原图像的材料,小编实际也许有个别主张的,但是当下还不成熟,权且不管他,知道结果而不管缘由局地时候也是一种幸福。 

        0     8    0      /     4 

   
 再来讲说算法的参数难题呢,作为昨日应用程式上美颜必备的那个作用,各类应用软件都希望给客户展现出更加少的更傻瓜(智能)的参数,在本过程中,比如第二步,必然有过多可选的参数配置:要是接纳表面模糊,则须要规定半径及阈值;就算运用导向滤波,则相似也急需半径参数。咋样依照客户UI中的参数(比方磨皮程度)来规定相应的个中的参数,就要求针对各样分歧的滤波器来做往往的调节和测量试验和尝试,那一个并无定位的法规可遵从。 

       -1     0    -1

   
 再如第三步应用图像中常数128,其实也不自然是个定值,即使把他调大,则管理后的图像全部偏亮,调小则图像偏暗。

   
 思量到那个算法对各样像素的亮度值的退换实际不是非常大,对于彩色图像,假使能够转移到另外的包罗亮度分量的水彩空间后,只对亮度进行管理,然后在改变回来,应该对视觉的熏陶十分的小,那样去除颜色空间的转换时间,能够提升三倍的进程,是非常可观的,常见的盈盈亮度的颜料空间有LAB,HSV,YUV,YCbCr等,在那之中YCbCr和HighlanderGB的更改公式极其轻巧,未有浮点总结,对总体的功用影响相当小,因此能够选拔这些空间。

   
 第五步的图层的不折射率参数也是二个道理,要是不发光度值越大,则图片全部的星点大概会偏多,偏小,那么图像又会超负荷模糊,只怕取个八分之四是个科学的挑三拣四吧,大概本身依据拍卖的纹理图的某部目标做个算法越来越可以吗。

   
再者,经过实验,开掘也足以把锐化操作放在对亮度管理那步,并不是投身最终,那样,锐化操作也只须要管理多少个分占的额数,同样能升高效能。

   
 算法速度方面实际上主要取决于第二步,也正是EPF滤波器,那几个便是个各显神通的好地点,不多言。

    贴出小编管理的函数的流水生产线:

  其次就是高斯模糊的计量,高斯模糊必然有浮点总计,那对于手提式有线电话机等别的硬件,恐怕是个硬伤。而一旦用方框模糊可能线性模糊等代替,则设有三个难点就是张冠李戴的一丝一毫幅度即半径为1时,纹理苏醒的职能都有一些过,非常是在笔者的次第中,高斯模糊的臆度用了大致占了整整用时的53%.

/// <summary>
/// 实现图像的磨皮。
/// <param name="Src">需要处理的源图像的数据结构。</param>
/// <param name="Dest">需要处理的源图像的数据结构。</param>
/// <param name="DenoiseMethod">磨皮的算法,0为双边磨皮,1为均方差磨皮。</param>
/// <param name="DenoiseLevel">磨皮的程度,有效范围[1,10],数据越大,磨皮越明显。</param>
/// <param name="WhiteMethod">美白的算法,0为Log曲线美白,1为色彩平衡磨皮。</param>
/// <param name="NonSkinLevel">美白的程度,有效范围[1,10],数据越大,美白越明显。</param>
///    <remarks>原图、目标图必须都是24位的。</remarks>
IS_RET __stdcall SkinBeautification(TMatrix *Src, TMatrix *Dest, int DenoiseLevel, int WhiteMethod, int WhiteLevel)
{
    if (Src == NULL || Dest == NULL) return IS_RET_ERR_NULLREFERENCE;
    if (Src->Data == NULL || Dest->Data == NULL) return IS_RET_ERR_NULLREFERENCE;
    if (Src->Width != Dest->Width || Src->Height != Dest->Height || Src->Channel != Dest->Channel || Src->Depth != Dest->Depth) return IS_RET_ERR_PARAMISMATCH;
    if (Src->Channel != 3) return IS_RET_ERR_NOTSUPPORTED;
    if ((DenoiseLevel < 1 || DenoiseLevel > 10)) return IS_RET_ERR_ARGUMENTOUTOFRANGE;
    if ((WhiteMethod != 0 && WhiteMethod != 1) || (WhiteLevel < 1 || WhiteLevel > 10)) return IS_RET_ERR_ARGUMENTOUTOFRANGE;

    IS_RET Ret = IS_RET_OK;

    TMatrix *Skin = NULL, *Y = NULL, *Cb = NULL, *Cr = NULL, *YY = NULL;
    unsigned char *Table = (unsigned char *)IS_AllocMemory(256, true);        
    Ret = IS_CreateMatrix(Src->Width, Src->Height, Src->Depth, 1, &Skin);                //    分配皮肤区域的内存
    if (Ret != IS_RET_OK) goto Done;

    Ret = IS_CreateMatrix(Src->Width, Src->Height, Src->Depth, 1, &Y);
    if (Ret != IS_RET_OK) goto Done;

    Ret = IS_CreateMatrix(Src->Width, Src->Height, Src->Depth, 1, &Cb);
    if (Ret != IS_RET_OK) goto Done;

    Ret = IS_CreateMatrix(Src->Width, Src->Height, Src->Depth, 1, &Cr);
    if (Ret != IS_RET_OK) goto Done;

    Ret = IS_CreateMatrix(Src->Width, Src->Height, Src->Depth, 1, &YY);
    if (Ret != IS_RET_OK) goto Done;

    Ret = RGBToYCbCr(Src, Y, Cb, Cr);                                                             // 第一步: 将RGB转换到YCbCr空间
    if (Ret != IS_RET_OK) goto Done;

    int SpaceError = 10 + DenoiseLevel * DenoiseLevel * 5;

    Ret = LeeAdditvieNoiseFilter(Y, YY, max(Src->Width, Src->Height) * 0.02, SpaceError);        //    第二步:对Y分量进行加性噪音的去除
    if (Ret != IS_RET_OK)  goto Done;

    Ret = Sharpen(YY, YY);                                                                       //    第三步:对处理后的Y分量进行锐化
    if (Ret != IS_RET_OK)  goto Done;

    YCbCrToRGB(YY, Cb, Cr, Dest);                                                                //    第四步:将图像从YCbCr空间转换会RGB空间

    if (WhiteMethod == 0)
    {
        for (int V = 0; V < 256; V++)
        {
            //  Table[V] = .........
        }
    }
    else if (WhiteMethod == 1)
    {
        for(int V = 0; V < 256; V++)
        {
            //  Table[V] = ............
        }
    }

    Ret = Curve(Dest, Dest, Table, Table, Table);                              //    第五步:在RGB空间对磨皮后的图进行美白处理
    if (Ret != IS_RET_OK)  goto Done;

    Ret = GetRawSkinRegion(Src, Skin);                                         //    第六步:分析图像大概的皮肤区域
    if (Ret != IS_RET_OK)  goto Done;

    Ret = BlendImageWithMask(Src, Dest, Skin);                                 //    第七步:对全局磨皮、美白后的图和原始图按照属于皮肤区域的程度进行混合
    if (Ret != IS_RET_OK)  goto Done;

Done:;
    IS_FreeMatrix(&Skin);                                                      //    注意释放内存
    IS_FreeMatrix(&Y);
    IS_FreeMatrix(&Cb);
    IS_FreeMatrix(&Cr);
    IS_FreeMatrix(&YY);
    IS_FreeMemory(Table);
    return IS_RET_OK;
}

   
 假使看下那么些的流水生产线,能够以为美图里的别样一个磨皮算法都只是开展了该流程的第二步就归西了,就算她在增添后续的管理,也决然能有和可牛类似的功能。

   第五步的美白管理要是身处对亮度分量的管理进程中,图像全体会有所偏色,就好像有一种肤色红润的功力,可是对有的图像会感到颜色不自然。

   
 最后鄙视下可牛和美图程序的磨皮算法的速度吗(小编指的是PC上前后相继的快慢):

     
各部分耗费时间比例见下图,测量试验图像大小是500*600。

   
 作者用的依据局地均方差的磨皮方式外加锐化等进度的耗费时间针对地点第二幅所谓的仙人平均耗费时间约
35ms(基于表面模糊),25ms(基于均方差);

序号

函数名

用时(ms)

百分比(%)

备注

1

RGBToYCbCr

2

10

 

2

LeeAdditvieNoiseFilter

7

35

 

3

Sharpen

2

10

 

4

YCbCrToRGB

2

10

 

5

Curve

1

5

 

6

GetRawSkinRegion

4

20

 

7

BlendImageWithMask

2

10

 

8

合计

20

100

 

   
 而可牛大概美图作者猜想认为了,至少要有1000ms左右。

 

  那么看似的PS教程比方此处:http://www.psjia.com/photoshop/photops/2012/0106/3891.html 的弹指间几个经过算法其实也相当粗略,并且也负有一定不错的职能,而假诺从完结上思虑也就如若一下多少个经过:

 

Invert(Src, Dest);
HighPass(Dest, Dest, 10);
GuassBlur(Dest, Dest, 1);
BlendImage(Src, Dest, Dest, BlendMode::Overlay, 255);

 

  最后大家来比较下可牛、美图、本文的管理作用:

       

  710官方网站 28  710官方网站 29

      

                  原图                                   美图秀秀的智能模糊
程度深

 

  710官方网站 30 
 710官方网站 31

 

            可牛的磨皮
力度5                                   本文的磨皮效果

       

 
 能够看到,本文的效能和可牛的万分左近,能够注脚可牛也应用的该算法。

 

   
 附上叁个遵照所谓平湖法的流水生产线的做的贰个测验程序:   仿可牛磨皮特效.rar

 

710官方网站 32

 

 

 

710官方网站 33

 

 

 

****************************作者:
laviewpbt   时间: 2014.8.6    联系QQ:  33184777
转发请保留本行音讯**********************

     

 

 

    各个作用相比较如下:

710官方网站 34 
      710官方网站 35

                                         
      原图                                
                                    磨皮后的图

710官方网站 36 
      710官方网站 37

                                 
删除第三步后的图                                                        
                                                     
 删除第六第七步后的图

 

  这一个算法最大的独到之处是百分百进度的别的函数都尚未浮点总计,那对于有个别硬件来讲是很关键的,不过贰个破绽是优化后的算法不可能相互,在自家的I3笔记本Computer上30W的像素处理时间20ms,完全能完成实时效果。

   
 风野趣的意中人可依照本人的叙说本人完毕,测验程序: 火速磨皮

     可调参数如下分界面所示:

710官方网站 38

 

710官方网站 39

 

 

****************************小编:
laviewpbt   时间: 二零一六.7.27    联系QQ:  33184777
转发请保留本行音讯**********************

 

相关文章