MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}}); function MyAutoRun() {    var topp=$(window).height()/2; if($(window).height()>450){ jQuery(".outline_switch_td").css({ position : "fixed", top:topp+"px" }); }  }    window.onload=MyAutoRun; $(window).resize(function(){ var bodyw=$win.width(); var _leftPaneInner_width = jQuery(".rich_html_content #leftPaneInner").width(); var _main_article_body = jQuery(".rich_html_content #main_article_body").width(); var rightw=bodyw-_leftPaneInner_width-_main_article_body-25;   var topp=$(window).height()/2; if(rightw<0||$(window).height()<455){ $("#nav-article-page").hide(); $(".outline_switch_td").hide(); }else{ $("#nav-article-page").show(); $(".outline_switch_td").show(); var topp=$(window).height()/2; jQuery(".outline_switch_td").css({ position : "fixed", top:topp+"px" }); } }); 一种骨架驱动的近岸涌浪动画合成方法
  软件学报  2016, Vol. 27 Issue (10): 2600-2611   PDF    
一种骨架驱动的近岸涌浪动画合成方法
商柳1,2, 冯笑冰1,2, 朱登明2, 王兆其2, 王永健2     
1. 中国科学院大学, 北京 100190 ;
2. 中国科学院 计算技术研究所虚拟现实实验室, 北京 100190
摘要: 大面积水面及波浪的快速建模与可控动画一直是计算机图形学研究的热点问题之一,但是由于天然波浪的复杂性与不规则性,现有的波浪模拟方法无法在计算效率与真实感之间很好地权衡.针对此问题,以近岸涌浪为对象,研究波浪形态特征的表示与提取方法,快速生成可控的波浪动画.首先以波浪视频为数据源,利用数学形态学算法从水面视频图像中提取出涌浪骨架特征;然后根据此特征控制涌浪形状与高度,重用高度场数据生成可控的更加多样的近岸涌浪运动形态,克服了流体动画计算效率低下且难以交互控制的缺点.实验结果表明,所提出的方法能够以简单、直观的控制方式,快速实现用户期望的变形效果.
关键词: 骨架驱动     涌浪模型     形状控制     流体动画     高度变化    
Synthesis of Coastal Swell Animation Driven by Skeleton
SHANG Liu1,2, FENG Xiao-Bing1,2, ZHU Deng-Ming2, WANG Zhao-Qi2, WANG Yong-Jian2     
1. University of Chinese Academy Sciences, Beijing 100190, China ;
2. Visual Reality Laboratory, Institute of Computing Technology, The Chinese Academy of Sciences, Beijing 100190, China
Foundation item: National Natural Science Foundation of China (61173067, 61379085, 61303157, 61532002); National High Technology Research and Development Program of China (863) (2015AA016401)
Abstract: The rapid modeling and controllable animation of large scale water surface and waves have always been hot issues in computer graphics research. However, due to the complexity and irregularity of natural waves, the existing simulation methods of waves cannot make a good tradeoff between computational efficiency and realism. In this paper, a technique is presented to extract features of the wave shape and generate controllable wave animation rapidly. Taking the captured video of outdoor costal wave as input, this technique first uses mathematical morphology algorithms to resolve wave's mask and skeleton from water video sequences as wave's features. Then it employs these features to control the shape of waves by reusing of height field to generate various wave animations. Consequently, the new method can produce controllable swell wave moving patterns under simple interaction with a small computational cost. Experiments show that the presented method can generate natural wave deformation effect with a simple and intuitive control process.
Key words: skeleton driven     wave model     shape control     fluid animation     height change    
1 引言

流体模拟, 尤其是大面积水面及波浪的快速建模与可控动画一直是计算机图形学研究的热点问题之一.对各种波浪形态的模拟在影视特效、三维游戏开发等各种领域得到了越来越广泛的应用, 有着重要的应用价值.然而, 由于天然波浪的复杂性与不规则性, 波浪模拟方法需要在计算效率与真实感之间进行平衡, 因此, 如何快速地对波浪进行模拟, 并生成可控的波浪动画依然是一个具有挑战性的课题.

传统的波浪模拟方法, 早期的模拟方法使用函数或曲面的线性组合来模拟波浪的外形, 方法简单、直观, 且计算速度较快, 但无法体现波浪的不规则性, 真实感较差.近期, 基于物理的模拟方法从流体动力学方程出发, 根据水波初始状态和物理方程, 计算求解波浪的密度场, 模拟出的波浪与前者相比, 真实感较强, 但是, 由于波浪复杂的演变机制, 这种方法普遍存在模型复杂、计算量大且耗时长等缺点, 且仅限于小范围波浪的模拟和研究, 影响了该技术的推广和应用.总体来说, 由于波浪形态的不规则性与其复杂的生成机制, 用数学物理模型来模拟波浪的方法存在很大的局限性.

近年来, 由于相机等高精度采集设备的发展, 基于实测数据的水表面重建技术渐渐发展起来, 为波浪的模拟提供了新的解决思路.该技术主要利用采集设备拍摄水体运动, 根据采集到的真实水场景数据, 利用计算机图形学和计算机视觉技术, 快速重构出水体的三维表面.由于该方法是对真实自然现象实测数据的重构, 隐含着精确的物理模型, 因此能够生成的动画自然逼真.同时, 其计算效率得到了显著提升.但是, 现有的数据驱动的水表面重建方法大多需要复杂的数据采集装置, 难以对大规模水体自然现象建模, 而适用于波浪的建模方法目前也难以进行扩展应用, 数据利用率很低.因此, 如何充分利用重建出来的数据, 生成更加多样的流体动画形式具有重要意义.

