本發(fā)明屬于計(jì)算機(jī)圖形學(xué)領(lǐng)域,具體地說是一種基于視頻重建與歐拉模型緊密耦合的流體仿真方法,其包括基于視頻的密度場(chǎng)重建,三維速度場(chǎng)重建和歐拉流體模擬方法等。
背景技術(shù):
近幾十年來,由于流體在自然場(chǎng)景中無處不在以及有多種有趣的細(xì)節(jié),如渦流和飛濺,流體仿真在計(jì)算機(jī)圖形學(xué)中得到了相當(dāng)廣泛的重視。對(duì)這一課題的研究也得到了廣泛的應(yīng)用,包括電影特效和計(jì)算機(jī)游戲。特別是在最近幾年,虛擬現(xiàn)實(shí)技術(shù)的火熱為流體仿真帶來了更廣泛的應(yīng)用前景,同時(shí),在真實(shí)感方面也帶來了更高的要求。
基于物理的流量模擬主要提供了兩種類型的方法:拉格朗日方法和歐拉方法。這兩種方法都有各自的優(yōu)點(diǎn)和缺點(diǎn),由于歐拉方法在固定網(wǎng)格上近似地插值空間導(dǎo)數(shù)比較方便,所以得到了大量的研究者的關(guān)注。然而,為了獲得更好的結(jié)果,隨著分辨率的增加,時(shí)間消耗非常巨大。此外,由于適當(dāng)?shù)某跏贾蹬c嚴(yán)格的邊界條件難以設(shè)定,有時(shí)很難實(shí)現(xiàn)一個(gè)特定場(chǎng)景下的效果。
另一方面,作為流體仿真的逆問題,視頻重建的目的是獲取流體在現(xiàn)實(shí)世界中的狀態(tài)及其物理性質(zhì),如速度和密度。隨著數(shù)據(jù)采集硬件的快速發(fā)展,可以很方便的獲取視頻數(shù)據(jù)。然而,由于設(shè)備和環(huán)境的約束,流體的一些細(xì)節(jié)可能會(huì)丟失。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于緊密耦合視頻重建與歐拉模型,得到增強(qiáng)的流體仿真效果,提出了一種基于視頻重建與歐拉模型耦合的流體仿真方法,該方法不僅基于視頻重建出流體的三維密度場(chǎng)和速度場(chǎng),并用于指導(dǎo)歐拉流體的仿真,得到既符合真實(shí)場(chǎng)景又有可控細(xì)節(jié)的動(dòng)畫效果。
實(shí)現(xiàn)本發(fā)明目的的具體技術(shù)方案是:
一種基于視頻重建與歐拉模型耦合的流體仿真方法,該方法包括以下步驟:
a)基于單方向視頻的流體密度場(chǎng)重建
i)使用最小二乘匹配方法重建密度場(chǎng)
首先把密度場(chǎng)的重建轉(zhuǎn)化成為一個(gè)線性系統(tǒng),描述為:
bd=p
其中b是一個(gè)稀疏矩陣,代表體積渲染操作,d代表密度場(chǎng),p表示輸入圖像;
然后選擇box基函數(shù)來構(gòu)造稀疏矩陣b,最后用共軛梯度法計(jì)算一個(gè)最小二乘解:
d=(btb)-1btp
bt代表矩陣b的轉(zhuǎn)置;
ii)使用期望最大化算法改善密度場(chǎng)
首先,通過一個(gè)簡(jiǎn)單的矩陣乘法p=bd渲染出各個(gè)方向上的圖像;然后通過以下步驟:形態(tài)學(xué)膨脹操作,高斯模糊,形態(tài)學(xué)腐蝕操作,來得到改善的圖像;最后基于改善的圖像,再次使用i)中的最小二乘匹配方法重建密度場(chǎng);
重復(fù)以上操作,直到系統(tǒng)收斂或到達(dá)最大迭代次數(shù),迭代停止,得到最終的密度場(chǎng);
b)使用歐拉法求解n-s方程
使用時(shí)間分裂法求解不可壓縮無黏n-s方程:
其中,u表示流體的速度,ρ是密度,p代表壓力,f代表外力;
首先,使用半拉格朗日法或flip法求解平流項(xiàng),再加上外力項(xiàng)得到中間速度;然后,通過多網(wǎng)格預(yù)處理共軛梯度算法求得壓強(qiáng);最后,由中間速度和壓強(qiáng)得到無散的速度場(chǎng);
得到了無散速度場(chǎng)之后,用下式平流輸送密度和溫度:
其中,
c)重建速度場(chǎng)
將速度場(chǎng)的重建看成一個(gè)最優(yōu)化問題,表示為:
此式中,et(v)代表流體輸送項(xiàng),表示為:
其中,φt是密度的時(shí)間導(dǎo)數(shù),
esm(v)是一個(gè)平滑項(xiàng),表示為:
eke(v)是一個(gè)動(dòng)能懲罰項(xiàng),表示為:
edf(v)是壓力投影中的無散項(xiàng),通過歐拉法求解,α和β是優(yōu)化參數(shù);
使用交替方向乘子迭代算法來求解此最優(yōu)化問題,在每一個(gè)迭代步驟中,使用歐拉法求得的速度場(chǎng)結(jié)果來校正,當(dāng)兩步之間的變化值小于一個(gè)設(shè)定的閾值或到達(dá)最大迭代次數(shù),迭代停止,輸出為重建的速度場(chǎng);
d)使用重建的密度場(chǎng)和速度場(chǎng)指導(dǎo)歐拉流體仿真
使用下式得到最終的速度場(chǎng):
r=u-ga(u)
ul=r+ga(v)
其中,其中u是歐拉法求得的速度場(chǎng),v是視頻重建出的速度場(chǎng),r代表提取出的高頻分量,ul代表最終的速度場(chǎng),ga()表示三維高斯模糊操作;
使用下式得到最終的密度場(chǎng):
dl=d*η+dr*(1-η)
其中,其中d是視頻重建出的密度場(chǎng),dr代表歐拉法求得的密度場(chǎng),dl代表最終的的密度場(chǎng),η是加權(quán)參數(shù),取值在0到1之間;
得到每一幀最終的速度場(chǎng)和密度場(chǎng),經(jīng)過渲染生成流體的動(dòng)畫效果。
本發(fā)明的有益效果:
本發(fā)明緊密耦合視頻重建和歐拉流體仿真,獲得了符合真實(shí)場(chǎng)景的動(dòng)畫效果,并可以添加可控的細(xì)節(jié)效果。
本發(fā)明能夠重建出平滑的對(duì)稱的密度場(chǎng),并以此為先驗(yàn)信息和在歐拉仿真結(jié)果的校正下,重建出符合物理規(guī)則的三維速度場(chǎng),之后,把二者用于指導(dǎo)歐拉流體仿真,可以使得結(jié)果符合視頻中的真實(shí)場(chǎng)景。
總之,應(yīng)用本發(fā)明可以有效地進(jìn)行視頻重建,并能夠有效地仿真多種場(chǎng)景下的流體動(dòng)畫效果,在真實(shí)感上有所提升。
附圖說明
圖1為本發(fā)明重建密度場(chǎng)示意圖;
圖2為本發(fā)明速度重建與歐拉仿真耦合的示意圖;
圖3為本發(fā)明流程示意圖;
圖4為輸入視頻與不同方法的仿真結(jié)果示意圖;
圖5為本發(fā)明煙霧與固體交互仿真結(jié)果示意圖;
圖6為本發(fā)明風(fēng)作為外力的仿真結(jié)果示意圖。
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明做詳細(xì)描述:
本發(fā)明包括以下步驟:
1)三維密度場(chǎng)重建
將單個(gè)方向視頻擴(kuò)展到兩個(gè)方向,首先使用最小二乘匹配方法求得一個(gè)近似的密度場(chǎng),然后通過期望最大化算法迭代逐步改善,最后得到一個(gè)平滑的對(duì)稱的密度場(chǎng)。
2)歐拉法求解n-s方程
對(duì)無黏n-s方程,使用時(shí)間分裂法,通過平流、外力和投影等,求解得到下一幀的速度場(chǎng)和密度場(chǎng)。
3)三維速度場(chǎng)重建
把重建出的密度場(chǎng)作為先驗(yàn)信息,并使用歐拉法結(jié)果做校正,得到符合物理規(guī)則的三維速度場(chǎng)。
4)重建的密度場(chǎng)和速度場(chǎng)指導(dǎo)歐拉流體仿真
分別取重建速度場(chǎng)和歐拉求得的速度場(chǎng)的低頻和高頻分量,得到最終的速度場(chǎng),最終的密度場(chǎng)則取二者的加權(quán)平均。
本發(fā)明的三維密度場(chǎng)重建步驟具體為:
重建密度場(chǎng)的框架如圖1所示,首先使用最小二乘匹配方法得到一個(gè)近似的密度場(chǎng),把問題轉(zhuǎn)化成為一個(gè)線性系統(tǒng),描述為:
bd=p
其中b是一個(gè)稀疏矩陣,代表體積渲染操作,d代表密度場(chǎng),p表示輸入圖像。
然后選擇box基函數(shù)來構(gòu)造稀疏矩陣b:
bij=||x1-x2||
其中,bij是矩陣b第i行第j列的值,x1和x2是第i條投射線和第j個(gè)體素的交點(diǎn)。再用共軛梯度法計(jì)算一個(gè)最小二乘解:
d=(btb)-1btp
bt代表矩陣b的轉(zhuǎn)置。
使用期望最大化算法改善密度場(chǎng),先通過一個(gè)簡(jiǎn)單的矩陣乘法p=bd渲染出各個(gè)方向上的圖像。然后通過以下步驟來改善圖像:形態(tài)學(xué)膨脹操作,高斯模糊,形態(tài)學(xué)腐蝕操作。最后基于改善的圖像,再次使用最小二乘匹配方法重建密度場(chǎng)。
重復(fù)以上操作,直到系統(tǒng)收斂或到達(dá)最大迭代次數(shù),迭代停止。
本發(fā)明的歐拉法求解n-s方程步驟具體為:
使用時(shí)間分裂法求解不可壓縮無黏n-s方程:
其中,u表示流體的速度,ρ是密度,p代表壓力,f代表外力。
首先,使用半拉格朗日法或flip法求解平流項(xiàng),再加上外力項(xiàng)得到中間速度。然后,通過多網(wǎng)格預(yù)處理共軛梯度算法求得壓強(qiáng):
其中,
最后,由中間速度和壓強(qiáng)得到無散的速度場(chǎng):
得到了無散速度場(chǎng)之后,用下式平流輸送密度和溫度:
其中,
本發(fā)明的速度場(chǎng)重建與歐拉仿真緊密耦合具體為:
速度場(chǎng)重建與歐拉仿真的耦合如圖2所示。將速度場(chǎng)的重建看成一個(gè)最優(yōu)化問題,表示為:
此式中,et(v)代表流體輸送項(xiàng),表示為:
其中,φt是密度的時(shí)間導(dǎo)數(shù),
esm(v)是一個(gè)平滑項(xiàng),表示為:
eke(v)是一個(gè)動(dòng)能懲罰項(xiàng),表示為:
edf(v)是壓力投影中的無散項(xiàng),通過歐拉法求解,α和β是優(yōu)化參數(shù);
使用交替方向乘子迭代算法來求解此最優(yōu)化問題,在每一個(gè)迭代步驟中,使用歐拉法求得的速度場(chǎng)結(jié)果來校正,當(dāng)兩步之間的變化值小于一個(gè)設(shè)定的閾值或到達(dá)最大迭代次數(shù),迭代停止,輸出為重建的速度場(chǎng)。
然后使用重建出的密度場(chǎng)和速度場(chǎng)指導(dǎo)歐拉流體仿真,使用下式得到最終的速度場(chǎng):
r=u-ga(u)
ul=r+ga(v)
其中,其中u是歐拉法求得的速度場(chǎng),v是視頻重建出的速度場(chǎng),r代表提取出的高頻分量,ul代表最終的速度場(chǎng),ga()表示三維高斯模糊操作;
使用下式得到最終的密度場(chǎng):
dl=d*η+dr*(1-η)
其中,其中d是視頻重建出的密度場(chǎng),dr代表歐拉法求得的密度場(chǎng),dl代表最終的的密度場(chǎng),η是加權(quán)參數(shù),本發(fā)明中的取值為0.2;
得到每一幀最終的速度場(chǎng)和密度場(chǎng),經(jīng)過渲染可以生成流體的動(dòng)畫效果。
本發(fā)明的具體實(shí)現(xiàn)過程為:
如圖3所示,首先基于單方向視頻重建出流體的三維密度場(chǎng),然后用它作為先驗(yàn)信息重建速度場(chǎng),并與歐拉仿真緊密耦合,之后重建數(shù)據(jù)用于指導(dǎo)歐拉流體仿真,最后經(jīng)過渲染,可以得到符合真實(shí)場(chǎng)景的流體動(dòng)畫效果。
在指導(dǎo)的過程中,分別取重建速度場(chǎng)和歐拉求解速度場(chǎng)的低頻和高頻,可以獲得二者的特性,最后結(jié)果不僅符合視頻場(chǎng)景,而且可以添加更多的細(xì)節(jié)效果。
本發(fā)明基于視頻重建與歐拉模型緊密耦合進(jìn)行流體仿真,效果展示說明如下:
圖4展示了輸入的煙霧視頻和不同方法產(chǎn)生的結(jié)果。選取了3個(gè)不同的視頻幀,從左到右分別為:輸入視頻、重建密度場(chǎng)、單純歐拉方法結(jié)果和本發(fā)明的結(jié)果??梢钥闯觯景l(fā)明的方法符合真實(shí)輸入場(chǎng)景,并產(chǎn)生了更多地細(xì)節(jié)。
圖5展示了煙霧和固體交互的結(jié)果。選取了兩種不同形狀的固體,球和圓環(huán)??梢钥闯觯景l(fā)明的方法很好的仿真出了固液耦合效果。
圖6展示了風(fēng)作為外力的結(jié)果??梢钥闯觯景l(fā)明也具有很好的表現(xiàn)。
以上列舉的僅是本發(fā)明的具體實(shí)施例。顯然,本發(fā)明不限于以上實(shí)施例,還可以有許多變形。本領(lǐng)域的普通技術(shù)人員能從本發(fā)明公開的內(nèi)容直接導(dǎo)出或聯(lián)想到的所有變形,均應(yīng)認(rèn)為是本發(fā)明的保護(hù)范圍。