一种基于纹理块间隔分布的纹理合成方法转让专利

申请号 : CN200910090748.4

文献号 : CN101620737B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王文成陈昕

申请人 : 中国科学院软件研究所

摘要 :

本发明公开了一种基于纹理块间隔分布的纹理合成方法,属于计算机算法、计算机图形技术、图象处理技术、纹理生成技术领域。本发明方法包括:a)分析样本纹理,确定纹理块主体部分和重叠部分尺寸;b)按所述尺寸划分样本纹理得到纹理块集合M;c)按相位对纹理块分类,每一相位对应一类;d)得到每个纹理块的四个相容性邻接集合;e)得到适用纹理块集合;f)从适用纹理块集合任选纹理块填充目标纹理,填有纹理块的和没有填充的空白块在横向和纵向上均间隔分布;g)填充剩下的空白快;h)缝合重叠部分。本发明可用于纹理合成。

权利要求 :

1.一种基于纹理块间隔分布的纹理合成方法,包括下列步骤:

a)分析样本纹理,确定纹理块主体部分尺寸和重叠部分尺寸,所述主体部分尺寸能反映样本纹理的全局性纹理特征,所述重叠部分尺寸便于纹理块的约束选取;

b)按照a)所述尺寸,形成对样本纹理划分进行网格划分的尺寸,即:设主体部分尺寸为a*b,重叠部分的宽度为t,则网格的尺寸为(a+t/2)*(b+t/2);从样本纹理中获得的这样网格大小的一个纹理区域,再向外延展t/2宽度所形成的矩形区域,就构成一个包括位于中部的主体部分和位于主体部分周围的重叠部分的纹理块,所述纹理块划分时,分割线是两个相邻纹理块共用的主体部分边线;所得所有纹理块,构成纹理块集合M;

c)对该集合中的纹理块按照纹理相位进行分类,每一相位对应一类;

d)对M中的每个纹理块Mi,确定所有其它纹理块中能在Mi的上下左右四个方向上和Mi拼合的纹理块,分别得到相容性邻接集合Mi上、Mi下、Mi左和Mi右;

e)随机选定一纹理相位,根据该相位得到其相邻相位,由这些相邻相位对应的纹理块类所包含的纹理块组成适用纹理块集合;

f)按b)所述网格划分尺寸对目标纹理分块,并从所生成的适用纹理块集合中任意选择纹理块填到目标纹理所划分的块中,使填有纹理块的和没有填充的空白块在横向和纵向上均间隔分布;

g)对于f)步骤填充后剩下的空白块,取每个空白块四周的纹理块相应的相容性邻接集合的交集中的任一纹理块填充;交集为空时,则选一个在这些相容性邻接集合中出现次数最多的纹理块进行填充;

h)缝合纹理块之间的重叠部分,完成纹理合成。

2.如权利要求1所述的纹理合成方法,其特征在于,步骤a通过纹理块的信息包容性度量参数和周期性度量参数来确定划分纹理块的主体部分尺寸。

3.如权利要求1所述的纹理合成方法,其特征在于,步骤a通过重叠区域约束性度量参数来确定所述重叠部分的尺寸。

4.如权利要求1所述的纹理合成方法,其特征在于,步骤d通过下列方式确定两个纹理块能否拼合:当 小于设定的阈值时能够拼合,其中,i表示两个纹理块相邻放置时它们的重叠区域的一个象素坐标,Pi表示位于i位置的来自纹理块P的象素的色彩,Qi表示位于i位置的来自纹理块Q的象素的色彩。

5.如权利要求1所述的纹理合成方法,其特征在于,步骤h以羽化的方式缝合纹理块之间的重叠部分。

6.如权利要求1所述的纹理合成方法,其特征在于,步骤g在CPU中进行,步骤h在GPU中进行。

说明书 :

一种基于纹理块间隔分布的纹理合成方法

技术领域

[0001] 本发明涉及纹理合成,属于计算机算法、计算机图形技术、图象处理技术、纹理生成技术领域,具体说是一种基于纹理块间隔分布的纹理合成方法。

背景技术

