王承博,朱登明
(1.中國科學院計算技術研究所虛擬現實實驗室,北京 100190;2.中國科學院大學,北京 100049)
水是自然界中最為普遍的物質之一,它的存在使得世界更加生動多樣。隨著多年的研究發展,水的動畫合成與模擬取得了大量的研究成果,并被廣泛地應用于虛擬現實、影視動漫、游戲娛樂等行業中,極大提高了場景的真實性。傳統的水動畫合成方法可以分為兩類:基于波面造型的方法和基于物理的方法。基于波面造型的方法通過參數曲面合成和噪聲合成的方法近似模擬水表面的高度場,此類方法運算量小,可以達到實時,但是生成的水面簡單,缺乏細節。基于物理的方法通過求解流體動力學方程來模擬水的運動,此類方法合成的水面具有高度的真實感,但其包含大量的數值計算,求解步驟復雜且非常耗時。
基于視頻的方法是近幾年才逐漸發展起來的一種研究思路,該方法直接從自然現象中提取特征進行表面重建,具有內在的物理真實性,并且拋開了復雜的物理方程求解,計算速度得到了提高。但目前已有的方法其結果受限于拍攝范圍和重建精度的制約,不能在規模和細節之間取得較好的平衡。本文提出了一種新的合成框架,基于視頻重建出具有各種運動細節的水面,然后對這些水面進行采樣,將采樣出的等大小的規則面片進行有重疊的融合拼接,從而得到細節豐富且具有任意規模的水動畫。
從視頻中提取流體運動信息進行表面重建從而合成水面動畫是一個較新的研究方向,近年來已有的研究方法根據重建對象的規模大小可以分為兩類:室內可控水體重建和室外大規模水體重建。
針對室內可控水體的重建方法,大多需要對水面進行特殊處理來消除水的折射和鏡面反射。Ihrke等[1]利用多臺攝像機對水進行拍攝,在拍攝前先向水中添加了熒光化學物質,在黑暗的環境中拍攝,然后利用光的強度計算水體厚度,從中構造出水體的粗糙模型,最后對基于圖像一致性的誤差函數進行優化得到光滑的流體表面。Wang等[2]使用雙目攝像機,拍攝前對水進行染色,并將一個固定的隨機斑點圖案投影到液體表面,在黑暗的環境中拍攝,從圖像中提取出深度圖并根據張力約束和速度場約束進行優化得到重建的表面。Sagawa等[3]向表面投影具有特殊結構的圖像,根據圖像的形變來恢復快速變化的表面,包括水面、服裝和人臉等,其中在對水面重建時也對水面進行了染色,消除了折射的影響。以上三種方法都對水面進行了特殊處理,重建的細節較好,但步驟繁瑣,計算量較大。Morris和Kutulakos[4]對運動的淺水表面進行復原,作者在水的底部放置了一個未知的圖案,用兩臺攝像機進行拍攝,綜合利用立體成像和折射成像的方法,雖然沒有對水體進行特殊處理,但其局限于對淺水的微小波動進行重建。
另一類方法針對的室外大規模水體主要指江河湖海等流體,此類流體渾濁不透明,鏡面反射和折射現象較弱,可近似為朗伯表面。Gallego等[5]使用兩臺攝像機拍攝海洋表面,提出一種基于雙目視覺的方法對海面進行重建,結合物理方程,進行了大量數值計算,重建精度較高,但是計算復雜耗時。Pickup等[6]將基于影調恢復形狀(shape from shading, SFS)[7]和光流的方法相結合,先用SFS獲取初始的表面,然后利用基于初始的表面使用光流來追蹤速度場,最后通過速度場來重建出水面,重建結果具有較好的視覺逼真度。
以上重建的方法只能針對鏡頭內的水體運動進行復原,得到的結果由于拍攝的限制顯現出片面局部的缺點,并不能直接滿足實際的應用需求。為此,本文應用拼接的思想,利用重建的局部結果合成整體。
拼接在紋理合成領域是一個重要的研究方向,紋理的拼接是指由已知的紋理圖片拼接合成出更大規模的紋理圖像,在游戲貼圖中的應用較多。基于塊的拼接方法首先由Efros和Freeman[8]提出,其大體算法是從已知的紋理圖像中采樣出小的紋理塊,然后有重疊地放到目標紋理圖像中,在重疊區域使用誤差最小的準則進行切割。該方法計算簡潔高效,但是采樣的塊必須等大小且規則放置,適用于周期重復的紋理。Kwatra等[9]對其進行了改進,建立馬爾科夫隨機場模型并用GraphCut進行分割,對于塊的放置沒有限制,切割線更加隨機,能適用于更多的紋理圖像。
以上是紋理的二維拼接方法,本文重建出來的三維曲面水面,在曲面細節和連續性上提出了更高的要求。三維曲面的拼接方法大致分為兩類:基于泊松方程的方法[10]和基于拉普拉斯坐標的方法[11]。這兩類方法具有一定的通用性,適用于多種曲面編輯的操作,但這些方法均只針對于靜態的網格表面,且計算復雜,沒有考慮水表面的特性,不能直接適于本文的場景。針對動態網格序列形式的擴展拼接還沒有專門的研究。
本文將首先利用基于SFS推導的方法從視頻中重建出水的深度表面,進行了一系列的優化得到三角網格面,然后通過針對三維表面序列設計的拼接方法,從重建的局部結果采樣合成最終結果,下面分別詳細介紹重建和拼接算法。
本文的重建目標是針對室外的大規模水體,由于此類水體渾濁不透明,具有朗伯表面的性質,Pickup等[6]利用SFS方法得到了較好結果。
SFS方法假設圖像的亮度與物體表面的輻射圖成正比,對于朗伯表面,物體的表面輻射圖又是光線方向與表面法線夾角的余弦值,可得下式:

其中I(x,y)為像素值,R為輻射圖,為光源方向,n=(p,q,1)為表面法向。Tsai和Shah[7]的方法采用線性逼近,迭代求解的方程如下:

令迭代的初值為Z0(x,y)= 0,迭代一次的結果為:

可見經過一次迭代生成的結果與原圖像成正比Z1~I。為此本文采用對圖像進行歸一化處理的方法,將得到的灰度圖作為深度結果:

這樣重建出的表面與真實的表面之間存在著一些明顯的差異,這些差異是由SFS問題的不適定性導致的,文獻[7]的方法進行多次迭代也不能修正。但由于重建的表面序列具有較好的波動特性和較真實的視覺體會,對于本文動畫合成的需求來說已經足夠。
以上重建是基于每一幀獨立處理的,各幀之間可能會由于光線的變化使得結果不規整,需要做一些處理來滿足各幀之間的連續性。本文利用體積守恒做約束,對重建的表面做對齊優化。記水體的高度表面為h′(x,y,t) =h(x,y,t) +δ(t),h(x,y,t)是基于視頻重建的表面,δ(t)是每幀的平均誤差。體積是表面的積分,體積守恒的約束可以表示如下:

離散形式為:

簡單地令C=0,得到了修正的水表面模型:

為保證重建表面的時空連續性,本文對以上結果再做一些平滑處理。先對每幀進行拉普拉斯平滑,由于直接重建出的是深度表面,將權重取為1,這樣在拉普拉斯平滑時不會改變表面在水平方向的規則分布。接下來用各幀做差求出垂直方向的速度場 并用高斯濾波進行平滑處理,之后再從平滑過的速度場中計算出各幀表面。最后根據以上優化的結果構造出三角網格,圖1是整個處理流程。圖2是兩個不同水面圖像的重建結果。

圖1 水面建模流程
重建出水面序列以后,類似紋理合成那樣,本文利用有限的表面去合成更大規模的表面。由于這里拼接的是連續的表面序列,問題的空間是?3×T,T為時間域,因此不僅要保證每一幀拼接后在三維空間的連續性,更要保證相鄰幀之間的連續性,即在時域的連續性。記表面序列的集合為St,本節中提到的表面均指的是St,而不是具體的一個表面。
本文采用基于塊的合成方法,首先將表面St正交投影到水平面上得到St,計算出St所在的包圍盒并將其劃分為n×m的矩形網格,如圖3所示。將落在同一個網格內的頂點和對應的垂直速度求平均值存在網格中,作為一種粗糙的參數化結果。

圖2 從左至右依次是原圖像,重建出的三角網格和從重建表面渲染的結果;下面一排是基于紅色方框區域的重建

