談到磨皮美顏,你們可能認爲是一個很高深難懂的事情,網上搜索關於美顏的文章,通常都是搬出許多算法,看得讓你頭暈目眩的。今天將用大白話來讓你快速認識磨皮美顏原理,輕鬆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函數來處理一遍呢,由於在特徵點處理步驟,正常圖片作減法後的加法,其灰度值可能比原圖更低,因此這裏這麼處理,最後咱們獲得的圖片效果;
以上就是磨皮美顏的常規處理,最終效果上看確實達到了美顏的效果;
美顏不單單是美膚,還有瘦臉、大眼睛等,這些纔是美顏的進階!