另一方面, 在流体动画的制作过程中, 为了体现许多现实中不存在的特效场景, 需要控制流体的运动行为和外表特征, 使其满足特效设计人员的期望, 这就需要对流体动画进行控制.但目前的可控流体动画方法需要设计复杂的关键帧或了解物理相关知识等, 而且现有的流体动画控制方法一般都是基于物理的模型, 计算复杂、耗时且需要高存储量.因此, 研究更加高效、简单的控制方法, 也是一个重要的问题.

针对以上问题, 本文将研究对象定位于近岸涌浪, 研究如何以简单的交互方式快速合成复杂多样的近岸波浪动画.首先, 提出一种基于骨架的涌浪形状提取和表示方法, 基于视频与图像快速、准确地提取涌浪的相关特征, 以满足后续波浪交互所需.在此骨架模型基础上, 本文首先提出了一种骨架驱动的涌浪目标形状趋近方法, 以骨架带动整体波浪, 逐渐实现波浪的变形, 为保持波浪的平滑性, 用纹理合成方法对波浪平移留下的空洞进行填补.其次, 在波浪高度层面, 对于重建出的水面数据, 分离波浪细节以实现快速的波浪高度场变化.本文方法能够在形状与高度上控制波浪形态, 快速生成符合目标形状且细节丰富的高真实感涌浪动画.算法流程如图 1所示.

Fig. 1 Framework of algorithm 图 1 算法流程图

2 相关工作 2.1 波浪模拟

传统的波浪模拟方法大致有两种:基于波面造型的方法和基于物理的方法.

波面造型:波浪模拟的早期工作集中于直接对水表面进行建模和动画.这些方法大多基于三角公式、噪声函数, 或者傅里叶合成.对水表面进行数学建模的工作中, 早期的max[1]用无穷级数的前N项之和来表示波形的方法模拟水面.Hinsinger等人[2]则通过周期函数来模拟无边界的水面场景, 能够达到实时效果.Tessendorf等人[3]采用基于统计的快速傅里叶变换经验模型来生成海面.上述方法能够较好地模拟岸边浅水区域的水波, 但生成的波浪较为平缓.国内, 杨怀平等人[4]基于邻域传播思想, 采用细胞自动机模型实现了反射波、紊乱波等, 但对生成大面积不规则波浪混合的场景有所局限.

物理模拟:为了模拟复杂的、细节更为丰富的不规则波浪效果, 基于物理的方法通常用Navier-Stokes方程或其简化形式精确描述流体的运动.Enright和Fedkiw[5]用粒子水平集方法提取自由表面, 通过求解三维Navis-Stokes方程得到波浪在坡面上的卷曲和破碎效果.Muller等人[6, 7]应用平滑粒子流体动力学方法, 同时考虑了表面张力的作用, 进行水面的模拟.为了突出波浪的效果, O’Brien[8]和Takahashi[9]用粒子系统对水花和泡沫进行建模, 模拟了水波与固体碰撞时的飞溅现象.Losasso等人[10]提出基于网格的粒子水平集SPH(smoothed particle hydrodynamic)的方法, 能够较好地模拟出泡沫和浪花飞溅等细节效果.但基于物理的方法因为其运算较为复杂, 实现效率比较低.为了提升流体模拟的效率, Sato[11]利用主成分分析方法, 通过细节增强实现高分辨率数据场的快速模拟.Chang等人[12]使用一种粒子与网格相结合的方法, 以增强流体模拟细节.文献[13]结合波浪表面的运动状态, 以不同的方式驱动注入粒子的运动, 实现水面浪花的模拟, 增强了视觉真实感.在国内提出了一种基于半拉格朗日的液体实时仿真方法[14], 在保证结果真实性的同时, 使流体模拟运算速度较快且能取得较好的视觉效果.文献[15]提出一种耦合几何特征的高精度流体动画生成方法, 通过利用不同流体细节之间的相关性以提高计算效率和计算精度.总体来说, 物理模拟的方法在波浪的细节模拟方面效果较好, 但求解过程较为复杂.

形态控制:除了基本的波浪形态模拟, 流体控制策略使得流体能够按照动画师期望的外形和运动方式行进.在许多影视特效中, 动画师期望能模拟合成真实世界中不存在的流体现象, 在这方面的研究主要集中在如何使流体表面平滑趋向于目标表面, 以及如何为动画师提供更加方便、直观的控制方式上.文献[16, 17]等均采用关键帧控制的方式, 用最优化的方法求解驱动流体运动的力场, 得到用户期望的流体行为.在针对波浪运动的控制方法中, 通常结合物理方程的模拟, 利用波浪的独特运动形态, 对求解过程做出相应处理, 实现对波浪的控制.针对具有特定形态的涌浪, 文献[18]使用二维切片控制波浪运动过程中的形状; 文献[19]中使用SPH粒子模型, 针对波浪运动的不同形态, 使用一种弱压缩的运动方程求解方法以物理模拟的方式实现针对波浪运动的控制; 文献[20]采用浅水波方程的模拟, 利用波浪独特的运动形态, 根据波浪线与波浪中的局部拼块, 对近岸波浪的运动进行控制.但此类方法在波浪真实感上难以达到较好的效果.综合以上分析, 波浪的控制目前集中于基于物理约束的方法, 在模拟速度和真实感之间难以做到双赢, 在控制方式上缺少灵活性.