圖3 平面網格映射
然后以網格為最小單位進行采樣,采樣的塊記作B(s,l),s表示其在投影表面S上起始位置的網格坐標(is,js),l=(r,c)表示其大小,r和c分別為其占有的網格的行數和列數。如圖3中藍色區域為起始于(2,2),大小為(5,5)的塊。
采樣的塊將被有重疊地放置到目標區域,按照從左到右、從上到下的順序合成目標。為了使合成后的結果能同時滿足空間和時間的連續性,假設兩個相鄰塊的重疊區域為1T和T2,它們第一幀的表面分別為1φ和2φ,速度場分別為Vt和Wt,定義1T和T2的距離為:

當我們采樣出所有的塊并放到目標區域后,下一步對重疊的區域進行合并處理,處理的過程總共分為三步:裁剪、融合與縫合。下面將一一詳細介紹。
裁剪是將重疊區域從原來的表面裁剪下來成為獨立的網格面。將部分表面裁剪下來是為了便于做局部參數化,以提高整體的計算速度。通過上節中的水平網格來界定裁剪區域,如圖4所示藍色網格為裁剪框,有兩種裁剪方法:細裁剪和粗裁剪;細裁剪將嚴格依照輪廓線進行裁剪,在裁剪邊界處重構三角網格結構,使其具有規則的邊界。而粗裁剪則僅提取裁剪框內的三角網格,不修改已有結構,速度較快,但會產生不規則邊界。實驗在后面進行的參數化操作削減了邊界不規則性的影響,因此通常采用效率更高、更穩定的粗裁剪。

圖4 細裁剪與粗裁剪
通過裁剪可得到兩個網格面S1,S2。將S1和S2融合為一個網格面S3,S3能自然地從S1過渡到S2,如圖5所示。需首先建立S1和S2之間的一一映射。把S1和S2都參數化到單位正方形區域,兩個網格面上最靠近包圍盒四個角的四個頂點被分別映射到單位正方形的四個頂點,網格內部的點通過中值坐標參數化。

圖5 黑色網格為紅色和綠色網格重疊部分的融合結果
記 ?3中的點為p= (x,y,z),中的點為u=(u,v),中的三角形用大寫字母表示,中的三角形用小寫字母表示,如T=[p1,p2,p3]和t= [u1,u2,u3]。參數化的結果用花體英文字母表示,如S是S的參數化結果。通過兩個網格面的參數化平面的坐標來建立一一映射。由于兩個網格邊的結構不一樣,很難將一個面上的頂點映射到另一個面的頂點,大部分情況下只能將一個網格面上的頂點映射到另一個網格面的三角形中。假設u1∈S1被映射到三角形t∈S2,可計算出u1對應點的重心坐標。定義三角形 的三個頂點為t1,t2和t3,u1對應的點可以表示為這三個頂點的加權和:

其中 (λ1,λ2,λ3)就是重心坐標,滿足約束λ1+λ2+λ3=1。重心坐標的計算方式如下式:

式中Δ表示面積,如圖6所示。

圖6 重心坐標計算
接下來利用在參數化平面找到的對應關系,將原始表面的對應頂點進行線性插值。本文直接令融合表面S3的結構等同于S1,S3的頂點位置計算如下式:

式中,p1∈S1,p2=λ1q1+λ2q2+λ3q3,且w∈ [0,1]。如果希望融合表面沿參數化平面的u軸過渡則令w=u1,沿v軸過渡則令w=v1。
最后一步需要把S3與原來的表面縫合在一起。前述處理過程得到的S3與原來表面的邊界緊密相鄰,縫合操作需要將相鄰的邊界線合成一條。
首先利用弧長把相鄰的邊界線參數化到[0,1]的線段。記相鄰的邊界為B1=和B2=,參數化結果為:


和的頂點之間一一對應,在此基礎上構造新的公共邊界B′ =,使得它到和的距離平方之和最小:

當si-=si-時上式取得最小值,因此定義新的邊界為:

用B′替換1B′和 2B′,并根據B′修改原網格面的三角結構得到融合的表面,如圖7所示。

圖7 縫合
本文重建的視頻來源于Dyntex數據庫[12]和自己用手機拍攝的湖面。實驗運行在有Core-i3M380 2.53 GHz的CPU和2 GB內存的計算機上。
根據水面的運動特性,人工地把視頻數據進行分類并篩選出四種代表性的水面,分別是:粗條紋波面,細條紋波面,短鱗波面和雜波面。本文對這四種水面重建并進行4倍拼接擴展。在進行網格劃分時,網格越細擴展的結果連續性越好,但是計算量就越復雜,經過多次實驗發現每個網格包含四到八個頂點就能得到不錯的結果。圖8展示了四種波一幀的重建和拼接結果。從結果中可以看到,拼接的結果沒有任何縫隙,不僅具有整體的水面運動特性,也擁有較好的細節。圖9展示了粗條紋波擴展后的六幀結果,可以看到擴展的結果在時間上也有較好的連續性。視頻結果參見http://v.youku.com/v_show/id_XNTYxMDQyNzQ0.html。

