一種具備細節保留功能的磨皮算法。

     算法最近更新時間: 2014.7.19,  效果詳見:http://files.cnblogs.com/Imageshop/FaceBeautification.rar算法

     話說女人的錢最好賺,因此如今各大流行的圖像編輯軟件基本上都有個磨皮的功能,這對那些臉上不當心長了小痘痘或者小斑點的美眉來講是在上傳照片前的必要和必須步驟。加上如今自戀的人特多,沒事有事來個自拍,而後掛到網上炫一把,固然也得把本身的皮膚處理好。 所以啊,國內出了很多這方面的軟件,好比美圖、可牛、美顏相機、美人相機、Camera360等加入了這個功能,固然還有不少小的手機軟件業附帶了此項目。編程

      不過在網絡上找尋磨皮方面的算法時,能找到的有用的信息是很是少的,估計這於該算法具備較大的實用和經濟價值不無關係,本人通過一番研究,也搞出了一個磨皮的功能,這裏就能共享的一些技巧說來給有須要的朋友聽聽。網絡

  一、磨皮算法的核心: 磨皮能夠當作是去噪算法的應用。典型的去噪算法,好比均值模糊、高斯模糊、中值濾波都有很好的去噪效果,可是視覺效果太差。能有效的用於磨皮算法的去噪方式主要是那些可以邊緣的算法,典型的好比雙邊濾波、Non-Local以及BM3D之類的。BM3D聽說去噪效果最好。可是後二者到目前爲止未看到具備實質意義的快速實現算法,反而是雙邊濾波,有多篇論文已經提出了可行的加速方案。其實Photoshop中的表面模糊也能夠當作是一種雙邊濾波,所以很多用PS磨皮的過程也大量使用了表面模糊算法的。多線程

      二、頭髮眼睛等細節部位的保護: 直接使用上述算法獲得的結果,針對不少圖像會出現頭髮和眼睛部位的模糊,這種效果對於一個好的磨皮結果來講是不須要的。特別是眼睛,眼睛是心靈的窗口,被模糊了,窗口就不透明瞭。所以,須要檢測出須要磨皮的部分。這個不少人會想到皮膚檢測技術。不過我試過了經典的七八種皮膚檢測效果,都不能將不一樣場景的膚色部位所有提取出來。一種方式就是綜合好幾種膚色檢測,取最大區域,這也是一種不錯的想法,由於通常的膚色檢測速度都是很快的。可是實際的效果表面,這樣作對於一些比較極端的圖像仍是無效的。所以,我採起了一種寧願錯殺一千,也不可放過一個的措施,放鬆了某一種膚色檢測模塊裏的一些約束條件,使得絕大多數場景下的膚色部分都可以被選中(鑑於某些方面的緣由,這個不可詳述)。spa

     三、邊緣部分的融合:經過上述保護,獲得的保護邊緣處是硬邊緣,即一個像素時要磨皮的部分,邊上的可能就是不須要磨皮的,這樣的話處理的效果在視覺會形成必定的僵硬,可能會有某個部分過分不天然,以下圖所示(全部圖片均來源自網絡):線程

  

           原圖                              硬邊界磨皮                            軟化後磨皮3d

      一種解決方案就是對獲得的硬邊界圖進行羽化處理,也就是相似高斯模糊之類的算法,這樣邊緣處就會過渡的較爲天然。blog

    四、處理後的加強:通過這樣處理後的圖像若是在進行一下邊緣的加強,會獲得更好的效果,好比在PS磨皮的最後通常喜歡加個USM銳化。圖片

  按照上述思路,編程程序,我實現的磨皮效果以下所示:get

    

    

    

    

    

   

                       原圖                       本文的磨皮效果                        美圖秀秀效果(智能磨皮,參數深)

    由以上幾圖能夠看出,在磨皮質量基本差很少的狀況,本文額磨皮的能儘可能的保留了頭髮和眼睛處的細節,這樣更天然。

    在算法實現的速度上,我採用了兩種雙邊濾波,一種速度很快,在PC上若是加入多線程徹底能夠實現普通攝像頭的實時磨皮,可是效果有一點瑕疵。另一種速度稍慢,效果較爲穩定。

      一個示例能夠從這裏下載: http://files.cnblogs.com/Imageshop/FaceBeautification.rar

 

****************************做者: laviewpbt   時間: 2013.8.23    聯繫QQ:  33184777轉載請保留本行信息********************

相關文章
相關標籤/搜索