[0002] 纹理合成技术能根据一小块样本生成视觉上很相似的大块样本,这样可有效重用光照和色彩的计算或测量的结果,以便以较少的开销生成高质量的绘制结果。这种技术在真实感绘制、虚拟现实等很多领域有着很重要而广泛的应用。
[0003] 目前纹理合成技术主要是根据马尔可夫链概率模型进行计算,即任一位置的色彩是由它附近一定范围内的其它色彩分布所决定的。根据计算的范围大小,纹理合成技术分为局部合成技术和全局合成技术。局部合成技术就是根据较小的一个范围内的色彩分布来推断邻近区域位置的色彩,这类方法一般来说速度比较快,但对于纹理的全局性特征难以有效保持。而全局合成技术,则先随机生成目标纹理大小的一个纹理,然后基于全局性的纹理特征的相似性度量,对目标纹理进行整体性的逐步优化,以得到最后的目标纹理,这种方法能有效反映纹理的全局性特征,但计算速度比较慢。目前,合成质量最好的方法是全局合成方法纹理优化(texture optimization)(Kwatra V,Essa I,Bobick A,et al.Textureoptimization for example-based synthesis.ACM Trans.Graph,2005,24(3):795-802),而合成速度最快的方法是并行可控纹理合成方法(parallel controllable texture synthesis)(Lefebvre S,Hoppe H.Parallel controllable texture synthesis.ACM Trans.Graph.,2005,24(3):777-786)。在合成大纹理方面,已知的最好方法是基于匹配相容性的纹理合成方法,能以交互的速度合成1024*1024象素的纹理(Wencheng Wang,Feitong Liu,Peijie Huang,Enhua Wu.Texture synthesis via the matching compatibility between patches.Science in ChinaSeries F:Information Sciences,Vol.52,No.3,p.512-522,March 2009.)。从纹理合成的应用需求来看,实时生成高质量的大纹理是必须的,因此,纹理合成技术近年来一直是国际上的热点研究内容。

发明内容

