本發(fā)明涉及計算機視覺中的三維重建技術(shù),尤其涉及一種三維人體稠密表面運動場重建方法。
背景技術(shù):
獲取人體的運動幾何表面是計算機圖形學、計算機視覺等領域中的核心問題之一。此技術(shù)可被廣泛應用于數(shù)字娛樂、電子商務、科學模擬、醫(yī)學研究等諸多領域,具有重要經(jīng)濟價值。
動態(tài)人體重建技術(shù)擴展了靜態(tài)人體三維重建的研究對象,它允許被重建人體處于運動狀態(tài),并通過視頻或深度數(shù)據(jù)恢復出每一時刻人體的三維形狀。主要技術(shù)分為多視圖重建與單視圖重建兩大類。多視圖重建方法從不同角度采集動態(tài)人體數(shù)據(jù),能夠全面獲取不同方位的人體數(shù)據(jù),重建準確性、完整性較高。多視圖重建方法往往需要大量的視頻、深度數(shù)據(jù)采集設備,造價昂貴。同時,不同設備之間還需要進行位置標定與時間同步,對設備的配置與操作均要求較高,不方便使用。而單視圖重建的方法僅從一個角度獲取人體動態(tài)數(shù)據(jù),對于其他角度的人體數(shù)據(jù)可通過人體結(jié)構(gòu)等先驗信息進行推斷。單視圖重建方法所需設備相對簡單,無需進行設備之間的定標與同步,操作方便,易于普及推廣。但因其僅采集一個角度信息,重建結(jié)果難免不準確,動態(tài)重建過程中容易出現(xiàn)跟蹤漂移、丟失等現(xiàn)象,重建過程不穩(wěn)定效果不理想。
目前,常用的單視圖動態(tài)人體重建技術(shù)主要包括(1)基于深度相機(例如Kinect)的人體骨架跟蹤方法。這種方法利用機器學習技術(shù),根據(jù)深度相機獲取的深度數(shù)據(jù)估計人體骨架,這種方法雖然用于游戲等領域,但其骨架計算容易出錯,受遮擋影響較大。而且這種方法僅能恢復人體運動的簡單骨架信息,無法恢復人體運動的稠密表面信息,例如胸腔的起伏等。(2)基于圖像/深度數(shù)據(jù)輪廓的表面跟蹤算法。這種方法僅利用在相機成像結(jié)果的外層輪廓信息,同樣無法準確恢復人體表面信息。(3)基于模板的非剛體跟蹤方法。利用人體模板的非剛體變形去擬合所采集的視頻/深度數(shù)據(jù),不可見區(qū)域可通過模板的先驗信息進行補全,能夠?qū)崿F(xiàn)人體運動表面的恢復?,F(xiàn)有方法往往因運動幅度過大或數(shù)據(jù)噪聲影響,使模板擬合過程出現(xiàn)無匹配或者在優(yōu)化過程中陷入局部極小值,重建過程經(jīng)常容易失敗,效果不理想。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于針對現(xiàn)有動態(tài)人體表面采集與重建技術(shù)存在的上述不足,提供一種三維人體稠密表面運動場重建方法。
本發(fā)明包括以下步驟:
1)三維模板數(shù)據(jù)準備與預處理;
在步驟1)中,所述三維模板數(shù)據(jù)準備與預處理的具體方法可為:對三維人體模板數(shù)據(jù)進行語義分割,同時生成用于后續(xù)人體變形的動態(tài)節(jié)點,并根據(jù)語義分割對節(jié)點進行聚類。
所述三維模板數(shù)據(jù)準備與預處理的具體步驟可為:
(1)根據(jù)人體結(jié)構(gòu),對人體模板分為10個剛體部分以及8個非剛體部分(關節(jié)處);
(2)對人體模板上頂點根據(jù)空間分布進行均勻采樣,生成動態(tài)節(jié)點;
(3)對于同屬一個剛體部分的動態(tài)節(jié)點進行聚類,同一個聚類的動態(tài)頂點具有相同的變換。
2)數(shù)據(jù)采集與初始配準;
在步驟2)中,所述數(shù)據(jù)采集與初始配準的具體方法可為:布置RGBD傳感器進行數(shù)據(jù)采集。利用RGBD傳感器采集深度數(shù)據(jù)和視頻數(shù)據(jù),同時計算模板數(shù)據(jù)與第一幀數(shù)據(jù)的剛體變換關系,進行初始配準;
所述數(shù)據(jù)采集與初始配準的具體步驟可為:
(1)選擇4m×3m×3m以上的空間,設置RGBD傳感器,準備進行數(shù)據(jù)采集;
(2)被采集人擺出標準姿態(tài)(與人體模板姿態(tài)接近);
(3)RGBD傳感器開始進行視頻和深度數(shù)據(jù)采集,被采集人可開始進行各種運動動作,數(shù)據(jù)被離線錄制到計算機硬盤中;
(4)對于采集數(shù)據(jù)的第一幀,利用基于彩色和深度圖的骨架識別算法定位出人的頭部、左手、右手、左腳和右腳的位置,利用人的頭部、左手、右手、左腳和右腳的位置5點信息,以及人體模板上對應的人的頭部、左手、右手、左腳和右腳的位置5點信息,計算人體模板與第一幀數(shù)據(jù)的初始配準信息;
(5)利用步驟(4)計算的配準信息,將人體模板配準到第一幀數(shù)據(jù)的坐標系下。
3)人體表面數(shù)據(jù)的分段跟蹤與配準;
在步驟3)中,所述人體表面數(shù)據(jù)的分段跟蹤與配準的具體方法可為:基于人體的語義分割,采用分段剛體變換策略,對分屬于人體每個部分的動態(tài)節(jié)點集估算其各自的剛體變換,實現(xiàn)人體各部分的配準。
所述人體表面數(shù)據(jù)的分段跟蹤與配準的具體步驟可為:
(1)對于每個時刻t,計算時刻t與時刻t+1圖像的光流圖。根據(jù)光流圖找出圖像對應關系,同時求出深度圖的對應關系。得到t時刻和t+1時刻的頂點初始對應;
(2)對于每個時刻,對人體模板上的動態(tài)節(jié)點,施加剛性變換約束、平滑約束以及與步驟(1)求出的頂點對應關系,同時要求屬于人體同一部分的動態(tài)節(jié)點應有相同的變換,構(gòu)建能量函數(shù),通過能量最優(yōu)化,求得每個動態(tài)節(jié)點的最優(yōu)變換;
(3)求得動態(tài)節(jié)點最優(yōu)變換之后,對于人體模板上的其他節(jié)點,可根據(jù)其與近鄰動態(tài)節(jié)點的關系,用近鄰動態(tài)節(jié)點的變換插值出自身的變換,從而求得整個人體模板所有表面頂點的運動;
4)人體表面數(shù)據(jù)的精確跟蹤與重建;
在步驟4)中,所述人體表面數(shù)據(jù)的精確跟蹤與重建的具體方法可為:在步驟3)的基礎上,進一步對人體模板上的所有動態(tài)節(jié)點各自估計其變換,使之與所采集的數(shù)據(jù)匹配,實現(xiàn)精確配準。隨后,對所有時刻重建出的數(shù)據(jù)進行濾波處理,得到平滑穩(wěn)定的重建結(jié)果。
所述人體表面數(shù)據(jù)的精確跟蹤與重建的具體步驟可為:
(1)在步驟3)的基礎上,對于每一幀數(shù)據(jù),對于人體模板上的每個動態(tài)節(jié)點,計算其與當前幀深度數(shù)據(jù)的最近頂點,構(gòu)建最近鄰對應關系;
(2)對人體模板上的動態(tài)節(jié)點,施加剛性變換約束、平滑約束以及與步驟(1)求出的頂點對應關系,放棄動態(tài)節(jié)點聚類,構(gòu)建能量函數(shù),通過能量最優(yōu)化,求得每個動態(tài)節(jié)點的最優(yōu)變換;
(3)求得動態(tài)節(jié)點最優(yōu)變換之后,對于人體模板上的其他節(jié)點,可根據(jù)其與近鄰動態(tài)節(jié)點的關系,用近鄰動態(tài)節(jié)點的變換插值出自身的變換,從而求得整個人體模板所有表面頂點的運動;
(4)對于同一時刻的相鄰頂點,以及相鄰時刻的頂點,采用雙向雙邊濾波對重建出來的人體表面動態(tài)數(shù)據(jù)進行平滑,獲取平滑穩(wěn)定的重建結(jié)果。
本發(fā)明實現(xiàn)了一種基于單個RGBD傳感器的三維人體稠密表面運動場重建方法,它分為4個主要階段:(1)對三維人體模板進行語義預分割,確定屬于同一剛性部分(例如上臂)的表面頂點,以及屬于關節(jié)部分的表面頂點;(2)對人體模板與RGBD傳感器采集的視頻/深度數(shù)據(jù)進行初始配準,使之在同一坐標系下;(3)利用分段模板的語義信息,對同一分段的頂點進行整體約束,對RGBD傳感器提供的視頻和深度信息進行跟蹤,計算三維人體各部分的分段運動信息;(4)在分段信息基礎上,不再考慮模板的分段信息,對模板上的每個頂點進行非剛體變形,對人體表面上所有結(jié)點準確估計表面運動形變,得到每個時刻的三維人體表面形狀。本發(fā)明使用的設備簡單,具有真實、便利、高效等優(yōu)點,同時能夠?qū)崿F(xiàn)穩(wěn)定的人體表面跟蹤,得到高質(zhì)量動態(tài)人體表面重建效果,具有較高實用價值。
本發(fā)明的有益效果是:本發(fā)明采用單個RGBD傳感器進行人體稠密表面運動場重建,所提出的方法能有效克服單個RGBD傳感器采集數(shù)據(jù)不完整導致重建失敗的困難。首先利用人體語義信息對跟蹤模板進行分割,然后利用分段跟蹤的方法約束了初始配準時的優(yōu)化空間,大幅度提高匹配穩(wěn)定性。最后再放棄分段約束對所有頂點進行優(yōu)化,實現(xiàn)精確跟蹤與重建。本發(fā)明使單個RGBD傳感器進行稠密的動態(tài)人體表面重建成為可能,設備成本低廉,操作簡單,重建穩(wěn)定,重建質(zhì)量高。
附圖說明
圖1為本發(fā)明所使用人體模板的一個實例,以及人體分段和動態(tài)節(jié)點實例。
圖2為人體模板配準初始化的示意圖。
圖3為本發(fā)明所重建出的動態(tài)人體表面序列中其中一幀-例1。
圖4為本發(fā)明所重建出的動態(tài)人體表面序列中其中一幀-例2。
圖5為本發(fā)明所重建出的動態(tài)人體表面序列中其中一幀-例3。
具體實施方式
為了更好理解本發(fā)明的技術(shù)方案,以下結(jié)合附圖和實施示例做進一步詳細敘述。
本發(fā)明的核心是通過單個RGBD傳感器獲取人體運動的視頻和深度數(shù)據(jù),并利用這些數(shù)據(jù)對人體稠密表面進行運動場重建,得到完整的三維人體運動表面序列。
本發(fā)明實施例包括如下步驟:
1.三維模板數(shù)據(jù)準備與預處理(此步驟只需準備一次,數(shù)據(jù)可重復使用):對三維人體模板數(shù)據(jù)進行語義分割,同時生成用于后續(xù)人體變形的動態(tài)節(jié)點,并根據(jù)語義分割對節(jié)點進行聚類。
(1.1)首先獲取三維網(wǎng)格人體模板數(shù)據(jù),采用實時距離場合成技術(shù)(例如KinectFusion)技術(shù)對靜態(tài)人體進行采集,利用采集后的數(shù)據(jù)作為模板數(shù)據(jù)。如圖1所示,根據(jù)人體結(jié)構(gòu),對模板數(shù)據(jù)進行分段,分為10個剛體部分以及8個非剛體部分(關節(jié)處)。此步采用手工標記方式,用三維建模軟件(Maya)對屬于同一分段的進行標記.對于關節(jié)部分,視其為柔性部分,對所有柔性部分統(tǒng)一標記為一個記號。
(1.2)對人體模板上的表面根據(jù)空間分布進行均勻采樣,采樣距離為0.05m,采樣點即為后續(xù)步驟中控制人體模板變形的動態(tài)節(jié)點。根據(jù)不同人體型大小,生成的動態(tài)節(jié)點數(shù)為200到400。隨后將鄰近動態(tài)節(jié)點互相連接,構(gòu)建鄰接關系,形成動態(tài)節(jié)點圖。
(1.3)對每個動態(tài)節(jié)點,計算人體模板表面與其最近的K(K取10)個頂點,根據(jù)這K個頂點的標號(步驟1.1),將此動態(tài)節(jié)點歸為投票最多的標號,實現(xiàn)動態(tài)節(jié)點的聚類。
2.數(shù)據(jù)采集與初始配準:布置RGBD傳感器進行數(shù)據(jù)采集。利用RGBD傳感器采集深度數(shù)據(jù)和視頻數(shù)據(jù),同時計算模板數(shù)據(jù)與第一幀數(shù)據(jù)的剛體變換關系,進行初始配準。
(2.1)選擇4m*3m*3m以上的空間,將RGBD傳感器立于支架上,RGBD傳感器離地高度1m。
(2.2)被采集人在RGBD傳感器正前方3m左右,擺出標準姿態(tài)(與人體模板姿態(tài)接近),標準姿態(tài)如圖1所示。
(2.3)RGBD傳感器開始進行視頻和深度數(shù)據(jù)采集,采集視頻分辨率640*480,深度數(shù)據(jù)分辨率640*480,幀數(shù)為30幀每秒。被采集人開始進行各種運動動作,數(shù)據(jù)被錄制到計算機硬盤中。
(2.4)對于采集數(shù)據(jù)的第一幀,利用基于彩色圖像和深度圖的骨架識別算法定位出人的頭部、雙手、以及雙腳的位置,利用這5點信息(如圖2所示),以及人體模板上對應的5點信息,計算人體模板與第一幀數(shù)據(jù)的初始配準的剛體變換{R,t}。其中R為旋轉(zhuǎn)矩陣,t為平移向量。求取方法為最小化下式:
其中,pi為模板上的頂點,qi是深度數(shù)據(jù)中與pi對應的點。
(2.5)對人體模板數(shù)據(jù)中的每一點利用(2.4)計算的{R,t}進行剛體變換,將其配準到第一幀數(shù)據(jù)的坐標系下。
3.人體表面數(shù)據(jù)的分段跟蹤與配準:基于人體的語義分割,采用分段剛體變換策略,對分屬于人體每個部分的動態(tài)節(jié)點集估算其各自的剛體變換,實現(xiàn)人體各部分的配準。
(3.1)對于每個時刻t,計算時刻t與時刻t+1圖像的稠密光流圖。對于每個動態(tài)節(jié)點n,首先利用相機投影矩陣求出其在t時刻對應的圖像位置It(n),再根據(jù)光流圖得到其在t+1時刻的位置It+1(n),通過t+1時刻圖像與深度圖的對應關系,得到t+1時刻深度圖像的位置Dt+1(n),從而得到t時刻動態(tài)節(jié)點n在t+1時刻深度圖的對應位置Dt+1(n)。
(3.2)對于每個時刻,對人體模板上的動態(tài)節(jié)點,施加剛性變換約束、平滑約束以及與步驟(3.1)求出的頂點對應約束,同時要求屬于人體同一部分的動態(tài)節(jié)點應有相同的變換,構(gòu)建能量函數(shù),通過能量最優(yōu)化,求得每個動態(tài)節(jié)點的最優(yōu)變換。
(a)具體而言,對于每個動態(tài)節(jié)點,其待求變換為{Hi,ti},其中Hi為3*3矩陣,ti為3*1向量,其變換為Hi·n+ti。首先要求變換盡量保持剛性,即要求對于所有動態(tài)頂點,應使如下剛性變換能量盡量?。?/p>
其中Rot(H)=(h1·h2)2+(h1·h3)2+(h2·h3)2+(1-h1·h1)2+(1-h2·h2)2+(1-h3·h3)2,h1,h2,h3為別為矩陣H的各列。|S|為動態(tài)節(jié)點的個數(shù)。
(b)同時,還要求鄰近的動態(tài)節(jié)點應具備相近的變換。為此,構(gòu)建如下平滑能量:
其中ni是第i個節(jié)點的位置,e(i,j)=1表示節(jié)點i與節(jié)點j相鄰。
(c)此外,構(gòu)建配準約束能量,使模板變形之后能擬合當前深度數(shù)據(jù):
其中,q(n)為節(jié)點在深度數(shù)據(jù)上的對應點,Nq(n)為其法向量。第一項要求擬合之后距離盡量近,第二項要求擬合之后動態(tài)節(jié)點與目標表面的垂直距離盡量近。ρ控制二者的平衡,建議取0.1。
(d)將,Erot,Esmooth和Efit加權(quán)組合構(gòu)建總體能量式:
Etotal=Efit+wsmooth·Esmooth+wrot·Erot
其中,wsmooth建議取值5000,wrot建議取值1000000。同時,增加約束要求同屬一個分段的動態(tài)節(jié)點的變換應完全一致。利用高斯牛頓法最小化Etotal求得每個動態(tài)節(jié)點的變換{Hi,ti}。
(3.3)求得動態(tài)節(jié)點最優(yōu)變換之后,對于人體模板上的其他節(jié)點,根據(jù)其與近鄰動態(tài)節(jié)點的關系,用近鄰動態(tài)節(jié)點的變換插值出自身的變換,從而求得整個人體模板所有表面頂點的運動。
4.人體表面數(shù)據(jù)的精確跟蹤與重建:在步驟(3)的基礎上,進一步對人體模板上的所有動態(tài)節(jié)點各自估計其變換,使之與所采集的數(shù)據(jù)匹配,實現(xiàn)精確配準。隨后,對所有時刻重建出的數(shù)據(jù)進行濾波處理,得到平滑穩(wěn)定的重建結(jié)果。
(4.1)在步驟(3)的基礎上,對于每一幀數(shù)據(jù),對于人體模板上的每個動態(tài)節(jié)點,計算其與當前幀深度數(shù)據(jù)的最近頂點,構(gòu)建最近鄰對應關系。
(4.2)對人體模板上的動態(tài)節(jié)點,類似(3.2)施加剛性變換約束、平滑約束以及與步驟(4.1)求出的頂點對應關系,在此步驟中,應放棄動態(tài)節(jié)點的聚類關系,不再施加等變換約束??紤]人體頭部后側(cè)為一個剛體,為防止在本次非剛體變形中使頭部后側(cè)發(fā)生變化,應對頭部后側(cè)的頂點施加定點約束,即增加如下定點能量:
其中,ni'為經(jīng)過上一步分段變換之后第i個動態(tài)節(jié)點的位置。加入定點能量式之后,通過優(yōu)化總體能量,進一步求得每個動態(tài)節(jié)點的精細變換。
(4.3)求得動態(tài)節(jié)點最優(yōu)變換之后,對于人體模板上的其他節(jié)點,根據(jù)其與近鄰動態(tài)節(jié)點的關系,用近鄰動態(tài)節(jié)點的變換插值出自身的變換,從而求得整個人體模板所有表面頂點的運動。
(4.4)對于同一時刻的相鄰頂點,以及相鄰時刻的頂點,采用雙向雙邊濾波對重建出來的人體表面動態(tài)數(shù)據(jù)進行平滑,獲取平滑穩(wěn)定的重建結(jié)果。雙向雙邊濾波采用如下公式進行:
其中,為t時刻第i個頂點的位置,σ是控制相鄰幀相互約束的權(quán)重,建議取值0.05。
實施例:
在一臺配有Intel Core2Duo E7400 2.80GH CPU、2GB內(nèi)存的臺式機器上實現(xiàn)了本發(fā)明的實施實例。實施中使用具體實施方式中提及的參數(shù)設置,通過采集一個運動人體數(shù)據(jù),采用本發(fā)明得到圖3~5中的結(jié)果。用各種運動姿態(tài)測試本方法的運行系統(tǒng)。結(jié)果表明,本發(fā)明對各種運動姿態(tài)包括跳躍、踢腿、側(cè)身等動作都能得到滿意的結(jié)果,所需處理時間平均為每幀2min。