張 克 劉 弘 陸佃杰 徐劍客
(山東師范大學(xué)信息科學(xué)與工程學(xué)院,濟(jì)南,250014)
?
基于單臺(tái)Kinect的高精度個(gè)性化人體建模方法
張 克 劉 弘 陸佃杰 徐劍客
(山東師范大學(xué)信息科學(xué)與工程學(xué)院,濟(jì)南,250014)
提出一種基于單臺(tái)Kinect的高精度三維人體建模方法。首先使用一臺(tái)Kinect對(duì)人體頭部進(jìn)行掃描,以獲取高精度的頭部點(diǎn)云數(shù)據(jù);其次,在保持頭部精確度的基礎(chǔ)上對(duì)所獲取的點(diǎn)云數(shù)據(jù)進(jìn)行采樣預(yù)處理;最后利用層次化的緊支撐徑向基函數(shù)(CS-RBFs)將采樣后的點(diǎn)云與已有的人體軀干進(jìn)行擬合獲得3D人體模型。仿真結(jié)果表明,該方法能夠提高人體模型的精確度并提高建模速度。
人體建模; Kinect; 緊支撐徑向基函數(shù); 隱式曲面
計(jì)算機(jī)群體動(dòng)畫(huà)因?yàn)榫哂袦?zhǔn)確、智能以及操作性強(qiáng)的特點(diǎn),已經(jīng)在動(dòng)漫動(dòng)畫(huà)、網(wǎng)游制作、交通管理、人群疏散和災(zāi)難逃生等方面取得了很好的效果。如何對(duì)真實(shí)的人體進(jìn)行三維建模并應(yīng)用到群體動(dòng)畫(huà)中是當(dāng)前群體動(dòng)畫(huà)仿真系統(tǒng)面臨的一個(gè)重要挑戰(zhàn)。而傳統(tǒng)的3D人體建模方法存在模型創(chuàng)意性少、模型多樣性差等方面的問(wèn)題。本文提出了基于單臺(tái)Kinect的高精度個(gè)性化人體建模方法,力圖為群體動(dòng)畫(huà)仿真的角色設(shè)計(jì)提供更加豐富的創(chuàng)作工具。自Kinect發(fā)布以來(lái),大家紛紛提出使用Kinect構(gòu)建三維人體模型的方法。文獻(xiàn)[1]提出使用3個(gè)Kinect從不同的角度掃描人體,在經(jīng)過(guò)迭代等過(guò)程重建人體三維模型。文獻(xiàn)[2]提出了Meanshift算法,但該算法容易造成被跟蹤人體丟失的問(wèn)題。文獻(xiàn)[3]提出當(dāng)使用Kinect時(shí)其深度數(shù)據(jù)隨機(jī)誤差的影響因素。文獻(xiàn)[4]使用Kinect實(shí)現(xiàn)了對(duì)人手的標(biāo)記和跟蹤。
以上通過(guò)Kinect得到的人體模型的方法雖然能夠構(gòu)建個(gè)性的人體模型,但是算法復(fù)雜,不容易實(shí)現(xiàn)。由于Kinect掃描精度以及范圍的限制,所建模型普遍存在精確度不高的問(wèn)題。在計(jì)算機(jī)動(dòng)畫(huà)中,觀(guān)眾對(duì)人體的關(guān)注度主要集中在頭部,因此本文致力于使用單臺(tái)Kinect構(gòu)造高精度的人體頭部模型,然后從人體模型庫(kù)中獲取不同的軀干,通過(guò)將高精度頭部模型與已有人體軀干相擬合的方式獲得多樣性的個(gè)性化人體模型。
本文主要介紹了使用Kinect獲得頭部點(diǎn)云數(shù)據(jù),然后通過(guò)預(yù)處理刪除冗余的點(diǎn),使用基于隱式曲面的方法簡(jiǎn)化并去除使用Kinect獲取模型時(shí)出現(xiàn)的不足,重構(gòu)一個(gè)簡(jiǎn)化的頭部模型,并與已有的人體軀干擬合,從而獲得多樣性的個(gè)性化人體模型。
在進(jìn)行人體建模的過(guò)程中需要對(duì)人體的各部位進(jìn)行處理,尤其是頭部處理過(guò)程更是復(fù)雜,而頭部又是人體模型中最具特色的部位。雖然使用一臺(tái)Kinect無(wú)法方便地獲得一個(gè)完整的人體模型,但通過(guò)一臺(tái)Kinect掃描可以獲得比較精細(xì)的頭部模型,但是獲得的模型可能會(huì)存在漏洞,重疊的現(xiàn)象,如圖1所示。本文使用基于隱式曲面的方法可以在獲得的頭部點(diǎn)云的基礎(chǔ)上重建一個(gè)完整的頭部模型。
圖1 原始模型Fig.1 Original model
本文方法分3個(gè)步驟:(1)取樣。使用Kinect掃描獲得頭部點(diǎn)云數(shù)據(jù)。(2)預(yù)處理。對(duì)于獲得的頭部點(diǎn)云數(shù)據(jù)采取均勻取樣的方法。因?yàn)槭褂肒inect獲得的頭部點(diǎn)云的數(shù)據(jù)密度非常高,采用隨機(jī)的方式仍然可以保留頭部的主要特征。(3)人體模型重建。對(duì)取得的點(diǎn)采用緊支撐徑向基函數(shù)的層次化方法進(jìn)行模型恢復(fù),恢復(fù)成隱式曲面[5]模型,實(shí)現(xiàn)頭部與軀干的融合,重建3D人體模型。
在本文方法中,使用Kinect掃描獲得的頭部模型比較精細(xì),但在實(shí)際操作中總是會(huì)出現(xiàn)一些漏洞或重疊,而且取樣得到的點(diǎn)云數(shù)據(jù)非常巨大,如果直接進(jìn)行處理,不僅消耗系統(tǒng)資源,而且浪費(fèi)時(shí)間,因此,采用隨機(jī)取點(diǎn)的方式重新取樣。實(shí)驗(yàn)證明這樣不僅可以獲得同樣的效果,而且效率更高,還可以很好地?cái)M合模型中的不足。
2.1 預(yù)處理
在進(jìn)行曲面擬合過(guò)程中如果點(diǎn)數(shù)太多肯定會(huì)影響效率,而通過(guò)基于隱式曲面的建模方式,在使用相對(duì)少量的點(diǎn)的情況下就可以擬合出相同的效果,重建頭部模型。通過(guò)Kinect掃描得到整個(gè)模型的點(diǎn)云數(shù)據(jù)是一個(gè)龐大的數(shù)據(jù),需要對(duì)這些數(shù)據(jù)進(jìn)行預(yù)處理。在本文中采用隨機(jī)取點(diǎn)的預(yù)處理方法,因?yàn)樵P椭械狞c(diǎn)云數(shù)據(jù)非常密集,采用隨機(jī)取點(diǎn)的方法可以保留頭部特征,如圖2所示。
2.2 隱式曲面重構(gòu)
本文利用緊支撐徑向基函數(shù)(Compactly supported radial basis functions, CS-RBFs)的層次化方法[6]進(jìn)行曲面重構(gòu),重建模型。徑向基函數(shù)(Radial basis function, RBF)[7]是關(guān)于中心點(diǎn)徑向?qū)ΨQ(chēng)的函數(shù),可分為緊支撐和非緊支撐[8]徑向基函數(shù)。非緊支撐徑向基函數(shù)適合于不規(guī)則、非均勻采樣數(shù)據(jù)的差值和不完整網(wǎng)格的修復(fù),而緊支撐徑向基函數(shù)則缺乏修復(fù)缺失數(shù)據(jù)的能力。緊支撐徑向基函數(shù)的差值矩陣是一個(gè)對(duì)角占優(yōu)的稀疏矩陣,只影響其支撐范圍內(nèi)的點(diǎn),矩陣的存儲(chǔ)和求解的復(fù)雜度較小,有利于大數(shù)據(jù)量的重建工作。而本文中用到的模型是具有大量數(shù)據(jù)的模型,所以本文采用緊支撐徑向基的層次化方法進(jìn)行曲面重構(gòu)。
2.2.1 CS-RBF差值
(1) 緊支撐徑向基函數(shù)模型
假設(shè)P={pi}為模型中隨機(jī)獲取的N個(gè)散亂點(diǎn),并同時(shí)獲取每個(gè)點(diǎn)所對(duì)應(yīng)的法向量ni。在給定的此R3三維空間中的點(diǎn)云M上的N個(gè)散亂點(diǎn),找一個(gè)合理插值M的三維函數(shù)f(x),且當(dāng)f(x)=0時(shí),即插值點(diǎn)云M,而當(dāng)f(x)≠0時(shí),則將三維空間中的點(diǎn)云分成了兩部分。f(x)>0的部分假設(shè)曲面內(nèi)部空間即法向量的方向所指向的空間;則當(dāng)f(x)<0時(shí),表示在曲面外部空間的點(diǎn)。通過(guò)函數(shù)值CS-RBF[9]來(lái)插值這N個(gè)散亂點(diǎn),可表示為
φσ(‖x-pi‖)
(1)
將式(1)改寫(xiě)為
(2)
根據(jù)式(2),在f(x)中包含兩部分,前一部分為自適應(yīng)單元分解(Particleofunity,PU)函數(shù);后一部分為歸一化RBF。根據(jù)PU的思想,把整個(gè)點(diǎn)云分解成眾多的支撐域,可以允許重疊,在每個(gè)支撐域分別構(gòu)建逼近曲面,以歸一化的RBF對(duì)每個(gè)局部逼近曲面進(jìn)行加權(quán)擬合,形成PU隱式曲面,得到滿(mǎn)意的三維模型。
(2) 求解緊支撐徑向基函數(shù)
(3)
(4)
式中:gi(x)的零值面與w=h(u,v)一致。
? 從插值條件中定義系數(shù)ci,計(jì)算式為
φσ(‖pj-pi‖)
(5)
也可以寫(xiě)成
(6)
式(5)為變量ci對(duì)應(yīng)的一個(gè)稀疏線(xiàn)性方程組。其中N×N插值矩陣Φ={Φij}是正定的,N為插值數(shù)據(jù)點(diǎn)的數(shù)量。最后使用改進(jìn)的預(yù)處理雙共軛梯度法求解式(5),得到點(diǎn)云的隱式曲面方程。
在本文算法中使用八叉樹(shù)對(duì)P的邊界框進(jìn)行了細(xì)分,計(jì)算葉子節(jié)點(diǎn)的平均對(duì)角線(xiàn),最后設(shè)置支撐域半徑σ為3/4平均對(duì)角線(xiàn)的長(zhǎng)度。
2.2.2 多級(jí)CS-RBFs插值
當(dāng)使用單級(jí)CS-RBFs插值恢復(fù)隱式曲面時(shí),雖然單級(jí)插值很快,但是沒(méi)有修復(fù)不完整數(shù)據(jù)的能力,所以這里使用多級(jí)CS-RBFs插值[10],先構(gòu)建一個(gè)層次化點(diǎn)集{PN= PN,…,P2,P1}。通過(guò)抵消前一級(jí)插值PN時(shí)用到的插值函數(shù),插值層次化的一個(gè)點(diǎn)集PN+1。具體步驟如下:
(1) 構(gòu)建層次化點(diǎn)集{PN= PN,…,P2,P1}。首先把P擬合成一個(gè)平行六面體,然后把它和它的分組遞歸地細(xì)分到8個(gè)等大的象限。點(diǎn)集P由基于八叉樹(shù)的平行六面體聚合;對(duì)于每一個(gè)單元格存在P里面的點(diǎn),并通過(guò)平均化和歸一化計(jì)算,將P的一個(gè)單位法線(xiàn)分配給質(zhì)心。
(2) 多層次插值。構(gòu)建層次化點(diǎn)集之后,首先通過(guò)遞歸的方式定義插值基函數(shù)
(7)
(8)
支撐半徑σk+1=σk/2,σ1= aL,其中L為邊界平行四邊形對(duì)角線(xiàn)的長(zhǎng)度,參數(shù)a使邊界框的八分圓總是被一個(gè)半徑σ1的球覆蓋,在多次實(shí)踐中發(fā)現(xiàn)a=0.75時(shí)效果最好。通常細(xì)分級(jí)別N通過(guò)σ0和σ1確定,且當(dāng)N=[-lb(σ0/σ1)]時(shí)可以得到比較好的結(jié)果,σ0為單級(jí)CS-RBF插值的半徑。
使用局部支持的徑向基函數(shù)使計(jì)算過(guò)程高效,由粗到精的層次化方法使本文方法對(duì)于離散數(shù)據(jù)的密度不敏感,并且可以得到一個(gè)完整的模型。
2.2.3 人體模型重建
在人體模型庫(kù)中選擇與頭部相匹配的模型,利用層次化的CS-RBFs,將優(yōu)化后的頭部模型與所匹配的人體模型擬合成完整的3D人體模型。如圖3所示。
本文實(shí)驗(yàn)所使用的工作站配置為:CPU為IntelCorei5-2.5GHz,內(nèi)存為16GB,顯卡為GeForceGTX680,使用OpenGL編程。本文使用Kinect獲得頭部的點(diǎn)云數(shù)據(jù),通過(guò)隨機(jī)取點(diǎn)的方式去除冗余的點(diǎn),使用多級(jí)CS-RBFs擬合,重新構(gòu)建模型。
如圖4所示,先使用Kinect獲得頭部模型的點(diǎn)云數(shù)據(jù),圖4中原始模型有104 732個(gè)點(diǎn),采用隨機(jī)取點(diǎn)的預(yù)處理方式獲得點(diǎn)云,圖4中隨機(jī)取點(diǎn)后模型有5 000個(gè)點(diǎn),然后采用緊支撐徑向基函數(shù)的層次化方法進(jìn)行曲面重構(gòu),獲得一個(gè)完整的重構(gòu)模型,重構(gòu)后模型有54 614個(gè)點(diǎn),與圖4中的原始模型比較,可以看出通過(guò)隨機(jī)取點(diǎn)的方式不影響模型的特征,而且對(duì)原始模型實(shí)現(xiàn)了簡(jiǎn)化處理。
圖3 完整的人體模型 圖4 本文方法Fig.3 Human body Fig.4 Proposed method
如圖5所示,當(dāng)使用Kinect掃描人物頭部獲得頭部模型時(shí),模型會(huì)存在漏洞,使用本文方法,利用緊支撐徑向基函數(shù)的層次化方法進(jìn)行曲面重構(gòu),可以快速修補(bǔ)在掃描時(shí)模型頭部留下的漏洞。表1是不同模型在預(yù)處理和重建時(shí)所用時(shí)間的時(shí)間對(duì)比。通過(guò)表1可以看出,隨著點(diǎn)的數(shù)量的增加,重構(gòu)所用時(shí)間也會(huì)增加。得到這些個(gè)性化的模型之后,可以在Maya中進(jìn)行貼圖等操作,為每個(gè)人構(gòu)建一個(gè)特色模型,并將這些模型應(yīng)用到群體仿真中,如圖6所示。
表1 執(zhí)行時(shí)間對(duì)比
圖5 重構(gòu)前后對(duì)比 圖6 人體建模Fig.5 Comparison before and after reconstructing Fig.6 Human modeling
綜上所述,本文提出的方法具有以下優(yōu)勢(shì):(1)通過(guò)單臺(tái)Kinect掃描頭部模型的方法既提高了精度又降低了硬件成本;(2)利用緊支撐徑向基函數(shù)的層次化方法進(jìn)行曲面重構(gòu)[12],解決了頭部與軀干擬合的問(wèn)題,同時(shí)修補(bǔ)了Kinect模型掃描的漏洞問(wèn)題;(3)將人體頭部建模與軀干分離的方法能夠方便地獲得多樣性的人體模型,為群體動(dòng)畫(huà)仿真[13]提供了有力支持。
本文提出了一種新的3D人體建模方法。首先使用一臺(tái)Kinect獲取高精度的頭部點(diǎn)云數(shù)據(jù);其次,在保持頭部精確度的基礎(chǔ)上對(duì)所獲取的點(diǎn)云數(shù)據(jù)進(jìn)行采樣預(yù)處理;最后利用層次化的緊支撐徑向基函數(shù)將采樣后的點(diǎn)云與已有的人體軀干進(jìn)行擬合獲得3D人體模型。仿真結(jié)果表明,該方法能夠提高人體模型的精確度并提高建模速度,修補(bǔ)了獲取模型時(shí)的漏洞問(wèn)題,可以快速高效地獲得多種多樣的人體模型,而且只使用一臺(tái)Kinect節(jié)省了開(kāi)銷(xiāo)。
[1] Tong J, Zhou J, Liu L, et al. Scanning 3D full human bodies using Kinects[J]. Visualization and Computer Graphics, IEEE Transactions on, 2012, 18(4): 643-650.
[2] Comaniciu D, Ramesh V, Meer P. Real-time tracking of non-rigid objects using mean shift[C]∥Computer Vision and Pattern Recognition Proceedings.Hilton Head Island, SC:IEEE,2000: 142-149.
[3] Khoshelham K, Elberink S O. Accuracy and resolution of Kinect depth data for indoor mapping applications[J]. Sensors, 2012, 12(2): 1437-1454.
[4] Oikonomidis I, Kyriazis N, Argyros A A. Efficient model-based 3D tracking of hand articulations using Kinect[C]∥Proceedings of the 22nd British Machine Vision Conference. Dundee, UK:BMVC, 2011: 1-11.
[5] Ning P, Bloomenthal J. An evaluation of implicit surface tilers[J]. Computer Graphics and Applications, IEEE, 1993, 13(6): 33-41.
[6] Floater M S, Iske A. Multistep scattered data interpolation using compactly supported radial basis functions[J]. Journal of Computational and Applied Mathematics, 1996, 73(1): 65-78.
[7] Buhmann M D. Radial basis functions[J]. Acta Numerica, 2000, 9: 1-38.
[8] Carr J C, Beatson R K, Cherrie J B, et al. Reconstruction and representation of 3D objects with radial basis functions[C]∥Proceedings of the 28th Annual Conference on Computer Graphics and Interactive Techniques. New York, USA:ACM,2001: 67-76.
[9] 郭麗霞. 基于 RBF 的點(diǎn)云數(shù)據(jù)三維重建技術(shù)研究[D]. 西安:西北大學(xué), 2006.
Guo Lixia. On point-cloud data reconstruction using RBF[D]. Xi′an: Northwest University, 2006: 10-21.
[10]Ohtake Y, Belyaev A, Seidel H P. A multi-scale approach to 3D scattered data interpolation with compactly supported basis functions[C]∥Shape Modeling International.Seoul, South Korea: IEEE, 2003: 153-161.
[11]Ohtake Y, Belyaev A, Seidel H P. Ridge-valley lines on meshes via implicit surface fitting[J].ACM Transactions on Graphics, 2004, 23(3): 609-612.
[12]繆永偉, 林海斌, 壽華好. 基于Hermite插值的網(wǎng)格拼接和融合[J]. 中國(guó)圖象圖形學(xué)報(bào), 2013, 18 (12): 1651-1659.
Miao Yongwei, Lin Haibin, Shou Huahao. Mesh stitching and fusion based on Hermite interpolation scheme[J]. Journal of Image and Graphics, 2013, 18(12): 1651-1659.
[13]王愛(ài)霖, 劉宏, 張鵬. 基于遺傳算法和微粒群算法的群體動(dòng)畫(huà)造型平臺(tái)[J]. 計(jì)算機(jī)科學(xué), 2013, 40(1): 244-246.
Wang Ailin, Liu Hong, Zhang Peng. Genetic algorithm and particle swarm optimization based animation group modeling platform[J]. Computer Science, 2013, 40(1): 244-246.
Personalized Human Body Modeling with High Precision Based on Single Kinect
Zhang Ke, Liu Hong, Lu Dianjie, Xu Jianke
(School of Information Science and Engineering, Shandong Normal University, Jinan, 250014, China)
A personalized human body modeling method with high precision based on single Kinect is proposed. Firstly, the high-precision point cloud of a human head using single Kinect is obtained. Then, the point cloud is preprocessed based on maintaining the accuracy of the head. Finally, by employing the hierarchical compactly supported radial basis function (CS-RBFs), the sampled point cloud is fitted with the existing human body to get 3D human body model. Simulation results show that the proposed method can enhance accuracy and speed of human body modeling.
human body modeling; Kinect; compactly supported radial basis functions; implicit surface
國(guó)家自然科學(xué)基金(61202225, 61272094,61373149,61303157)資助項(xiàng)目;高等學(xué)校博士學(xué)科點(diǎn)專(zhuān)項(xiàng)科研基金(20133704120009)資助項(xiàng)目;山東省高等學(xué)??萍加?jì)劃項(xiàng)目(J13LN13)資助項(xiàng)目。
2014-10-23;
2014-11-13
TP391.9
A
張克(1988-),男,碩士研究生,研究方向:計(jì)算機(jī)軟件與理論,E-mail: gunterv@163.com。
徐劍客(1989-),男,工程碩士,研究方向:軟件工程。
劉弘(1955-),女,教授,博士生導(dǎo)師,研究方向:軟件智能化技術(shù)、工業(yè)過(guò)程優(yōu)化。
陸佃杰(1981-),男,碩士生導(dǎo)師,研究方向:計(jì)算機(jī)軟件與技術(shù)。