馮笑冰 朱登明 王兆其
(*中國科學(xué)院大學(xué) 北京 100190) (**中國科學(xué)院計算技術(shù)研究所前瞻實驗室 北京 100190) (***太倉中科信息技術(shù)研究院 太倉 215400)
自然場景的真實感模擬無論在傳統(tǒng)的影視特效、廣告、3維游戲開發(fā)等領(lǐng)域,還是在最近蓬勃發(fā)展的虛擬現(xiàn)實、增強現(xiàn)實等領(lǐng)域,都有著重要的應(yīng)用及研究價值。作為自然場景中非常普遍的一種物理現(xiàn)象,流體的真實感模擬更是有著廣泛的運用。然而,由于流體復(fù)雜而不規(guī)則的運動狀態(tài),其表現(xiàn)的形態(tài)也變化萬千,流體動畫的合成一直是計算機圖形學(xué)中具有挑戰(zhàn)性的問題之一。多年來流體動畫合成方法在不斷發(fā)展和創(chuàng)新,從最初的基于經(jīng)驗的波面造型方法,到現(xiàn)在主流的基于流體動力學(xué)的物理模擬方法,以及逐漸興起的數(shù)據(jù)驅(qū)動方法,流體的合成效果在真實感和細節(jié)上有著顯著的提高,但隨之帶來的是計算量的不斷增加,從而無法在質(zhì)量和效率上達到平衡。
作為計算機圖形學(xué)研究中一直存在的熱點,早期的流體模擬方法主要是基于經(jīng)驗的波面造型方法,使用周期函數(shù)、噪聲、傅里葉頻譜等,在高度場上疊加水波形成波浪效果。該方法計算簡單,但適用范圍小,僅用于模擬大規(guī)模水面較平靜或規(guī)則水波?;谖锢淼牧黧w模擬方法主要根據(jù)流體動力學(xué)方程跟蹤流體的運動狀態(tài)。該方法合成的流體動畫與前者相比適用范圍廣,能模擬真實且豐富的視覺效果,但由于使用的物理模型復(fù)雜,存在計算量大且耗時長等缺點,從而在模擬大規(guī)模水面時無法達到實時效果。
近些年來,隨著硬件技術(shù)的發(fā)展,基于實測數(shù)據(jù)的流體重建方法逐漸興起,為流體動畫合成提供了新的解決思路。該方法通過采集真實場景的流體數(shù)據(jù)重建出流體表面模型?;诓杉O(shè)備提供的真實數(shù)據(jù),此類方法重建所得的流體動畫符合流體的物理運動規(guī)律,同時回避了物理方程計算量大的問題,提高了流體重建的效率。總結(jié)現(xiàn)有的基于實測數(shù)據(jù)的流體重建工作,使用多臺高精度捕捉設(shè)備,根據(jù)所需數(shù)據(jù)搭建復(fù)雜的捕捉環(huán)境,重建出的流體動畫[1,2]具有豐富細節(jié)和高度真實感,但復(fù)雜的操作和較高的成本使這類方法難以得到廣泛的運用?;谄胀▎文繑z像頭采集流體RGB圖像重建出的流體動畫[3],雖然具有良好的視覺效果,但由于其視角單一,3維信息還原的過程設(shè)置了較多假設(shè)條件,因此重建結(jié)果與真實場景相比具有較大差異。
深度攝像頭不僅具有RGB圖像獲取功能,也可以通過紅外線收發(fā)器快速、方便地獲取3維場景的深度數(shù)據(jù)。目前國內(nèi)外基于深度設(shè)備的3維重建工作主要用于靜態(tài)剛體的重建工作,如室內(nèi)場景及人體建模[4,5],此類方法通過轉(zhuǎn)換矩陣對相鄰幀的模型進行注冊配準(zhǔn),實現(xiàn)3維點云模型的修復(fù)。但針對流體這種具有特定物理運動規(guī)律,且快速變化的物體,基于深度圖的模型重建的研究目前還在探索之中。
本文提出基于深度數(shù)據(jù)的水表面重建方法,基于RealSense設(shè)備捕獲水表面高度場數(shù)據(jù),并對數(shù)據(jù)場進行預(yù)處理;針對高度場中較大區(qū)域的數(shù)據(jù)缺失,提出一種同步迭代計算速度場與高度場的水面重建方法,通過水表面點云間的匹配追蹤,計算水面速度場,并結(jié)合速度場時序連續(xù)性,構(gòu)建能量方程,根據(jù)捕獲區(qū)域高度場信息,在速度引導(dǎo)下實現(xiàn)缺失部分的高度場重建,并通過循環(huán)迭代以上過程,優(yōu)化水面高度場結(jié)果。
傳統(tǒng)的波浪模擬方法大致有2種:基于波面造型的方法和基于物理的方法。
波面造型:波浪模擬的早期工作集中于直接對水表面進行建模和動畫。這些方法大多基于三角公式、噪聲函數(shù),或者傅里葉合成。對水表面進行數(shù)學(xué)建模的其中一個最早的嘗試是Schachter[6]使用窄帶噪聲波形來表示水面。Hinsinger等人[7]則通過周期函數(shù)來模擬無邊界的水面場景,能夠達到實時效果。上述方法能夠較好地模擬岸邊淺水區(qū)域的水波,但生成的波浪形態(tài)單一,周期性強。Tessendorf[8]采用基于統(tǒng)計的快速傅里葉變換經(jīng)驗?zāi)P蛠砩珊C妗erlin等人[9]采用噪聲方法和投影網(wǎng)絡(luò)也可以來模擬海面波浪。國內(nèi)研究中,楊懷平等人[10]基于小振幅波理論和細胞自動機的模型,采用鄰域傳播的思想對水波進行動態(tài)建模,并運用色彩融合技術(shù)對水面完成浪花顯示。此類方法模擬出的水面波紋隨機性強,但只能模擬微波蕩漾的水面,無法模擬浪花翻卷、卷曲的效果。
物理模擬:為了模擬復(fù)雜的、細節(jié)更為豐富的不規(guī)則波浪效果,基于物理的方法通常用Navier-Stokes方程或其簡化形式精確描述流體的運動。文獻[11]采用數(shù)值迭代方法求解2維N-S方程來模擬波浪。Enright等人[12]用粒子水平集方法提取自由表面,通過求解3維N-S方程得到波浪在坡面上的卷曲和破碎效果。Muller等人[13,14]應(yīng)用平滑粒子流體動力學(xué)方法,同時考慮了表面張力的作用,進行水面的模擬。為了突出波浪的效果,O′brien和Hodgins[15]以及Takahashi等人[16]用粒子系統(tǒng)對水花和泡沫進行建模,模擬了水波與固體碰撞時的飛濺現(xiàn)象。張桂娟等人[17]提出耦合幾何特征的高精度流體動畫生成方法,根據(jù)幾何模型定位調(diào)整物理模型中的粒子集,從而更有效地產(chǎn)生高精度的流體水面和水花等細節(jié)效果。但基于物理模擬的方法因為其運算較為復(fù)雜,實現(xiàn)效率比較低。
近年來,隨著相機等采集設(shè)備的發(fā)展,對真實自然現(xiàn)象的重建技術(shù)逐漸向基于數(shù)據(jù)采集的方向發(fā)展。數(shù)據(jù)驅(qū)動的水表面重建,利用采集設(shè)備對真實的動態(tài)流體進行捕捉,并對數(shù)據(jù)進行建模,此類方法能夠保持流體變化的真實感,數(shù)據(jù)場符合物理運動規(guī)律,同時又在計算效率上得到了改善,因此近幾年來成為流體建模的研究方向。
基于圖像的重建技術(shù)中,多目圖像方法主要采用雙目攝像機或多臺攝像機對目標(biāo)進行拍攝,獲取多視角的圖像信息。Ihrke等人[18]提出基于采集熒光物質(zhì)亮度的重建方法,利用熒光物質(zhì)對水體進行染色,然后用多臺攝像機對目標(biāo)水體進行拍攝,在重構(gòu)水體形態(tài)時保證時序上的連續(xù)性,使得模擬的流體動畫更加連貫和具有整體性。Wang等人[19]提出了一種混合了物理模擬和基于圖像重建的動態(tài)水體重建構(gòu)架,重建出水的初始表面,然后再用一系列物理約束對初始表面進行優(yōu)化,從而使重建出來的3維動畫真實感強且重建效率也很高。沈亮等人[20]提出一種基于圖像的啟發(fā)式火焰重建方法,通過迭代優(yōu)化求解能量約束模型,實現(xiàn)對火焰3維溫度場的重建。多目圖像方法往往能實現(xiàn)非常細節(jié)化的視覺效果,然而為了采集所需的數(shù)據(jù),需要搭建復(fù)雜精細的數(shù)據(jù)采集環(huán)境,其對設(shè)備的要求和數(shù)量也有較高的要求,只適用于室內(nèi)小規(guī)模流體的細節(jié)重建,這在很大程度上限制了多目圖像方法的發(fā)展。
對于室外水體建模,由于戶外水體幾乎是不透明的,因此消除了折射的影響,可以通過由影調(diào)恢復(fù)形狀(shape from shading,SFS)的方法來恢復(fù)其表面形狀。Li等人[21]對Pickup文中提出的方法進行了進一步的優(yōu)化,引入淺水方程,通過多層迭代模型對重建水表面進行優(yōu)化。國內(nèi)也有相應(yīng)的工作受到Li等方法的啟發(fā)。Quan等人[22]提出基于物理粒子的方法來擬合水面,通過淺水方程構(gòu)造線性幾何表面和非線性幾何表面約束來重構(gòu)水面形態(tài)。商柳等人[23]通過SFS方法實現(xiàn)水面建模后,通過對水面高度場進行分解,實現(xiàn)了多樣性的水面動畫合成。
而在基于深度圖的3維重建方面,近年來國內(nèi)外已經(jīng)有一些研究,Li等人[4,5]以多幀點云數(shù)據(jù)為輸入,對變形或不變形的3維物體進行重建,通過局部注區(qū)塊匹配,重建模型。Sharf等人[24]以動量守恒為約束,通過前后幀的點云流對缺失部分進行填充。Wang等人[25]通過模版3維模型的建立,將連續(xù)變化的點云序列與模版進行匹配,在彈性勢能的約束下,對3維模型的變化過程進行建模。此類方法針對的通常是形態(tài)不變或變化較小的固體模型,而流體由于運動過程中形態(tài)變化較大,且無法通過模版進行匹配,因此普通的深度圖重建方法不適用于流體建模。
目前基于真實數(shù)據(jù)的水表面重建方法,針對室內(nèi)的水體重建,可利用多相機精確捕捉流體細節(jié)。但由于拍攝設(shè)備復(fù)雜,并且通常需要使用染色等手法對水體進行處理,因此可重建的水體類型局限性較大。另一方面,針對室外環(huán)境復(fù)雜,采集環(huán)境與光照環(huán)境變化較大的場景,多使用單一視角的圖像進行恢復(fù),此方法恢復(fù)結(jié)果受光照影響較大,同時由于拍攝距離較遠,重建精確度受限,水體重建結(jié)果運動較為平緩。
針對該問題,本文提出一種基于深度數(shù)據(jù)的流體表面重建方法,研究如何從RealSense攝像頭采集的深度圖像中,快速重建流體表面模型。由于設(shè)備性能和流體自身性質(zhì)的影響,流體采集深度信息時存在空洞與噪聲等問題,無法直接由深度數(shù)據(jù)轉(zhuǎn)化生成完整的流體表面高度場。因此,本文的關(guān)鍵點是針對捕獲的深度圖中的缺失及錯誤部分,通過連續(xù)幀間的數(shù)據(jù)場融合,還原流體表面丟失的數(shù)據(jù)信息。
通過深度采集設(shè)備捕獲所得的水面數(shù)據(jù)場,為時序上連續(xù)變化的水表面點云數(shù)據(jù)。本文的研究目標(biāo)是基于RealSense深度攝像頭采集流體表面的深度信息,從連續(xù)變化的深度圖像中,重建水表面運動信息,并在速度場引導(dǎo)下恢復(fù)流體表面模型,生成真實而具有豐富細節(jié)的流體動畫。
在水體流動過程中,由于水面運動過快,以及表面飛濺等原因,深度相機采集的深度圖像可能存在局部區(qū)域缺失等問題。圖像空洞修補方法,通常利用圖像局部的連續(xù)性,以空洞邊緣圖像的顏色信息為目標(biāo),在圖像中搜索相似性最高的數(shù)據(jù)塊,對缺失區(qū)域進行填補??紤]到水面拍攝結(jié)果中,存在較大區(qū)域的數(shù)據(jù)缺失,而通常的基于連續(xù)性的圖像修復(fù)方法,考慮了單幀圖像的局部紋理特征,但針對水面運動序列,修復(fù)結(jié)果在水面運動的真實感上和時序連續(xù)性上難以得到滿足。
考慮到水表面運動遵循物理規(guī)律,因此本文針對水表面深度圖,根據(jù)前后幀間時序連續(xù)性,計算水面運動速度,并以速度場連續(xù)性為約束,以循環(huán)優(yōu)化的方式對高度場與速度場同時進行計算,實現(xiàn)對圖像的修復(fù)。首先對原始深度圖像進行去噪處理,并對待修補部分進行標(biāo)示;然后根據(jù)水表面空間相似性,通過追蹤匹配建立前后幀點云集合間對應(yīng)關(guān)系;針對缺失部分的圖像,根據(jù)流體運動場的時空連續(xù)性構(gòu)建能量最小化方程,恢復(fù)表面速度場,并在流體運動的動量守恒的約束下基于速度場對高度場進行修復(fù),最終重建水面模型。基于深度圖的水面重建流程如圖1所示。
圖1 基于深度圖的水面重建流程圖
使用RealSense攝像頭對水表面進行拍攝時,由于水流速度較快導(dǎo)致水表面難以對紅外線信號進行反射,深度圖中通常存在局部的空洞和噪聲,同時由于紅外信號受到環(huán)境的影響,在單幀深度值的測量上,會在真實深度值基礎(chǔ)上出現(xiàn)偏移,因此在對數(shù)據(jù)場進行修復(fù)前,需先對深度圖進行預(yù)處理,包括對數(shù)據(jù)無效區(qū)域的標(biāo)示,以及對深度數(shù)據(jù)場的歸一化處理。
在水面數(shù)據(jù)采集結(jié)果中,深度圖中的無效區(qū)域由2種情況構(gòu)成,分別為無深度值區(qū)域(深度返回值為零),以及由于局部測量錯誤以及環(huán)境噪聲引起的數(shù)據(jù)值錯誤區(qū)域。
水面流動過程中,表面高度呈現(xiàn)連續(xù)變化的特點,因此,針對表面缺失部分區(qū)域,采用一種基于相似性的表面修復(fù)方法,對水表面進行填充,用于后續(xù)的優(yōu)化。
將高度場看成是2維灰度圖,使用基于紋理合成方法對空洞進行填補。
將一個像素的鄰域設(shè)為包圍這個像素的正方形窗口。假設(shè)要填補的圖像為I,令p∈I是圖像中的一個像素點,ω(p)∈I是以p為中心、寬度為ω的方形圖像塊,即p的鄰域。在對波浪空洞填補過程中,首先找到空洞邊緣的所有像素點,這些像素點的鄰域內(nèi)只有部分有灰度值,而中心點需要合成。為了合成像素點p,和p的鄰域的最優(yōu)匹配ωbest是鄰域:
(1)
其中s為衡量相似性的距離函數(shù)。從最優(yōu)匹配鄰域集中隨機選取一個,將選取鄰域中心點的亮度值賦給p點。空洞填補是一個迭代的過程,填補過程中,每一次找出空洞邊緣的一圈像素進行合成,然后如此向內(nèi)收縮,直到最后將所有空缺的像素合成完畢。波浪完成修復(fù)后,需要進行高斯平滑來對波浪周圍進行處理,使波浪在填充后的位置和周圍的波浪融合。
流體運動場中,深度攝像機可以捕獲連續(xù)變化的水表面高度場,相比于其他類型的物體,水面的運動符合物理規(guī)律的約束,因此針對高度圖的缺失,本文提出一種基于速度場的時序優(yōu)化算法,對高度圖進行修復(fù),計算流程如圖2所示。水面運動符合物理運動規(guī)律,因此在時序一致性約束下,對速度場與高度場進行同步優(yōu)化計算。輸入的高度圖定義為Hi,i表示幀序列號,輸入幀數(shù)為n,則高度圖序列表示為H={Hi}, 1
(2)
圖2 速度場及高度場修復(fù)的優(yōu)化求解流程
另一方面,水體可近似視為不可壓縮物體,運動過程中,符合流體物理方程的約束,在淺水的流動過程中,水面高度變化較小,考慮到水表面運動滿足動量守恒,運動速度與水面高度場的變化符合以下約束:
(3)
其中,u、v、w分別表示沿x、y、z軸的速度場,其中垂直方向速度變化可近似使用高度變化進行表示,因此高度場變化w可通過最小化以下約束來求解:
(4)
E=Eheight-temporal+Eflow-temporal+Eflow-spacial
(5)
在深度圖待填充的區(qū)域內(nèi),以時空連續(xù)性的約束下,最小化以上能量函數(shù),通過迭代優(yōu)化的方式,同時求解速度場與高度場,實現(xiàn)水面深度重建。
為了實現(xiàn)以上的方程求解,由于水面速度場與高度間互相影響,直接求解難度較大,本文通過將幀間匹配、速度求解、高度場求解分別計算,以實現(xiàn)最終的優(yōu)化。首先根據(jù)前后幀的深度圖,通過追蹤算法,計算水表面運動的匹配結(jié)果;通過對速度場的約束,根據(jù)能量最小化約束,對缺失部分的速度場進行最優(yōu)化計算;最后根據(jù)完整的速度場,對高度場進行求解。
2.3.1 速度場重建
由于深度設(shè)備的限制,在流體速度過大的區(qū)域內(nèi),無法捕獲真實有效的數(shù)據(jù)??紤]到波浪運動速度較快,在普通深度相機采集數(shù)據(jù)的一個時間步內(nèi),水表面發(fā)生變形,因此直接根據(jù)高度場進行水面速度的計算無法準(zhǔn)確計算速度,因此本文使用基于幾何特征的點云匹配方法,實現(xiàn)對水面運動的追蹤,以此實現(xiàn)速度場計算。首先根據(jù)高度場與相機外參,計算3維點云數(shù)據(jù),在此基礎(chǔ)上,計算第i幀中的點與i+1幀的匹配關(guān)系。在水面運動過程中,一個時間步內(nèi),水面運動變形較小,因此根據(jù)3維空間的距離以及法向相似性計算匹配結(jié)果。
此處使用迭代最近點(iterative closest point, ICP)算法對相鄰幀間的點進行匹配。為了實現(xiàn)第i幀Hi與第i+1幀Hi+1的匹配,若假設(shè)Hi中的點Pi與Hi+1中的Qi點對應(yīng),則可通過旋轉(zhuǎn)矩陣進行點間的匹配,使其滿足關(guān)系Qi=Pi×Ri+Ti,其中Ri與Ti分別表示旋轉(zhuǎn)矩陣與平移矩陣。在計算匹配點過程中,通過最小化以下能量方程,計算匹配結(jié)果:
(6)
其中,D(Q,P)衡量匹配點的相似度,在本方法中,相似度包括空間距離Dspace以及紋理相似度Dcolor2個方面,其中:
Dspace(Qi,Pi)=Qi-(Pi×Ri+Ti)
(7)
通過以下方程來最小化Dspace保證水面點云的空間連續(xù)性:
(8)
bb(ri,dj)=
(9)
其中,bb(ri,dj)為點對的匹配結(jié)果,bb=1表示ri,dj構(gòu)成一對兄弟點對,NN(ri,D)即為在區(qū)域D中尋找與ri最相似的點,計算方法為:
(10)
其中,dis表示兩點間的距離,此處為兩點間RGB圖像像素間的差。最終2個區(qū)域塊的相似性度量函數(shù)定義為
(11)
綜合以上所述,相鄰幀點云匹配過程中,匹配結(jié)果同時滿足圖像像素以及空間距離一致性約束:
D(P,Q)=Dspace+Dcolor
(12)
本文通過對連續(xù)幀序列間的匹配計算,實現(xiàn)對水表面點的追蹤。同時根據(jù)匹配結(jié)果,(P,Q)點對表示當(dāng)前幀中的點P在下一幀中的目標(biāo)位置Q,通過此方式,可計算深度圖中像素點在一個時間步內(nèi)的運動速度。
U(u,v,w)=Q-P
(13)
同時,考慮到水面運動其速度場變化滿足時間連續(xù)性的約束:
(14)
綜合以上,在點云匹配求解過程中,通過聯(lián)合以上2種優(yōu)化目標(biāo),計算速度場,同時計算第i幀向前以及向后運動速度場Uf,Ub。速度場計算結(jié)果將同時滿足時間連續(xù)性、彩色圖像以及空間位置的連續(xù)性。
2.3.2 高度場修復(fù)
完成速度場的計算后,本節(jié)在速度的約束下,實現(xiàn)待修復(fù)區(qū)域的高度場重建。首先,水面運動中,高度場需要在單幀內(nèi)滿足局部數(shù)據(jù)的平滑性,另一方面,考慮到流體方程的約束下,高度場與速度場間滿足動量一致性的約束,根據(jù)速度場U的引導(dǎo),可計算目標(biāo)點在前幀數(shù)據(jù)場中的對應(yīng)高度,高度場滿足以下約束:
(15)
在計算過程中,第i幀中p位置的高度場為
H(p)=H′(p,U)+(ux(p)+vy(p)-w(p))
(16)
其中,H(p)表示高度場修復(fù)結(jié)果,U為i幀向i+1幀運動速度場,H′(p,U)為p點在速度U的驅(qū)動下,在相鄰i+1幀中對應(yīng)位置的高度場,u、v、w分別為p位置沿x、y、z方向的速度,ux與vy分別為速度u、v沿x、y方向的導(dǎo)數(shù)。本文通過前后幀共同約束,對當(dāng)前幀高度場進行優(yōu)化,并在完成高度場計算后,對高度場進行平滑,保證高度場的連續(xù)性和視覺真實感。本文算法實現(xiàn)流程如算法1所示。
算法1基于深度圖的水面重建算法
1:輸入:數(shù)據(jù)采集深度圖序列H2:針對H中無效信息,標(biāo)識待修復(fù)區(qū)域M3:For loop←1 TO k DO /? loop為循環(huán)迭代次數(shù)?/4: 通過水面高度圖序列{H},結(jié)合相機內(nèi)參與外參計算水面點云集合5: For frame←1 TO N DO /?逐幀計算水面高度場?/
6: 最小化Eflow-spacial, Eflow-temporal 計算當(dāng)前幀與前后幀間的點云匹配結(jié)果{P, Q}7: 根據(jù)匹配結(jié)果,更新前向速度場U,以及后向速度場W8: 基于速度場UW,最小化Eheight-temporal,更新計算高度圖Hframe9: End10:End11:輸出:{Hframe}為水面重建結(jié)果
本文使用RealSense攝像頭垂直于水表面進行深度數(shù)據(jù)的采集,圖3中左側(cè)圖片為采集RGB圖像,中間為原始采集數(shù)據(jù)的高度圖顯示結(jié)果以及對應(yīng)的3維模型渲染效果,右側(cè)為使用本文方法修復(fù)后的對應(yīng)結(jié)果。
圖3 深度相機采集數(shù)據(jù)及修復(fù)結(jié)果渲染
如圖3所示,觀察填補結(jié)果可以看出,空洞區(qū)域經(jīng)填充后能很好地與邊緣位置融合在一起,并且水面變化符合RGB圖像所展示的水面運動特征。圖4為更多的修復(fù)結(jié)果展示。左側(cè)圖像為原始捕獲深度圖的渲染結(jié)果,其中空洞部分為數(shù)據(jù)缺失區(qū)域,右側(cè)為使用本文方法修復(fù)后的水面效果。在深度攝像頭采集的原始深度圖中,基于紅外攝像頭的成像原理,在運動速度過快的區(qū)域,水表面形態(tài)不穩(wěn)定,因此表面凸起部分也較容易出現(xiàn)較大區(qū)域的數(shù)據(jù)缺失。而本文基于RGB-D圖像,在水面點云與紋理的雙重約束下,能夠較好地在連續(xù)的水面序列幀中完成波浪運動軌跡追蹤,實現(xiàn)對水面速度場與高度場建模,因此針對快速運動的、較大范圍的水面缺失,重建結(jié)果也保持了較好的真實感和連續(xù)性。
水表面高度場由深度圖像轉(zhuǎn)化而來,因此若將水面視為圖像也可以通過對2維圖像的修復(fù)近似恢
左側(cè)為通過深度攝像機采集的連續(xù)變化的水面幀序列, 右側(cè)為對應(yīng)的重建結(jié)果圖4 水面修復(fù)與重建結(jié)果
復(fù)水面。本文使用了簡單的基于圖像紋理的修復(fù)方法[26]做為預(yù)處理步驟,圖5對比了本文的修復(fù)方法與基于圖像紋理的修復(fù)方法的處理效果。圖像顯示
右圖為深度相機采集結(jié)果,深色區(qū)域為無效數(shù)據(jù),中圖為使用 基于圖像的修復(fù)算法的重建結(jié)果,左圖為本文算法修復(fù)結(jié)果圖5 水面修復(fù)結(jié)果對比
了使用顏色空間對高度場進行表示的結(jié)果,暖色表示水面高度較大,冷色表示水面較低。其中,最右側(cè)為捕獲的帶有殘缺的原始深度圖,深色區(qū)域為數(shù)據(jù)缺失的待修復(fù)區(qū)域,左側(cè)為本文方法修復(fù)結(jié)果,中間為使用普通圖像紋理修復(fù)算法的結(jié)果。觀察基于單幀圖像的修復(fù)結(jié)果,由于基于圖像紋理的修復(fù)算法僅考慮了深度圖像的局部相似度,雖然可以保證修復(fù)結(jié)果在視覺上合理,但局部有較明顯的邊界,而且在連續(xù)變化的修復(fù)結(jié)果中,波浪邊界區(qū)域不具備連續(xù)性。本文方法在修復(fù)過程中,通過空間位置的匹配計算速度場,并逐步迭代進行高度場的優(yōu)化,在速度場的時空約束下,高度結(jié)果符合運動的連續(xù)性,且邊界較為平滑,能看到較明顯的波浪向前涌動的特征。
另外,本文使用室內(nèi)采集的完整水面模型數(shù)據(jù)場,對本方法的修復(fù)效果進行驗證對比。首先對室內(nèi)水體數(shù)據(jù)進行染色處理后,對水面深度數(shù)據(jù)進行采集。由于采集數(shù)據(jù)較為完整,本文對原始數(shù)據(jù)進行處理,將部分區(qū)域的數(shù)據(jù)進行剔除,并使用文中算法,將數(shù)據(jù)場進行修復(fù)后與原始捕獲數(shù)據(jù)進行比對。如圖6所示,其中左上圖像為捕獲結(jié)果,如前文所分析,由于深度采集過程中水面翻涌較劇烈的區(qū)域易出現(xiàn)數(shù)據(jù)捕獲的缺失,因此為了更好地模擬真實場景中采集數(shù)據(jù)的殘缺狀態(tài),本文將采集所得的幀序列中水面高度在閾值之上的區(qū)域置為無效數(shù)據(jù),作為實驗修復(fù)對象,如右上圖像所示,其中深色區(qū)域表示無效數(shù)據(jù)區(qū)。圖6下部從左至右分別為使用基于單幀圖像的修復(fù)方法以及本文方法對缺失的深度區(qū)域進行修復(fù)的結(jié)果。如圖6所示,當(dāng)深度圖局部數(shù)據(jù)缺失后,基于單幀的圖像修復(fù)的方法通過RGB圖像的像素相似度,在該幀圖像中尋找與待填充位置的紋理最相似數(shù)據(jù)塊進行填充,因此修復(fù)結(jié)果雖然在空間上保持連續(xù),但由于數(shù)據(jù)源中水面涌起部分缺失較多,無法與Groundtruth中所顯示的水面凸起狀態(tài)保持一致。本文方法通過重建速度場進行對數(shù)據(jù)缺失區(qū)域的修復(fù),雖然當(dāng)前幀水面運動劇烈,局部區(qū)域數(shù)據(jù)已缺失,但可根據(jù)前后幀的速度場重建,在時間連續(xù)性約束下可近似恢復(fù)缺失區(qū)域的運動學(xué)信息,并進一步恢復(fù)高度場,因此填充結(jié)果與原始采集數(shù)據(jù)場相似度更高。
左上圖為使用的Groundtruth高度圖,右上為設(shè)計的待修復(fù)圖像,下圖從左至右分別為基于單幀圖像的修復(fù)算法以及本文修復(fù)算法的重建效果。其中坐標(biāo)軸表示像素位置。
圖6 圖像修復(fù)結(jié)果對比
由于深度采集技術(shù)及設(shè)備快速發(fā)展,基于深度相機的3維模型重建技術(shù)逐漸發(fā)展起來,而由于流體運動速度較快且具有不規(guī)則性,同時水體環(huán)境變化較大,在真實場景采集中捕獲的深度數(shù)據(jù)存在較大范圍的缺失,因此普通的針對固體的3維模型重建方法難以適用于流體的重建。本文針對此問題,基于水體運動時表面的幾何連續(xù)性,進行相鄰幀間的水面點云追蹤,并根據(jù)流體運動的時序連續(xù)性約束,近似計算水表面速度場信息;進一步結(jié)合水面動量守恒以及體積守恒實現(xiàn)高度圖的修復(fù)。此方法基于實測數(shù)據(jù)重建出的流體模型,既能保證重建結(jié)果符合流體真實的運動規(guī)律,同時回避了物理方程計算量大的問題,提高了流體重建的整體效率。
但本文的方法也存在一些不足,如速度場與高度場修復(fù),需要以相鄰幀間的點云匹配為前提,當(dāng)采集的深度圖像邊緣區(qū)域出現(xiàn)連續(xù)多幀數(shù)據(jù)缺失時,由于無法對前幀進行匹配,因此速度場計算不準(zhǔn)確,同時導(dǎo)致高度場修復(fù)結(jié)果失真。后續(xù)工作中需要根據(jù)幀間匹配結(jié)果動態(tài)調(diào)整前后幀融合時的權(quán)重參數(shù),并結(jié)合水面初始化等方法得到更加準(zhǔn)確且豐富多樣的波浪動畫結(jié)果。