王建華,冉煜琨
(成都理工大學工程技術學院,四川樂山 614000)
3D 動畫重建[1]在現代多媒體、測繪等眾多領域具有重要的應用。很多方法利用多視角RGB 數據重建3D 動畫,通過形狀匹配和形變等技術捕捉時間連貫的動畫。其中,時間連貫性是所有動畫重要且必需的屬性,很多后處理任務也要求時間連貫性,例如視頻編輯壓縮、場景分析等[2]。對于使用RGB 數據的系統,3D 重建要求兩個或更多的相機來進行深度重建。因此,重建的質量也取決于底層的特征點提取和圖像配準算法等。
過去十多年中,已有研究者對該問題進行了一些研究。如Yan 等[3]利用大量迭代計算對多視角視頻采集裝置進行擴展,捕捉不同靜態和動態光照條件下的物體。Kawami 等[4]對自由視點視頻研究進行了擴展,并使用多個高分辨率彩色攝像機對點光源進行校準,以采集行人的形狀、運動、表觀以及表面反射特性。在動態表面反射估計的基礎上,可以在不同的光照條件下對重建的3D 動畫進行渲染。這些方法[3-4]的主要缺點是依賴于色彩數據的研究,必須利用相機之間的對應關系來重建深度信息。
隨著低成本深度傳感器特別是微軟Kinect[5]的面世,結合深度傳感器以采集靜態和動態3D 內容成為了研究熱點。使用Kinect的一大好處是Kinect的幀率可以達到30 fps,滿足實時處理要求,同時還提供色彩和深度數據。如文獻[6]提出一種有效從深度相機獲取的低質量動態數據中直接分析出剛性關節式物體運動特征的RANSAC 方法。與傳統的運動特征重建方法不同,該方法完全跳過了重建物體本身的幾何信息,提取物體每個關節的運動類型、運動參數等信息。文獻[7]使用來自Kinect的深度數據進行3D 形態重建。該方法將低分辨率圖像輪廓與粗粒度數據相結合,以估計參數模型。類似地,文獻[8]提出一種帶有深度約束和局部近鄰約束的基于RGB-D的室內場景實時三維重建方法,該方法首先利用RGB-D 相機采集的RGB 圖像做哈里斯角點檢測,利用特征點集合的深度信息和局部近鄰特征點信息作為約束,在圖優化方法的基礎上生成三維點云,實現室內場景的三維重建。但沒有從捕捉到的深度數據及色彩數據中提取出時間連貫性信息。文獻[9]在姿態估計框架中采用單個深度相機來跟蹤整個身體的運動情況,利用單個深度傳感器進行姿態估計。
文中提出了從RGB-D 視頻數據中生成時間連貫的3D 動畫重建方法。在數據采集后,從映射到深度數據的RGB 數據中提取光學特征點,以得到兩個幀之間的初始稀疏3D 對應關系。在此基礎上,利用迭代幾何匹配程序進行特征點細化,以得到3D 點的無偏匹配。與以往相關方法相比,所提方法具有以下優勢:1)使用隱式三維數據,利用動態對齊進行跟蹤,而以往很多方法則依賴于RGB 數據的三維重建,且不依賴于動態場景對象的底層表征;2)提出的幾何匹配方法糾正了從RGB 到深度映射過程中產生的誤差,以往方法則不能直接處理該問題。實驗結果也驗證了所提方法的有效性。
Kinect 以30 fps、每幀640×480 像素同時提供RGB 和深度數據。文中的RGB-D 視頻采集系統包含多個Kinect。在使用兩個Kinect的情況下,兩者之間的放置角度約為90°。當使用超過兩個Kinect 進行數據采集時,必須解決兩個問題:相機之間的同步化和干擾問題。對于同步化采集,文中遵循了文獻[10]的技術原理。
Kinect的新SDK 直接提供了顏色數據和深度數據之間的映射,以及深度數據到現實世界距離的映射。由此可以利用每個3D 位置的RGB 數值映射,從采集的RGB-D 視頻[11]中以3D 點云的形式對每幀進行重采樣。來自一個或多個相機的RGB 數值的3D點云序列是文中方法后續所有步驟的主要數據容器。實踐時,使用點云庫[12(]PCL)以高效保存3D 點云,并利用點云庫在統一的全局坐標體系中記錄來自不同相機的點云。由此,對于每個視頻幀,將來自多個相機的點云合并為統一的點云。此外,文中實施了簡單的基于深度的分割以進行背景減除。演示過程如圖1 所示,其中,采集裝置從Kinect 捕捉到RGB 圖像和深度幀、來自每個相機的3D 點云以及包含或不包含RGB 映射的統一化3D 點云。其中,圖1(a)的上圖和下圖分別是來自兩個相機的輸入RGB 和深度圖像。圖1(b)是在3D 點云中對每個相機的RGB-D 數據進行的單獨重采樣。圖1(c)的上圖將點云合并到統一全局坐標系中,圖1(c)的下圖包含了RGB 映射的結果。

