一种具有细节保留功能的磨皮算法,双指数边缘平滑滤波器用于磨皮算法的尝尝

  说起为啥会看到那一个东西,那还确确实实绕一圈。首先在写《Single
Image Haze Removal Using Dark Channel
Prior》一文中图像去雾算法的法则、完毕、效果及别的。
 一文时里面涉及了导向滤波,然后看何凯明的《Guided
Image
Filtering
》一文时又屡次关联双方滤波,结果作者就又把原先切磋的双面滤波的篇章翻出来看看,就再次翻到了Fast
O(1) bilateral filtering
using
 trigonometric
range
kernels
 一文,在舆论的第⑦页有如下那段文字:

     算法近年来翻新时间: 二零一五.7.19,
 效果详见:http://files.cnblogs.com/Imageshop/FaceBeautification.rar

      The Java source code can be
downloaded from the web at
http://bigwww.epfl.ch/algorithms/bilateral-filter

   
 话说女子的钱最好赚,所以未来各大流行的图像编辑小软件基本上都有个磨皮的职能,那对那多少个脸上不小心长了小痘痘可能小斑点的美眉来说是在上传照片前的必备和必须步骤。加上将来自恋的人特多,没事有事来个自拍,然后挂到网上炫一把,当然也得把自身的皮层处理好。
因而啊,国内出了许多那地方的软件,比如美图、可牛、美颜相机、雅观的女子相机、Camera360等进入了那些功用,当然还有为数不少小的手机软件业附带了此项目。

     
我试着打开这几个网页,结果遇上了CSDN常见的404谬误,然后想既然来了,就在这几个网站多看看,哇,原来那几个真是个好网站,有雅量的图像算法可以学学。一眼小编就见到了最左侧有1个Download
Algorithms项目,于是进去瞧瞧,并在浏览器里搜索bilateral,结果真的搜到了于有关bilateral的一个代码,如下所示:

     
不过在网络上找寻磨皮方面的算法时,能找到的有效的新闻是卓殊少的,估量那于该算法具有较大的实用和经济价值相关,本身经过一番切磋,也搞出了三个磨皮的效能,那里就能共享的有的技艺说来给有亟待的情侣听听。

     
BEEPS. This ImageJ plugin
smoothes an image without altering its edges. The smoothing is applied
by the way of a bi-exponential filter, itself realized by a pair of
one-tap recursions. It is therefore very fast; moreover, its
computational cost is truly independent of the amount of smoothing.
Meanwhile, the preservation of edges is obtained by a range filter akin
to the range filter found in a bilateral filter。

  ① 、磨皮算法的基本:
磨皮可以看做是去噪算法的行使。典型的去噪算法,比如均值模糊、高斯模糊、中值滤波都有很好的去噪效果,但是视觉效果太差。能有效的用于磨皮算法的去噪格局主假如那个可以边缘的算法,典型的例如双方滤波、Non-Local以及BM3D之类的。BM3D听他们说去噪效果最好。可是后两者到近来截至未见到有着精神意义的神速落成算法,反而是彼此滤波,有多篇杂谈已经提出了有效的加速方案。其实Photoshop中的表面模糊也足以看作是一种双边滤波,由此不少用PS磨皮的经过也大方施用了表面模糊算法的。

      开首一看,小编觉得是我对舆论又有了新了核查,于是下载代码,并试着将这几个插件安装到ImageJ中,运营后,效果和运作速度果然不错,不过,仔细看杂谈,确发现和上述的火速双边滤波不是两回事。

      二 、头发眼睛等细节地方的爱惜:
间接利用上述算法得到的结果,针对广大图像会并发头发和眼睛部位的混淆,那种效应对于三个好的磨皮结果来说是不须要的。尤其是双眼,眼睛是快人快语的窗口,被模糊了,窗口就不透明了。因而,须要检测出须求磨皮的有的。这么些很多少人会想到皮肤检测技能。然则自身试过了经典的七多种皮肤检测效果,都不或许将分歧景观的肤色部位全体领取出来。一种方式就是综合好两种肤色检测,取最大区域,那也是一种科学的想法,因为相似的肤色检测速度都是神速的。然则事实上的作用表面,那样做对于部分相比较极端的图像照旧没用的。由此,作者动用了一种宁愿错杀一千,也不足放过二个的措施,放松了某一种肤色检测模块里的有个别束缚原则,使得绝一大半景况下的肤色部分都可以被选中(鉴于有些方面的缘故,这几个不可详述)。

      好了,言归正文。BEEPS,是Bi-Exponential