圖8 從左到右依次是原圖像,重建的表面,4倍拼接的表面和拼接結果的細節展示;從上到下依次是粗條紋波面,細條紋波面,短鱗波面和雜波面

圖9 粗條紋波的擴展結果,截取了六個等間隔的幀
本文重建出的水面序列是基于真實水面運動的視頻記錄,其物理真實性依賴于數據和重建算法。在后續的合成階段,利用的是表面的相似性進行擴展,此時局部的物理真實性可以得到保障,但整體的物理真實性無法保障,從有些視頻結果中可以看出局部痕跡。由于本文的目的在于動畫,降低了對整體物理真實性的要求,依賴距離最小原則,保障了整體的視覺真實性。
本文提出了一種新穎的水面動畫合成方法,從單目攝像機拍攝的視頻中提取出三維水面序列,繼而用拼接的方法合成出任意大小的三維水面序列。該方法可以方便地應用到影視游戲中,根據用戶需求定制任意規模的水面動畫。本文提出的基于三角網格面的拼接方法可以通用地適用于任何方法得到的三角網格表示的水面模型。在將來的工作中需綜合各種重建方法,收集更多類型的水面運動序列,建立豐富的水面運動數據庫,并進一步加強本文的拼接算法,實現將各種類型的水面在時間和空間上的混合融合,提高合成結果的多樣性。
[1]Ihrke I, Goidluecke B, Magnor M.Reconstructing the geometry of flowing water [C]//Computer Vision, 2005.ICCV 2005.Tenth IEEE International Conference on.IEEE, 2005, 2: 1055-1060.
[2]Wang Huamin, Liao Miao, Zhang Qing, Yang Ruigang,Turk G.Physically guided liquid surface modeling from videos [J].ACM Transactions on Graphics (TOG), 2009,28(3): 1-11.
[3]Sagawa R, Kawasaki H, Kiyota S, Furukawa R.Dense one-shot 3D reconstruction by detecting continuous regions with parallel line projection [C]//Computer Vision (ICCV), 2011 IEEE International Conference on.IEEE, 2011: 1911-1918.
[4]Morris N J W, Kutulakos K N.Dynamic refraction stereo [C]//Computer Vision, 2005.ICCV 2005.Tenth IEEE International Conference on.IEEE, 2005, 2:1573-1580.
[5]Gallego B G.Variational image processing algorithms for the stereoscopic space-time reconstruction of water waves [D].Georgia Institute of Technology, 2011.
[6]Pickup D, Li Chuan, Cosker D, Hall P, Willis P.Reconstructing mass-conserved water surfaces using shape from shading and optical flow [C]//Computer Vision-ACCV 2010.Springer Berlin Heidelberg, 2011:189-201.
[7]Tsai PS, Shah M.Shape from shading using linear approximation [J].Image and Vision Computing, 1994,12(8): 487-498.
[8]Efros A A, Freeman W T.Image quilting for texture synthesis and transfer [C]//Proceedings of the 28th annual conference on Computer graphics and interactive techniques.ACM, 2001: 341-346.
[9]Kwatra V, Sch?dl A, Essa I, Turk G, Bobick A.Graphcut textures: image and video synthesis using graph cuts [C]//ACM Transactions on Graphics (ToG).ACM,2003, 22(3): 277-286.
[10]Yu Yizhou, Zhou Kun, Xu Dong, Shi Xiaohan, Bao Hujun, Guo Baining, Shum H Y.Mesh editing with poisson-based gradient field manipulation [C]//ACM Transactions on Graphics (TOG).ACM, 2004, 23(3):644-651.
[11]Sorkine O, Cohen-Or D, Lipman Y, Alexa M, R?ssl C,Seidel H P.Laplacian surface editing [C]//Proceedings of the 2004 Eurographics/ACM SIGGRAPH symposium on Geometry processing.ACM, 2004: 175-184.
[12]Péteri R, Fazekas S, Huiskes M J.DynTex: A comprehensive database of dynamic textures [J].Pattern Recognition Letters, 2010, 31(12): 1627-1632.