圖1 演示過程圖例
文中系統的輸入為3D 點云序列,其中包含來自一個或多個相機的RGB 映射。每幀的3D 點云彼此獨立,且每幀中的3D 點云數量是不同的。假設將一個3D 點云表示為C=(V,T),其中(V,T)表示所有3D點的集合以及這些3D 點在點云中的RGB 映射。由此,對于(V,T)∈C,將每個3D 位置p與一個3D 點(x,y,z)相關聯,并將其紋理坐標(u,v)與每個紋元(圖像中的2D 位置)q∈T相關聯。利用T將從深度數據中得到的所有3D 位置V映射到對應的RGB 數值。因為文中分析對象是包含N個時間幀的視頻序列,所以將點云序列表示為時間t的函數。由此得到C(t)=(V(t),T(t)),其中t=0,…,N-1。
文中算法旨在通過將C(0)迭代地映射到序列中的每個C(t),在整個動畫序列上對C(0)進行跟蹤。也就是說,首先通過從C(0)到C(1)的映射得到與C(1)對齊的C0(1),即V(0)∈C(0)。由此,C0(t)指的是在算法的t次迭代后與C(t)相對齊的C(0),其中t=0,...,N-1。在這方面,文中公式與其他任何跟蹤系統均沒有顯著差異。文中將描述針對任何給定的t得到C0(t)的算法。從輸入階段到輸出的流程如圖2 所示,其描述了從輸入階段到時間連貫3D 重建輸出的系統流程。