[0004] 为解决上述问题,本发明提出一种基于纹理块间隔分布的纹理合成方法。
[0005] 在本发明中,“纹理块”指的是对样本纹理分块后得到的具有一定尺寸的矩形块体,纹理块包括位于纹理块中部的主体部分和位于主体部分周围的重叠部分。图1表示一个纹理块的示意图,在该纹理块中,纹理块尺寸为9*6(单位:像素,下同),主体部分尺寸为7*4,重叠部分为主体部分四周宽度为1的矩形环。下面提到的纹理块的划分和填充均按照纹理块主体部分的尺寸来进行,即划分纹理块时,分割线是两个相邻的纹理块共用的主体部分边线,填充纹理块时,两个相邻的纹理块共用主体部分边线。
[0006] 在本发明中,“纹理相位”的定义和处理如下:
[0007] 仿照周期函数的描述,在确定一个起始位置后,以生成纹理块的网格尺寸对样本纹理进行一次网格大小均匀划分时所得纹理块,称为是同一相位的纹理块;起始位置不同且所得纹理块不重合的划分,称为不同相位的纹理块划分;若两种划分的分割线靠近时,就称这两种划分所得的纹理块有相近的相位。图2表示从一个样本纹理获得的2个纹理相位的纹理块,即实线矩形框表示的纹理块是属于一个相位的,而虚线矩形框表示的纹理块是属于另一个相位的。
[0008] 为了达到本发明的技术目的,本发明采用如下技术方案:
[0009] a)分析样本纹理,找到能反映其全局性纹理特征变化的纹理块主体部分尺寸,和能便于约束选择纹理块的重叠部分的尺寸大小;
[0010] b)按照a)所得的尺寸,形成对样本纹理划分进行网格划分的尺寸,即:设主体部分尺寸为a*b,而重叠部分的宽度为t,则网格的尺寸为(a+t/2)*(b+t/2)。从样本纹理中获得的这样网格大小的一个纹理区域,再向外延展t/2宽度所形成的矩形区域,就构成一个纹理块,所得所有纹理块,构成纹理块集合M;并将这些纹理块按照它们各自对应的纹理相位进行分类组织,每一个相位对应一个类的纹理块。
[0011] c)对M中的每个纹理块Mi,确定所有其他纹理块中能在Mi的上下左右四个方向上和Mi拼合的纹理块,分别得到相容性邻接集合Mi上、Mi下、Mi左和Mi右;比如,就Mi左而言,该集合包括M中除Mi之外的所有纹理块中能在Mi的左侧和Mi拼合的纹理块;在此,若两个纹理块在重叠区域的差异小于设定的阀值,则称它们是可拼合的。
[0012] d)合成一个目标纹理时,随机选定一个纹理相位,并得到该相位邻近的几个相位,然后由这几个纹理相位相关的纹理块组成这次合成计算的适用纹理块集合;
[0013] e)按b)步骤所形成的网格划分尺寸对目标纹理分块,以横向和纵向均间隔分布的方式(类似国际象棋棋盘结构)在空白块中填入所述适用纹理块集合中的任意一块,即,对于每个需要填充的空白块,均从所述适用纹理块集合中随机选择一块;
[0014] f)对于填充后剩下的空白块,取每个空白块四周的纹理块相应的相容性邻接集合的交集中的任一纹理块填充;当交集为空时,就选择在这些集合中出现次数最多的一个纹理块来填充。
[0015] g)缝合纹理块之间的重叠部分,以完成一个目标纹理的生成。
[0016] 在本发明方法中,纹理块主体部分的尺寸(形状)和重叠区域的宽度对于最终的纹理合成效果具有重要影响。
[0017] 本发明方法进一步根据文献(王一平,王文成,吴恩华.块纹理合成的优化计算.计算机辅助设计与图形学学报,2006,18(10):1502-1507)的方法提出通过不同尺寸的纹理块划分对样本纹理周期性全局特征的反映程度来决定划分纹理块的尺寸。具体地,要作两方面的度量,即纹理块的信息包容性度量和纹理块的纹理周期性度量,并以这两种度量参数都比较好的纹理块大小作为划分的选择。如果某种尺寸下的这两种度量参数都是比较好的,则这该尺寸可作为纹理块尺寸的大小。这两种度量的具体计算步骤如下:
[0018] 信息包容性度量
[0019] 一种尺寸大小的纹理块的信息包容性是指这样大小的纹理块对样本纹理信息的包容反映程度。其计算步骤如下:
[0020] (1)计算样本纹理的灰度直方图;
[0021] (2)依次取出每一个这样大小的纹理块,计算其灰度直方图;
[0022] (3)将纹理块和样本纹理的灰度直方图归一化,并计算它们之间的L2距离。距离越近,则纹理块对样本纹理的信息全局性特征有更好的反映。
[0023] (4)如果该尺寸下的大部分(比如90%以上的)纹理块都与样本纹理的全局性特征相近,那么该尺寸下的纹理块就具有好的信息包容性。
[0024] 纹理周期性度量
[0025] (1)将样本纹理均匀地划分成比较大的网格,然后对每一种可能尺寸的块,在各个网格中随机选取一个这样大小的参考块;
[0026] (2)对这些参考块根据纹理结构特征的相似性进行分类处理,即比较两个参考块是否相似,如果相似就归为一类。在此的相似性计算是将两个参考块重叠放置,然后计算它2
们之间的L 距离。若该距离值小于一个设定的阀值,则表明这两个参考块相似。
[0027] (3)对各个类的参考块的个数进行平均。如果一种尺寸下的每个参考块都能找到相似的块,并且这些类中参考块个数的平均值较高,则这种尺寸的块对纹理信息周期性变化的反映就比较好。
[0028] 对重叠区域的宽度,我们进一步按照文献(王一平,王文成,吴恩华.块纹理合成的优化计算.计算机辅助设计与图形学学报,2006,18(10):1502-1507)的方法提出对各种重叠区域的宽度进行重叠区域约束性度量,并根据度量结果参数来决定合适的重叠区域宽度,即选用约束性强的宽度。对一个宽度的度量计算其步骤如下:
[0029] (1)将样本纹理均匀地划分成网格结构,每个网格都比纹理块的尺寸大。然后在各个网格中分别取一个参考区域,其形状与大小就是待考察的重叠区域宽度所决定的形状和大小。
[0030] (2)对这些参考区域,采用L2距离作为相似性原则,将它们分类。
[0031] (3)对每一类参考区域,采用L2距离作为匹配规则,在样本纹理中搜索与之相似的重叠区域。
[0032] (4)考察这些相似的重叠区域所对应的纹理块是否相似,并据此将这些纹理块进2
行分类,以得到该类参考区域可相匹配的纹理块种类数目。在此的相似计算依然采用L 距离作为相似性度量准则。
[0033] (5)将该宽度下各类参考区域可相匹配的纹理块种类数目进行平均。均值越小,则该宽度的约束性越强。
[0034] 在本发明方法中,对于由步骤b获得的纹理块,步骤c优选通过下列方式确定两个纹理块能否拼合:当 小于设定的阈值时则能够拼合,其中,i表示重叠区域的一个象素坐标,Pi表示位于i位置的来自纹理块P的象素的色彩,Qi表示位于i位置的来自纹理块Q的象素的色彩。
[0035] 在本发明方法中,步骤d优选以相位相近的若干个(比如2-5个)纹理块子集组成一个适用纹理块集合。
[0036] 在本发明方法中,步骤g优选以羽化的方式缝合纹理块之间的重叠部分。具体而言,羽化指的是对重叠位置的象素进行色彩的线性插值计算,C=CA*wA+CB*wB,这里,C表示融合后所得的色彩,CA和CB分别表示来自A纹理块和B纹理块在这同一象素位置的色彩,wA和wB表示插值计算的权值,决定于该象素到重叠区域边界的距离。
[0037] 在上述方法中,步骤f优选在CPU中完成,步骤g则优选在GPU中完成。因为步骤f涉及在空白区域选择填充纹理块的计算,该计算涉及大量的求交计算,这在GPU中难以实现,而在CPU中便于操作;而步骤g是对邻接的纹理块进行缝合操作,这涉及大量的各自独立的插值计算,很适合在GPU中进行并行计算。
[0038] 和现有技术相比,本发明的优点和积极效果在于:
[0039] 通过间隔布块的操作,分布纹理块、为空白区域选用合适的纹理块、相邻纹理块之间的缝合等纹理合成计算就可并行的进行,便于使用GPU的功能,使得纹理合成速度得到很大的提高。由于纹理分块是根据纹理周期性变化特征来进行的,因此,该方法合成的纹理也能很好地反映样本纹理的全局周期性特征,以生成高质量的纹理。虽然并行可控纹理合成方法也是并行计算的,但它是点合成方式进行的,而我们发明的方法是针对块合成方法的,并且没有逐步求精的层次化操作,计算更简便。因此本发明可以实时地生成1024*1204像素的大纹理,而这是现有技术做不到的。

