发明名称 一种基于视频重建与SPH模型的流固交互仿真方法
摘要 本发明公开了一种基于视频重建与SPH模型的流固交互仿真方法,其步骤为:1)采用明暗恢复形状方法对视频中的流体表面几何信息进行快速重建,获得每帧输入图像的表面高度场;2)将高度场与浅水方程结合,通过最小化能量方程的形式计算得出流体表面的速度场;3)将表面几何信息作为边界约束条件离散化到整个三维体内部,获得体数据;4)将视频中重建的体数据导入到SPH仿真场景,作为仿真场景的初始条件,并与场景中的其他虚拟环境物体进行交互。本发明能够较高精度的重建数据并保留流体表面细节,基于重建数据与物理仿真模型进行双向交互仿真,获得了更逼近真实情况的流体动画效果,算法复杂性低,对比相关算法具有较高的创新性。
申请公布号 CN106446425A 申请公布日期 2017.02.22
申请号 CN201610863898.4 申请日期 2016.09.29
申请人 华东师范大学 发明人 王长波;王超;李凤豫
分类号 G06F17/50(2006.01)I;G06T17/00(2006.01)I;G06T19/20(2011.01)I 主分类号 G06F17/50(2006.01)I
代理机构 上海蓝迪专利商标事务所(普通合伙) 31215 代理人 徐筱梅;张翔
主权项 一种基于视频重建与SPH模型的流固交互仿真方法,其特征在于该方法包括以下步骤:a)流体表面高度场重建i)基于SFS的表面高度场重建对于输入视频,每帧单独处理;使用牛顿迭代法求解每个像素点的深度值,当给定一个足够精确的初始估计值时,牛顿迭代法符合二阶收敛性;对于输入图像没有任何已知条件时,假设每个像素点的初始深度值为0,经过迭代得到最终的深度值z(x,y,t);获得了图像中每个像素点的深度值z(x,y,t)后,流体表面的高度场使用下式计算:h(x,y,t)=z(x,y,t)‑z<sub>b</sub>其中z<sub>b</sub>为所有像素高度的最小值,z(x,y,t)为每个像素点的最终深度值;去除由全局光照影响造成的表面水平移动效果,得到最后的高度场,其具体公式为:<maths num="0001"><math><![CDATA[<mrow><mi>h</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>t</mi><mo>)</mo></mrow><mo>=</mo><mi>h</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>t</mi><mo>)</mo></mrow><mo>-</mo><mfrac><mn>1</mn><mrow><mi>m</mi><mi>n</mi></mrow></mfrac><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>m</mi></munderover><munderover><mo>&Sigma;</mo><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><mi>h</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>t</mi><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001123683700000011.GIF" wi="758" he="151" /></maths>其中,m与n分别为视频分辨率的宽和高,h(x,y,t)为每个像素点的高度场;ii)高度场后处理为了去除重建的高度场中大量的噪声,使用基于统计的异常值处理法来处理i)得到的高度场,其具体公式为:μ<sub>mean</sub>+ε<sub>d</sub>σ<sub>d</sub>其中,μ<sub>mean</sub>表示所有像素邻居间距离的平均值,ε<sub>d</sub>表示乘子,σ<sub>d</sub>表示距离的标准差。对于每个带有高度值的像素点,如果某个点与邻居的平均距离超过上式定义的值,那么它被认为是离群点,并被剔除;再进行高度场补洞与平滑操作,对于每个去除的离群点,使用它周围的k<sup>2</sup>个邻居来填补孔洞,计算它k<sup>2</sup>个邻居高度值的平均值作为离群点的高度值,再使用平滑算法来平滑;b)流体表面速度场重建使用浅水方程与平滑约束得到速度场,浅水方程是流体仿真中的一个特殊模型,它描述了浅水流动的一般规律,并且可以进行快速计算;同时还要引入额外的平滑约束来保证方程收敛到一个唯一解,为了求得相对稳定的速度场,选择的平滑约束为:<maths num="0002"><math><![CDATA[<mrow><mo>&Integral;</mo><mo>&Integral;</mo><mo>|</mo><mo>&dtri;</mo><mi>u</mi><msup><mo>|</mo><mn>2</mn></msup><mo>+</mo><mo>|</mo><mo>&dtri;</mo><mi>v</mi><msup><mo>|</mo><mn>2</mn></msup><mi>d</mi><mi>x</mi><mi>d</mi><mi>y</mi></mrow>]]></math><img file="FDA0001123683700000012.GIF" wi="414" he="103" /></maths>其中,<img file="FDA0001123683700000013.GIF" wi="30" he="38" />是哈密顿算子,u和v分别代表x和y方向上的速度;浅水方程为:h<sub>t</sub>+h<sub>x</sub>u+h<sub>y</sub>v+h(u<sub>x</sub>+v<sub>y</sub>)=0其中,h代表高度值,u和v分别代表x和y方向上的速度,<img file="FDA0001123683700000021.GIF" wi="750" he="87" /><img file="FDA0001123683700000022.GIF" wi="310" he="86" />重建速度场的目标能量函数是浅水方程和平滑约束的加权融合;c)重建三维体数据首先加入河床,将表面粒子离散化;河床加入后,内部体粒子从上到下不断加入,其中河床在z轴上的高度决定了整个水体的深度;当垂直方向加入的粒子最大的高度小于表面粒子的高度时,新的粒子不断地被加入;新加入的粒子半径R控制着这个三维体内部的密度,最终这些新生成的体粒子填满了整个三维水体空间;d)结合数据与物理模型进行仿真i)流体粒子更新按照SPH模型在每个迭代周期内计算每个粒子上的受力,并计算加速度,更新位置和速度;ii)固体粒子更新为了仿真流体与固体之间的交互效果,刚性结构的固体采样成粒子,并需要分析固体粒子在与流体粒子交互过程中由碰撞和浮力产生的力,以此来更新固体粒子的速度和位置;iii)基于重建数据的流体校正使用通过第一帧视频图像重建的三维体数据来初始化SPH仿真场景,仿真场景中的粒子分成两部分,包含SPH流体粒子和固体粒子;SPH仿真场景中的固体粒子属性保持不变,只校正流体粒子;使用ICP算法将步骤c)中重建的三维体数据中的粒子与SPH仿真中的流体粒子进行匹配,匹配分为三类:匹配的点对,重建的三维体数据中未匹配的粒子和SPH仿真中未匹配的流体粒子;对这三类进行不同的处理:匹配的点对中两个粒子融合为一个粒子,融合后粒子的位置、速度使用两个粒子的位置和速度加权计算;重建的三维体数据中未匹配的粒子直接保留;对于SPH仿真中未匹配的流体粒子,计算它到三维体数据中最近的邻居粒子的距离误差,若距离误差小于设定的阈值,则将此粒子抛弃,若距离误差大于阈值,则将保留。
地址 200241 上海市闵行区东川路500号