基于多样图的纹理合成方法

文档序号:6398447阅读:175来源:国知局
专利名称:基于多样图的纹理合成方法
技术领域
本发明属于计算机虚拟现实技术领域,具体地说是一种利用已有纹理图像生成新纹理图像的方法,该方法可用于真实感虚拟环境的构造和绘制。
背景技术
在现实世界中,物体表面有十分丰富的纹理细节,依据它们人们可以区分各种具有相同形状的不同物体,因而物体表面纹理细节的模拟在真实感图形绘制技术中起着非常重要的作用。如何在计算机生成的图形中有效地表现这些纹理细节,一直是计算机图形学以及虚拟环境的构造和绘制技术中研究的热点问题。
在计算机生成的物体上模拟纹理细节主要有两个方法。一个是用多边形或其他几何原语对表面细节进行建模,但是当细节很细致、很复杂时,这种方法很不实用;另一个是把图像映射到对象的表面上,这种技术称作纹理映射(texture mapping)。用于纹理映射的图像通常是矩形,称作纹理图(texture map)或纹理(texture)。纹理可以模拟各种表面属性,如颜色、反射(reflection)、透明等。自Catmull在二十世纪七十年代首次采用纹理映射技术模拟物体表面的纹理细节以来,纹理映射技术得到了广泛的研究和应用。
在计算机图形学中,纹理映射技术取得很大的成功,但也存在三个严重问题第一,纹理来源比较单一。目前的纹理主要还是通过手工绘制图画和扫描的照片获得。手工绘制的图画可以满足艺术上的需要,但是很难像照片一样真实;而照片作为纹理,通常很小,不能覆盖整个物体表面。此时,简单的粘贴在视觉上会引起人造的痕迹。第二,从纹理空间到自然空间没有自然的映射,因而映射时纹理会产生严重的变形。第三,纹理映射占用大量的内存和带宽。
为此,人们提出了纹理合成技术。运用纹理合成技术生成的纹理可以是任意大小、视觉上不重复的图案。通过适当地处理边界条件,纹理合成还能够生成可粘贴的图像。
纹理合成的目标是合成的新纹理在视觉上使人们觉得是用与原有纹理相同的基本过程生成的。
纹理合成有两种方式一种是根据模型生成纹理;另一种是根据已有的纹理图像(也称作纹理样图)生成新的纹理。纹理合成要解决两个问题一是,如何从给定的有限纹理样图中估计纹理生成过程,其成功与否是由合成纹理相对于给定样图在视觉上的逼真性决定的。二是,如何开发有效的采样过程从给定模型生成新的纹理,其有效性将直接决定纹理生成的计算量。
Wei[1]提出L形邻域搜索的方法,采用多分辨率合成方法减小搜索范围,并用树状结构的矢量量化技术进行加速。该基于L形纹理合成方法是根据已经合成的区域,在样图中寻找相似度最大的种子进行合成。下面具体说明两个形状相同的邻域N1,N2的相似度用下式进行衡量,即d(N1,N2)=Σp∈N1,q∈N2(R(p)-R(q))2+(G(p)-G(q))2+(B(p)-B(q))2]]>式中,函数R( ),G( )和B( )分别表示邻域中像素的R(红色)、G(绿色)和B(蓝色)值;p和q分别是邻域N1和N2中对应的像素;式中d值越小表明两个邻域越相似。因此,邻域的形状和搜索顺序十分重要,它直接影响纹理局部匹配的结果。
Ashikhmin[2]利用相关性原理改进了Wei方法,把搜索范围限制在当前的邻域,从而提高了搜索速度。如图2。根据L形邻域种子在输入图像中的对应位置(图中箭头所指的种子),利用相应的偏移找到待选种子。例如,输出图像中当前要合成的种子P的右上角邻点为Q,Q在输入图像中的匹配种子是Q1,以图像左上角为原点建立坐标系,x轴正方向水平向右,y轴正方向垂直向下,这样种子P与Q在水平方向x上相差-1,在垂直方向y上相差1,则有P=Q+(-1,1),这样,待选种子Q1由Q2+(-1,1)获得。由此计算所有待选种子。图中黑色点是所计算出的待选种子,比较各个待选种子与当前种子P的L形邻域的相似度,按照上述公式计算相似度,选择d值最小的种子作为当前种子的对应种子。
上述基于L形纹理合成的算法如下(1)记录缓存中种子位置在输入图像中的位置。
(2)对于输出图像中的每个种子,按扫描顺序进行如下计算●在输出图像中,考虑指定大小的当前种子的L形邻域,如图2;●对L形邻域中的每个种子,根据其在缓存中最初的种子位置,偏移相应位置后找出待选种子;●清除重复的待选种子;●在待选种子列表中选取与输出图像当前种子的L形邻域误差最小的种子;●将所选种子的值从输入图像拷贝到输出图像当前种子,并在缓存中记录其最初的位置。
纹理合成方法大多数是基于单样图的,为了扩大纹理的来源,有些研究者提出多样图的纹理合成问题。但是现有的纹理合成由于采用了固定的扫描线方式,因此合成的结果缺乏自然性。

