朱新山, 王宏星, 黃向生
(1.天津大學 電氣與自動化工程學院,天津 300072;2.中國科學院 自動化研究所,北京 100190)
?
基于單個深度相機的帶紋理人臉實時重建算法*
朱新山1, 王宏星1, 黃向生2
(1.天津大學 電氣與自動化工程學院,天津 300072;2.中國科學院 自動化研究所,北京 100190)
三維重建的研究是近年來計算機視覺領域的一個熱點。基于單個深度相機的KinectFusion算法具有實時性高、比較廉價等優點,在KinectFusion算法基礎上提出了能夠自動識別人臉的有效區域,通過獲取相應的深度數據和RGB數據來進行帶紋理的人臉三維重建方法。在點云配準階段引入一個懲罰因子來平滑人臉的非剛體運動。根據獲取的顏色信息建立顏色信息的場函數并進行紋理貼圖,得到更加逼真的帶紋理的三維模型;在重建過程中使用了GPU加速實現實時性。
人臉三維重建, 紋理融合, GPU加速
隨著計算機視覺技術的發展,三維建模得到越來越多的關注,特別是在微軟推出Kinect設備以后,使得三維建模的研究越來越普及,同時也使得深度數據獲取變得更為便捷。三維建模的難點之一在于如何得到完整的三維模型,解決這一問題的傳統方法主要有兩種:1)對目標進行多次掃描以修復孔洞;2)多臺設備從不同角度同時對目標進行掃描。獲取完整三維模型的另一個難點是如何使用已經獲取的不同方向的數據來進行三維重建,形成完整的模型[1]。使用Xtion配合電動轉臺采集多視角玉米果穗點云數據進行重建[2]。提出了一種旋轉平臺點云數據配準方法,因為基于旋轉平臺,使用局限性比較明顯[3]。提出的方法對于單一顏色物體重建效果不好,而且對于體積較小的物體無法完成重建。
本文基于KinectFusion[4,5]算法,以Kinect設備提供的深度數據進行三維重建。
本文的三維重建方法流程如圖1所示。

圖1 工作流程
1.1 人臉檢測和分割
Kinect以30 Hz的幀率提供640×480的深度數據和RGB數據。首先需要檢測出人臉的位置,使用的方法是Haar classifier[6]。為提高其魯棒性,分別對人臉進行正臉和側臉兩次檢測。
在得到人臉區域以后,可以通過區域生長來剔除人臉以外的無效數據達到分割的目的。
為減少時間開銷,只在算法開始或者重置算法后進行人臉檢測。得到有效的人臉區域之后,在以后處理過程中就省略了人臉檢測這一步驟。
1.2 深度圖處理
該階段主要包括雙邊濾波和將深度圖轉換成頂點圖和法向圖兩個步驟。
1)雙邊濾波:原始數據不可避免地包含有噪聲,因此,首先需要進行降噪處理。本文通過雙邊濾波來達到降噪的目的,該方法在降噪的同時可以有效保留邊界信息。雙邊濾波的公式如下

(1)