圖2 從輸入階段到輸出的流程
對于每個輸入RGB 幀Ic(t),首先,針對所有時間步t和相機c,提取2D 尺度不變特征轉換[13(]SIFT)的位置。對于記錄的所有RGB-D 視頻序列,針對每個輸入圖像得到約200~300 個特征。使用SIFT 特征在很多方面具有優勢,包括準確度、穩定性、旋轉不變性和尺度不變性等。每個SIFT 特征在紋理空間中均有一個位置q(t)=(u,v,t),利用(V(t),T(t))∈C(t)可以將每個SIFT 特征映射到相應的p(t)∈V(t)。文中將時間t處與SIFT 特征點相關聯的所有3D 點的集合表示為光學特征點L(t)。
然后利用簡單歐氏距離度量D,找到相應SIFT特征之間的匹配,以建立L(t)與L(t+1)之間的映射。在很多基于SIFT的匹配算法中,這是一個非常簡單的步驟,若最近特征和次近特征之間的比例低于某個特定閾值,則建立一個匹配。該度量還有助于去除大部分假陽性樣本。
然而,從RGB 至深度數據的映射是“一對多”而非“一對一”的,由此使得單個q(t)被分配至3D 空間中距離較近的多個p(t)。因此,存在多個與相同的SIFT 特征相關聯的特定點l(t)∈L(t)。若利用從L(t)到L(t+1)的特征點匹配對C(t)與C(t+1)進行匹配,那么應該首先解決這個不確定性問題,且t處的一個SIFT特征應該僅與一個p(t)相關聯。所提方法通過使用一個幾何匹配算法選擇最可靠的特征點,從而消除這種不確定性。
為解決一個SIFT 特征與多個光學特征點匹配相關聯的不確定性問題,文中提出了一個迭代算法,基于幾何匹配選擇最優匹配。給定光學特征點L(t),則定義一組簇類ls(t)∈L(t),其中ls(t)中所有的p(t)均與一個SIFT 特征相關聯,s=0,...,NoC-1,其中,NoC表示分簇數量。使用前文介紹的距離度量D,將分簇ls(t)匹配到ls(t+1)。因此,一個SIFT 特征與p(t)和p(t+1)的“一對多”映射,成了ls(t)與ls(t+1)之間的“多對多”映射。為了找到ls(t)與ls(t+1)之間的最可靠的“一對一”映射,文中使用以下算法:
首先從所有的p(t)∈ls(t)中隨機選擇一個ps(t),并從所有的p(t+1)∈ls(t+1)中隨機選擇其匹配的ps(t+1)。選擇分簇之間的隨機映射并不能得到理想的結果,解決了“多對多”的不確定性,并給出了作為算法起始點的L(t)與L(t+1)之間的初始對應關系。假設該初始映射為M(t)。給定初始對應關系M(t),則可以通過執行以下步驟,找到ls(t)與ls(t+1)之間的最佳匹配:
步驟1:對于給定的簇類ls(t),從M(t)中選擇3 個三維空間特征點位置Lp0(t)、Lp1(t)和Lp2(t),以使得Lp0(t)=ps(t),已 知Lp0(t)、Lp1(t)和Lp2(t)是非共線的,Lp1(t)和Lp2(t)被選擇為與Lp0(t)有著最近歐氏距離的特征點位置。
步驟2:對于給定的簇類ls(t+1),按照與步驟1 描述的相同方式,針對t+1,從M(t)中選擇3 個三維空間特征點位置Lp0(t+1)、Lp1(t+1)和Lp2(t+1)。
步驟3:使用位置Lp0(t)、Lp1(t)和Lp2(t)定義具有法線n(t)的平面P(t)。
步驟4:使用位置Lp0(t+1)、Lp1(t+1)和Lp2(t+1)定義具有法線n(t+1)的平面P(t+1)。
步驟5:將所有的P(t)∈ls(t)投射到平面P(t),并得到其在P(t)上的參數坐標(a,b,t)。從Lp0(t)、Lp1(t)和Lp2(t)中隨機選出平面的根點。
步驟6:將所有的P(t+1)∈ls(t+1)投射到平面P(t+1),并得到其在P(t)上的參數坐標(a,b,t+1)。從Lp0(t+1)、Lp1(t+1)和Lp2(t+1)中隨機選出平面的根點。
步驟7:將ls(t)和ls(t+1)之間的一個新匹配定義為兩個點ps(t)和ps(t+1)之間的匹配,這兩個點的參數坐標(a,b,t)和(a,b,t+1)距離最小。
步驟8:更新M(t)中的映射ps(t)和ps(t+1)。
步驟9:重復處理所有簇類,直至匹配穩定。
幾何匹配算法的結果為L(t)和L(t+1)之間的一對一對應關系M(t),由此給出了C(t)和C(t+1)的直接對應關系。文中算法受文獻[14]研究的啟發,利用基于幾何的映射算法得到了兩個幀的正確稀疏匹配,該映射算法使用基于顏色的匹配作為起始點。文中利用簇類中兩個點的隨機匹配、簇類的質心匹配以及幾何匹配對時間連貫性進行估計,從而對提出的幾何匹配算法進行驗證。
雖然現在已經得到了C(t)和C(t+1)之間的基于特征點的對應關系,但依然不足以對齊兩個點云,因為僅得到了200~300 個特征點匹配,而點云中點的數量超過60 000 個。
為了對齊C(t)和C(t+1),需要找到V(t)∈C(t)的映射,而基于特征點的對應關系給出了稀疏匹配M(t)。為了針對與M(t)中的任何特征點均無關聯的所有p(t)∈V(t)建立映射,文中進行的算法步驟如下:
步驟1:找到與p(t)的歐氏距離最小的N個特征點位置Ln(t),其中n=0,…,N-1。
步驟2:利用M(t)找到Ln(t)到t+1的映射Ln(t+1)。
步驟3:找到運動向量Vn(t),滿足Vn(t)=Ln(t+1)-Ln(t)。
步驟4:計算所有Vn(t)之和并除以N,得到p(t)的平均運動向量Vp(t)。
步驟5:通過p(t+1)=p(t)+Vn(t),得到p(t)的匹配p(t+1),即匹配點位于Ln(t+1)到Ln(t)平均運動的相同距離處。
特征點可視化和對齊算法如圖3 所示。其中,圖3(a)為縮小的點云,圖3(b)為時間步t處放大的點云。根據5 個最近特征點計算出運動向量。使用這些運動向量計算t+1 處的匹配點,如圖3(c)所示。其中,在給定動態對象任意運動的情況下,形變在很大程度上是等距的,由此可以證明文中的全局對齊算法是合理的。顯然,對于極端的非等距形變,文中算法并不適用。另一方面,文中在大量數據集上對算法進行了驗證,結果表明該算法能夠以很好的準確度提取時間連貫性。即使噪聲造成深度數據在一些區域存在空洞,或深度傳感器受限且無法推導出該區域運動信息的極端情況下,文中方法依然能夠利用最近特征點進行運動跟蹤。