2.2 水面重建

近年来, 随着相机等采集设备的发展, 越来越多的研究者把目光投向于对真实自然现象的重建.数据驱动的水表面重建利用采集设备获取真实动态水体数据然后对其建模, 既能够保持液体变化的物理相符性, 又在计算效率上得到了改善, 因此近几年来成为水模拟领域新的研究方向.

基于图像的重建技术需要从多角度对物体进行拍摄, Hilsenstein[21]利用双目红外摄像机获取的热成像图像序列来重建水波.Ihrke等人[22]将化学荧光素溶解在水中, 然后由荧光液体的反射光强度测量水体的厚度, 通过优化加权极小曲面并将厚度的度量值作为约束来计算得到水表面虚拟壳体.Wang等人[23]提出了一种混合了物理模拟和基于图像重建的动态水体重建构架, 重建出水的初始表面, 然后再用一系列物理约束对初始表面进行优化, 从而使重建出来的三维动画真实感更强且重建效率也很高.

2010年Pickup等人[24]提出了一种由单一的普通户外环境捕获的视频序列来重建水表面的方法.由于户外水体几乎是不透明的, 因此消除了折射的影响, 可以通过由影调恢复形状方法SFS(shape from shading)[25]来恢复其表面形状.之后, Li等人[26]对Pickup文中提出的方法进行了进一步的优化, 引入浅水方程, 通过多层迭代模型对重建水表面进行优化.Quan等人[27, 28]在此基础上, 通过优化重建模型, 实现了高精度的波浪数据场求解, 并对数据进行扩展和外推.

现有的数据驱动的水表面重建方法, 已经可以实现室内外不同环境下的真实感水面建模, 但仅仅是一种“再现”的过程.由于采集设备捕获的区域、时间、跨度有限, 仅能重建出短时间内形态比较单一的波浪运动.然而, 在影视特效等许多应用中, 常常需要形态多样的波浪动画, 甚至期望波浪能够按照某种特定的形状和运动方式行进.因此, 为满足这一需求, 需要研究多样性波浪动画合成模型, 充分利用采集到的实测数据, 在运动形态上进行合成和扩展.本文利用文献[26]中的重建方法, 将SFS和光流的方法相结合, 首先用SFS获取初始的表面, 然后利用基于初始的表面使用光流来追踪速度场, 最后通过速度场求解实现高精度水表面的重建, 并以此高度场为数据源, 提取波浪的形态学特征, 实现数据场外推.

3 波浪模型表示

近岸涌浪场景水体浑浊, 避免了折射的影响, 同时, 波浪特征明显, 易于识别.而波浪动画的多样性体现在波浪的形状和延展方向上.因此, 为了控制波浪的运动, 需要提取出涌浪的形态特征, 并对其进行表示, 这样才能匹配目标形状, 驱动波浪的整体运动.本节定义了一种涌浪型波浪的特征表示方法, 使用骨架表示波浪形态特征, 并且基于图像, 准确提取相关特征.基于骨架特征表示方法, 允许用户使用骨架线作为目标, 实现波浪的形态控制.

3.1 波浪骨架定义

我们将波浪的骨架定义为二维平面上的一条曲线, 它由高度场中波浪线大致中轴位置上的一些点投影到二维网格面上组成, 骨架上的每个点对应一个网格.

$ S(w)=\{{{p}_{i}}=({{x}_{i}}, {{y}_{i}})|{{x}_{i}}, {{y}_{i}}\in N, i=1, \ldots, n\} $ (1)

图 2所示, 右图是左图中高度场红框区域的放大显示, 蓝色曲线是水面高度场, 颜色深浅代表了不同的高度值.红色是骨架线S(w), 表征波浪线的形状, pi是骨架上的组成点.

Fig. 2 Definition of wave skeleton 图 2 波浪骨架定义

3.2 基于图像的骨架提取

为了利用捕获的数据合成多样的波浪形态动画, 需要将波浪部分从场景中提取出来, 并且对波浪的形状加以表示和存储.在近海场景中, 由于涌浪在前进过程中在波面会生成很多泡沫和水花, 体现在图像上, 这些泡沫和飞溅的水花就形成了图像中较浅的区域, 与周围较为平缓的碎波形成了明显的差别.

为了从水面场景中提取出波浪部分, 受带标记的分水岭变换分割算法的启发, 我们结合形态学图像处理方法重建前景对象, 即波浪部分.通过基本运算的组合能够消除局部极值, 对图像进行清理, 并在波浪对象内部创建单位极大值, 使得可以使用局部极大来定位波浪对象.

1)  形态学处理

形态学图像处理操作是由一组形态学代数运算子组成的, 它的基本运算有4个:膨胀、腐蚀、开运算和闭运算.

AB膨胀, 则记为AB在图像处理中是“加长”或“变粗”的操作, 腐蚀AΘB可以看作是膨胀的对偶运算, 起到“收缩”或“细化”图像中对象的作用.开运算和闭运算通过膨胀和腐蚀的组合来实现.AB的形态学开运算可以记做 $A\circ B$, 开运算可以去除比结构元素更小的明亮细节, 去掉细的突起, 并对图像轮廓进行平滑, 与之相对应的闭运算AB可以去除比结构元素更小的暗色细节, 填补轮廓上的间隙, 使窄的断开部位与细长的沟融合.

