為什麼要進行**檢測
美顏的核心處理是磨皮,僅進行模糊平滑處理,對整張影象的處理會顯得比較假,如果能針對性的只處理**,效果會更真實。
真實的工程應用中,一張影象的磨皮處理,會分兩步走
檢測出**,生成乙個maska
保邊濾波得到影象t
根據maska,僅對**部位進行濾波處理,非**採用原影象素
**檢測(or 人像分割)有三大類
· 基於顏⾊空間的⽪膚檢測演算法
· 基於⾼斯模型的膚⾊(⽪膚)概率計算⽅法
基於顏色空間的**檢測
對於基於顏⾊空間的膚⾊檢測演算法,常⽤的顏⾊空間有 rgb、hsⅴ、ycbcr、ycgcr、yuⅴ 和 lab 等。這類⽅法的主要思想是,在不同的顏⾊空間對⽪膚畫素的顏⾊資料進⾏統計,分析得出膚⾊畫素的範圍取值,以此作為膚⾊畫素的判斷依據,這⾥我們以 rgb、hsⅴ 和ycgcr三個顏⾊空間為例進⾏簡單說明
基於rgb顏⾊空間的膚⾊檢測演算法[19]如下:
(1)在rgb顏⾊空間中,對⼤量膚⾊樣本rgb資料進⾏統計,得到如下膚⾊判斷條件a:
假設畫素p=(r,g, b),那麼,如果滿⾜條件a,即為膚⾊畫素。
我們使⽤上述膚⾊判斷條件來檢測⽪膚區域,效果舉例如圖3.34所
基於hsⅴ顏⾊空間的膚⾊檢測演算法
(1)統計膚⾊畫素樣本分佈,得到 hsⅴ顏⾊空間中 hue分量的統計分布
(2)由圖3.35得到膚⾊判斷條件a:
假設畫素p=(r,g, b),那麼,在hsⅴ顏⾊空間中如果滿⾜條
件a,即為膚⾊畫素。
基於ycgcr顏⾊空間的膚⾊檢測演算法[20-21],以參考資料[21]為
例,演算法如下
(1) ycgcr顏⾊空間與rgb顏⾊空間的轉換如下:
(2)取樣統計約1010個膚⾊畫素後獲得膚⾊模型在不同顏⾊空間
的分布(cgcr空間),如圖3.37所⽰。
(3)由膚⾊畫素分布圖得到的膚⾊分布範圍判斷條件a:
假設畫素p=(r,g, b),那麼,在ycgcr顏⾊空間如果滿⾜條件a,即為膚⾊畫素。
我們使⽤上述 ycgcr顏⾊空間的膚⾊判斷條件來檢測⽪膚區域,效果舉例如圖 3.38 所⽰。
基於高斯模型的膚色概率計算方法
演算法流程如下所述。
(1)準備各類膚⾊的樣本集,在ycbcr顏⾊空間內,統計樣本集
cb和cr分量對應的均值μ和⽅差σ。
(2)在ycbcr顏⾊空間內,對cb和cr分量分別構建簡單⾼斯模
型,每⼀種⾼斯模型構建如下所⽰:
(3)未知畫素p屬於膚⾊的概率pdf計算如下:
根據上述演算法,測試效果如圖 3.39 所⽰。由於周圍與膚⾊相同的環境顏⾊的影響,在⼀些圖中會存在類膚⾊區域的⾼概率問題。
**檢測在磨皮中的應用
在圖3.41所⽰的通⽤磨⽪框架中,具體的演算法流程分解如下。
(1)輸⼊⼈像照⽚s。
(2)對s進⾏膚⾊檢測(或者膚⾊概率計算),得到膚⾊區域 ma
sk(或者膚⾊概率mask)。
(3)對mask進⾏⾼斯濾波(半徑為radius),得到平滑的mask圖a。
(4)對原圖s進⾏保邊濾波(可⽤前⽂中所講解的任意⼀種保邊
濾波器,可以按需選擇),得到濾波影象t,t是丟失了部分細節的平
滑影象。
(5)計算效果圖d,公式如下:
本文同步分享在 部落格「天叔」(jianshu)。
mysql 取模遷移資料 mysql 取模分表
取模分表,根據時間維度進行分表自定義的hash 分表後的資料複製,一般採用insert select語句將原有表的資料匯入新的分表,或者直接copy原表的資料到分表中。比如根據id取模分四張表,分表後把原有資料複製示例如下。insert into user1 id,name,extdo,hobbys...
編譯其他mysql客戶程 mysql編譯模組
mysql pgcc和 o6編譯 cflags o6 mpentiumpro fomit frame pointer cxx gcc cxxflags o6 mpentiumpro fomit frame pointer felide constructors fno exceptions fno ...
mysql處理查詢模型 Mysql的查詢模型
mysql查詢模型 把列看成變數,把where後面看成php中的if exp 表示式 哪一行能讓exp為真,哪一行就能取出來 還有列既然可以看作是變數,變數之間可以進行與運算。下面有一道題目可以幫助我們更好的理解列是變數這一問題 把num值處於 20,29 之間,改為20 num值處於 30,39 ...