圖3 特征點可視化和對齊算法的演示
給定C(t)和C(t+1)之間建立的對齊,文中跟蹤算法從t=0 開始,將C(0)映射到C(1)得到C0(1),即使用L(0)和L(1)之間的特征點匹配M(0)將C(0)與C0(1)相對齊。然后,將C0(1)與C(2)對齊,運用L(1)和L(2)之間的特征點匹配M(1)得到C0(2)。由此,在算法后續的每個步驟中,將跟蹤點云C0(t)與C(t+1)對齊,運用L(t)和L(t+1)之間的特征點匹配M(t)得到C0(t+1)。因此,文中方法在整個序列上跟蹤C(0),得到具有時間連貫性的3D 動畫。
文中在3 個數據集上應用了所提3D 動畫重建方法。其中兩個數據集來自運用兩個Kinect的RGB-D 視頻采集系統。另一個數據集包含通過8 個RGB 相機采集到的行人,并從重建的視覺外殼中提取出點云。所有序列長度均超過100 幀。對于前兩個數據集,兩個連續幀之間的特征點匹配平均為300 個,而對于第三個數據集,每個幀的特征點匹配僅有150 個。前兩個序列每個相機中點的數量平均為60 000,而第三個序列則稀疏得多。
文中方法能夠從帶噪RGB-D 數據中可靠地重建出時間連貫的3D 動畫。即使存在較大空間和時間噪聲的情況下,所提方法依然能夠從非連貫數據中提取出時間連貫性,特別是當RGB-D的視頻流中深度數據缺失造成點云中存在空洞的情況下。即使最后一個序列并非通過RGB-D 采集框架得到,只要該數據集為包含相應RGB 數據映射的動態點云格式,就可使用該數據證明所提算法能夠在多種數據集上工作。
為了進行定量分析,文中開發了一個畸變的度量,以檢查不同初始條件下3D 重建動畫的質量。假定動態目標經過了較小的形變,通過比較每幀較小點集之間的距離來測量畸變。為此,對于起始幀,對C(0)上均勻分布的200 個點進行采樣,并將每個點之間的距離向量保存在列表Ei(0)中,其中i=0,…,||E||-1,||E||為Ei(0)中的總向量數。在跟蹤之后,針對每個跟蹤幀C0(t)計算相同的距離向量Ei(t),其中t=1,…,N-1。將每幀在每個時間步t處的誤差度量Ei(t)定義為:

而整個序列的平均誤差度量E則定義為:

