1、流动模式下的视频合成方法概要本文为流动模式下的样本提出了一个新的视频合成方法。我们可以用它来合成呈现流动特点的自然现象的视频。它基于运动视频合成算法,并结合了图像切割算法的部分思想。该方法可以处理具流动特点的自然风光的输入视频,相比其他算法,它更加真实、活跃,并能合成任意长度的无缝视频,并且它是容易实施的。从用户输出端的结果表明,我们的方法在可以达到令人满意的效果。关键字:纹理;纹理合成;视频纹理;粒子系统;视频合成1.介绍众所周知,图像只能展示瞬间的自然现象,是静态的。而视频可以动态记录一段时间的内容。视频技术可以让我们的生活更加便利。比如说,自然风光可能与导演的意图不匹配,通过修改物理设置
2、是昂贵的,或者是不可能实现的。但是如果我们应用视频重构技术来模拟自然场景,结果将是不仅工作量和计算量少,而且现场会看起来更真实。随着视频和图像处理技术的发展,越来越多的研究被用于视频纹理合成领域,它具有很大的研究潜力和应用前景。虽然在仿真和虚拟现实方面涌现了许多新技术,模拟场景还是难以和现实场景完全匹配,而且它们的工作量和计算量是巨大的。本文基于流动特点的视频分析了几个视频合成技术,并提出一个便于实施的视频合成的方法,能够帮助读者在保持其自然外观和复杂性的同时修改真实的画面。2.视频纹理技术2000年,Arno Schdl et al.提出了视频纹理技术。它通过从一个视频到另一个视频的平滑过渡
3、,把现有的视频(有限的视频)发展为无限播放形式。在图像和视频中,这是一个新的媒体类型,并只表示固定的动态场景,如瀑布,火焰和烟雾等等。因为视频纹理是由一个有限的序列转变成为无限的、连续的序列,它具有较高的应用价值。视频纹理合成的过程也是分析视频纹理和获得非线性基础的过程。目前,在计算机图形学中,合成真实的、活跃的、持续的流动模式视频成为了一个非常活跃的研究领域。我们分析了五种视频合成技术并得到以下结果。纹理合成的扩展方法,是由原始方法在时间方向上扩展而得到的,它已经被用于合成短视频。例如火焰、云、水等等。但它是不适合处理拥有复杂细节的纹理。视频纹理算法利用寻找视频帧的制约关系,并选择适当的序列
4、将其连接,将短视频制成长视频。该算法的问题在于对于大多数的自然现象,相似的帧很难被找出。但它为今后视频技术的研究工作提供了一个良好的发展平台。动态纹理算法把动态纹理当做一个时间序列,避免了复杂的动态系统。在更复杂的视频纹理合成中这是很好的。图像切割算法是基于视频纹理算法,并结合像素卷的最小误差接缝来创建一个比原始视频序列更长的序列。它弥补了视频纹理算法中转场点搜索困难的缺点。流动视频合成算法基于图像切割算法,可根据用户指定的流动路线合成帧。该算法能够沿用户指定的流动路线,通过实现时间的连续性,合成任意长度的无缝视频。它简单易于实施,并能产生与持续流动序列类似的最佳结果。因此,我们的算法是基于流
5、动视频的合成算法,并结合了图像切割算法的部分思想。3.流动模式的视频合成方法像瀑布、河流等自然现象,它们有着外观时变、时间动态大致固定的特点。如果我们有一个流动模式的视频素材,我们可用下述方法以得到任意长度更真实、更活跃的无缝视频。3.1 概要描述1983年,Willaim T.Reeves提出粒子系统的概念。在粒子系统中,物体都用若干个粒子来描述。正如同瀑布中的水滴的生命周期,每个粒子都要经历三个阶段:产生,运动与成长,消亡。因此,这些现象可以近似为粒子沿明确的流动路线作连续运动。(如图1(a,b,c) ) 。图1:粒子沿固定路线运动这些粒子从它们进入画面的点开始(产生期),沿着固定路线运动
6、,直到离开画面消失(消亡期)。在运动过程中,粒子的结构不断的发生变化。如图2所示,我们从瀑布的视频样本中提取粒子的运动路径。我们定义一个瀑布流动路线的方向(图2(a)。流动线上的点表示的是一个运动轨迹上的粒子。当然,每个粒子都有它对应的纹理(一块像素),这个纹理随着时间的推移始终沿着相同的路线运动,我们称它为粒子块(图2(b)。很明显,我们看到沿着运动的路线,粒子块是变化的,如图2(c)。由于重力作用,粒子向下运动,运动速度不断增长。我们很容易跟踪到,t=1的纹理和t=2的纹理很相似,而从t=1(出生)的纹理到 t=5(死亡)的纹理却发生了显著的变化。所以,如果能在输入视频中得到粒子流动线路的
7、位置规则,我们就可以通过运动建模和研究粒子沿指定路线的纹理,得到无缝、无限的序列。图2:粒子结构的运动3.2 粒子的运动规律首先,我们来分析一个最简单的例子单一流线,如图2(a)。1)定义粒子块的初始位置:由流线开始运动的任何粒子d1在它的轨道上将经过多个位置d2,d3,.,dn。粒子的在流线上的速度是时变的,因此,位置di 是越来越远的(d1d2dn)。我们在流线的起始端,即瀑布的顶端定义一个 mn像素的粒子块,(如图2(b))在接下来的帧中,这个粒子块将沿着我们设定的轨迹运动。2)确定粒子块的下一个基准位置:由于重力作用,可以预计粒子向下运动时速度的增加。所以在下一帧图像中,我们结合流线初
8、始定义的粒子块,并使用块匹配法来找到下一个最适合的粒子块。它运用了L2-distance最小二乘法。式中Si和 Sj表示的是两个 mn的粒子块区域, k和l 表示的是区域指定的长度和高度。P smn表示在坐标系 s上坐标为(m,n)的像素点。 R(P smn),G (P smn)和B(P smn)分别表示像素点P smn的RGB值。用L2-distance 算法得出的结果越小,两个区域的相似度越高。因此沿指定流线的下一帧图像的最小L2-distance的位置将是下一个原始粒子块的基准位置。3)确定所有粒子块的基准位置:我们发现接下来确定每一个基准位置(di)都是重复步骤2)的过程。现在,我们得
9、到同一个粒子块在它流线上的所有基准位置。下一步,我们存储这些粒子信息,这些信息是接下来的工作中必不可少的。定义矩阵M(d,t)=(p,f),p表示的是指定粒子,f表示输入视频序列中粒子d2出现的指定帧。图片3中的矩阵展示了一个简单循环播放的样本。它把M(d,t)分成小块作为输入序列,每个单元的小块数量对应f,颜色对应p。横轴表示时间t,每一帧图像占用一个时间单位。纵轴表示位置d 。由于用指定的颜色来定义相同的粒子,我们可以很清楚的观察粒子。例如,矩阵第一列展示了输入视频的第一帧处于流线上的粒子和它们的位置,红色的数字(阴影区域)表示输入序列中一个粒子的路径。它在第一帧中诞生,在第三帧的末尾消失
10、。不同的颜色表示随着时间变化的不同粒子。图3:粒子块的简单循环播放因此,粒子沿流线的运动规律是粒子块在流动视频中沿梯形线运动的过程。3.3 视频合成算法现在,我们用图3中只有5帧、3个位置的最简单的输入序列来介绍合成的方法。1)定位粒子块:当5帧的序列循环时,由于从第5帧切至第6帧过程中,粒子突然移动到不同的位置或完全消失,而产生了不连续(黑色垂直线)。图片中的每个像素都同时存在这样的不连续,使它成为一个非常明显的间断。我们称它为“垂直间断 ”。图4用一个简单的改变 重复原始矩阵的第一个对角线 K至M(d,t) 的入口,以减少这种间断。图4:在循环播放中修改粒子块现在,我们得到了一个“ 阶梯形
11、中断 ”新序列(阶梯形黑线)。而修正矩阵由一些具有相同入口的子集组成如图3,由于每个粒子沿流线完成其完整路径,它执行时间的连续性。因此,在每一列上只存在一个空间的连续性,在输出序列有对应的相邻一对粒子块,而在输入序列中是不相邻的。比如说,第4帧的第1个粒子块被第1帧的第1个粒子块所取代(图4),只有一个粒子块的更换。但是在图3中,第5帧之后,有三个粒子块同时消失。所以这些空间的不连续很难被检测,然而,也有相邻的粒子块成对在输出序列中同时移动的原因。接下来,我们来讨论一个相对复杂的例子。输入序列有14帧、7个位置。设置k=8。根据上文的合成方法,我们得到以下矩阵。图5: 相对复杂的矩阵表示很显然
12、,随着帧数和位置数的增加,阶梯形不连续的问题变得更加明显。例如,第10帧有2个粒子块间断,第11帧和第12帧有3个粒子块间断。因此,为了保持运动的连续性和每个粒子的完整性,我们需要修改远离阶梯形路线的粒子块。2)合成最终粒子块矩阵:我们利用羽化的方法,把粒子块与处于梯形线顶部的原始块混合,来进一步减少梯形间断。然后我们将最终得到一个有“软阶梯形中断”的序列。为了更清楚地解释改进方法,我们用图3第4帧的三个粒子块来作说明。图6:第4帧的粒子块矩阵首先,如图6(b)所示,我们用步骤1)中的方法修改第4帧的粒子块矩阵。为了把初始粒子块从修改过的粒子块中区分出来,我们用图6(a)中落于d1中的阴影部分
13、来标记初始粒子块。接着,我们用图6(b)中落于d1中的透明部分来标记修改粒子块。利用方程(2)我们把初始粒子块(阴影)和修改粒子块(透明)结合起来,再将进一步改进的粒子块用半阴影标记(图6(c)。式中Apixel指的是初始粒子块修补后的任意像素值。Bpixel指定了初始粒子块的任意像素值,w1和w2分别代表它们的加权值,并有w2=1-w1。Cpixel是进一步修改粒子块修补的合成像素值。通过修改w1和 w2的值,我们可以获得最佳的综合效果,通常我们设定w1=0.2 ,w2=0.8 。图7:进一步修改粒子矩阵用上述方法进一步修改粒子矩阵之后,我们可以大致显示出新的粒子矩阵如图7。很明显,阶梯形间
14、断已进一步被降低(黑线)。粒子块之间的过渡比之前更自然了。我们称它为“软阶梯形中断” 。所以用我们的视频合成算法来修改输入视频的k帧粒子块,可以得到新的k帧粒子块矩阵(图8)。阴影区域表示需要修改的粒子块。图8:最后合成的粒子矩阵帧数目(k)和粒子位置(n)可由下列公式计算。现在,我们可以重复播放最后合成的k帧来得到任意长度的视频,如图3。然而,不同块区域的重叠是仍存在的问题,并且这些新合成的粒子不能与周围的纹理完全匹配。因此有必要在播放前渲染每一条流线上的每一个粒子块。3.4渲染确保了每一帧图片流线上的粒子块之后,我们使用羽化的方法将粒子块渲染(方程4)。我们回顾储存在粒子块矩阵中的像素信息
15、,它沿着输入序列的流线而变化。渲染仅牵涉到每个粒子周围纹理的绘制。假如没有这一步,在合成的图像中将出现小的瑕疵,视频图像将缺乏真实感。overlappixel 表示羽化后的像素值。 pixelvalue2表示边界像素值。w1和w2分别是它们的加权值,并且w2=1-w1 。最终,我们利用这些沿流线修改过的粒子块,可以合成任意长度的真实、活跃的无缝视频。4 实验结果现在,我们用一个简单的循环播放方法与我们的视频合成算法作一个比较。图9:两种算法的对比图9分别展示了“ 垂直间断 ”图9(a)和“软阶梯形间断 ”图9(b)。我们算法的优势很明显。此外,我们为流动模式短视频剪辑应用了视频合成方法,如河流、火焰、瀑布等等(图 10(a,b,c))。结果标明,我们的算法比其他算法合成了更多真实、活跃的并具有任意长度的无缝视频。图10:采用不同方法的合成结果5 结论本文我们为流动模式(基于视频合成算法和图像切割算法)介绍了一种新的视频合成方法。它用“ 软阶梯形间断 ”取代了垂直间断。当在接近平稳流动模式的(例如河流、火焰、瀑布等)输入序列中使用此方法,我们合成了更多真实、活跃、具任意长度的无缝视频。我们在进一步研究中,将会侧重于良好流线的自动计算技术。