发明内容
为克服上述缺点,本发明的目的在于提供一种基于多样图的纹理合成方法,该方法可以根据已有纹理图像合成(也就是“生成”)新的纹理图像,扩大纹理来源的途径,满足虚拟环境中真实感绘制的需求。
为达到上述目的,本发明采用多样图进行纹理合成。实现的方法是首先,用户输入种子大小和数目、合成纹理图像的大小、以及不同样图的种子在合成纹理图像中所占比例;然后,在用于存放合成纹理的合成纹理缓存中随机地放置这些种子;最后,对于所有合成纹理缓存中的种子,沿着该种子的水平和垂直四个方向同时合成纹理图像,直到合成纹理缓存中所有像素都实现合成为止。
本发明的基于多样图的纹理合成技术与现有技术相比,其有益效果是根据已有的纹理能够生成新的纹理,而且生成的纹理随机性强,十分自然,没有向一个方向倾斜的现象,用户可以控制不同纹理样图在合成纹理中所占的比例。


图1示出本发明基于多样图的纹理合成方法主要流程图;图2示出本发明采用的基于L形的纹理合成方法。
具体实施例方式
如图1所示,本发明的基于多样图的纹理合成方法采用如下步骤(1)输入欲合成纹理图像的大小、纹理样图种子的大小和数目、以及来自各纹理样图的种子在欲合成纹理图像中所占的比例,并按照所输入的合成纹理图像的大小,创建合成纹理图像缓存。
所谓“种子大小”是指n×n像素的块状图像,一般情况下,n=1,2,3,4,5,如果n取值过大,就变成了基于块的纹理合成方法,这样用户的控制能力就减弱了。种子的数目越大,所合成的纹理图像与样图之间的相似之处越多;反之,所合成的纹理图像与样图之间的相似之处越少。“纹理样图的种子在欲合成纹理图像中所占的比例”是指来自某纹理样图的种子与将要合成的纹理图像两者的像素数量之比。通过控制该比例的大小,可以控制最终合成的纹理图像的内容。
本例中用户输入纹理样图的大小是128×128像素,欲合成纹理图像的大小是256×256像素,种子大小是1×1像素或2×2像素,种子数目为150个,纹理样图有两个,分别是A和B,纹理样图A、B的种子数目在欲合成纹理中所占比例分别为60%和40%,即纹理样图A的种子数目为90个(150×60%)、纹理样图B的种子数目为60个(150×40%)。
(2)为了合成方便,在本方法中将合成纹理缓存中的种子分成“父种子”和“子种子”两种。“父种子”是用于合成纹理的种子;“子种子”是不再用于合成纹理的种子。本发明方法按照用户输入的比例数,根据计算机系统产生的随机数,在相应的样图中随机地选取种子,再将这些种子随机地撒在合成纹理图像的缓存中,并将它们标记为“父种子”。
这个随机选取和播撒的过程如下将纹理样图缓存大小(如上面的128*128=16384)和合成纹理图像缓存大小(如上面的256*256=65536)分别除以种子大小(如上面的1*1=1或2*2=4),得到这两个缓存中可容纳的种子的数目;然后,用计算机产生的16位整数的随机数分别除以输入纹理样图缓存的种子数目和合成纹理缓存的种子数目,再分别取其余数,这样所得余数的大小必然分别在纹理样图缓存可容纳的种子数目和合成纹理缓存可容纳的种子数目的范围中;最后,按照前一余数值在纹理样图缓存的相应位置上找到所要选取的种子,并将所选取的种子按照后一余数值播撒在合成纹理缓存中的相应位置上。
如此,先将纹理样图A的90个种子随机撒在合成纹理图像缓存中,然后再将纹理样图B的60个种子随机撒在合成纹理图像缓存中没有种子的地方,这样150个种子均被撒在合成纹理图像的缓存中,并被标记为“父种子”。。
(3)在合成纹理图像缓存中,首先,对所有“父种子”,使用其所属的纹理样图,按照水平和垂直的左右上下四个方向,采用基于L形的纹理合成方法同时进行纹理合成。在实现过程中,对每个“父种子”按照左、右、上、下四个方向同时进行合成,这样合成的纹理随机性很强,不会朝某一个方向倾斜。然后,将已合成过的“父种子”标记为“子种子”,而将合成中新产生的种子标记为“父种子”。从而完成一次对所有“父种子”的纹理合成。纹理合成的结果是合成纹理图像缓存被所生成的新种子填充。
(4)计算合成纹理中来自不同样图的包括“父种子”和“子种子”在内的种子所占的比例,如果达到了用户指定的比例,则将来自这个样图的所有“父种子”标记成“子种子”,它们不再用于纹理合成;如果还有尚未达到比例的种子,则回到步骤(3)继续进行合成。
本例中采用的基于L形的纹理合成方法属于公知技术,在背景技术中已作介绍,故在此不再赘述。
本发明也可使用更多的纹理样图,例如使用3个纹理样图,方法如同上述,当然各纹理样图的种子数目在欲合成纹理中所占比例之和应等于1。
上述实施例仅用于说明本发明的发明步骤,并不限定本发明的专利保护范围,任何按照本发明方法所作的改进,仍应属本发明的专利范围之内。
引用文献[1]Li-Yi Wei,Marc Levoy.Fast Texture Synthesis using Tree-structured Vector Quantization.InProceedings of SIGGRAPH.Los AngelesACM Press,2000.479~488[2]M.Ashikhmin.Synthesizing natural textures.In2001 ACM Symposium on Interactive 3D Graphics.Los AngelesACM Press,2001.217~226[3]Y.Xu,B.Guo,and H.-Y.Shum.Chaos mosaicFast and Memory Efficient Texture Synthesis”.Tech.Rep.MSR-TR-2000-32,Microsoft Research,2000[4]L.Liang,C.Liu,Y.Xu,B.Guo,et al.Real-time texture synthesis by patch-based sampling.TechnicalReport MSR-TR-2001-40,Microsoft Research,March 2001[5]Alexei A.Efros,William T.Freeman.Image Quilting for Texture Synthesis and Transfer.InProceedings of SIGGRAPH.Los AngelesACM Press,2001.341~34权利要求
1.一种基于多样图的纹理合成方法,其特征在于它包括以下步骤(1)输入欲合成的纹理图像的大小、纹理样图的种子大小、种子数目、来自各纹理样图的种子在欲合成的纹理图像中所占的比例,按所输入的合成纹理图像的大小创建合成纹理图像缓存,所述种子是指n×n像素的图像块;(2)在各样图中随机选取种子并随机撒在合成纹理图像缓存中,所选取的种子的大小及数目根据步骤(1)中的输入而定;(3)在合成纹理图像缓存中,对每一个种子,按照该种子的水平和垂直四个方向,采用基于L形的纹理合成方法,同时进行纹理合成,即用纹理合成过程中所生成的新种子对合成纹理图像缓存进行填充;(4)计算合成纹理图像中来自不同样图的种子所占比例,如某样图的种子所占比例未达到步骤(1)中输入的比例,则返回步骤(3)继续进行纹理合成,否则不再用该样图的种子进行纹理合成,如此直至所有样图的种子所占比例均达到步骤(1)中输入的比例为止。
2.如权利要求1所述的基于多样图的纹理合成方法,其特征在于在所述步骤(2)中所述种子的随机选取和撒播方法是首先,根据纹理样图大小、合成纹理图像大小、种子大小,确定纹理样图和合成纹理图像中可容纳的种子数量;然后,再用上述种子数量分别去除一个随机数,得到各自的余数;最后,在纹理样图中相应其余数的位置上取出种子,撒播到合成纹理图像缓存中相应其余数的位置中;重复以上种子选取和撒播的过程,直至所选取的种子数量达到所述步骤(1)中规定的种子数目为止。
全文摘要
本发明是基于多样图实现纹理合成的方法。该方法利用已有的纹理样图,根据合成纹理的大小、用户所选择的种子大小和数目以及不同纹理样图在新合成的纹理中所占比例,随机地将这些种子撒在合成纹理图像缓存中,然后,对所有种子按照水平和垂直四个方向,采用基于L形的纹理合成方法,同时进行纹理合成,直到合成纹理图像缓存中所有的像素都被合成为止。用本发明方法生成的纹理随机性强,十分自然,而且用户可以进行有效的控制。
文档编号G06T15/20GK1570978SQ20041003472
公开日2005年1月26日 申请日期2004年5月9日 优先权日2004年5月9日
发明者齐越, 赵沁平 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1