发明名称 一种视频流体高度的计算方法
摘要 本发明公开了一种视频流体高度的计算方法,该方法首先根据流体运动特征,对流体的运动矢量进行初始化;根据运动矢量的结果,利用LBM计算流体粒子的高度;再对高度进行去噪和平滑处理;然后,根据流体运动的连续性,利用LBM递推连续多帧的高度结果,得到具有流体物理运动特性的高度计算结果;再利用流体粒子分布函数线性插值的方法,得到连续运动流体的均匀变化的高度结果;最后,采用中间帧对流体高度进行校正。本发明具有简单、方便、快速的特点,利用本发明可得到连续变化的流体高度场,并且产生实时的高度结果,能够应用于自然景观虚拟场景的构建,并且可有效地实现虚拟场景中的流体运动实时交互,克服基于视觉方法中重建的实时性差的问题,具有一定的应用价值。
申请公布号 CN102819662B 申请公布日期 2015.05.20
申请号 CN201210237823.7 申请日期 2012.07.10
申请人 华东师范大学 发明人 全红艳;吴茂茂;俞铭琪
分类号 G06T7/20(2006.01)I;G06T7/40(2006.01)I;H04N5/14(2006.01)I 主分类号 G06T7/20(2006.01)I
代理机构 上海蓝迪专利事务所 31215 代理人 徐筱梅;张翔
主权项 一种视频流体高度的计算方法,其特征在于该方法利用流体运动矢量的计算结果,根据粒子运动时的相互作用,计算得到流体粒子的分布函数,再根据分布函数,计算得到流体运动的高度,具体包括以下步骤:(1)流体运动矢量的计算;(2)运动矢量和LBM(Lattice Boltzmann Method)相结合的高度计算;(3)对高度计算结果的去噪和平滑;(4)利用LBM递推流体的高度;(5)高度校正;其中:所述流体运动矢量的计算:利用连续两帧图像,采用区域相关运算方式对流体运动矢量进行初始化;再运用所定义的运动矢量的特征向量,对初始化的结果进行聚类,并统计各类别的规模,保留主要类别,最后用主要类别中的流体运动矢量的结果进行线性插值,得到运动矢量计算结果;其中,用于聚类的特征向量定义为:vector=[x,y,u,v,sigu,sigv]     (1)(x,y)为流体粒子所在的位置,u和v分别表示该粒子的运动矢量沿x方向和沿y方向的分量,sigu和sigv分别表示u和v的符号,如果为正取1,如果为负取‑1,否则取0;具体计算包括:1)利用连续两帧图像,采用区域相关运算对流体运动矢量进行初始化;2)利用运动矢量的特征向量vector=[x,y,u,v,sigu,sigv]进行聚类,具体地,如果粒子P<sub>i</sub>和P<sub>j</sub>的运动矢量的特征向量分别为:vector<sub>i</sub>=[x<sub>pi</sub>,y<sub>pi</sub>,u<sub>pi</sub>,v<sub>pi</sub>,sigu<sub>pi</sub>,sigv<sub>pi</sub>]及vector<sub>j</sub>=[x<sub>pj</sub>,y<sub>pj</sub>,u<sub>pj</sub>,v<sub>pj</sub>,sigu<sub>pj</sub>,sigv<sub>pj</sub>],并且,它们同时满足式(2)至(5),则认为粒子P<sub>i</sub>和P<sub>j</sub>的运动具有相似性,并将它们聚到相同的类别之中;<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mo>|</mo><msqrt><msup><mrow><mo>(</mo><msub><mi>x</mi><mi>pi</mi></msub><mo>-</mo><msub><mi>x</mi><mi>pj</mi></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msub><mi>y</mi><mi>pi</mi></msub><mo>-</mo><msub><mi>y</mi><mi>pj</mi></msub><mo>)</mo></mrow><mn>2</mn></msup></msqrt><mo>|</mo><mo>&lt;</mo><msub><mi>threshold</mi><mi>dis</mi></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000656153190000011.GIF" wi="1282" he="114" /></maths><maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mo>|</mo><msqrt><mi>angle</mi><mrow><mo>(</mo><msub><mi>vec</mi><mi>pi</mi></msub><mo>,</mo><msub><mi>vec</mi><mi>pj</mi></msub><mo>)</mo></mrow></msqrt><mo>|</mo><mo>&lt;</mo><msub><mi>threshold</mi><mi>angle</mi></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000656153190000012.GIF" wi="1213" he="99" /></maths>sigu<sub>pi</sub>*sigu<sub>pj</sub>≥0      (4)sigv<sub>pi</sub>*sigv<sub>pj</sub>≥0     (5)其中,threshold<sub>dis</sub>表示粒子P<sub>i</sub>和P<sub>j</sub>之间距离的阈值;vec<sub>pi</sub>和vec<sub>pj</sub>分别表示粒子P<sub>i</sub>和P<sub>j</sub>的运动矢量(u<sub>pi</sub>,v<sub>pi</sub>)及(u<sub>pj</sub>,v<sub>pj</sub>);threshold<sub>angle</sub>表示它们运动矢量方向的阈值;3)统计各类别的规模,对于聚类结果中规模较大的类别,保留其结果;设任意一个类D,它的类内粒子数为D<sub>num</sub>,即该类的规模为D<sub>num</sub>,如果其满足式(6)则认为类内粒子运动矢量是较为准确的,并将这些粒子的flag值置为1;否则,对于粒子的flag值置为0;D<sub>num</sub>&gt;threshold<sub>D</sub>            (6)其中,threshold<sub>D</sub>是粒子数目的阈值;4)对于任意一个flag值为1的粒子P<sub>m</sub>,在其周围的区域中选取一个与之最近且flag值为1的粒子P<sub>n</sub>,对这两个粒子连线上的所有flag值为0的粒子采用线性插值的方法,得到它们的运动矢量结果;所述运动矢量和LBM相结合的高度计算包括:a)假设任意一个尚未计算高度的粒子S(x,y),其周围粒子为T<sub>i</sub>(x,y)(i=1,...,8),它们对应的运动矢量为(u<sub>i</sub>,v<sub>i</sub>),粒子T<sub>i</sub>(x,y)对粒子S(x,y)作用力的标准方向为F<sub>i</sub>,设标准方向F<sub>i</sub>与水平向量Hor(u<sub>i</sub>,0)的夹角为θ<sub>1</sub>,F<sub>i</sub>与垂直向量Ver(0,v<sub>i</sub>)的夹角为θ<sub>2</sub>,用下式计算粒子S(x,y)的分布函数f<sub>i</sub>(x,y,t):<img file="FDA0000656153190000021.GIF" wi="1151" he="273" />b)利用下式计算粒子S(x,y)在三维空间中的高度h(r,t)<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><mi>h</mi><mrow><mo>(</mo><mi>r</mi><mo>,</mo><mi>t</mi><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>0</mn></mrow><mi>d</mi></munderover><msub><mi>f</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>r</mi><mo>,</mo><mi>t</mi><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000656153190000022.GIF" wi="340" he="138" /></maths>其中,h(r,t)为t时刻位于r处的粒子高度;d表示周围粒子个数;f<sub>i</sub>(r,t)表示t时刻位于r处的粒子分布函数;c)判断是否所有粒子的高度已经计算,如果是,转步骤d),否则,转步骤a);d)计算结束。
地址 200241 上海市闵行区东川路500号