摘 要: 提出一種在雙目視覺系統(tǒng)下進(jìn)行人臉重建的方法。首先,通過雙目系統(tǒng)拍攝人臉的左右圖像;其次,用GrabCut的方法的把人臉圖像分割出來從而降低立體匹配的搜索范圍;然后,用區(qū)域匹配算法得到人臉的視差圖,從而得到人臉的三維點(diǎn)云;最后對(duì)不同角度的人臉圖像進(jìn)行SIFT 特征提取和匹配。將提取的SIFT 特征點(diǎn)和匹配關(guān)系反射到三維點(diǎn)云數(shù)據(jù),獲取不同角度人臉的三維點(diǎn)云數(shù)據(jù)的特征點(diǎn)和匹配關(guān)系,完成對(duì)不同角度的人臉進(jìn)行粗配準(zhǔn)。
關(guān)鍵詞: 雙目視覺; 圖像分割; 人臉視差圖; 三維點(diǎn)云; SIFT算法
中圖分類號(hào): TN919?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2015)04?0102?04
0 概 述
三維重建是指通過單幅圖像或者多幅圖像重建三維信息的過程。由于單幅圖像的所包含信息不完全,因此重建過程中需要利用經(jīng)驗(yàn)知識(shí)。而多幅圖像的三維重建(如人的雙目定位)相比比較容易,其方法是先對(duì)攝像機(jī)進(jìn)行標(biāo)定,即計(jì)算出攝像機(jī)的內(nèi)部參數(shù)和外部參數(shù)。然后利用多個(gè)二維圖象中的信息重建出三維信息。雙目立體視覺系統(tǒng)[1]中立體匹配的準(zhǔn)確性是獲取視差圖的一個(gè)重要環(huán)節(jié),它的本質(zhì)是給定一幅圖像中的一點(diǎn),在另一幅圖像中尋找其對(duì)應(yīng)點(diǎn),這兩點(diǎn)是空間中物體同一點(diǎn)的投影,進(jìn)而求出兩者的視差,以得到物體的深度信息,并進(jìn)一步求得該點(diǎn)的空間坐標(biāo)。目前研究的立體匹配算法大部分都是針對(duì)復(fù)雜的空間場景獲取大致的視差圖。本文針對(duì)人臉這一特殊場景,通過先用GrabCut算法將人臉分割出來,降低了立體匹配的搜索的范圍,然后用區(qū)域匹配算法NCC得到人臉的視差圖,從而得到三維點(diǎn)云。最后通過SIFT的特征提出和匹配反射到三維數(shù)據(jù)上進(jìn)行人臉重建。
1 運(yùn)用雙目視覺系統(tǒng)獲取人臉圖像信息
利用相機(jī)組成雙目系統(tǒng),希望他們的光軸距離越短越好,因?yàn)檫@樣可以將近似的將左右采集圖中對(duì)應(yīng)點(diǎn)為中心的小區(qū)域視為相互的一個(gè)平移。對(duì)左右攝像機(jī)通過標(biāo)定板進(jìn)行立體標(biāo)定[2],標(biāo)定誤差是0.377 542。然后通過極線約束的方法進(jìn)行校正,這樣在另一幅圖像上搜索匹配點(diǎn)的時(shí)候,把原來二維的搜索變成了一維的搜索,降低了匹配點(diǎn)搜索的范圍,從而降低了搜索時(shí)間以及匹配的準(zhǔn)確率。
2 人臉分割
2.1 圖割算法
圖割算法[3]是將分割問題轉(zhuǎn)化為將圖像分為前景、背景的二元標(biāo)號(hào)問題,把圖像轉(zhuǎn)化為一個(gè)無向圖[G=(V,E)]其中,V 為頂點(diǎn),它是有圖像中的像素和代表前景的源點(diǎn)[(S)]和代表背景匯點(diǎn)[(T)]構(gòu)成, [E] 是4 鄰接或者8 鄰接定點(diǎn)對(duì)構(gòu)成。二元標(biāo)號(hào)就是要為圖中的每個(gè)頂點(diǎn)分配前景/背景標(biāo)號(hào)[fi],[i∈V],[fi∈{0,1}]圖像分割結(jié)果即可表示為[f={f1,f2,…,fi,…}],為了求解[f],需最小化能量函數(shù)E(f) :[E(f)=R(f)+λB(F)=i∈VRi(fi)+λ(i,j)∈NBi,j(fi,fj)] (1)
式中,N是相鄰像素對(duì)(可取4 鄰域或8 鄰域);區(qū)域項(xiàng)[R(f)]用來約束[f] 和指定的前景/背景標(biāo)記的相似程度;邊界項(xiàng)[B(f)]用來約束相鄰頂點(diǎn),它們應(yīng)該具有相同的標(biāo)號(hào)值,體現(xiàn)出區(qū)域內(nèi)部的連續(xù)性和邊界的不連續(xù)性。能量函數(shù)的最小化最終通過網(wǎng)絡(luò)流理論來解決,使網(wǎng)絡(luò)流圖的最小割對(duì)應(yīng)能量函數(shù)的最小值,并利用最大流與最小割的等價(jià)性,轉(zhuǎn)化為求取網(wǎng)絡(luò)的最大流。
2.2 GrabCut算法
GrabCut算法是采用高斯混合模型代替直方圖從而能更加準(zhǔn)確的估計(jì)出顏色概率分布從而簡化了用戶的交互方式[4],只需要在目標(biāo)區(qū)域上畫一個(gè)矩形框。通過交互,對(duì)圖進(jìn)行初始化,將矩形框外的區(qū)域設(shè)為圖像的背景[TB],像素標(biāo)號(hào)值為0,矩形框內(nèi)區(qū)域設(shè)為未知區(qū)域[TU](mask即掩碼圖像),像素標(biāo)號(hào)值為1,前景[TF]設(shè)為空,然后根據(jù)標(biāo)號(hào)值為1 和0 的像素初始化前景/背景GrabCut 通過對(duì)[TU]用圖割算法進(jìn)行多次迭代分割來提高前景GMM 參數(shù)估計(jì)的準(zhǔn)確性.在處理結(jié)束之后,mask中會(huì)保存結(jié)果,mask中值為0為背景,值為1為前景。
3 三維點(diǎn)云
3.1 人臉區(qū)域匹配算法
雙目視覺和普通的圖像配準(zhǔn)是有區(qū)別的,它不是由于如場景本身的變化或者運(yùn)動(dòng)引起,而是由于觀察點(diǎn)不同引起的像對(duì)之間的差異。本文采用相似度NCC[5]算子作為相似性度量算子,它的公式如下:
[NCC=i(w1(xi,yi)-u1)(w2(xi,yi)-u2)i(w1(xi,yi)-u1)2i(w2(xi,yi)-u2)2] (2)
[w1]和[w2]是大小相同的窗口,他們是以左圖像中的角點(diǎn)[p1]和右圖像中的角點(diǎn)[p2]為中心的兩個(gè)窗口,[u1]和[u2]為窗口內(nèi)所有像素灰度的平均值,[(xi,yi)]的是在窗口中取值。NCC的3個(gè)約束條件:
(1) 平滑約束。p的視差值和它周圍鄰居的視差值是連續(xù)的。應(yīng)用中是確保在5[×]5的窗口中大于一半的鄰居和P的差值不大于1個(gè)像素。
(2) 惟一性。首先對(duì)左圖像中的角點(diǎn),在右圖像中尋找和它相關(guān)性最大的角點(diǎn);然后在對(duì)右圖像中的角點(diǎn),在左圖像中尋找和它相關(guān)性最大的角點(diǎn),當(dāng)通過雙向搜索到的最大相關(guān)性的角點(diǎn)彼此對(duì)應(yīng),就把他們作為一對(duì)候選匹配角點(diǎn)。
(3) 有序性。P的視差和它右鄰居的視差不大于1。[d(p)≤d(q)+1]。
3.2 金字塔模型
為了提高匹配的速度,本文采用金字塔模型[6],先將圖像分為幾層。在進(jìn)行立體匹配時(shí),先在分辨率低圖像上進(jìn)行匹配,得到匹配結(jié)果,并將匹配結(jié)果作為下一層圖像匹配的視差預(yù)測初值,通過它來指導(dǎo)該層的匹配,從而降低搜索的范圍,以此類推,直到得到最底層的視差圖。利用金字塔匹配模型降低了直接在高分辨率圖像匹配時(shí)的視差搜索范圍,同時(shí)有前一層視差作為指導(dǎo)也降低了誤匹配發(fā)生的概率.
步驟如下:
(1) 通過金字塔模型將圖像分為N層。本文取N=3。依次為第2層[(160×120)]、第1層[(320×240)]、第0層[(640×480)](原始圖像大小)。
(2) 利用GrabCut中的mask中的信息,左視圖mask中為0,則不需要在右視圖中尋找匹配點(diǎn),只有遇到1的時(shí)候才在右視圖需找匹配點(diǎn),從而用求得視差圖。這樣大大縮短了搜索范圍,降低了運(yùn)行時(shí)間。依此類推,直至生成第M層視差圖。
(3) 對(duì)于第M層視差圖(非頂層),其視差計(jì)算由它上層第M-1層指導(dǎo)。具體操作如下:假設(shè)第[M-1]層某一位置[(x,y)],視差為[d],它在第[M]層映射[2×2]的區(qū)域,這個(gè)區(qū)域中每一位置的初始視差均為[2×d],其在右圖的視差搜索范圍為[(2×d-t,2×d+t)],[t]為某個(gè)預(yù)設(shè)值。
(4) 對(duì)于[M=0]層視差圖,即為最終的視差圖。該視差圖具有最高分辨率。
3.3 三維點(diǎn)云
深度與視差的關(guān)系:
[d=bfIL-IR] (3)
式中:距離d即物體的深度,與基線長度b、焦距f和[IL-IR]有關(guān),[IL-IR]是左右圖像的視差,通過立體匹配可以得到人臉的視差,然后通過式(3)可以得到人臉的深度值。從而知道不同人臉角度的三維人臉三維點(diǎn)云的三維坐標(biāo)。
4 點(diǎn)云對(duì)齊
對(duì)得到的人臉不同角度三維點(diǎn)云,本文通過在他們的二維圖像上用sift算法提取特征點(diǎn)和匹配,從而知道它們?nèi)S點(diǎn)云的對(duì)應(yīng)情況,然后通過四元數(shù)的方法得到配準(zhǔn)后的點(diǎn)云。
4.1 SIFT特征點(diǎn)的提取和匹配
SIFT 算法是由David提出的一種局部特征的提取算法[7]。通過在尺度空間尋找極值點(diǎn),提取平移,尺度和旋轉(zhuǎn)不變量。
本文采用SIFT 算法在需要進(jìn)行配準(zhǔn)的的前后兩組數(shù)據(jù)(都是左視圖或者都是右視圖)提取2D 特征點(diǎn)和歐式里德距離進(jìn)行特征點(diǎn)匹配。為了避免產(chǎn)生誤匹配點(diǎn)對(duì)配準(zhǔn)結(jié)果的影響,在這里用Ransac算法消除誤匹配。
[QΣTRtrΣTRΔTΔΣT,R+ΣTT,R-trΣT,RI3]
將匹配點(diǎn)的坐標(biāo)與它們的深度信息相結(jié)合,從而可以知道對(duì)應(yīng)點(diǎn)云的三維坐標(biāo)。
4.2 三維點(diǎn)云的配準(zhǔn)算法(粗配準(zhǔn))
對(duì)SIFT算法得到的三維點(diǎn)云、坐標(biāo)變換矩陣,這里選擇用四元數(shù)法[8]來獲得。
設(shè)旋轉(zhuǎn)變換向量為[qR=q0q1q2q3T],平移變換向量為[qT=q3q4q5T],則完全坐標(biāo)變換向量為[q=qR|qTT],因此變成求q似的函數(shù):
[f(q)=1Npi=1Npxi-R(qR)pi-qr2] (4)
最小化的問題,式中[R(qR)]是點(diǎn)云的旋轉(zhuǎn)矩陣,步驟如下:
(1) 計(jì)算兩個(gè)點(diǎn)云的重心(這兩個(gè)點(diǎn)云分別是[A]和[B]):
[cA=1Nai=1Naai] (5)
[cB=1Nbi=1Nbbi] (6)
(2) 有點(diǎn)云的R和T求協(xié)方差矩陣:
[ΣTR=1Npi=1Np(bi-cB)(ai-cA)T] (7)
(3) 有協(xié)方差矩陣構(gòu)造對(duì)稱矩陣:
[Q(ΣTR)=(ΣTR)ΔTΔΣTR+ΣTTR-trΣTRI3] (8)
式中:[tr(ΣTR)]是矩陣[ΣT,R]的跡,設(shè)[Ai,j=(ΣTR-ΣTR,T)i,j],[Δ=[A23A31A12]T],[I3]為[3×3]的單位矩陣.
(4) 計(jì)算[Q(ΣT,R)]的特征值和特征向量,其最大特征值對(duì)應(yīng)的特征向量是最佳旋轉(zhuǎn)向量[qR]。
最佳平移向量[qT=cA-R(qR)cB],其中:
[R(qr)=q20+q22-q23-q242(q1q2-q0q3)2(q1q3+q0q2)2(q1q2+q0q3)q20-q22+q23-q242(q2q3-q0q1)2(q1q3-q0q2)2(q2q3+q0q1)q20-q22-q23+q24]
通過四元數(shù)的方法得到旋轉(zhuǎn)矩陣R和平移矩陣T,可以將目標(biāo)人臉點(diǎn)云向參考點(diǎn)云移動(dòng)得到粗配準(zhǔn)的點(diǎn)云,為精細(xì)點(diǎn)云配準(zhǔn)做好準(zhǔn)備。
5 實(shí)驗(yàn)結(jié)果和分析
本文的研究是以雙目立體視覺理論為基礎(chǔ), 以人臉為研究對(duì)象, 構(gòu)建一個(gè)三維人臉重建系統(tǒng). 該系統(tǒng)的實(shí)驗(yàn)平臺(tái)主要是由2臺(tái)羅技pro9000攝像頭黑白棋盤格標(biāo)定板和星宇晨計(jì)算機(jī)組成。仿真平臺(tái)為OpenCV 2.1,結(jié)果如圖7所示。
通過雙目測量系統(tǒng)得到三維人臉,降低了實(shí)驗(yàn)設(shè)備的成本。在計(jì)算人臉視差前用極線校正和GrabCut的方法降低了視差的搜索范圍,降低了匹配的時(shí)間。其次用金字塔模型提高了視差的精確度和降低是時(shí)間的復(fù)雜度。同時(shí)在本文中通過用SIFT算法在不同角度的人臉是提取匹配點(diǎn),對(duì)匹配點(diǎn)的三維坐標(biāo)通過四元數(shù)的方法得到旋轉(zhuǎn)矩陣和平移矩陣,可以對(duì)點(diǎn)云進(jìn)行粗配準(zhǔn)。用這個(gè)方法進(jìn)行粗配準(zhǔn)大大提高了運(yùn)行的速度。在實(shí)驗(yàn)過程中發(fā)現(xiàn)用sift算法得到的匹配點(diǎn)存在誤匹配,即使用Ransac算法去除還是會(huì)存在誤匹配的現(xiàn)象。在以后的工作中以匹配點(diǎn)間的歐式里德距離(中值的一定范圍或者是高斯分布)作為依據(jù)取得需要的幾個(gè)參考點(diǎn)。同時(shí)得到的粗配準(zhǔn)對(duì)以后用ICP算法對(duì)三維人臉進(jìn)行精細(xì)配準(zhǔn)奠定基礎(chǔ)。
參考文獻(xiàn)
[1] 黨樂.基于雙目立體視覺的三維重建方法研究[D].西安:長安大學(xué),2009.
[2] 于仕琪,劉睿禎.學(xué)習(xí)OpenCV[M].北京:清華大學(xué)出版社,2010.
[3] 徐秋平,郭敏,王亞榮.基于多尺度分析與圖割的快速圖像分割算法[J].計(jì)算機(jī)應(yīng)用研究,2009,26(10):3889?3991.
[4] ROTHER Carsten, KOLMOGOROV Vladimir, BLAKE Andrew. GrabCut: interactive foreground extraction using iterated graph cuts [J]. ACM Transactions on Graphics, 2004, 37 (3): 111?116.
[5] BEELER Thabo, BICKEL Bernd. High?quality single?shot capture of facial geometry [J]. ACM Transactions on Graphics, 2011, 30(3): 22?25.
[6] 謝耀華,湯曉安,孫茂印.不產(chǎn)生精度截?cái)嗉皵?shù)據(jù)膨脹的圖像金字塔[J].中國圖象圖形學(xué)報(bào),2009,14(6):1070?1074.
[7] DAVID G. Distinctive image features from scaleinvariant [J]. International Journal of Computer Vision, 2004, 60(2): 1573? 1405.
[8] HORN B. Closed?form solution of absolute orientation using unit quaternions [J]. Journal of the Optical Society of America, 1987, 4(4): 629?642.