皮膚美白算法

本文爲轉載,原博客地址:http://www.cnblogs.com/Imageshop/p/3843635.html

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

     第一:借用色彩平衡算法

  色彩平衡是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 轉載請保留本行信息**********************

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章