重建也是一种形态学变换, 涉及到两幅图像和一个结构元素, 其中一幅图像叫做标记, 表征变换的起始点, 另一幅图像叫做掩模, 用来约束变换的过程.假设g是掩模, f为标记, 则从f重建g记为Rg(f), 它由以下的迭代过程来定义:

• 将h1初始化为标记图像f.

• 创建结构元素B.

• 重复${{h}_{k+1}}=({{h}_{k}}\oplus B)\cap g.$

2)   形态学提取掩模

为了提取波浪的掩模, 我们首先对视频图像灰度图进行腐蚀操作, 腐蚀操作能够去除小的对象, 然后通过重建来膨胀以还原保留对象的形状, 即由重建做开运算, 得到图像I’.

$ {I}'={{R}_{I}}(I\Theta B) $ (2)

其中, I是视频灰度图像原图, B是结构元素, 用腐蚀后图像作为标记图像, 原图作为掩模.然后, 用闭运算移除较暗的斑点和枝干标记.

$ {I}''=\overline{{{R}_{\overline{{{I}'}}}}}(\overline{{I}'\oplus B}) $ (3)

其中, I’表示I’的补集, 在闭运算重建过程中, 掩模是开运算重建后求补得到的图像, 标记为开运算重建后膨胀得到的图像, 然后将重建结果求补.经过开闭运算重建之后, 波浪部分统一了灰度值, 且亮度突出, 再用形态学重建快速提取出局部极大值区域, 得到波浪掩模, 即

$ M(w)={I}''-{{R}_{{{I}''}}}({I}''-1) $ (4)

3)  细化提取骨架

得到波浪掩模之后, 采用细化算法对二值的波浪掩模进行处理, 将波浪线细化到最低限度相连的没有断点的线.由于对波浪线的细化操作是由外向里一层层去点的, 因此细化后得到的线类似于波浪的骨架, 或中轴, 可以代表波浪的形状.

我们通过迭代的模板细化算法来得到细化的结果, 该方法假设待细化的图像是二值图像, 依据模板来判断当前的像素是否需要被去掉.在做细化操作时, 算法在每一次迭代步骤中去除掩模边缘的一圈需要删减的像素, 执行删除操作, 直到图像不再变化为止.最后将属于M’(w)中值为1的点保存为集合作为波浪的骨架表示.

$ S(w)=\{{{p}_{i}}=({{x}_{i}}, {{y}_{i}})|{{p}_{i}}\in {M}'(w)\} $ (5)

其中, M’(w)表示将提取的波浪二值掩模运用细化算法细化的结果.

4 骨架驱动的涌浪目标形状趋近方法

本节提出了一种有效的针对涌浪形状的动画合成方法, 利用重建的水面高度场, 对其中的涌浪波浪形状进行变形, 合成多样的波浪动画.首先介绍了基于波浪骨架特征的用户输入方式, 然后通过波浪初始形状与目标形状对应点的差值计算在每一帧波浪的位移, 位移后需要进行平滑操作以保持空间上的连续性, 最后, 我们采用纹理合成方法对波浪平移后留下的空洞进行填补.

4.1 用户输入与目标匹配

为了获取波浪变形的目标形状, 同时为用户提供直观、方便的控制方式, 用户输入包含两种方式:参数曲线和勾勒曲线.对于用户勾勒的曲线, 我们同样使用细化算法对其进行细化, 得到单像素宽度的曲线.对于参数曲线, 我们需要对参数曲线进行离散化, 即提取出一些离散的点, 每个点对应三维水面的一个网格.

为了实现以骨架线为目标的波浪形态控制, 需要在波浪目标形状T(w)与初始形状S(w)之间建立匹配关系.本文沿波浪运动的径向方向, 在目标与初始形状间建立一一对应的关系.图 3所示为目标曲线与波浪骨架匹配示意, 由左至右分别为:用户手动勾勒目标形状, 由目标形状细化得到的骨架线, 波浪图像提取骨架结果, 最右图为目标曲线与原始波浪骨架的匹配示意.波浪形状和目标形状分别表示为

Fig. 3 Match between user input curves and wave skeleton 图 3 用户输入曲线与波浪骨架匹配

$ S(w)=\{{{p}_{i}}=({{x}_{i}}, {{y}_{i}})|{{x}_{i}}, {{y}_{i}}\in N, i=1, \ldots, n\} $ (6)
$ T(w)=\{{{q}_{i}}=({{{x}'}_{i}}, {{{y}'}_{i}})|{{{x}'}_{i}}, {{{y}'}_{i}}\in N, i=1, \ldots, n\} $ (7)

其中, S(w)表示波浪形状, pi是波浪形状上的点, T(w)表示目标形状, qi是目标形状上的点, 形状上点的坐标都为整数, 且yi=y’i.

4.2 基于目标骨架的波浪变形

波浪的变形通过修改重建动画中的每一帧高度场, 使高度场中的波浪部分在每一帧沿水平方向做平移, 从而达到变形的效果.我们利用形状来计算每一帧的偏移量, 然后将波浪整体部分进行平移.

由波浪初始形状序列Si(w)和目标形状T(w), 可以得到一个形状序列T0(w), T1(w), …, TN(w), 其中, T0(w)=S0(w), TN(w)=T(w), 即形状序列的第1项为波浪的初始形状, 最后一项为用户输入的目标形状, Ti(w)表示第i帧的目标形状, 即中间过渡的波浪形状.Ti(w)可由波浪初始形状和目标形状线性插值得到.

$ {{T}_{i}}(w)=\left[\frac{i}{{{N}_{frame}}}({{S}_{0}}(w)-T(w)) \right] $ (8)

其中, S0(w)表示波浪初始形状, Nframe表示变形过程经历的帧的数量.假设第i帧波浪的原始形状为Si(w), 则第i帧波浪变形需要的偏移量Di(w)为

$ {{D}_{i}}(w)={{S}_{i}}(w)-{{T}_{i}}(w) $ (9)

通过逐帧计算偏移量, 波浪骨架在目标形状T(w)的约束下, 由初始形状序列Si(w)逐渐变形至目标形状序列Ti(w).在计算得到波浪骨架的变形后, 基于第3.2节中所得到的掩模提取结果, 以波浪的骨架驱动掩模内波浪高度场沿水平平移偏移量个单位的像素, 即:

$ {{h}_{i}}(p-{{D}_{ij}}(w))={{h}_{i}}(p), p\in {{M}_{i}}(w), i=1, ..., {{N}_{frame}} $ (10)

其中, Mi(w)是第i帧的波浪掩模, p是波浪掩模内的一点, hi(p)是第ip点的高度, Dij(w)是第ip点所在行j所对应的偏移量.

4.3 空洞填补

在对波浪线进行变形的过程中, 波浪高度场在骨架线的驱动下向目标曲线移动, 导致了高度场平面上的空洞, 因此需要对平移留下的空洞进行填补.由于波浪移动过程中已经对波浪线部分进行了操作, 留出的空洞部分是波浪线周围比较平缓的细碎波浪, 其纹理模式比较单一.为了在空洞填补的过程中, 保持细碎波浪的基本运动模式, 本文将高度场看成是二维灰度图, 使用马尔可夫随机场模型(Markov random field, 简称MRF)对高度场进行表示, 并采用Efros和Leung的非参数采样纹理合成方法[29]进行空洞的填补.

将一个像素的邻域设为包围这个像素的正方形窗口.假设要填补的图像为I, 令pI是图像中的一个像素点, ω(p)∈I是以p为中心宽度为ω的方形图像块, 即p的邻域.在对波浪空洞填补的过程中, 首先找到空洞边缘的所有像素点, 这些像素点的邻域内只有部分有灰度值, 而中心点需要合成.为了合成像素点p, 与p的邻域的最优匹配ωbest是邻域:

$ {{\omega }_{best}}=\arg {{\min }_{\omega }}s(\omega (p), \omega )\subset I $ (11)

其中, s为衡量相似性的距离函数.在高度场的空洞填补过程中, 需要同时考虑单帧数据场内邻域的相似度以及网格点上高度值在时间上的连续性.在寻找最优匹配邻域集合时, 我们要找到一些最佳匹配邻域, 它同时满足空间相似性和时间连续性.定义一个搜索邻域ωp点的相似性s(ω, p)为

$ s(\omega, p)=a\times d({{\omega }_{t}}(p), \omega )+(1-\alpha )\times d({{\omega }_{t-1}}(p), \omega ) $ (12)

其中, ωt(p)是pt时刻的邻域, ωt-1(p)为t-1时刻p点的邻域, d(ωt(p), ω)表示t时刻下p的邻域与邻域ω的相似性.其中, d(ωt(p), ω)保证邻域在空间上的连续性, d(ωt-1(p), ω)保证邻域在时间上的连续性, 得到最优匹配ωbest后, 利用最优匹配找出所有相似的邻域, 组成一个相似邻域的集合.

$ \Omega (p)=\{\omega |s(\omega, p)<(1+\varepsilon )\times s({{\omega }_{best}}, p)\} $ (13)

因此, 在t时刻的最优匹配既要满足和t时刻p点周围邻域的相似性, 也要满足和上一时刻p点周围邻域的相似性, 使p点在时间上不会发生骤变.然后从最优匹配邻域集中随机选取一个, 将选取邻域中心点的亮度值赋给p点.

空洞填补是一个迭代的过程.填补过程中, 每一次找出空洞边缘的一圈像素进行合成, 然后如此向内收缩, 直到最后将所有空缺的像素合成完毕.波浪完成整体变形之后, 需要进行高斯平滑来对波浪周围进行处理, 使波浪在平移之后的新位置与周围的细碎波浪融合, 去掉周围锯齿状的高度差.

5 细节保持的高度场控制

视频数据重建所得的水面动画运动形式单一.本节提出了一种快速、有效的波浪高度变化模型, 调整波浪的高度, 使其平滑下降, 并能与周围水面融合在一起, 同时研究波浪的细节保持方法, 使波浪在平滑下降的过程中保持波浪表面的细节动态效果.

5.1 高度场分解

为了在高度场控制的同时保持波浪的表面细节, 我们通过高斯平滑, 提取出水面的近似基底, 使用原高度场减去近似水面即可获取水表面细节, 即水表面高度场h可以分解为水面基底hbase和水表面细节hdetail之和.

$ h={{h}_{base}}+{{h}_{detail}} $ (14)

水面基底是平滑后的高度场, 它是水表面的近似, 代表了水表面的大体外轮廓, 从轮廓可以看出波浪的大致位置.相应地, 水表面细节代表了在水表面大体轮廓上由于浪花和水之间相互作用等引起的小突起、涟漪、褶皱和波纹, 它赋予水表面细节以动态效果, 是水面动画中十分重要的效果, 但属于局部动态效果, 不应参与波浪整体高度的下降.因此, 在进行高度下降时, 我们仅对水面基底进行下降, 最后再叠加细节部分.

5.2 波浪高度变化模型 5.2.1 下降高度

为了得到波浪高度下降的效果, 应使波浪线部分最终下降到与周围同样的高度, 假设最终下降到的高度为hend, 则可以通过第3节提取出来的波浪掩模求取波浪线周围邻域的平均高度值, 作为最终下降到的高度.

$ {{h}_{end}}=\overline{{{h}_{base}}(dilate(M(w))-M(w))} $ (15)

其中, M(w)表示第3.2节中提取出来的波浪掩模, dilate()表示膨胀操作, 对波浪掩模进行形态学膨胀之后, 掩模部分会向周围外扩一圈, 然后减去掩模得到波浪线周围的区域, 取这个区域高度的平均值作为波浪最终下降到的高度, 也是突起的波浪线周围水面的平均高度.为了得到波浪在行进过程中高度逐渐变化或消失的效果, 应使波浪线部分从原始的高度h逐渐下降到hend, 最终与周围水面融合在一起.每一帧中, 波浪需要下降的高度hdiff

$ {{h}_{diff}}=(h-{{h}_{end}})(1-ratio) $ (16)

其中, h表示当前帧波浪线部分原始的高度, h-hend表示波浪线相比于周围水面突起的高度差, 是波浪在下降过程中的波动范围, ratio是下降后高度相比基底面的高度差与原始高度差的比率, 取值为0~1.根据用户需要, 下降模式可以选择不同的方式, 随之的ratio计算方式也有所不同.

5.2.2 径向高斯下降权重

为了使波浪高度变化自然, 避免波浪线边缘会和周围水面形成明显的缝隙, 本节中将骨架周围的点采用径向基函数来控制波浪线径向方向上各点的实际下降高度.根据波浪的基本形态, 我们采用高斯函数作为径向基函数来处理得到径向方向上各点的实际下降高度.

记波浪第i行的实际下降高度向量为hdec(i), 波浪掩模的第i行为向量M(i), 则:

$ {{h}_{dec}}(i)=M(i)\times G $ (17)

其中, M(i)是二值向量, G为一维的高斯核, 定义为

$ G(p)={{h}_{diff}}\times \exp \left(-\frac{{{(p-S(i))}^{2}}}{2{{\sigma }^{2}}} \right) $ (18)

M(i)和G按位相乘, 以此保证不对波浪线两边的水面产生影响.其中, S(i)是由掩模细化得到的波浪骨架第i行位置, p-S(i)表示波浪任意一点p到骨架S(i)的距离.高斯核如图 4中左图所示, 波浪骨架S(i)是高斯核的对称轴, 这一点上高斯核的值最大为hdiff, 因此在波浪高度下降过程中, 波浪骨架处的点会下降最多的距离.

Fig. 4 Generation of height field of wave 图 4 波浪高度合成

在高度下降的计算过程中, 对第i行来说, 新的高度值为

$ {{{h}'}_{base}}(M(i))={{h}_{base}}(M(i))-{{h}_{dec}}(i) $ (19)

但是, 由于波浪线径向方向并不严格地以骨架对称, 降低后的高度可能会低于周围水面的平均高度, 因此, 将波浪周围水面的平均高度作为阈值, 下降后的波浪高度值需要取两者的最大值, 不能低于阈值.

$ {{{h}'}_{base}}(M(i))=\max ({{{h}'}_{base}}(M(i)), {{h}_{end}}) $ (20)

图 4为阈值约束下的波浪高度场变化示意图.左图为高斯核G, 右侧两图中, 蓝色线hbase表示波浪线部分径向的原始高度, 黑色线hend表示波浪周围水面平均高度, 绿色线是生成的高斯核G, 红色线为最终波浪变化高度.每一帧高度下降后, 近似面需要和最初提取的细节部分叠加, 得到最终合成的效果.

6 实验结果

我们编辑使用的数据来源于Dyntex数据库的重建结果.实验运行在Intel(R) Core(TM) i5-3470 CPU 3.20 GHz 8 GB RAM的计算机上.

(1)  基于图像提取波浪骨架.

针对数据库中的视频片断, 使用骨架提取方法对波浪图像进行操作.图 5为骨架提取流程.

Fig. 5 Procedure of the extraction of wave skeleton 图 5 波浪骨骼提取过程

图 5中, 由左至右分别为:近岸涌浪图像数据, 开运算提取前景结果, 闭运算移除较暗的斑点和枝干标记结果, 掩模提取结果, 以及最终的骨架提取结果.在骨架提取过程中, 采用不同的结构元素形状和半径, 会得到不同的实验结果.因为波浪的边缘一般比较平滑, 因此, 结构元素半径的大小对提取结果的连通性会产生影响.当结构元素的半径取较小时, 会倾向于提取出较多的连通区域, 取较大时, 提取出的连通区域较小.实验中, 采用圆形的结构元素对波浪边缘提取, 半径取9~12.图 6展示了骨架掩模提取结果与原始图像的匹配, 结果显示, 依据本文方法提取的骨架能够与原始输入图像匹配, 较好地表示了波浪形状信息.

Fig. 6 Result of wave skeleton 图 6 波浪特征提取结果

(2)  使用曲线对波浪运动形态进行控制.

图 7展示了使用本文的控制算法对波浪形态进行编辑的结果.左图为用户手绘曲线, 右部为波浪向目标形状的运动变形过程.从编辑结果可以看出, 波浪的最终形态与用户输入一致.

Fig. 7 Wave deformation guided by curves 图 7 以曲线为目标的波浪变形结果

在波浪空洞填补过程中, 参数α表征了寻找匹配邻域时在空间相似性和时间平滑性之间的权衡.图 8给出了取不同值时连续的三帧空洞修补结果.当α取得太小时, 在查找最优匹配时会倾向于选择上一帧同一点的邻域, 因此合成的结果看起来像是水面局部静止, 而α取得太大时, 由于只考虑了邻域相似, 因此合成的结果会比较随机, 帧间跳跃比较厉害.在我们的方法中, α取0.85时, 在连续性与多样性上的合成结果较好.

Fig. 8 Effects on repair result based on different α 图 8 α取不同值时对填补结果的影响

(3)  对近岸涌浪场景进行波浪高度变化的实验.

图 9是对场景中所有波浪整体进行高度下降的结果, 图中从上到下依次是第16、48、80帧的合成结果, 以及和原始重建高度场高度不改变时的对比.我们同样对本文提出的波浪高度变化方法的效率进行分析和对比.表 1中的时间耗费是对Dyntex数据库中649dc10号近岸涌浪视频进行实验所得数据.其中, 预处理包含两部分:水表面重建和波浪骨架提取.水表面重建采用文献[26]中的SFS加分层优化模型的重建方法, 波浪高度变化部分为实际对波浪高度进行控制的模块.从表中可以看出, 预处理部分占用了大部分的时间, 而一旦预处理部分完成, 就能够快速得到波浪高度变化的效果.

Table 1 Average time cost on different modular 表 1 各模块平均耗费时间

Fig. 9 Transformation result of wave height field 图 9 波浪高度变化结果

7 总结

本文以波浪海面视频为输入, 提出一种基于骨架的特征表示方法, 直接从波浪图像中提取出涌浪的形态特征, 运用提取出来的波浪骨架信息, 以骨架带动整体波浪逐帧变形, 实现波浪高度场的快速变化控制, 同时, 在细节保持的前提下, 保持了波浪的平滑性.本文提出的方法能够完整地提取出波浪骨架线并与高度场中的波浪匹配, 以简单、直观的控制方式, 自然地实现用户期望的变形效果, 极大地提高了重建结果的复用性, 丰富了波浪的运动形态.

本文的方法也存在一些不足, 波浪特征表示只针对近岸涌浪进行了特征提取和编辑, 但对于其他类型的波浪运动仍无法进行有效的表示与控制.在后续的工作中将研究更加通用的波浪特征提取算法, 对更多类型的波浪进行变形和控制, 得到更加丰富多样的波浪动画.

参考文献
[1] Max NL. Vectorized procedural models for natural terrain:Waves and islands in the sunset. ACMSIGGRAPH Computer Graphics, 1981, 15 (3) :317–324. [doi:10.1145/965161.806820]
[2] Hinsinger D, Neyret F, Cani MP. Interactive animation of ocean wave.In:Proc.of the Symp.on Computer Animation. New York: ACM Press, 2002 : 161 -166.
[3] Tessendorf J. Simulating ocean water. Simulating Nature:Realistic and Interactive Techniques, 2001, 1 (2) :5. http://www.doc88.com/p-362142147780.html
[4] Yang HP, Hu SM, Sun JG. A new algorithm for water wave animation. JiSuanJiXueBao/Chinese Journal of Computers, 2002, 25 (6) :612–617(in Chinese with English abstract). http://www.cnki.com.cn/Article/CJFDTOTAL-JSJX200206008.htm
[5] Enright D, Marschner S, Fedkiw R. Animation and rendering of complex watersurfaces. ACM Trans.on Graphics (TOG), 2002, 21 (3) :736–744. [doi:10.1145/566654.566645]
[6] Müller M, Charypar D, Gross M.Particle-Based fluid simulation for interactive applications.In:Proc.of the 2003 ACM SIGGRAPH/Eurographics Symp.on Computer Animation.Aire-la-Ville:Eurographics Association, 2003.154-159. http://dl.acm.org/citation.cfm?id=846298&CFID=835412427&CFTOKEN=23123426
[7] Müller M, Schirm S, Teschner M, Heidelberger B, Gross M. Interaction of fluids with deformable solids. Computer Animation and Virtual Worlds, 2004, 15 (3-4) :159–171. [doi:10.1002/cav.v15:3/4]
[8] O'brien JF, Hodgins JK.Dynamic simulation of splashing fluids.In:Proc.of the Computer Animation.Washington:IEEE Computer Society, 1995.198-205, 220.[doi:10.1109/CA.1995.393532] [doi:10.1109/CA.1995.393532]
[9] Tsunemi T, Hiroko F, Atsushi K, Kazuhiro H, Takahiro S, Ken T, Heihach U. Realistic animation of fluid with splash and foam. Computer Graphics Forum, 2003, 22 (3) :391–400. [doi:10.1111/1467-8659.00686]
[10] Losasso F, Talton JO, Kwatra N, Fedkiw R. Two-Way coupled SPH and particle level set fluid simulation. IEEE Trans.on Visualization & Computer Graphics, 2008, 14 (4) :797–804. [doi:10.1109/TVCG.2008.37]
[11] Sato S, Morita T, Dobashi Y, Yamamoto T. A data-driven approach for synthesizing high-resolution animation of fire.In:Proc.of the Digital Production Symp. New York: ACM Press, 2012 : 37 -42.
[12] Wang CB, Zhang Q, Kong FL, Qin H. Hybrid particle-grid fluid animation with enhanced details. Visual Computer, 2013, 29 (9) :937–947. [doi:10.1007/s00371-013-0849-6]
[13] Ihmsen M, Akinci N, Akinci G, Teschner M. Unified spray, foam and air bubbles for particle-based fluids. Visual Computer, 2012, 28 (6-8) :669–677. [doi:10.1007/s00371-012-0697-9]
[14] Zou L, Qi Y, Zhao QP.Real-Time approach for dynamic liquid simulation using semi-lagrangian.Ruan Jian Xue Bao/Journal of Software, 2013, 24(10):2419-2431(in Chinese with English abstract). http://www.jos.org.cn/1000-9825/4436.htm[doi:10.3724/SP.J.1001.2013.04436]
[15] Zhang GJ, Lu DJ, Liu H, Wang YJ, Zhu DM. Toward accurate fuid animation with geometry-coupled method. JiSuanJiXueBao/Chinese Journal of Computers, 2015, 38 (6) :1281–1295(in Chinese with English abstract). http://www.cnki.com.cn/Article/CJFDTOTAL-JSJX201506014.htm
[16] Shi L, Yu Y. Taming liquids for rapidly changing targets.In:Proc.of the Symp.on Computer Animation, 2005 :229–236. [doi:10.1145/1073368.1073401]
[17] Hong J, Kim C. Controlling fluid animation with geometric potential. Computer Animation and Virtual Worlds, 2004, 15 (3-4) :147–157. [doi:10.1002/cav.17]
[18] Mihalef V, Metaxas DN, Sussman M.Animation and control of breaking waves.In:Proc.of the Symp.on Computer Animation.Aire-la-Ville:Eurographics Association.2004.315-324. http://dl.acm.org/citation.cfm?id=1028565&CFID=835412427&CFTOKEN=23123426
[19] hürey N, Müller-Fischer M, Schirm S, Gross MH.Real-Time breaking waves for shallow water simulations.In:Proc.of the Pacific Conf.on Computer Graphics and Applications.Maui, HI:IEEE, 2007.39-46. [doi:10.1109/PG.2007.33]
[20] Becker M, Teschner M.Weakly compressible SPH for free surface flows.In:Proc.of the Symp.on Computer Animation.Aire-la-Ville:Eurographics Association, 2007.209-217. http://dl.acm.org/citation.cfm?id=1272719&CFID=835412427&CFTOKEN=23123426
[21] Hilsenstein V.Surface reconstruction of water waves using thermographic stereo imaging.Image and Vision Computing, 2005, 102-107. http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.121.3108&rank=1
[22] Ihrke I, Goidluecke B, Magnor M. Reconstructing the geometry of flowing water. In:Proc.of the 2005 Int'l Conf.on Computer Vision, 2005 :1055–1060. [doi:10.1109/ICCV.2005.202]
[23] Wang H, Liao M, Zhang Q, Yang R, Turk G. Physically guided liquid surface modeling from videos. ACM Trans.on Graphics (TOG), 2009, 28 (3) :90. [doi:10.1145/1531326.1531396]
[24] Pickup D, Li C, Cosker D, Hall P, Willis P. Reconstructing mass-conserved water surfaces using shape from shading and optical flow.In:Proc.of the 10th Asian Conf.on Computer vision. Berlin, Heidelberg: Springer-Verlag, 2011 : 189 -201.
[25] Zhang R, Tsai PS, Cryer JE, Shah M. Shape-from-Shading:A survey. IEEE Trans.on Pattern Analysis and Machine Intelligence, 1999, 21 (8) :690–706. [doi:10.1109/34.784284]
[26] Li C, Pickup D, Saunders T, Cosker D. Water surface modeling from a single viewpoint video. IEEE Trans.on Visualization and Computer Graphics, 2013, 19 (7) :1242–1251. [doi:10.1109/TVCG.2012.302]
[27] Quan H, Song X, Yu M, Song Y. 3D fluid scene synthesis and animation.In:Proc.of the 13th ACM SIGGRAPH Int'l Conf.on Virtual-Reality Continuum and its Applications in Industry. New York: ACM Press, 2014 : 219 -222.
[28] Quan H, Wang C, Song Y. Fluid re-simulation based on physically driven model from video. Visual Computer, 2015 :1–14. [doi:10.1007/s00371-015-1154-3]
[29] Efros AA, Leung TK. Texture synthesis by non-parametric sampling.In:Proc.of the Int'l Conf.on Computer Vision, 1999, 2 :1033–1038. [doi:10.1109/ICCV.1999.790383]
[4] 杨怀平, 胡事民, 孙家广. 一种实现水波动画的新算法. 计算机学报, 2002,25 (6) :612–617. http://www.cnki.com.cn/Article/CJFDTOTAL-JSJX200206008.htm
[14] 邹玲, 齐越, 赵沁平.一种基于半拉格朗日的液体实时仿真方法.软件学报, 2013, 24(10):2419-2431. http://www.jos.org.cn/1000-9825/4436.htm[doi:10.3724/SP.J.1001.2013.04436]
[15] 张桂娟, 陆佃杰, 刘弘, 王永健, 朱登明. 耦合几何特征的高精度流体动画建模方法. 计算机学报, 2015,38 (6) :1281–1295. http://www.cnki.com.cn/Article/CJFDTOTAL-JSJX201506014.htm