摘要:提出了一种α-体建模方法:对实拍图像的学习生成动态纹理之后,再对纹理进行边界合成得到划分了颜色区域的图像;通过对图像区域边界的扫描勾勒出图像的轮廓线网格,并根据其到中心的距离为每个网格边界赋予标准的颜色值;最后根据网格的颜色值生成三维模型。实验证明这种动态景物的建模方法能够满足虚拟场景实时绘制的要求,而且具有很好的鲁棒性和连续性。
关键词:动态纹理;网格;三维模型;动态景物;基于图像的绘制
0引言
近几年,随着虚拟场景建模技术的发展,客户对虚拟场景的真实感和实时性要求越来越高。在大部分虚拟场景中,尤其是自然环境和战场环境中,火焰、烟雾、硝烟以及干扰云等景物是必不可少的一部分。真实地模拟这些动态景物是影响场景绘制速度的一个重要因素,也是计算机图形图像研究的一个重点和难点。用更少的运算和内存空间,更加逼真地模拟它们的状态一直是人们努力的目标。目前已经有很多关于这方面的研究。lamor letter和foster对火焰的各个不同部分分别建立模型[1],然后分别计算不同部分的状态,从而体现整个火焰的运动状态。首先建立火焰的外轮廓线模型,然后对火焰进行上下分段,对不同段的粒子采用不同函数描述,从而体现火焰不同部分的亮度,通过各个部分亮度的变化展现火焰的动态效果。beaudoin则是建立三维的火焰骨架[2],并在三维骨架内建立速度场。火焰的粒子以当前所处位置的速度运动,实现动态效果。同时,他把火焰由内及外分成不同的层,不同的层用不同的亮度计算函数, 体现了火焰由内及外的亮度变化。wWW.133229.Comngu-yen 则是从燃料入手[3],考察固体燃料由固体变成气体燃烧然后再慢慢冷却的过程。在燃烧的过程中,燃料颗粒以气态在空气中运动并且相互作用,产生火焰的动态效果。同时,燃料颗粒经历温度由低到高的过程,亮度也相应由弱到强地变化,使火焰在不同的段,亮度也不同。schodl提出一种由少量动态火焰产生无限动态火焰序列的算法[4]。fedkiw通过跟踪点的运动,利用涡流思路成功模拟了烟的运动[5]。wijk就如何体现流体纹理随机性和不确定性,并保持纹理一致性和连续性提出了很好的思路[6]。
1α-体建模思想
在以上提出的各种建模方法中,出于真实性、随机性和实时性的考虑,在实际建模过程中常用的方法主要有基于粒子系统的建模和分形[7]建模以及依赖于已有的图像序列的基于计算机视觉的建模。这类动态现象包含的共同特性是产生它们的物理机制十分复杂,一般很难通过物理分析的方法对它们建模。而现有的建模算法多数都是基于粒子系统[7~9],既要考虑其复杂的物理模型,又要利用流体力学的知识计算场景的运动状态。其主要缺点是运算量大,很难达到实时绘制的要求。另一方面,可以很容易收集这类动态序列的样本。于是,产生了图像与几何相结合的建模思想:首先从得到的原始图像序列样本恢复几何信息,然后将纹理映射到几何体表面。但是这种方法要用到计算机视觉理论,不可避免地要从图像中精确地恢复对象的几何模型。这是一个非常复杂的过程,尤其是对于这些没有固定形状的动态景物而言。大部分的火焰合成系统都是动态地展现纹理效果,使其在二维平面上展现出栩栩如生的逼真效果,目前在这方面已有很多研究成果[10,11]。在虚拟空间中,需要从各个视角对这种现象进行观察,只靠纹理的方法是不行的;同时,还要求必须能实时地生成。由于景物在运动过程中,纹理状态具有不确定性,用传统的基于粒子的和分形的建模方法,不仅需要大量内存空间来保持它们的连续性和一致性,还要通过大量的运算来求得它们的下一个状态。这会大大降低绘制的速度,不能满足实时性要求。
基于这种状况,本文提出了一种利用已有图像序列的实时建模方法,即α-体建模思想。这种方法既避免了物理建模的复杂性,又省去了用计算机视觉恢复复杂几何模型的过程。首先运用动态纹理合成思想从原始图像集产生动态纹理序列;其次对动态纹理序列进行背景消隐,得到没有噪声的动态纹理序列;然后再对这个纹理序列中的每一张图像进行边界合成,找出不同的颜色区域边界并计算边界的α值;最后根据α值生成α-体集合。在算法中,主要解决了如何利用合成的区域边界勾勒出纹理的轮廓线以及如何从轮廓线计算α值,并生成α体的问题。
2算法设计
2.1产生纹理的动态序列
动态纹理是一种基于图像的绘制方法,通过对输入图像序列进行学习,生成新的图像序列。它与原序列在视觉上十分相似,不但具有很强的真实感,还具有一定的可编辑性。下面首先定义一个动态纹理,然后分别对动态纹理进行学习、识别和合成。
2.2图像的边界合成
为了建立α-体集,必须找出不同区域的边界。在火焰图像中,不同颜色的区域之间的边界都是曲线。这里用alpha估计技术,通过以不同的比例混合两种颜色产生边界颜色,而且不需要知道边界的详细信息。
在实际图片中,边界的颜色往往受多个区域的影响,有多个区域的图像可以被分解为只有两个邻接区域的图像。因此,这里主要处理有两个区域的图像。本文用分割两个区域的像素链形成区域边界。像素链用边缘监测器发现的边缘创建,而边界使用区域分割算法或边界寻找工具(如智能截取器intelligent scissors[13])发现。事实上的困难在于纹理可能有噪声和其他数据源。本文采用如下的方法:
(2)计算alpha和非混合颜色
两个信号集x和y是每个对象区域颜色的离散表达。现在必须在两个分布之间建立关系和确定颜色空间的任意一个像素q,只要将颜色信号转换为连续的分布,这种关系可以很容易建立。这里使用一个均匀的高斯混合来确保在颜色空间所有的点有一个非空对应和简化方程。在q点比较这两个方程是一个估计q点alpha值αq的方式。当假设q是x和y的颜色混合时,q就不可能是这两个分布中的任何一个。因为要估计混合量,传统的决策理论方法是没有用的。这时要真正地从x分布的颜色穿过边界变形到y分布的颜色绘制q点。这种变形通过在两个分布之间线性插值实现。这样估计alpha就变成一个最大化可能的估计问题,即发现最大化q点值可能被插值的密度。
3实验结果和算法复杂度分析
3.1复杂性分析