利用平均誤差度量E來尋找N的最優數值,以實現低畸變和高跟蹤質量。并且使用該度量驗證文中提出的幾何特征點映射算法。
實驗中的定量分析主要測試幾何特征點映射步驟是否能夠提高跟蹤性能、最近特征點數量N對跟蹤結果的影響,以及N的優良值。
對齊算法尋找N個最近特征,從而為每個p(t)構建向量場。N的數值很大程度上取決于運動類型和目標形狀。例如,若通過全局變換對目標作動畫處理,那么增加N的數值并不會引起顯著誤差,會使運動正規化,從而減少每個匹配的平均誤差。另一方面,若在一些全局運動之外,目標的個體區域也經過了局部運動,例如,人體的一部分做了獨立移動,那么增加N的數值并超過特定閾值將導致不正確的動畫。對于圖1的“老虎氣球”序列,由于局部運動較少,隨著數值N的增加,整個序列的平均誤差逐漸變小。
對于包含“老虎氣球”的序列,不同數值N下的平均誤差如表1 所示。表1 中分別給出了使用簇類中兩點的隨機匹配、簇類的質心匹配以及幾何匹配時的誤差情況。從中可以觀看到,當使用10 個最近特征點時,平均誤差約為2.55%,而使用20 個最近特征點時,平均誤差約為1.90%。表明隨著數值N的增加,誤差的下降并不是線性的。雖然較大的N值能夠降低總體誤差,但也會造成運動的正規化。在所有案例中,幾何匹配得到的結果誤差最小,特別是在數值N較小的情況下。由此,對于氣球序列視頻,文中取N=10 并生成了所有結果。

表1 平均誤差的比較情況
為了對幾何特征點映射進行驗證,使用了隨機匹配、質心匹配和幾何匹配時的每幀平均誤差和整個序列平均誤差。當N=5 時,使用隨機匹配、質心匹配和幾何匹配時,包含一個老虎氣球的RGB-D 序列的平均誤差比較如圖4 所示。可以看出,文中幾何匹配的誤差明顯更小,這說明所提匹配方法很好地解決了SIFT 特征與多個光學特征點匹配相關聯的不確定性問題。

圖4 不同匹配的平均誤差比較
對于包含兩個“老虎氣球”的多目標序列,文中使用兩個度量,即多目標跟蹤精度(MOTP)以及多目標跟蹤準確度[15(]MOTA),以評價點云的時間連貫性。平均而言,當N=5 時,MOTP小于7 mm,MOTP則大于95%。因此,所提方法在準確度和精度兩方面均取得了優秀的結果。另外,對于非連貫點云的輪廓與連貫點云輪廓重疊[16]的差異。所提方法得到的平均誤差均低于2%。這表明該重建方法能夠實現對動態序列的可靠跟蹤[17-19]。
為了對所提方法與文獻[7,9]方法進行比較,使用公開的capoeira 序列[7]。其平均誤差情況如表2 所示。在使用質心匹配和隨機匹配時,誤差大致相當;而使用文中的幾何匹配算法能夠將誤差平均降低0.5%,這與文中在采集的RGB-D 序列上的測試結果基本一致。

表2 各方法的平均誤差情況
各方法重建的幀圖像如圖5 所示,可以看到,文中方法的3D 動畫在不同幀中保持一致,與之相近的是文獻[7]方法,該方法也取得了不錯的視覺效果,而文獻[9]的數據發生了顯著的變化,尤其是頭部數據,存在的缺失比較多。為了從另一個方面進行比較,顯示的三維點云情況如圖6 所示,可以看出文獻[7,9]方法的點云發生了輕微的變化,其中文獻[9]方法給出的點云變化最大,文獻[9]采用單個深度相機,有時會產生明顯的數據丟失。

圖5 各方法重建的幀圖像

圖6 三維點云比較
此外,所提方法具有計算方面的高效性,平均而言,可以每分鐘25 幀的速率進行時間連貫動畫的重建。在配置了酷睿雙核i5 處理器(RAM 8GB @2.6 GHz)系統時,處理一個100 幀的序列耗時約5 min,其結果如表3 所示。可以看出,所提方法比文獻[9]的處理速度快25%,與文獻[7]的處理速度大致相當。

表3 各方法處理100幀的耗時情況
文中提出了從單視角或多視角RGB-D 視頻數據中重建時間連貫的3D 動畫方法,使用了無偏特征點采樣和幾何映射。提出的幾何映射算法用于推導3D 點云中所有點到下一幀的全局映射。實驗評價在多個Kinect 記錄的數據下進行,實驗結果驗證了所提方法的有效性,在誤差和運行時間方面的性能表現優秀。所提方法可以用于視頻剪輯、壓縮或場景分析等。
所提方法也存在一些局限。如方法中的所有步驟都需要依賴歐氏距離進行度量,一定程度上是由硬件約束導致的。未來,將從這方面進行完善和改進。