Edge-Preserving
Smoother
 一文各字母的缩写,那篇小说里提到到了不少数学理论,比如Z变换等等,那么些笔者都差不离已经丢给助教了,但是没什么,那多少个验证工作是写随想的那些牛人们需求去做的行事。我们最关注的是算法的流程。
还万幸那篇随想中,算法的流程在算法的第3页就已经完全的来得了,
并且进度尤其容易,为幸免翻译错误,先间接贴原文:

   
 ③ 、边缘部分的同心协力:通过上述爱抚,得到的维护边缘处是硬边缘,即2个像素时要磨皮的一对,边上的或许就是不要求磨皮的,那样的话处理的机能在视觉会导致一定的执着,恐怕会有有些部分过度不自然,如下图所示(全部图片均源于自互联网):

    The first recursion is progressive.
Letting x[k] be the current sample of an input sequence x at location
k ∈ Z,were cursively compute the elements of an auxiliary sequence ϕ
as:

图片 1 图片 2 图片 3

           图片 4

     
     原图                             
硬边界磨皮                        
   软化后磨皮

    where:

     
一种缓解方案就是对获得的硬边界图举行羽化处理,约等于近乎高斯模糊之类的算法,那样边缘处就会过渡的较为自然。

                           
图片 5

   
④ 、处理后的升高:经过这么处理后的图像如若在开展一下面缘的增高,会得到更好的作用,比如在PS磨皮的结尾一般喜欢加个USM锐化。

The second recursion is regressive and very similar to thefirst one,
except for a reversal of the order in which the indices are traversed.
We recursively compute a second auxiliary sequence φ as:

 
根据上述思路,编程顺序,作者达成的磨皮效果如下所示:

             图片 6

  图片 7 图片 8 图片 9

    where:

  图片 10 图片 11 图片 12

                            图片 13

  图片 14 图片 15 图片 16

    We complete our algorithm by merging the resulting progressive
sequence ϕ and regressive sequence φ to produce the samples of the
output sequence y as:

  图片 17 图片 18 图片 19

                   图片 20

  图片 21 图片 22 图片 23

     We propose the trivial
choice:

 图片 24 图片 25 图片 26

                           图片 27

                      
原图                     
 本文的磨皮效果                      
 美图秀秀效果(智能磨皮,参数深)

    
小注:博客园团队提议小编用他们放到的公式编辑器输入公式,小编看要么算了吧,这个东西还亟需回忆一堆东西,不如直接贴图来的快又准确。

 
  由上述几图可以看到,在磨皮品质核心大概的气象,本文额磨皮的能尽恐怕的保留了头发和眼睛处的细节,那样更自然。

  对上述进度稍作解释:x[k]可以看作是早已离散后的输入数据,λ
∈[0,1)是2个用户输入的用来决定空域滤波的档次,r是2个双变量的函数,用于控制值域滤波周到,对于两者滤波,该函数可取经典的高斯分布函数,也得以取其他的函数。

   
在算法达成的快慢上,我利用了二种双边滤波,一种速度疾速,在PC上只要到场十六线程完全可以兑现平常视频头的实时磨皮,可是效果有一些弱点。其它一种速度稍慢,效果比较稳定。

    
上述进度就是三个简短的前向迭代和反向迭代,然后再按一定的规则去平均值的长河。由此总计卓殊不难。

     
二个演示可以从那边下载: http://files.cnblogs.com/Imageshop/FaceBeautification.rar

     
然而上述是个一维的长河,对于二维的图像数据,随想中也交给了化解办法,首先:对图像数据进行五次水平迭代总结,然后再对该数据开展垂直迭代总计,该进度称之为BEEPSHorizontalVertical。然后再对原始图像数据先举行垂直方向的迭代统计,在对该结果开展垂直方向的迭代计算,该进程称之为BEEPSVerticalHorizontal。最后的图像结果为(BEEPSHorizontalVertical+BEEPSVerticalHorizontal)/2;

