美顏算法中磨皮的原理

談到磨皮美顏,你們可能認爲是一個很高深難懂的事情,網上搜索關於美顏的文章,通常都是搬出許多算法,看得讓你頭暈目眩的。今天將用大白話來讓你快速認識磨皮美顏原理,輕鬆get到她的點!只要你耐着性子讀完本篇文章,你會發現美顏原理其實也是一件很好理解的事情。圖玩智能科技爲企業提供更穩定更優質的美顏產品及服務,歡迎隨時諮詢www.toivan.com算法

磨皮美顏概念函數

講磨皮美顏以前,先講講咱們的人臉,認清磨皮美顏的目的;一般,咱們的人臉上或許有許多痘痘和一些暗色粗糙皮膚,美顏的目的就是儘量使痘痘消失,暗色皮膚變白,使粗糙變細膩,達到美顏效果,從上訴的分析能夠得出咱們須要作的事情以下:性能

 

1.尋找臉上的特徵點,如痘痘、暗色粗糙皮膚spa

2.對痘痘、粗糙皮膚加以處理,完成美化。3d

特徵點分析blog

咱們一般看到痘痘和暗色皮膚,仔細觀察,會發現這些特徵點和周圍正常皮膚在膚色上有一個差異;若是拍照拍下來,用灰度值查看這個圖片,你會發現特徵點灰度值較低,而正常白色皮膚灰度值較高,這是一個凸變的過程,正常皮膚到特徵點,灰度值從高點陡然下跌;咱們能夠用這個現象來把特徵點提取出來,如何提取請繼續往下看;圖片

另外一個是局部粗糙皮膚,其局部灰度值,也須要儘量將其數字磨平,讓它和正常皮膚同樣,和上面痘痘同樣,也會有一個灰度值陡然降低的過程get

特徵點提取源碼

這裏須要一種濾波算法,能夠是均值化濾波、高斯濾波、雙邊濾波和導向濾波等算法,考慮到手機CPU性能,咱們通常選擇高斯濾波,加權求平均的算法;試想一下,一張二維灰度值人臉圖片,特徵點灰度值低,正常皮膚灰度值高,濾波算法事後,正常皮膚變化不大,特徵點由於周圍正常皮膚灰度值較高的緣由,廣泛灰度值會有一個變大的效果,這個時候咱們用原圖灰度值減去濾波後的灰度值,那麼特徵點的灰度值是小於0位負的,正常皮膚灰度值爲正的,這樣咱們就獲得整張人臉圖片的特徵點了產品

特徵點=原圖濾波後的圖特徵點 = 原圖 - 濾波後的圖

特徵點=原圖濾波後的圖

咱們歸一化灰度值,也就是將灰度值0-255歸一化爲0-1的取值,按照上面的步驟,獲得特徵點後,給他統一加0.5,也就是

特徵點=原圖濾波後的圖+0.5特徵點 = 原圖 - 濾波後的圖 + 0.5

特徵點=原圖濾波後的圖+0.5

這樣,咱們的特徵點小於0.5,正常皮膚的是大於0.5的

特徵點增強

爲了使咱們的特徵點更明顯,咱們對特徵點增強,主要是使特徵更加明顯,後續好處理;獲得一個高度反差的圖像,以下圖

如上圖,手上有皺紋以及關節處黑色比較明顯,獲得了特徵點增強圖片

源碼:

注意: 濾波越細膩,磨皮效果越好

特徵點處理

通過上一步,特徵點已經處理了,那特徵點如何處理了,處理的原則又是什麼呢?
那就是對特徵點亮化處理,增長其灰度值大小,使其儘量比原色更白,和正常膚色同樣,那如何才能達成這一效果?
請看如下算法:

算法解釋都在代碼註釋裏面了,主要仍是看第三句代碼:

primaryColor-vec3(features)
原圖減去特徵點,暗色的特徵點很小,減法後值更大;正常皮膚特徵點大,減法後值越小;最後在加上原圖,原圖特徵點值變大了,就會顯得亮度更亮,實現了咱們要的效果

細節補償

進過上面的圖像處理時,會有必定的圖像細節丟失,咱們須要將原始圖像和處理圖像融合進行細節補償,達到細節補償效果;

先用max選擇亮度較高的灰度值,最後在與處理圖融合;
這裏爲何要用max函數來處理一遍呢,由於在特徵點處理步驟,正常圖片作減法後的加法,其灰度值可能比原圖更低,因此這裏這麼處理,最後咱們獲得的圖片效果;

以上就是磨皮美顏的常規處理,最終效果上看確實達到了美顏的效果;

美顏不單單是美膚,還有瘦臉、大眼睛等,這些纔是美顏的進階!

相關文章
相關標籤/搜索