杜薇薇 瞿春柳
摘 要:介紹結(jié)合人臉檢測(cè)技術(shù)及相關(guān)圖像處理技術(shù)實(shí)現(xiàn)在3G時(shí)代移動(dòng)增值業(yè)務(wù)中的一個(gè)應(yīng)用[CD2]變臉。變臉首先采用Intel開源OpenCV人臉檢測(cè)確定圖像人臉的區(qū)域,然后采用獨(dú)創(chuàng)的變異Snake算法提取人臉邊緣輪廓,接著在YCbCr顏色空間對(duì)人臉膚色進(jìn)行調(diào)整,使其膚色接近目標(biāo)人臉膚色,最后基于數(shù)學(xué)形態(tài)學(xué)的模板邊緣羽化對(duì)人臉輪廓結(jié)合處進(jìn)行邊緣羽化,很自然地把一張人臉替換成另一張人臉。
關(guān)鍵詞:人臉檢測(cè);OpenCV;Adaboost算法;輪廓提取;Snake算法;膚色調(diào)整;邊緣羽化
中圖分類號(hào):TP391
0 引 言
3G(3rd Generation)即是第三代移動(dòng)通信技術(shù)。相對(duì)于第一代模擬制式手機(jī)(1G)和第二代GSM,TDMA等數(shù)字手機(jī)(2G),第三代手機(jī)一般地講,是指將無線通信與國際互聯(lián)網(wǎng)等多媒體通信結(jié)合的新一代移動(dòng)通信系統(tǒng)。它能夠處理圖像、音樂、視頻流等多種媒體形式,提供包括網(wǎng)頁瀏覽、電話會(huì)議、電子商務(wù)等多種信息服務(wù)。為了提供這種服務(wù),無線網(wǎng)絡(luò)必須能夠支持不同的數(shù)據(jù)傳輸速度,也就是說在室內(nèi)、室外和行車的環(huán)境中能夠分別支持至少2 Mb/s,384 Kb/s和144 Kb/s的傳輸速度。它的網(wǎng)絡(luò)帶寬和應(yīng)用帶寬的優(yōu)勢(shì)是顯而易見的,有效利用它的優(yōu)勢(shì),開發(fā)一些鮮明3G特色的增值業(yè)務(wù),是眼下許多運(yùn)營商、服務(wù)提供商正在思考的問題。[JP]
在此結(jié)合人臉檢測(cè)及其相關(guān)的技術(shù),探討并實(shí)現(xiàn)┮桓霆增值服務(wù)內(nèi)容。人臉照片合成,或者簡(jiǎn)稱為“變臉”。人們熟悉的變臉是運(yùn)用在川劇藝術(shù)中塑造人物的一種特技,是揭示劇中人物內(nèi)心思想感情的一種浪漫主義手法。這里說的變臉是運(yùn)用現(xiàn)代計(jì)算機(jī)技術(shù),把圖像照片中的一張人臉替換成另一張人臉的“特技”?;谶@個(gè)特技,這里將集中討論以下核心技術(shù):
(1) 人臉檢測(cè):識(shí)別圖像照片中的人臉位置坐標(biāo)信息;
(2) 人臉輪廓提取:提取人臉輪廓參數(shù);
(3) 人臉膚色調(diào)整:使膚色接近合成對(duì)象;
(4) 人臉輪廓邊緣羽化:使邊緣接合部分自然。
1 人臉檢測(cè)
人臉檢測(cè)(Face Detection)是指在一幅圖像中確定所有人臉位置的信息,是人臉信息處理中的一項(xiàng)關(guān)鍵技術(shù),也是一個(gè)非常復(fù)雜的課題。近年來,人臉檢測(cè)成為模式識(shí)別與計(jì)算機(jī)視覺領(lǐng)域非常活躍的研究課題。人臉檢測(cè)的研究可以追溯到二十世紀(jì)六、七十年代,經(jīng)過幾十年的曲折發(fā)展已日趨成熟。
本文采用一個(gè)Intel公司成熟的開源庫OPENCV(Intel Open Source Computer Vision Library),它是┮桓霆面向應(yīng)用程序開發(fā)者的計(jì)算機(jī)視覺開發(fā)包。其中就包括了對(duì)人臉的檢測(cè)。OpenCV實(shí)現(xiàn)人臉檢測(cè)的原理是基于Adaboost算法,該算法是一種分類器算法。
基本思想是利用大量的分類能力一般的簡(jiǎn)單分類器(Basic Classifier)通過一定的方法疊加(Boost)起來,構(gòu)成一個(gè)分類能力很強(qiáng)的強(qiáng)分類器(Stage Classifier),再將若干個(gè)強(qiáng)分類器串聯(lián)成為分級(jí)分類器(Classifier Cascade)完成圖像搜索檢測(cè)。串聯(lián)的級(jí)數(shù)依賴于系統(tǒng)對(duì)錯(cuò)誤率和識(shí)別速度的要求。這一特點(diǎn)非常適合實(shí)時(shí)性應(yīng)用的環(huán)境。雖然有些算法很好,但是速度慢,因此就不適合系統(tǒng)的需求。
[JP2]首先,利用樣本(大約幾百幅樣本圖片)的 harr 特征進(jìn)行分類器訓(xùn)練,得到一個(gè)級(jí)聯(lián)的boosted分類器。訓(xùn)練樣本分為正例樣本和反例樣本,其中正例樣本是指待檢目標(biāo)樣本,反例樣本指其他任意圖片,所有的樣本圖片都被歸一化為同樣的尺寸大小(例如,20×20)。[JP]
分類器訓(xùn)練完以后,就可以應(yīng)用于輸入圖像中的感興趣區(qū)域(與訓(xùn)練樣本相同的尺寸)的檢測(cè)。檢測(cè)到目標(biāo)區(qū)域分類器輸出為1,否則輸出為0。為了檢測(cè)整副圖像,可以在圖像中移動(dòng)搜索窗口,檢測(cè)每一個(gè)位置來確定可能的目標(biāo)。 為了搜索不同大小的目標(biāo)物體,分類器被設(shè)計(jì)為可以進(jìn)行尺寸改變,這樣比改變待檢圖像的尺寸大小更為有效。所以,為了在圖像中檢測(cè)未知大小的目標(biāo)物體,掃描程序通常需要用不同比例大小的搜索窗口對(duì)圖片進(jìn)行幾次掃描。
分類器中的“級(jí)聯(lián)”是指最終的分類器是由幾個(gè)簡(jiǎn)單分類器級(jí)聯(lián)組成。在圖像檢測(cè)中,被檢窗口依次通過每一級(jí)分類器, 這樣在前面幾層的檢測(cè)中大部分的候選區(qū)域就被排除了,全部通過每一級(jí)分類器檢測(cè)的區(qū)域即為目標(biāo)區(qū)域。
在此使用的級(jí)聯(lián)分類器也是OpenCV提供的。其使用方法如下:
flags操作方式。當(dāng)前惟一可以定義的操作方式是cv[CD#*2]Haar[CD#*2]DO[CD#*2]Canny[CD#*2]Pruning。如果被設(shè)定,函數(shù)利用Canny邊緣檢測(cè)器來排除一些邊緣很少或者很多的圖像區(qū)域,因?yàn)檫@樣的區(qū)域一般不含被檢目標(biāo)。人臉檢測(cè)中通過設(shè)定閾值使用這種方法,并因此提高了檢測(cè)速度。
min[CD#*2]size檢測(cè)窗口的最小尺寸。缺省的情況下被設(shè)為分類器訓(xùn)練時(shí)采用的樣本尺寸(人臉檢測(cè)中缺省大小是20×20)。
函數(shù) cvHaarDetectObjects 使用針對(duì)某目標(biāo)物體訓(xùn)練的級(jí)聯(lián)分類器,在圖像中找到包含目標(biāo)物體的矩形區(qū)域,并且將這些區(qū)域作為一序列的矩形框返回。函數(shù)以不同比例大小的掃描窗口對(duì)圖像進(jìn)行幾次搜索。每次都要對(duì)圖像中的這些重疊區(qū)域進(jìn)行檢測(cè)。有時(shí)候也會(huì)利用某些繼承(Heuristics)技術(shù)以減少分析的候選區(qū)域,例如利用Canny裁減(Prunning)方法[3]。 函數(shù)在處理和收集到候選的方框(全部通過級(jí)聯(lián)分類器各層的區(qū)域)之后,接著對(duì)這些區(qū)域進(jìn)行組合并且返回一系列各個(gè)足夠大的組合中的平均矩形。調(diào)節(jié)程序中的缺省參數(shù)(scale[CD#*2]factor=1.1,min[CD#*2]neighbors=3,flags=0)用于對(duì)目標(biāo)進(jìn)行更精確同時(shí)也是耗時(shí)較長的進(jìn)一步檢測(cè)。為了能對(duì)視頻圖像進(jìn)行更快的實(shí)時(shí)檢測(cè),參數(shù)設(shè)置通常是:scale[CD#*2]factor = 1.2,min[CD#*2]neighbors=2,ゝlags=猚v[CD#*2]Haar[CD#*2]DO[CD#*2]Canny[CD#*2]Pruning。
2 人臉輪廓提取
輪廓提取,實(shí)際是確定圖像邊緣,對(duì)圖像進(jìn)行分割。人臉圖像分割作為圖像分析的重要內(nèi)容之一,是目標(biāo)重建、識(shí)別等問題的基礎(chǔ),其目的是要將人臉圖像劃分為一些有意義的互不重疊的區(qū)域,但由于雜質(zhì)、噪聲等的干擾,使得經(jīng)典的圖像分割方法如邊緣檢測(cè)、閾值等往往得不到一個(gè)理想的結(jié)果。這也使得人臉圖像分割成為一個(gè)經(jīng)典的難題。
近年來,主動(dòng)輪廓模型(Active Contour Models)成為圖像分析領(lǐng)域的一個(gè)研究熱點(diǎn)。參量主動(dòng)輪廓模型,即Snake模型[4]是一種能量曲線,通過極小化如下的能量函數(shù)來確定目標(biāo)輪廓。
式中:玁是邊緣點(diǎn)坐標(biāo)個(gè)數(shù);獷﹊nt(i)為內(nèi)能函數(shù),主要是邊緣點(diǎn)的連續(xù)性和曲率;獷〆xt(i)為外能函數(shù),主要是圖像的梯度信息,一般可根據(jù)不同特性選擇梯度本文選擇Prewitt算子。Snake算法或Active Contour ㎝odels這類算法在給出初始的輪廓后,然后進(jìn)行迭代,使輪廓沿能量降低的方向靠近,最后得到一個(gè)優(yōu)化的邊界。能量函數(shù)包括內(nèi)外力兩方面,如邊界曲率和梯度。由于用戶無法估計(jì)迭代的最后結(jié)果,應(yīng)用Snake 算法往往需要進(jìn)行多次的交互工作。特別當(dāng)目標(biāo)比較復(fù)雜時(shí),或與其他物體靠得較近時(shí),初始的輪廓不易確定,而迭代的結(jié)果往往不能達(dá)到要求。本文采用一種變異Snake的算法,結(jié)合人臉橢圓形狀特性,對(duì)Snake算法進(jìn)行分解實(shí)現(xiàn)快速而高效的人臉輪廓提取。
式中:V璱=(x璱,y璱)為第i個(gè)輪廓點(diǎn);E┆玞on為連續(xù)性約束,目的是使輪廓點(diǎn)均勻分布;α璱為連續(xù)性約束系數(shù);E┆玞urv為曲率約束,指曲線的彎曲程度;β璱為曲率約束系數(shù)。內(nèi)能最小化,是要求輪廓點(diǎn)盡可能均勻分布,曲線彎曲程度最小。б話憧梢愿據(jù)不同特性選擇梯度,本文選擇Prewitt算子。
另外,現(xiàn)在有些Snake算法引入形狀能量獷﹕hape來優(yōu)化能量函數(shù),比如人臉的橢圓性。
因此:
И
對(duì)Snake算法進(jìn)行變異,針對(duì)人臉的橢圓特性,把形狀能量和連續(xù)性能量結(jié)合簡(jiǎn)化。首先假定人臉滿足一個(gè)橢圓方程:
式中:a,b的取值參照人臉的坐標(biāo)和眼睛的坐標(biāo)推算,假定a取人眼中心距的2倍,b取a的1.25倍。得到橢圓方程后,把橢圓曲線N等分,得到N個(gè)點(diǎn)。И
由于這些點(diǎn)是在橢圓上均勻分布的,所以得到了形狀能量、連續(xù)能量和曲率能量,并保證這三個(gè)能量最小。采用Prewitt算子計(jì)算由橢圓中心所做射線的梯度,可選擇相鄰8個(gè)方向中最大的梯度射線上的梯度,即相鄰射線距離相近的點(diǎn)的梯度,忽略距離遠(yuǎn)的點(diǎn)。將這些點(diǎn)連接形成輪廓線,這些點(diǎn)一定小于等于玁。
為了提高輪廓線的光滑性,還可以對(duì)找到的輪廓點(diǎn)進(jìn)行最小二乘法曲線擬合,這樣找到的人臉輪廓精度就更高了。
這就是最終的輪廓線,是Snake算法的一種簡(jiǎn)單快速的變異。
3 人臉膚色調(diào)整
顏色空間分許多種,不同應(yīng)用選擇不同的顏色空間。主要有RGB,HSV,YCbCr等,選擇合適的顏色空間是處理不同的應(yīng)用的關(guān)鍵。電腦顯示選擇RGB,通常處理的JPEG圖像選擇的是YCbCr。YCbCr基于人眼對(duì)顏色空間中亮度比色度更敏感來優(yōu)化劃分的。
以下是RGB和YCbCr的轉(zhuǎn)換關(guān)系:
影響圖像中人臉膚色的關(guān)鍵是光線,是外在因素。由于兩張臉的膚色因光線等因素的影響會(huì)很不一樣,所以必須調(diào)整膚色,使原圖人臉膚色和目標(biāo)圖像人臉膚色基本一致。本身人臉的膚色是穩(wěn)定的,而且不同人的膚色也基本上穩(wěn)定在一個(gè)范圍內(nèi)。也就是說,只要調(diào)整膚色顏色空間中的玒參量,就起到事半功倍的效果。在對(duì)CbCr進(jìn)行微調(diào),即可調(diào)整到基本一致。
為了簡(jiǎn)化計(jì)算,應(yīng)用統(tǒng)計(jì)概率的原理,計(jì)算人臉輪廓區(qū)域中膚色顏色空間YCbCr的分布,把兩者做比對(duì)調(diào)整。更簡(jiǎn)單的做法是可以用一個(gè)線性公式調(diào)整,即把輪廓內(nèi)的點(diǎn)按YCbCr分量累加求平均。然后比較原圖平均值和目標(biāo)平均值之間的比率。最后把這個(gè)比率映射到原圖的每一個(gè)輪廓內(nèi)的點(diǎn),這樣膚色就基本一致了。如下式所示:
因?yàn)橛械娜四槇D像光線明暗分布不一致,可用化整為零的方法處理。具體講就是把輪廓內(nèi)的點(diǎn)分區(qū)域,區(qū)域大小一般選擇把區(qū)域分割成10部分左右即可。它的算法和前面所述一致,這樣基本可以克服前面提到的一些問題。精度要求提高需要作線性插值處理或非線性插值處理。
4 人臉輪廓邊緣羽化
羽化原理是令選區(qū)內(nèi)外銜接的部分虛化,起到漸變的作用從而達(dá)到自然銜接的效果。羽化值越大,虛化范圍越寬;羽化值越小,虛化范圍越窄[6]。
羽化就是要使原圖像和目標(biāo)圖像銜接得比較自然即欺騙人眼,使人誤認(rèn)為這不是兩個(gè)圖像拼接的,而是一個(gè)圖像。
邊緣羽化,關(guān)鍵是羽化的目標(biāo),羽化的范圍和每一個(gè)點(diǎn)羽化的參數(shù)。羽化的是輪廓邊緣的點(diǎn),范圍為一個(gè)參數(shù)玁,就是離輪廓邊緣的距離,這個(gè)參數(shù)玁一般選擇3個(gè)點(diǎn)即可。就是說在輪廓邊緣3個(gè)點(diǎn)范圍的距離內(nèi)進(jìn)行羽化。這很好理解,但是求某一個(gè)點(diǎn)到輪廓的距離卻比較困難。
由前面的介紹可知羽化就是要漸變,在距離輪廓一定范圍內(nèi)漸變,更通俗點(diǎn)就是逐漸過渡,讓原圖像在邊緣范圍內(nèi)逐漸過渡到目標(biāo)圖像。其實(shí)就是在圖像輪廓范圍內(nèi),由內(nèi)向外,逐漸過渡到目標(biāo)圖像。為了方便表述,把距離輪廓范圍內(nèi)的距離定為負(fù)距離,距離輪廓范圍外的距離定為正距離。那么負(fù)距離上的點(diǎn),原圖像顏色分量比重大,相反正距離上的點(diǎn),目標(biāo)圖像的顏色比重大,按照這個(gè)原理把原圖像和目標(biāo)圖像進(jìn)行Alpha混合,這就是邊緣羽化原理。
輪廓范圍的距離計(jì)算中,采用直接計(jì)算點(diǎn)到曲線的距離,其原理簡(jiǎn)單,但計(jì)算復(fù)雜且效率不高。
膨脹和腐蝕最早出現(xiàn)在數(shù)學(xué)形態(tài)學(xué)(Mathematical Morphology)中。它是法國和德國的科學(xué)家在研究巖石結(jié)構(gòu)時(shí)建立的一門學(xué)科[7]。形態(tài)學(xué)的用途主要是獲取物體拓?fù)浜徒Y(jié)構(gòu)信息,它通過物體和結(jié)構(gòu)元素相互作用的某些運(yùn)算,得到物體更本質(zhì)的形態(tài)。在圖像處理中的應(yīng)用主要是:
(1) 利用形態(tài)學(xué)的基本運(yùn)算,對(duì)圖像進(jìn)行觀察和處理,從而達(dá)到改善圖像質(zhì)量的目的;
(2) 描述和定義圖像的各種幾何參數(shù)和特征,如面積、周長、連通度、顆粒度、骨架和方向性等。
設(shè)有兩幅圖像B,X。若X是被處理的對(duì)象,而B是用來處理X的,則稱B為結(jié)構(gòu)元素(Structure Element),又被稱作刷子。結(jié)構(gòu)元素通常都是一些比較小的圖像。把結(jié)構(gòu)元素B平移a后得到B璦,若B璦包含于X,記下這個(gè)a點(diǎn),所有滿足上述條件的a點(diǎn)組成的集合稱作X被B腐蝕(Erosion)的結(jié)果。用公式表示為:E(X)={a|B璦糥}=XΘB。膨脹可以看作是腐蝕的對(duì)偶運(yùn)算,其定義是:把結(jié)構(gòu)元素B平移a后得到B璦,若B璦擊中X,記下這個(gè)a點(diǎn)[8]。所有滿足上述條件的a點(diǎn)組成的集合稱作X被B膨脹的結(jié)果。в霉式表示為:
邊緣羽化,其定義是:О呀峁乖素B平移a后得到B璦,記下B璦擊中X的范圍,記下這個(gè)a點(diǎn)。描述為,假設(shè)結(jié)構(gòu)元素B是一個(gè)半徑為3的圓,圓包含點(diǎn)地個(gè)數(shù)為n。從處理圖像的起點(diǎn)開始移動(dòng),每移動(dòng)一個(gè)點(diǎn),就記下該點(diǎn)上半徑為3的圓在人臉圖像輪廓內(nèi)的點(diǎn)的個(gè)數(shù),作為原人臉圖像獳lpha混合系數(shù)m,而n-m就是目標(biāo)人臉[LL]圖像獳lpha混合系數(shù)。用公式表示如下:
式中:D(x,y)為目標(biāo)圖像在點(diǎn)(x,y)的顏色空間像素值。S(x,y)為原圖像在點(diǎn)(x,y)У難丈空間像素值。
這里顏色空間可以是RGB或者YCbCr。
5 結(jié) 語
人臉檢測(cè)及其相關(guān)技術(shù)越來越成熟,應(yīng)用的范圍也越來越廣泛。結(jié)合鮮明時(shí)代特征的3G環(huán)境,實(shí)現(xiàn)變臉這樣一個(gè)移動(dòng)增值業(yè)務(wù)。通過變臉業(yè)務(wù)這樣一個(gè)業(yè)務(wù),探討相關(guān)的核心技術(shù)。這些技術(shù)不僅在這個(gè)特定環(huán)境中可以延展,而且可以在其他環(huán)境中延展。
參 考 文 獻(xiàn)
[1]Open Source Computer Image Library Reference Manual[Z].2000.
[2]染路宏,艾海舟,徐光佑.人臉檢測(cè)研究綜述[J].計(jì)算機(jī)學(xué)報(bào),2002(5):449[CD*2]458.
[3]張宏林.數(shù)字圖像模式識(shí)別技術(shù)及工程實(shí)踐[M].北京:人民郵電出版社,2003.
[4]Williams Donna,Shah Mubarak.A Fast Algorithm for Active Contours and Curvature Estimation[J].CVGIP:ImageUnderstanding,1992,55(1):14[CD*2]26.
[5]Vezhnevets V,Sazonov V,Andreeva A.A Survey on Pixel[CD*2]based Skin Color Detection Techniques[A].Proc.ofGRAPHICON′03[C].Moscow,2003:85[CD*2]92.
[6]丁海波,薛質(zhì),李生紅.基于HSI空間的膚色檢測(cè)方法[J].計(jì)算機(jī)應(yīng)用,2004(24):210[CD*2]211.
[7]Hsu R L,Mottaleb M A,Jain A K.Face Detection in Color Images[J].IEEE Trans.on Pattern and Machine Intelligence,2002,24(5):210[CD*2]211.
[8]楊倫標(biāo),高英儀.模糊數(shù)學(xué)[CD2]原理與應(yīng)用[M].廣州:華南理工大學(xué)出版社,2003.
[9] 馬桂珍,朱玲贊,段麗.基于OpenCV的視頻應(yīng)用程序的開發(fā)方法[J].現(xiàn)代電子技術(shù),2007,30(4):78[CD*2]79,88.
作者簡(jiǎn)介
杜薇薇 女,1976年出生,北京人,碩士研究生。在中國科學(xué)技術(shù)信息研究所工作。