图片 28

  比如上述公式1中最后反映在代码中只怕如下(progressive):

 图片 29

   for (int k = startIndex + 1, K = startIndex + length;(k < K); k++) 
  {
      mu = data[k] - rho * data[k - 1];
      mu = spatialContraDecay * exp(c * mu * mu);
      data[k] = data[k - 1] * mu + data[k] * (1.0 - mu) / rho;
  }

****************************笔者:
laviewpbt   时间: 二零一三.8.23    联系QQ:
 33184777转发请保留本行新闻********************

  
 式3的代码或者为(regressive):

for (int k = startIndex + length - 2; (startIndex <= k); k--) 
{
       mu = data[k] - rho * data[k + 1];
       mu = spatialContraDecay * exp(c * mu * mu);
       data[k] = data[k + 1] * mu + data[k] * (1.0 - mu) / rho;         
}

   
具体的代码可以从上述提供的连带网页里找找,可能直接从这里下载。

   
话说JAVA的源码要修改成C#的,那大概就是很爽啊,有个别复制过来基本都无须转移的。

     那一个算法特别适合于并行总括。

    
使用这几个滤镜的进度就会意识,他对边缘的护卫很好,而对有的变化平坦的区域延续会其进一步平缓,总体感觉和外部模糊很像(表面模糊其实也是一种双边滤波器),之前曾考虑过用表面模糊来兑现磨皮,可是由于近期所知道的外部模糊的别样优化算法都如故比较慢(但职能和PS是完全一致的),因而一直尚未真的实施,本次看来那篇杂文,经过自个儿的推行,要是参数取的方便,如在和肤色检测或任何艺术卓殊,完全能够兑现较好的自发性磨皮效果。

  比如,针对部分图像,小编做了如下测试和比较:

 图片 30 
图片 31

                原  图
                        本文
λ=0.02,photometricStandardDeviation =10

 图片 32  图片 33

   
        美图秀秀智能磨皮,参数为深                           
 可牛映像拔尖磨皮

  和美图秀秀的比较,就如看不出有哪些界别,而可牛的分明的有众多弱点。

  再做一些比较:

    图片 34     图片 35

                                原  图
                              本文
λ=0.02,photometricStandardDeviation =10

    图片 36    
图片 37

                     
美图秀秀智能磨皮,参数为深                           
可牛影象一级磨皮

    再来一副:

 图片 38图片 39图片 40图片 41

               
原图                                                 
本文                                           
 美图                                                 可牛

    
无论是那一副图,似乎可牛的作用总会硕一些,有颗粒感。

     在看望一些肌肤严重粗糙的图样的功用:

  
图片 42    
图片 43

                                     
原  图                                  本文
λ=0.02,photometricStandardDeviation =20     

  
图片 44     图片 45

                      
美图秀秀智能磨皮,参数为深                           
可牛印象超级磨皮

     
本文通过适当的调动参数,是的皮层部位的磨皮效果比美图秀秀和可牛要好,不过头发部位的消息有所丢失。

     
从地点这副图中,可以见到,可牛的算法在最上边爆发了一条黑线,那明摆着是可牛在算法层面上有BUG所致。国内的软件这么些细节方面注意的不做到啊。

     
http://www.cnblogs.com/celerychen/archive/2013/03/09/2951581.html的博客中,他的算法对地方那幅拿到更好的法力,但她对运用的算法没有涉及。

     
上述全数的图像都是一贯拿这么些双指数边缘保留平滑滤波落成的,未利用其余其余的帮带的技能。

      当然,美图这个软件应该依然更标准些,小编那边举得例子大概都是找了有的对本人那几个有利的来注脚的,但无论如何,那种边缘保留性情的滤波器作为磨皮的一种辅援手段是肯定有其生存空间的。

     
习惯性动作,提供一个可供我们测试效果的程序:
基于双指数边缘保留平滑器的磨皮测试

     图片 46

 

    
无论小说写得好倒霉,都梦想能赢得各位看客的支撑,有的时候二个小点击或小回复也是给小编继续写作的动力源泉。

 

 

*********************************小编:
laviewpbt   时间: 2011.8.31    联系QQ:  33184777
 转发请保留本行音讯************************