上述的濾波過程,指數運算的復雜度比較大。由于深度圖中兩個像素間的距離為整數,可以通過查表來加速計算。
2)深度圖的轉換:令fx,fy,cx,cy為相機的內部參數,可以利用這些參數將深度圖轉換成頂點圖(Vi表示),每一個頂點處的法向量可以通過向量的外積得到。
設(u,v)為深度圖上任意一點,z=Di(u,v)為其深度值,對應的頂點Vi計算如下
(2)
由向量外積得到法向量
Ni=(Vi(u+1,v)-Vi(u,v))× (Vi(Vi(u,v+1)-Vi(u,v))
(3)
對其進行標準化Ni/‖Ni‖。
1.3 姿態估計
在該階段,需要對每幀深度數據進行處理,估計人臉的姿態。主要使用迭代最近點算法(iterativeclosestpoint,ICP)來計算當前幀數據與前一幀數據之間的變換矩陣。

(4)
然后根據前一幀的頂點圖和法向圖來找到對應的點。
在找對應點對的過程中,可以通過設置閾值(包括距離和夾角兩個方面)的方法來有效地排除離群點帶來的影響,同時可以減小對應點對的搜索范圍,加速計算過程。
得到對應點對之后,最小化點面距離,得到變換矩陣T。本文用E來表示對應點對的距離之和,距離是點對之間一個點到另一個點所在處的切平面的距離,公式如下

(5)
若為剛體變換,則有


(6)

則最終的目標函數為

(7)
式(7)可以寫成
(8)


1.4 體融合
文中使用體素表示的方法來進行融合,該方法利用截斷符號距離函數(truncated signed distance function,TSDF)將三維頂點轉換成體素的表達方式。TSDF具體含義是空間中每個點距離其最近界面的距離。
在體融合階段,遍歷每一個體素,并通過加權平均策略來對每一個體素的tsdf值進行更新。對于一個體素(x,y,z)所表示的世界坐標系下的坐標vg為
vg(x)=(x+0.5f)×cell_size.x
vg(y)=(x+0.5f)×cell_size.y
vg(z)=(x+0.5f)×cell_size.z
(9)
式中cell_size為體元大小,表達式為

(10)
將vg變換到相機坐標得到v,隨后將v映射到像素坐標平面得到對應的像素p為

(11)
實際應用中,一般令wi=1,即可得到不錯的效果,且可以簡化計算。
Kinect最佳掃描范圍為0.5~3.5m。在0.5m之內,Kinect的結果準確度較低,掃面對象時浪費了掃描空間和分辨率。使掃描空間向前偏移一定量后得到的新空間符合工作要求,獲得更加滿意的結果,加偏移量之后的變換公式修改如下
vg(z)=(z+0.5f)×cell_size.z+a
(12)
式中 a為偏移量。
本文通過實驗最終選擇的參數為:分辨率128×128×128,實際大小0.4m×0.4m×0.4m,offset為0.5m。
1.5 光線投射和移動立方體算法
在三維可視化產業中,大部分三維模型都通過點云或者多邊形網格的形式展現。光線投射和移動立方體可以用來得到點云或者多邊形網格。
光線投射算法[7]的作用是得到更加精細的表面。對于每個像素點(x,y),可以認為相機會發出一條光線穿過該像素點,直到遇到重建表面該光線停止傳播。光線和表面的交點可以通過線性插值得到。根據光線傳播的方向可以得到深度值,然后形成整個深度圖;而法向圖可以通過TSDF得到。光線投射方法的主要作用是給ICP算法提供高質量的數據,當呈現在屏幕時,由此得到的噪聲、陰影和孔洞都比原始的深度數據少。
移動立方體方法[8,9]可以對得到的重建模型進行網格化。理論上空間中的表面由TSDF值為零的點組成,但由于離散化的分辨率有限,所以不可能所有的零值點都恰好出現在子空間的函數值中。退而求其次,TSDF將空間分成兩部分:物體內側和外側。TSDF是一個連續函數,所以零點應該在具有正值和具有負值的子空間中間。
確定了所有相鄰的異號子空間,可以大致地勾勒出界面的樣子。如果認為一個子空間與其上下左右前后六個相鄰的子空間有棱相連,那么界面會穿過所有兩端異號的棱。為了得到更加精確的結果,由于實際上棱長很短,認為在任意一條棱上TS-DF值是線性變化的,即使用線性插值的方法可以確定異號棱上TSDF的零點位置。認為棱上的零點都是界面上的點,而將其以子空間為單位組織起來,可以相應地連接成面片就得到了完整的對象模型。
紋理融合能夠得到更加逼真的模型,而GPU加速可以提高重建速度,滿足實時性的要求。
2.1 紋理融合
Kinect設備可以同時獲取深度數據和RGB數據,因此,可以使用獲取的RGB數據進行紋理融合。由于Kinect攝像頭得到的RGB數據和深度數據是同步傳輸的,因此,在紋理融合過程中可以省去姿態估計步驟。
由于Kinect設備的RGB鏡頭和深度鏡頭位置和參數不同,相同像素點所代表的實際點不同,因此,需要進行信息校對,將信息匹配,使顏色和深度的對應關系相同。對于一個視角而言,RGB數據是二維圖像,為了重建出完整的三維帶紋理模型,需要不同視角的顏色信息。獲取的大量數據之間存在噪聲和融合的問題。
與深度數據處理類似,可以將空間按照相同的分辨率劃分,認為每個子空間內的顏色相同,并認為相機所收到的光線是距離該相機最近的子空間發出的。

然后利用加權平均的方法將顏色信息融合。
2.2 GPU加速
由于算法計算量較大,同時要求實時性良好,這就需要計算算法高效快速。當提高分辨率時,其計算量遠超過CPU所能支持的極限,需要采取其他方法進行優化。NVIDIA公司推出的CUDA顯卡編程解決了這個問題。由于算法中存在大量的圖形或類圖形計算,所以使用顯卡的并行結構進行運算,大幅減少了運算時間,提高處理速度,提升了幀率。
實驗分別進行了不同分辨率下重建效果的對比以及相同分辨率下CPU和使用GPU加速處理效率的對比。
3.1 不同分辨率下重建效果
分別設置了64×64×64,128×128×128以及256×256×256三種不同的分辨率,重建效果如圖2。

圖2 不同分辨率人臉重建效果
由圖2可以看出,重建的效果并不是嚴格地隨著分辨率的增加而增加,當設置的分辨率達到一定值之后,再增加分辨率重建模型的精細程度變化不明顯,甚至增加分辨率反而使模型表面不夠光滑,原因分析如下:
64×64×64的效果不佳的原因是分辨率不足,導致圖像重建不夠精細;與128×128×128分辨率的模型相比,256×256×256效果不但沒有提升,反而重建模型表面有些凹凸不平,分析原因可能是受到Kinect設備的限制。Kinect設備的精度總體為mm到cm級,因此,重建模型精細程度會受到硬件設備本身的限制。
3.2 紋理融合實驗效果
前面的3幅沒有紋理信息的重建模型,可以看出,雖然能夠得到三維模型,但是不夠形象逼真,而通過紋理融合得到的三維模型將顏色信息融合到三維模型,使得模型更加逼真。本文的實驗分別進行了不同分辨率下的紋理融合,結果如圖3所示。

圖3 紋理融合示意圖
3.3 GPU加速結果對比
在同一分辨率下的CPU處理所用時間和使用GPU加速處理所用時間進行對比如表1,分辨率為128×128×128,每次取3幀數據進行比較。
由表1可以看出,在release模式下,使用GPU加速后,對重建過程中的每一步都有了明顯的提速,符合實時性的要求。

表1 Release模式下GPU加速實驗 ms
本文實現了基于單個深度設備的人臉實時重建,主要通過兩個方面進行加速:1)減少對人臉的檢測,只有在人臉位移超過一定閾值才進行人臉檢測;2)用查表的方法取代運算復雜的指數運算。另外,在姿態估計過程中,引入一個懲罰因子來減小非平滑運動對重建效果帶來的影響。本文還對重建模型進行了紋理貼圖,令三維模型更加形象,逼真。在雙邊濾波、姿態估計、顏色融合等過程中引入了GPU加速來實現實時性。
[1] 王 可,戈振揚,郭 浩,等.基于Xtion傳感器的玉米果穗三維形態指標測量系統[J].傳感器與微系統,2015,34(4):62-65.
[2] 周朗明,鄭順義,黃榮永.旋轉平臺點云數據的配準算法[J].測繪學報,2013,42(1):73-79.
[3] 郭連朋,陳向寧,徐萬朋,等.基于Kinect傳感器的物體三維重建[J].四川兵工學報,2014(11):119-123.
[4] Izadi S,Kim D,Hilliges O,et al.KinectFusion:Real-time 3D reconstr-uction and interaction using a movingdepth camera[C]∥Proceedings of the 24th Annual ACM Symposium on Us-er Interface Software and Technology,ACM,2011:559-568.
[5] Fitzgibbon A.KinectFusion:Real-time dense surface mapping and tra-cking[C]∥2011 10th IEEE Inter-national Symposium on Mixed and Augmented Rea-lity(ISMAR),IEEE,2011:127-136.
[6] Lienhart R,Kuranov A,Pisarevsky V.Pattern Recognition[M].Berlin Heidelberg:Springer,2003:297-304.
[7] Roth S D.Ray casting for modeling solids[J].Computer Graphics & Image Processing,1982,18(2):109-144.
[8] Lorensen W E,Cline H E.Marching cubes:A high resolution 3D surface construction algorithm[C]∥ACM SIGGRAPH Computer Graphics,1987:163-169.
[9] Newman T S,Yi H.A survey of the marching cubes algorithm[J].Computers & Graphics,2006,30(5):854-879.
Real-time human face reconstruction with texture integration based on single depth camera*
ZHU Xin-shan1, WANG Hong-xing1, HUANG Xiang-sheng2
(1.School of Electrical Engineering and Automation,Tianjin University,Tianjin 300072,China;2.Institute of Automation,Chinese Academy of Sciences,Beijing 100190,China)
3D reconstruction is a hot spot in the field of computer vision.Based on a depth sensor characteristics of real time and low cost of KinectFusion algorithm,a method which can automatically recognize face region by obtaining depth data and RGB data to reconstruct the 3D model on the basis of KinectFusion.This method adds a penalty factor to smooth the motivation of human face.Texture integration is applied to get a color information.GPU acceleration is applied during the reconstruction.
human face reconstruction; texture integration; GPU acceleration
10.13873/J.1000—9787(2017)08—0126—04
2016—07—14
國家自然科學基金資助項目(61573356)
TP 301
A
1000—9787(2017)08—0126—04
朱新山(1977-),男,博士,副教授, 主要從事機器學習理論與應用研究工作。