附图说明

[0040] 图1表示纹理块示意图,其中:1-主体部分,2-重叠部分;
[0041] 图2表示纹理块划分的纹理相位示意图,其中,实线矩形框表示的纹理块是属于一个相位的,而虚线矩形框表示的纹理块是属于另一个相位的。
[0042] 图3是本发明方法的工作流程示意图。
[0043] 图4表示样本纹理和目标纹理实例图,其中:a-样本纹理;b-本发明得到的目标纹理;c-全局优化方法得到的目标纹理;d-并行可控方法得到的目标纹理;
[0044] 图5表示样本纹理和目标纹理实例图,其中:a-样本纹理;b-本发明得到的目标纹理;c-全局优化方法得到的目标纹理;
[0045] 图6表示样本纹理和目标纹理实例图,其中:a-样本纹理;b-本发明得到的目标纹理;c-全局优化方法得到的目标纹理;
[0046] 图7表示样本纹理和目标纹理实例图,其中:a-样本纹理;b-本发明得到的目标纹理;c-并行可控方法得到的目标纹理。

具体实施方式

[0047] 下面结合附图和具体实施例对本发明作进一步详细描述:
[0048] 实施例1
[0049] 本实施例通过128*128的样本纹理(如图4a所示)得到256*256(如图4b所示)的目标纹理。
[0050] 整个方法包括下列步骤:
[0051] a)分析样本纹理,找到反映其全局性纹理特征的纹理块主体部分和重叠部分的尺寸;
[0052] 纹理块主体部分尺寸通过下列方法设定:
[0053] i.设定各种主体部分尺寸,比如:2*2、3*3、4*3、6*5、7*2等等,可目测样本纹理作此设定;
[0054] ii.根据信息包容性度量对各种尺寸排序:
[0055] 下面以4*3为例描述信息包容性度量的内容,其他尺寸均作相同的度量:
[0056] 1.以4*3作为主体部分尺寸划分样本纹理(此时不考虑纹理周期)得到n个纹理块;
[0057] 2.计算样本纹理的灰度直方图和所述n个纹理块各自的灰度直方图;
[0058] 3.将每个纹理块的灰度直方图和样本纹理的灰度直方图归一化,并计算它们之间2
的L 距离;
[0059] 4.设定一个阈值ep,若该L2距离小于ep,则认为该纹理块信息包容性“好”,否则,认为“不好”;
[0060] 5.计算这n个纹理块中,信息包容性“好”的纹理块所占的比例,把这一比例作为4*3这一尺寸的度量值。
[0061] 对每个尺寸均完成度量后,按照所述比例的高低对各种尺寸进行前后排序,比如4*3,4*4,5*4,…。
[0062] iii.根据纹理周期性度量对各种尺寸排序:
[0063] 下面以4*3为例描述纹理周期性度量的内容,其他尺寸均作相同的度量:
[0064] 1.以4*3作为主体部分尺寸划分样本纹理(此时不考虑纹理周期);
[0065] 2.将样本纹理均分成几大块,比如,每大块的尺寸为16*16,则样本纹理(128*128)可以分成8×8=64块;
[0066] 3.从每一块中随机抽取一纹理块,得到64个纹理块;
[0067] 4.将这64个纹理块分成m类,分类的依据是:同一类别中,某一个纹理块和其余2
纹理块之间的L 距离小于设定的阈值ep2;
[0068] 5.如果每一类中都有2个以上的纹理块,且这些类相应的纹理块个数的平均值比较高,则该4*3尺寸的周期性度量值就高,即可将该平均值作为该尺寸的周期性度量参数值。
[0069] 对每个尺寸均完成度量后,按照它们的度量参数值的大小对各种尺寸进行先后排序,比如6*5,4*4,4*3,5*4,…。
[0070] iv.根据在步骤ii和iii中均位于前列的尺寸作为所述主体部分的尺寸,比如,以4*4作为具体尺寸。
[0071] 纹理块的重叠部分尺寸通过下列方法设定:
[0072] i.设定各种重叠部分尺寸,比如4*4的主体部分周围宽度为1,2,3,…的正方形环;
[0073] ii.将样本纹理均分成几大块,比如,每大块的尺寸为16*16,则样本纹理(128*128)可以分成8×8=64块;
[0074] iii.对于每一种重叠部分尺寸,均作如下度量:
[0075] 从每个大块中随机抽取一参考区域块得到64个参考块,将所述64个参考块按照相似性分成u大类,对每一大类的参考块,在样本纹理中找到所有与它们相似的区域,并由此得到由这些区域约束的纹理块;然后,将这些纹理块进行相似性分类,以得到一个大类的参考块所相应的纹理块类的数目;最后,将各类参考块对应的纹理块类的数目进行平均,即得到该宽度下重叠区域的约束能力的度量参数值。
[0076] iv.按上述的度量参数值从小到大对各种重叠部分尺寸进行前后排序,以位于前列的尺寸作为具体尺寸。
[0077] b)按照a)所得的尺寸,形成对样本纹理划分进行网格划分的尺寸,即:设主体部分尺寸为a*b,而重叠部分的宽度为t,则网格的尺寸为(a+t/2)*(b+t/2)。从样本纹理中获得的这样网格大小的一个纹理区域,再上其向外延展t/2宽度所形成的矩形区域,就构成一个纹理块,所得所有纹理块,构成纹理块集合M;
[0078] c)对M中的每个纹理块Mi,确定所有其他纹理块中能在Mi的上下左右四个方向上和Mi拼合的纹理块,分别得到相容性邻接集合Mi上、Mi下、Mi左和Mi右;若M包括x个纹理块,则得到的相容性邻接集合有4x个;
[0079] d)按纹理相位将M分成多个子集,从中选择一个子集或相位相近的多个子集组成一个适用纹理块集合,以进行一次纹理合成的计算;
[0080] e)按b)步骤所形成的网格划分尺寸对目标纹理分块,以横向和纵向均间隔分布的方式在空白块中填入所述适用纹理块集合中的任意一块;
[0081] f)对于填充后剩下的空白块,取每个空白快四周的纹理块相应的相容性邻接集合的交集中的任一纹理块填充,即,填充某一空白块时,取其左侧纹理块的Mi右,右侧纹理块的Mi左,上方纹理块的Mi下和下方纹理块的Mi上,然后取这四个集合的交集中的任何一块进行填充;若没有交集,就选择这四个集合中出现次数最多的一个纹理块来填充;
[0082] g)以羽化的方式缝合纹理块之间的重叠部分。
[0083] 此外,本实施例分别根据全局优化方法(Kwatra V,Essa I,Bobick A,et al.Textureoptimization for example-based synthesis.ACM Trans.Graph,2005,24(3):795-802.)和并行可控方法(Lefebvre S,Hoppe H.Parallel controllable texture synthesis.ACMTrans.Graph.,2005,24(3):777-786)由相同的样本纹理得到目标纹理,分别如图4c和d所示。
[0084] 实施例2
[0085] 本实施例通过和实施例1相同的方法分别由图5a、图6a和图7a所示样本纹理合成图5b、图6b和图7b所示目标纹理。
[0086] 同时,根据全局优化方法分别由图5a和图6a所示样本纹理合成图5c和图6c所示目标纹理,并根据并行可控方法由图7a所示样本纹理合成图7c所示目标纹理。
[0087] 由图4-7可见,本发明方法能生成高质量的纹理,可以和目前合成质量最好的全局优化方法相当,甚至能更好地保持纹理的结构化信息,如图5和图6中的全局优化方法也会破坏纹理内部一些结构化的单元,而本发明不会。
[0088] 实施例3
[0089] 本实施例在一台Dell Optiplex 755微机上由同一样本纹理合成多种尺寸的目标纹理。
[0090] 该PC配有 一个 CoreTM2 Duo E6550 2.33GHz CPU,2G 内存,和一 个NVIDIAGeforce 8600GTS GPU。
[0091] 实验表明,本发明合成512*512象素的纹理时的处理效率就可达20.15M象素/秒,并且合成的纹理越大,其处理效率越高,见表1。
[0092] 根据Han C等人(Han C,Risser E,Ramamoorthi R,Grinspun E.Multiscale texturesynthesis.ACM Trans.Grap.,2008,27(3),Article No.51)的工作,在配置更高的机器(GeForce8800GTX GPU)上并行可控纹理方法的处理效率是15.3M象素/秒。因此,本发明具有很好的速度,目标纹理越大,越有利于发挥并行计算的优势,特别适合生成大纹理。虽然Wang W等人的方法(Wang W,Liu F,Huang P,Wu E.Texture synthesis via the matchingcompatibility between patches.Science in China Series F:Information Sciences,March 2009,52(3):512-522.)也很便于大纹理的生成,但它只能以每秒数帧的效率合成1024*1024像素的纹理,而本发明方法有效地结合了它的优点,并能并行地计算,可以实时地生成1024*1024像素的纹理。
[0093] 表1本实施例纹理合成计算效率
[0094]纹理尺寸 合成时间(毫秒) 平均每秒处理的象素数(M)
256*256 10.23 6.11
512*512 12.41 20.15
1024*1024 21.78 45.91
2048*2048 58.93 67.88