李 翔,李澤豐,李治江
(武漢大學(xué) 印刷與包裝系,武漢 430072)
隨著數(shù)字傳播技術(shù)的發(fā)展,人們?cè)絹?lái)越不能滿足于二維圖像帶來(lái)的視覺(jué)效果,三維立體感更被人們所推崇.利用三維重建可實(shí)現(xiàn)對(duì)場(chǎng)景、物體及人體等的立體復(fù)制.其中,人體三維重建一直有著實(shí)際應(yīng)用價(jià)值,并曾經(jīng)被普遍應(yīng)用于各個(gè)領(lǐng)域:在考古領(lǐng)域,可重建兵馬俑、木乃伊等文物[1]的三維模型;在醫(yī)學(xué)領(lǐng)域,人體三維重建可用于疾病診斷[2]、模擬手術(shù)等;在通訊領(lǐng)域,人體三維重建可用于基于三維重建與全息投影通訊.結(jié)合VR/AR技術(shù),人體三維重建能夠有更普遍的運(yùn)用,如虛擬試衣、門禁系統(tǒng)等.
目前,三維重建的方法主要有:基于計(jì)算機(jī)視覺(jué)的雙視/多視光學(xué)成像方法[3]利用三維建模軟件的方法及基于掃描設(shè)備的三維重建.其中,基于掃描設(shè)備的重建方法可直接獲取深度信息、紋理信息,且操作簡(jiǎn)便,重建效果更真實(shí),因此更適合于人體三維重建.基于紅外點(diǎn)云的Kinect體感器設(shè)備以其價(jià)格低廉、操作簡(jiǎn)單、應(yīng)用潛力大等優(yōu)點(diǎn)得到廣泛關(guān)注,并且可滿足一般的精度要求.
Kinect[4]是微軟公司推出的一款集深度信息獲取、骨骼識(shí)別、語(yǔ)言識(shí)別等多種技術(shù)于一身的體感控制器.基于Kinect的三維重建已有相干學(xué)者對(duì)數(shù)據(jù)處理算法、配準(zhǔn)算法、重建算法、紋理貼圖等算法進(jìn)行了相關(guān)研究工作.劉鑫等人[5]提出了一種結(jié)合 Kinect深度傳感器與旋轉(zhuǎn)轉(zhuǎn)臺(tái)的實(shí)時(shí)三維重建方案.國(guó)防科學(xué)技術(shù)大學(xué)的喬思航等[6]使用 3臺(tái)Kinect 攝像機(jī)建立了人體三維模型.周瑾等人[7]使用分布在不同位置的4臺(tái)Kinect 傳感器同步掃描人體,實(shí)現(xiàn)人體的靜態(tài)三維模型的重構(gòu).席小霞[8]搭建了一套基于 3 臺(tái) Kinect的體感攝像機(jī)的三維圖像重建系統(tǒng).譚紅春等人[9]、范小娜[10]、周文[11]、劉洋[12]、王歡等[13],從不同方面進(jìn)行了相關(guān)研究,劉雷杰[14]提出了一種結(jié)合骨架信息進(jìn)行人物的動(dòng)態(tài)三維模型重建.
以上相關(guān)研究中,手持單臺(tái)Kinect采集過(guò)程中,由于抖動(dòng)等原因引入采集誤差.固定單臺(tái)Kinect,由于固定視場(chǎng)角使得使用場(chǎng)景有所限制.而同時(shí)固定多臺(tái)Kinect不僅增加成本,多設(shè)備坐標(biāo)系的融合也使得數(shù)據(jù)處理過(guò)程更加復(fù)雜,同時(shí)也會(huì)引入新的噪聲.因此,如何在單臺(tái)Kinect低成本條件下,方便快捷地完成高精度的人體三維數(shù)據(jù)采集,進(jìn)而實(shí)現(xiàn)人體三維重建中人體掃描、處理、重建、輸出,成為本文的研究重點(diǎn).
本文三維重建方法使用Kinect V2,并使用其SDK中Kinect Fusion進(jìn)行程序開發(fā),實(shí)現(xiàn)人體的三維重建.其算法流程為:采集人體單個(gè)方向的深度數(shù)據(jù),利用深度數(shù)據(jù)進(jìn)行配準(zhǔn)融合,得到單幀表面重建模型,再經(jīng)過(guò)投影映射得到可視化的重建結(jié)果.
1) 深度數(shù)據(jù)的轉(zhuǎn)換目的是將二維頂點(diǎn)三維化.即把從Kinect中獲取的原始深度幀數(shù)據(jù)轉(zhuǎn)換成以米為單位的浮點(diǎn)數(shù)據(jù),利用攝像頭的坐標(biāo)信息,將這些浮點(diǎn)數(shù)據(jù)轉(zhuǎn)換為和Kinect相機(jī)朝向統(tǒng)一的頂點(diǎn)集,即點(diǎn)云數(shù)據(jù).
依據(jù)二代Kinect紅外相機(jī)內(nèi)在的標(biāo)定矩陣K,將特定深度信息值投影變換為以相機(jī)為坐標(biāo)原點(diǎn)空間的三維頂點(diǎn)V(u):
其中u為已知圖像點(diǎn),D(u)為深度值.該點(diǎn)法向量表示為ni(u),再通過(guò)相機(jī)姿態(tài)變換平移矩陣Ti與旋轉(zhuǎn)矩陣Ri,將三維頂點(diǎn)轉(zhuǎn)換到全局坐標(biāo),其公式如下:
2) 姿態(tài)跟蹤即計(jì)算傳感器位置和朝向的姿態(tài)信息.利用配準(zhǔn)算法在攝像頭移動(dòng)時(shí)一直獲取其姿態(tài),就可以得到當(dāng)前設(shè)備相對(duì)于起始幀時(shí)的相對(duì)姿勢(shì).配準(zhǔn)利用的是經(jīng)典ICP算法[15],計(jì)算得到相鄰兩幀間的相對(duì)位移與旋轉(zhuǎn),據(jù)此能夠?qū)⑾鄼C(jī)原點(diǎn)坐標(biāo)系轉(zhuǎn)換到世界坐標(biāo)系.具體流程見算法1.
1.for 每個(gè)圖像像素點(diǎn)u∈深度數(shù)據(jù)Di
3) 利用晶格化顯示將上述步驟獲取的深度數(shù)據(jù)集成融合.事先預(yù)定一個(gè)固定三維體分辨率,將其映射到特定的三維物理空間維度.這個(gè)體被均勻細(xì)分成三維網(wǎng)格體素,即體素晶格.利用TDFS算法[16],將全局頂點(diǎn)集成到體素晶格中,得到初步重建結(jié)果.隨著傳感器的移動(dòng),深度數(shù)據(jù)將連續(xù)不斷的被填充進(jìn)體素晶格中.具體流程見算法2.
1.for 對(duì)于每一個(gè)處于x,y體切面的體素晶格g2.while 從前向后操作3.V g← 將g從網(wǎng)格轉(zhuǎn)換到全局坐標(biāo)系T-1 iVg7. ←sdfi4.V←5.P← 透視投影定點(diǎn) V6.if V在相機(jī)視圖的投影范圍中 then sdfi∥ti-Vg∥-Di(p)8.if ( >0) then tsdfi9. ← min( 1, / max truncation)10.else tsdfi sdfi11. ← max( -1, / mintruncation)Wi sdfi12. ← min( maxweight, + 1)Wi-1
13.tsdfavg ←14.保存Wi和tsdfavg到體素g中.tsdfi-1Wi-1+tsdfiWi Wi-1+Wi
算法2中,s dfi是該相機(jī)坐標(biāo)系點(diǎn)Vg到本次相機(jī)原點(diǎn)ti的距離與本次觀測(cè)深度Di(p)的差值.用max truncation表示選取的截?cái)喾秶?若是差值為正,表示本次測(cè)量的面在晶格的前面,t sdfi賦值[0,1]之間,值越接近0則越靠近觀測(cè)面;如果差值為負(fù),本次測(cè)量的面在該晶格的后面賦值[-1,0]之間,越靠近觀測(cè)面的地方值越接近0.選取本次計(jì)算值的的權(quán)值,加權(quán)平均求出tsdfavg,將和tsdfavg存儲(chǔ)在對(duì)應(yīng)的晶格,進(jìn)行下個(gè)晶格的掃描操作.
經(jīng)過(guò)以上處理,立方體晶格中存儲(chǔ)的tsdf值表示其位置.在重建模型外是負(fù)值,模型內(nèi)部是正值,模型表面是0值的形式.隨著傳感器的移動(dòng),深度數(shù)據(jù)將連續(xù)不斷的被填充進(jìn)體素晶格中.
4)利用基于GPU的鐳射線方式,實(shí)現(xiàn)和生成在網(wǎng)格體內(nèi)用于顯示追蹤的隱式表面.以并行的方式,每個(gè)GPU線程沿著一條鐳射線,呈現(xiàn)一個(gè)輸出圖像的像素點(diǎn).給定一個(gè)有起始位置和方向的射線,每個(gè)GPU線程沿著射線遍歷每一個(gè)像素點(diǎn),并通過(guò)檢測(cè)零交點(diǎn)的位置來(lái)提取隱含的表面.最后,從傳感器視點(diǎn)對(duì)重建立方體進(jìn)行光線投射,便能夠得到可視化的結(jié)果.
通過(guò)上述步驟,Kinect Fusion可實(shí)時(shí)重建出人體三維模型,與傳統(tǒng)的重建方法相比,精度與效率都較高,極大提高了三維重建的便利性,為三維重建創(chuàng)造了良好的用戶體驗(yàn).
實(shí)驗(yàn)場(chǎng)景流程如圖1所示:使用三腳架固定Kinect,采集對(duì)象站立在可旋轉(zhuǎn)臺(tái)面上.通過(guò)旋轉(zhuǎn)臺(tái)面,對(duì)人體進(jìn)行360度采集重建;本文重點(diǎn)重建區(qū)域?yàn)槿梭w胸部以上部分,因?qū)θ梭w而言,該部分辨識(shí)度最高.為獲得更好的精度與重建結(jié)果,Kinect與三腳架的距離保持在0.5-1.0米之間,同時(shí)可通過(guò)三腳架高度與角度調(diào)節(jié),控制Kinect采集視角.
本文重建目標(biāo)為人體重建,在深度數(shù)據(jù)采集過(guò)程中,視場(chǎng)范圍內(nèi)的場(chǎng)景信息對(duì)人體影響較大.主要表現(xiàn)在人體與背景邊界處由深度跳躍產(chǎn)生的噪聲數(shù)據(jù),如圖2(a)所示,人體邊界部分產(chǎn)生明顯噪聲.對(duì)于該部分噪聲,我們通過(guò)設(shè)置深度閾值[17]對(duì)其進(jìn)行去除.假設(shè)用max表示深度相機(jī)的最大采集距離,max表示最小采集距離,則可通過(guò)下式選擇適當(dāng)?shù)拈撝礵:
圖1 Kinect采集實(shí)驗(yàn)場(chǎng)景
圖2 去噪優(yōu)化
通過(guò)深度閾值,可將視場(chǎng)內(nèi)相較于人體的前景數(shù)據(jù)與背景數(shù)據(jù)全部去除,如圖2(b)所示,去除背景之后,人體邊界處相較圖2(a)由深度跳躍產(chǎn)生的噪聲去除明顯,細(xì)節(jié)如圖2(d)和(e)所示,噪聲去除后的人體邊界更加平滑.
除環(huán)境背景對(duì)三維重建的影響外,人體深度范圍內(nèi)的其他物體對(duì)重建結(jié)果也會(huì)產(chǎn)生干擾.如圖2(b)所示,與人體在相同深度范圍內(nèi)的物體,無(wú)法通過(guò)設(shè)置深度閾值去除.在此,我們利用直通濾波器去除該部分干擾.
假設(shè)深度圖像素點(diǎn)表示為其中x,y表示深度圖像素坐標(biāo),d為深度大小;深度圖的大小為(w,h),中心點(diǎn)坐標(biāo)為 (x0,y0).則滿足公式(5)的深度圖區(qū)域,為重建所需的目標(biāo)人體區(qū)域,即實(shí)現(xiàn)滿足重建要求的直通濾波器范圍.
在該范圍內(nèi)的物體將被保留,在該區(qū)域外的物體將被去除,結(jié)果如圖2(c)所示,成功去除了重建場(chǎng)景內(nèi)的其他物體噪聲干擾.
(1) 采集設(shè)備:Kinect二代體感器
Kinect二代體感器是微軟推出的體感周邊外設(shè).該體感器不僅能夠獲取彩色視頻信息,還能夠通過(guò)深度相機(jī)獲取場(chǎng)景、物體的深度信息,利用這個(gè)功能,可實(shí)現(xiàn)人體的三維重建,其低廉的價(jià)格是其能夠普及應(yīng)用的一大優(yōu)勢(shì).并且其精度也可滿足一般消費(fèi)者需求.
Kinect二代體感器外觀如圖3.通體為黑色,長(zhǎng)250 mm,寬 85 mm,高 65 mm,重 1.25 kg.相對(duì)于一代,Kinect二代體感器在深度信息采集、視頻清晰度、相機(jī)視場(chǎng)等方面都有顯著提高.
圖3 Kinect二代體感器外觀
(2) 采集輔助設(shè)備:三腳架
未避免手持體感儀采集數(shù)據(jù)時(shí),由于抖動(dòng)等帶來(lái)的誤差,本實(shí)驗(yàn)使用三腳架作為輔助設(shè)備(見圖4).同時(shí),也更好地控制體感儀與采集對(duì)象的距離,提高采集效率,標(biāo)準(zhǔn)化三維數(shù)據(jù)采集流程.該三腳架可通過(guò)中軸升降裝置可將Kinect采集高度擴(kuò)展到0.5-1.53m,且手柄可實(shí)現(xiàn)360°旋轉(zhuǎn),大大擴(kuò)展了Kinect設(shè)備的采集視場(chǎng),提高采集范圍,使得Kinect有了更好的適應(yīng)性.如下圖所示,體感儀固定在三腳架液壓云臺(tái)上.
(3) 開發(fā)環(huán)境
利用二代Kinect體感器進(jìn)行開發(fā)時(shí),它對(duì)硬件及操作系統(tǒng)要求較高.本文在Windows8操作系統(tǒng)下進(jìn)行程序開發(fā)、數(shù)據(jù)采集處理.機(jī)器配置如下:Intel(R)Core(TM)i5-4570R CPU @2.70 GHz;內(nèi)存 (RAM)為8.00 GB;應(yīng)用程序開發(fā)環(huán)境為Visual Studio 2012.
圖4 安裝三腳架后的Kinect二代體感器
(4) 輸出設(shè)備:3D打印機(jī)
為了更好的觀察重建結(jié)果,文采用3D打印機(jī)將重建結(jié)果進(jìn)行輸出.3D打印是一種以數(shù)字模型為輸入,通過(guò)逐層堆疊的方式將模型以實(shí)體材料構(gòu)造打印輸出的技術(shù).由于這種技術(shù)與印刷中的打印技術(shù)相像,均是將輸入信息通過(guò)另一種材料輸出的過(guò)程,故而稱為3D打印.但它與印刷技術(shù)又大有不同,印刷中的打印機(jī)是用油墨來(lái)重現(xiàn)二維的文字、圖形圖像信息,而3D打印則是用一定材料以堆疊的形式重現(xiàn)出三維立體模型.
圖5 3D打印機(jī)
如圖5所示,本文所用打印機(jī)型號(hào)為創(chuàng)想三維CR-10,材料為PLA,使用熱熔堆積固化成型技術(shù)對(duì)模型進(jìn)行輸出,精度可達(dá)0.1 mm.
利用Kinect采集到的深度數(shù)據(jù)經(jīng)過(guò)轉(zhuǎn)換后,利用相機(jī)姿態(tài)統(tǒng)一到同一坐標(biāo)系下進(jìn)行晶格化顯示集成,最后經(jīng)過(guò)投影映射為可視化圖像,至此,三維重建基本實(shí)現(xiàn),其效果可通過(guò)相關(guān)軟件來(lái)查看,本文使用3DMax來(lái)查看實(shí)驗(yàn)結(jié)果,即三維重建結(jié)果.
實(shí)驗(yàn)在無(wú)室外環(huán)境光影響的室內(nèi)進(jìn)行,多組實(shí)驗(yàn)后將結(jié)果通過(guò)3DMax可視化.結(jié)果顯示人體衣服的褶皺細(xì)節(jié)豐富生動(dòng),表面光滑平整,可以區(qū)分出衣領(lǐng)等部位;面部五官中,鼻子和嘴的重建結(jié)果較為穩(wěn)定,頭發(fā)部分無(wú)孔洞出現(xiàn).整體重建效果較好.結(jié)果如圖6、7所示.
圖6 重建結(jié)果正面
圖7 重建結(jié)果側(cè)面與背面
如圖8、圖9,使用3D打印技術(shù)對(duì)模型輸出,衣領(lǐng)、五官及頭發(fā)等細(xì)節(jié)展現(xiàn)較好,能夠滿足日常3D打印需求.
至此,本文完成了包括數(shù)據(jù)采集、數(shù)據(jù)處理、三維重建、結(jié)果輸出等的完整人體重建及打印輸出流程.
圖8 3D打印輸出結(jié)果圖
圖9 3D打印結(jié)果細(xì)節(jié)
本文對(duì)人體三維重建的結(jié)果采用客觀評(píng)價(jià)與主觀評(píng)價(jià)兩種評(píng)價(jià)方法,如表1、2所示.客觀評(píng)價(jià)包括重建設(shè)備成本、重建速度、重建精度等指標(biāo),主觀評(píng)價(jià)通過(guò)對(duì)重建結(jié)果視覺(jué)感知上的相似性打分,作為評(píng)價(jià)指標(biāo).
表1 客觀評(píng)價(jià)指標(biāo)
表2 主觀評(píng)價(jià)指標(biāo)
本文重建方法,使用單臺(tái)Kinect和三腳架輔助設(shè)備完成采集過(guò)程,相對(duì)于文獻(xiàn)[6-8]中的重建系統(tǒng)中3-4臺(tái)Kinect設(shè)備,降低了成本,且增加了系統(tǒng)穩(wěn)定性.由于Kinect Fusion采用實(shí)時(shí)重建,相比于文獻(xiàn)[5]中方法,重建速度更快.本文在晶格化顯示時(shí)采用512晶格,在保證重建速度的基礎(chǔ)上,也有著很高的重建精度.
在主觀評(píng)價(jià)中,邀請(qǐng)20位同學(xué),對(duì)以上4個(gè)方法重建結(jié)果進(jìn)行打分:1分表示很不像,5分表示很像.對(duì)比主觀評(píng)價(jià),本文重建結(jié)果在視覺(jué)感知上較符合被重建人.
本文實(shí)現(xiàn)了完整的基于Kinect二代體感器的人體掃描、處理、重建、輸出方法.介紹了基于深度數(shù)據(jù)的實(shí)時(shí)重建算法,對(duì)處理好的深度數(shù)據(jù),采用數(shù)據(jù)轉(zhuǎn)換方法,利用深度相機(jī)參數(shù),將平滑后的深度數(shù)據(jù)轉(zhuǎn)換.再利用ICP算法進(jìn)行頂點(diǎn)集配準(zhǔn),求解出相機(jī)每次的相對(duì)位移與轉(zhuǎn)動(dòng)角度,實(shí)現(xiàn)相機(jī)姿態(tài)跟蹤.利用得到的相對(duì)位移與轉(zhuǎn)動(dòng)角度,將每次拍攝到的點(diǎn)集轉(zhuǎn)換到同一全局坐標(biāo)系下,利用TSDF算法將點(diǎn)云集成到提前劃分好精度及尺寸的體素晶格中,然后利用投影映射獲得可視化的三維立體.
同時(shí),本文通過(guò)對(duì)采集場(chǎng)景的去噪優(yōu)化,提高了本文方法的環(huán)境適應(yīng)性.三腳架的使用,優(yōu)化了數(shù)據(jù)采集流程,消除相機(jī)抖動(dòng)誤差,保證采集視場(chǎng),也使得重建過(guò)程更加方便快捷.從實(shí)驗(yàn)結(jié)果來(lái)看,重建結(jié)果較好,能夠滿足普通消費(fèi)者對(duì)人體三維重建的基本要求.最后采用3D打印機(jī)將重建結(jié)果實(shí)體化輸出.
1 邱兆文,張?zhí)镂?文物三維重建關(guān)鍵技術(shù).電子學(xué)報(bào),2008,36(12):2423-2427.[doi:10.3321/j.issn:0372-2112.2008.12.028]
2 呂開陽(yáng),葉華茂,李曉光,等.Kinect體感技術(shù)在動(dòng)物外科實(shí)驗(yàn)教學(xué)中的應(yīng)用及展望.中國(guó)醫(yī)學(xué)教育技術(shù),2012,26(2):171-173.
3 蔡欽濤.基于圖像的三維重建技術(shù)研究[碩士學(xué)位論文].杭州:浙江大學(xué),2004.
4 Smisek J,Jancosek M,Pajdla T.3D with Kinect.Proceedings of 2011 IEEE International Conference on Computer Vision Workshops (ICCV Workshops).Barcelona,Spain.2011.1154-1160.
5 劉鑫,許華榮,胡占義.基于GPU和Kinect的快速物體重建.自動(dòng)化學(xué)報(bào),2012,38(8):1288-1297.
6 喬思航,程志全,陳寅,等.基于三個(gè)Kinect的個(gè)性化人體重建.系統(tǒng)仿真學(xué)報(bào),2013,25(10):2408-2411.
7 周瑾.基于Kinect深度相機(jī)的三維人體重建技術(shù)研究[碩士學(xué)位論文].杭州:杭州電子科技大學(xué),2013.
8 席小霞.基于多臺(tái)Kinect攝像機(jī)的三維重建系統(tǒng)研究[碩士學(xué)位論文].太原:中北大學(xué),2016.
9 譚紅春,耿英保,杜煒.一種高效的人臉三維點(diǎn)云超分辨率融合方法.光學(xué)技術(shù),2016,(6):501-505.
10 范小娜.基于Kinect三維重構(gòu)及織物模擬研究[碩士學(xué)位論文].杭州:浙江大學(xué),2014.
11 周文.基于RGB-D相機(jī)的三維人體重建方法研究[碩士學(xué)位論文].合肥:中國(guó)科學(xué)技術(shù)大學(xué),2015.
12 劉洋.基于RGB-D序列及模板的三維人體建模[碩士學(xué)位論文].北京:北京工業(yè)大學(xué),2014.
13 王歡,汪同慶,李陽(yáng).利用Kinect深度信息的三維點(diǎn)云配準(zhǔn)方法研究.計(jì)算機(jī)工程與應(yīng)用,2016,52(12):153-157.[doi:10.3778/j.issn.1002-8331.1407-0506]
14 劉雷杰.基于Kinect人體動(dòng)態(tài)三維重建.電子產(chǎn)品世界,2016,23(9):35-37,41.
15 Rusinkiewicz S,Levoy M.Efficient variants of the ICP algorithm.Proceedings of the 3rd International Conference on 3-D Digital Imaging and Modeling.Quebec,Canada.2001.145-152.
16 Werner D,Al-Hamadi A,Werner P.Truncated signed distance function:Experiments on voxel size.Campilho A,Kamel M.Image Analysis and Recognition.Cham:Springer International Publishing,2014.357-364.
17 李詩(shī)銳,李琪,李海洋,等.基于Kinect v2的實(shí)時(shí)精確三維重建系統(tǒng).軟件學(xué)報(bào),2016,27(10):2519-2529.