在短視頻APP當道的時代人人都愛拍抖音和快手,而大衆之所以如此喜愛短視頻除了短視頻自身的特性以外,爲了使用戶拍攝出的視頻能夠給用戶帶來極高的滿意度,短視頻萌顏sdk可以說是耗費了不少功夫,由於短視頻用戶女性羣體佔比較多,所以萌顏sdk在開發過程中需要格外注意像大眼瘦臉、美白磨皮等功能的實現。本文主要分享下磨皮相關的內容。
短視頻萌顏sdk磨皮算法實現的大概流程爲:保邊濾波器、人臉膚色檢測、圖像融合、銳化。那麼其中每一步都是如何實現的呢?
1.保邊濾波器
這裏的濾波器主要的作用主要是在實現平滑皮膚的同時保留人臉五官的細節部分,以避免磨皮之後人臉面部棱角過度模糊。目前可以用在磨皮中的濾波器有以下幾種:
(1)表面模糊:具有比較好的保邊功能。
(2)雙邊濾波:由高斯分量+梯度分量組成權重信息,在實現模糊平滑圖像的同時還可以保留邊緣。
(3)導向濾波:是基於導向圖的一種保邊濾波算法。
(4)基於均值濾波的保邊濾波器(5)選擇性模糊算法(6)基於高斯濾波的磨皮實現算法
2.人臉膚色檢測
在這裏分享一種基於RGB顏色空間的算法資料:
RGB Color model pixel skin detection method
( R , G , B ) 15 classified as skin if :
R > 95 andG > 40 andB > 20 and
maX ( R , G , B )一 min ( R , G , B ) > 1 5 and
|R-G| > 15 and R > G and R > B
3.圖像融合
指將濾波圖像和細節圖像進行融合,從而得到具有細節真實感和磨皮效果,一般是基於alpha通道或者使用羽化操作進行融合。(參考公式如下)
res = (basePixel * alpha + filterPixel * (255 - alpha)) >>8
(這裏的alpha在0-255之間,指原圖和濾波圖的融合)
4.銳化
爲了使融合後的圖片不會過於失真,還需要使用一定的銳化算法,從而進一步增強磨皮的圖片或視頻的細節部分,比如USM銳化或laplace銳化等。