人臉美妝之唇色檢測演算法研究,人臉美唇色演算法

來源:互聯網
上載者:User

人臉美妝之唇色檢測演算法研究,人臉美唇色演算法
人臉美妝之唇色檢測演算法研究

目前,隨著臉部偵測識別技術的日趨成熟,人臉美化技術的競爭也愈演愈烈,諸如行動裝置應用類中的美咖相機,美圖秀秀,Perfect 365,天天P圖等等,這些應用無疑都在給人們的感官生活帶來新的樂趣與新的體驗,今天,我在這裡給大家介紹一下,這些人臉美妝技術中一個必不可少的內容—-唇彩。

唇彩的實現分為以下幾個步驟
  • 嘴唇粗略檢測
  • 嘴唇精確檢測
  • 嘴唇塗色
嘴唇粗略檢測

嘴唇粗略檢測的方法包括兩種:
- 1. 手動標記
手動標記往往是讓使用者自己移動特徵點來定位嘴唇地區。這種方式略繁瑣。
- 2. 自動標籤
自動標籤往往是通過Face Service技術,擷取嘴唇的大概位置。Face Service的技術目前已經日趨成熟,市面上諸如Face++等等,我們可以直接調用。
一般而言,目前的美妝軟體中,首先使用自動標籤,得到嘴唇的大概位置,如果無法檢測到人臉,那麼,會進一步讓使用者手動標記,這樣給使用者一種友好的使用者體驗。

嘴唇精確檢測

嘴唇精確位置檢測,關係到唇彩的準確度,進而影響美妝的整體效果。這裡我介紹兩種簡單的嘴唇檢測演算法:
- 1. 基於YIQ色彩空間的唇色檢測演算法
-參考論文:基於膚色和唇色資訊的臉部偵測方法的研究

演算法原理:在YIQ色彩空間中,Y表示亮度訊號,I和Q表示色度訊號,Q分量代表的顏色變化正好覆蓋了嘴唇的色彩範圍,因此,通過對嘴唇樣本的分析,得到嘴唇地區在YIQ色彩空間中的分布範圍,以此來判斷唇色。YIQ色彩空間與RGB色彩空間對應關係如下: Y  = 0.299 * r + 0.587 * g + 0.114 * b; I  = 0.596 * r - 0.275 * g - 0.321 * b; Q  = 0.212 * r - 0.523 * g + 0.311 * b;

唇色統計的分布結果:

分量 範圍
Y [80,220]
I [12,78]
Q [7,25]

對於當前像素P(x,y),先轉換為YIQ,然後分辨判斷YIQ分量是否符合上述唇色分布結果,如果符合,則該像素為唇色像素。
-2. 基於R,G分量分析的唇色檢測演算法
-參考文獻:一種快速魯棒的唇部檢測方法
這個演算法主要是提出了一個唇色判斷公式:
logG(B0.391∗R0.609)<T
這個公式的由來,是作者根據另外一篇文獻TW Lewis.Lip feature extraction using ed exclusion.改進而來,至於原因什麼的我們不用關心,我們關心的是如何最簡單的理解與實現效果呵呵。
這篇論文中並沒有給出T的取值,這裡我給一個經驗值:T= - 0.15;
公式中的B,R自然就是RGB色彩空間的對應分量了,對應於某個像素P(x,y),如果符合這個公式,那麼,這個像素就是唇色像素了。
-3. 演算法效果
以上兩種演算法的效果如下所示:

以上兩種方法是基於色彩空間唇色統計的方法,具有速度快,計算簡單的特點,但是,由於統計的結果只代表大多數,並非全部,因此,這兩種像素都不可能完全判斷各種條件下的唇色像素,尤其是不同環境光線條件下,容易出現誤判。對於這個缺點,一般,我們會在Face Service後,得到嘴唇的大概位置,在這個大概位置中,使用這些演算法,這樣一般就可以檢測到相對準確的嘴唇地區了,後期在結合一些形態學運算元,就可以得到準確的嘴唇地區了,對於唇彩塗色,也就完成了關鍵的一步了。

嘴唇塗色

嘴唇塗色就是根據嘴唇檢測得到的準確地區,結合顏色Color的RGB值對其進行上色的過程。
嘴唇塗色一般使用YUV色彩空間,Y表示灰階值,UV表示顏色特徵。假設嘴唇地區某像素P(x,y),塗色值Color(R,G,B),我們先計算P的Y值,然後計算Color的UV值,這樣我們就得到了塗色之後的目標YUV,在將這個YUV映射到RGB即可。

主要代碼

這裡放上嘴唇檢測的代碼程式,供大家參考:

        public Bitmap LipsDetectBmp(Bitmap src)        {            Bitmap a = new Bitmap(src);            int w = a.Width;            int h = a.Height;            BitmapData srcData = a.LockBits(new Rectangle(0, 0, a.Width, a.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);            byte* p = (byte*)srcData.Scan0;            int r = 0, g = 0, b = 0, offset = srcData.Stride - w * 4;            double Y = 0, I = 0, Q = 0;            double k = 0;            for (int j = 0; j < h; j++)            {                for (int i = 0; i < w; i++)                {                    b = p[0];                    g = p[1];                    r = p[2];                    ////////////////Process image...                    //演算法1                    Y = 0.299 * r + 0.587 * g + 0.114 * b;                    I = 0.596 * r - 0.275 * g - 0.321 * b;                    Q = 0.212 * r - 0.523 * g + 0.311 * b;                    if ((Y >= 80 && Y <= 220 && I >= 12 && I <= 78 && Q >= 7 && Q <= 25))                    {                        p[0] = (byte)255;                        p[1] = 0;                        p[2] = (byte)255;                    }                    //演算法2                    //k = Math.Log((double)g / (Math.Pow((double)b, 0.391) * Math.Pow((double)r, 0.609)));//使用演算法                    ////2時把演算法1注釋掉即可                    //if (k < -0.15)                    //{                    //    p[0] = (byte)255;                    //    p[1] = 0;                    //    p[2] = (byte)255;                    //}                    p += 4;                }                p += offset;            }            a.UnlockBits(srcData);            return a;        }
總結

以上就是美妝演算法中的唇彩演算法過程了,跟大家分享一下,共勉!有什麼不明白的可以給我留言或郵件dongtingyue@163.com
最後,分享一個專業的影像處理網站,裡面有很多原始碼下載:
http://www.zealpixel.com/portal.php

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.