


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