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