關於人像美容之祛痘祛斑演算法的一些嘗試。

Imageshop發表於2014-07-27

     祛痘祛斑演算法一直在關注,一直在期待看有麼有大神分享有關這方面的資料。在百度上用關鍵詞祛痘祛斑搜到的都是於原理無關的不痛不癢的東西,看樣子還是得靠自己奮鬥。

     總的來說,對於祛痘祛斑,我們概念上還是有一定的瞭解的,這個按照我的分析應該是屬於影象修復方面的內容的,於是諮詢了一些專門搞學術研究,特別是影象修復相關方向的比較專業的人士,他們也給我提供了一些測試的程式碼,其中最為簡單又有一定效果程式碼如下(由網友西西提供):

function inpainting()
    f=imread('12.png');
    f=rgb2gray(f);
    f=double(f);
    [m,n]=size(f);
    lamda=0.1;
    phi=double(1-(f==255));%
    u=f;
Iter =400;
for k=1:Iter C1 = circshift(u,[0 -1]); C1(:,n) = C1(:,n-1); C2 = circshift(u,[0 1]); C2(:,1) = C2(:,2); C3 = circshift(u,[-1 0]); C3(m,:) = C3(m-1,:); C4 = circshift(u,[1 0]); C4(1,:) = C4(2,:); lap_u=C1+C2+C3+C4; u=(phi.*f+lamda*lap_u)./(phi+4*lamda); end figure; imagesc(u); colormap(gray); axis off; axis equal;

  這個程式碼的原理是參考: 一文的。具體的我也沒有看,應該是基於TV模型的最簡單的一種實現。

  上述程式碼很簡單,其中的lamda控制了模糊的程度,用這個程式碼做了下測試,對於灰度圖效果如下:

   

          原圖                                   Mask                         修復後的圖

  由上圖可見,這種簡單的程式碼具有一定的修復功能,但是修復部分比較模糊,另外一個問題就是這個程式碼的效率很低,雖然改成C語言實現病不是特別困難,但是即使是C速度也有問題,不過針對手動祛斑時的特性,程式設計時時不需要整圖處理,比如取要祛痘祛斑2倍面積的地方進行處理也是可以的。

      在一個群裡也問起這個問題,有部分網友提出opencv 的 inpaint 演算法可行嗎,於是我也是試著用opencv的函式試驗了下,實驗的結果如下:   

                    

                                                    原圖   

                    

                                                                             Mask

               

                        修復的結果圖

  如果初步的看,似乎修復的結果也還是可以的。這個程式碼在OpenCV的inpaint.cpp,其中一種方法來自論文《An Image Inpainting Technique Based on the Fast Marching Method》, 我花費了2天左右的時間將其轉換為了純C++程式碼,脫離了opencv環境,不過結果驗證卻有點令人失望,主要的原因是這個方法其實也和TV那個類似,修復的地方會有比較明顯的模糊結果(OpenCV裡的演算法也存在類似卷積的過程,因此模糊時不可避免的)。而觀察美圖等軟體的修復,對於被修復部分的紋理保留的很好。

      但是,也不是說這些演算法也毫無用處,祛斑祛痘一般都是伴隨著磨皮美白一起使用的,如果對磨皮後部分依舊沒有被消除的斑點,上述祛斑的方式就能和周邊的圖較為完美的融合在一起的,因為周邊的皮膚也是會比較光滑的,例如下圖:

         

                    原圖                                    磨皮後再手動祛斑的效果

      其實現在比較難得還是斑點的自動定位,祛斑演算法很多廠家已經有了成熟的演算法,只是我們這些小強見識比較短而已。 

      至此,我的人像美容演算法方法的主要的幾個功能基本都已研究完成了(雖然都不完美),其中瘦臉瘦身和眼睛縮放在我的Imageshop軟體的美化選單裡有例項,像皮膚紅潤那些只是一些色相的區域性調整,沒啥難度,磨皮、美白、祛斑這三個我集中在下面的檔案包,有興趣的朋友可以看下。

     http://files.cnblogs.com/Imageshop/FaceBeautification.rar

 

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

 

相關文章