對皮膚美白演算法的一些研究。

Imageshop發表於2014-07-14

   皮膚美白是現在任何一款流行的美顏軟體必備的功能之一,不過你如果在網際網路上搜尋關於美白演算法,能直接拿到並使用的可能不多。一直覺得這個演算法其實很簡單的,並且實現的方式可以說是多種多樣,本文分享自己研究過的三種實現方式。

     第一:借用色彩平衡演算法

  色彩平衡是Photoshop中常用的一個功能,發現這個演算法能實現美白的是從一個叫DigitalCameraEnhance的軟體中偶然遇到的,這個軟體的介面如下圖:

           

  其中的調節中間影調一欄會發現右側目的影象美白程度不斷增加,於是我想到PS中有中間調的功能最有名的就是色彩平衡,開啟色彩平衡功能,把色階三個框設定為同一個正值,並且不勾選保持明度選項,則影象明顯出現美白現象。  

                                                    

  注意第一: 色階的三個調整值必須相同或者差異很小,不然輸出圖片會出現偏色,第二:一定選選擇中間調;第三:必須不勾選保持明度選項。

      關於這個演算法的程式碼,可以從開源的GIMP軟體中扣取,其實如果符合上述三個條件,有能力的人就會發現其實最後就是一個對映表而已了,這裡不給出具體的演算法公式。GIMP是開源的,有這個需求的就應該自己動手去找。

     第二:使用logarithmic Curve。

  美白其實主要使皮膚變白變亮,因此,如果能有個合適的對映表,滿足使得原圖在色階上有所增強,並且在亮度兩端增強的稍弱,中間稍強,則也是個不錯的選擇。在研究一篇影象增強論文《A Two-Stage Contrast Enhancement Algorithm for Digital Images 》時發現其中的一個公式非常適合這個情況:

           

  其中w(x,y) 表示輸入影象資料,v(x,y)表示輸入結果,beta為調節引數,我繪製了Beta分別為[2,3,4,5]時的曲線,如下圖:

     

  可見,Beta越大,美白的程度越強,我想這個程式實現起來應該很容易吧。

       第三:使用圖層混合。

  用Photoshop我是這樣做的,開啟影象,然後點通道皮膚,按住Ctrl+ 點選RGB通道影象,這樣會得到以影象的強度為內容的選區(選區其實就是一副灰度影象),然後回到圖層皮膚,點新建圖層,再點新增圖層蒙版按鈕,這樣就會將剛才所建立的選區的內容作為蒙版,接著將,圖層填充為白色。調節新建圖層的透明,則可以控制最終美白的程度。

                     

     這種方法中以影象強度的內容作為蒙版這一步很重要。

     這種圖層+蒙版的編碼實現其實也就是一些Alpha混合的過程,有興趣實現的朋友可以自行研究。

      我個人認為,如果掌握了PS裡調整選單的大部分演算法,很多美圖軟體裡的調色這一塊基本上都逃不出手掌心了,當然比如有強大的美工基礎作為支撐,先靠美工通過某些步驟摸索出某個效果,然後再靠程式設計師編碼實現,可以我美工不行。

   以上操作都是針對全圖進行的處理,這樣畢竟會把非膚色部分的地方也處理,在很多情況下可能是不合適的,因此一個更好的方式是進行膚色識別,當然這種膚色識別和我之前的磨皮演算法原理也一樣,不需要也不應該太準確,在邊緣處還必須進行一定的羽化,包括非皮膚部分也應該有一定程度的處理,這樣整個圖看起來會更加自然一些。

  我用以上三種演算法進行了一些處理,效果如下所示:

     

                  原圖                                ColorBalance , 引數為75

     

            Log曲線, 引數Beta為5                                 圖層混合,不透明度30%

     

                  原圖                                ColorBalance , 引數為75

     

            Log曲線, 引數Beta為6                                   圖層混合,不透明度35%

     

                                                  原圖                                ColorBalance , 引數為75

    

               Log曲線, 引數Beta為5                                 圖層混合,不透明度30%     

  純粹就這個功能來說,和美圖秀秀之類的軟體區別也不大的。

     測試程式下載:http://files.cnblogs.com/Imageshop/SkinWhitening.rar

     

  以上測試影象均來源於網際網路。

 

****************************基本上我不提供原始碼,但是我會盡量用文字把對應的演算法描述清楚或提供參考文件************************

*************************************因為靠自己的努力和實踐寫出來的效果才真正是自己的東西,人一定要靠自己*******************

****************************作者: laviewpbt   時間: 2014.7.14    聯絡QQ:  33184777 轉載請保留本行資訊**********************

相關文章