一种动态虚拟形象的合成方法

文档序号:6400581阅读:254来源:国知局
专利名称:一种动态虚拟形象的合成方法
技术领域
本发明涉及图像处理技术,特别是指一种动态虚拟形象的合成方法。
背景技术
虚拟形象是近年在网上发展起来的一项技术,网上虚拟形象已经逐步成为网民的一种时尚,它能体现用户的个性化,展现用户创意,深受网民喜爱。目前,虚拟形象的存储大都基于可交换的图像文件格式(GIF,Graphics InterchangeFormat),每个虚拟形象由多个构件合成。这里,所述的构件是指合成虚拟形象的各个部件图像,以GIF文件格式存放,每个构件都是一个单帧的GIF图像。
所述GIF格式是一种基本的标准图像文件存储格式,一个GIF文件可以包含多幅彩色图像,每一幅彩色图像称为一帧,也就是说,一个GIF文件中可以存储多个帧。GIF图像可分为单帧和多帧图像,一般,单帧表现为静止图像,多帧图像一帧帧显示,像演幻灯片那样形成动态效果或称动画效果。但是,每一帧又与单独一幅图像有区别,因为单独一帧往往不能成为一幅图像,GIF图像中的一帧要表现为可视图像,必须与其前面的帧相关联。GIF图像文件是以数据块(block)为单位来存储图像的相关信息,一个GIF文件由表示图形/图像的数据块、数据子块以及显示图形/图像的控制信息块组成,称为GIF数据流(Data Stream)。数据流中的所有控制信息块和数据块都必须在文件头(Header)和文件结束块(Trailer)之间。GIF文件格式采用了字典LZW(Lempel-Ziv Walch)压缩算法来存储图像数据,允许用户为图像设置背景的透明(transparency)属性。
GIF文件的典型结构如表一所示

表一GIF文件中数据块可分成三类控制块(Control Block)、图形描绘块(Graphic-Rendering Block)和特殊用途数据块(Special Purpose Block)。其中,控制块包含用来控制数据流(Data Stream)或者设置硬件参数的信息,其成员包括GIF文件头(Header)、逻辑屏幕描述块(Logical Screen Descriptor)、图形控制扩展块(Graphic Control Extension)和文件结束块(Trailer)。图形描绘块包含用来描绘在显示设备上显示图形的信息和数据,其成员包括图像描述块(Image Descriptor)和无格式文本扩展块(Plain Text Extension)。特殊用途数据块包含与图像处理无关的信息,其成员包括注释扩展块(CommentExtension)和应用扩展块(Application Extension)。
这里,除了在控制块中的逻辑屏幕描述块(Logical Screen Descriptor)和全局彩色表(Global Color Table)的作用范围是整个数据流(Data Stream)之外,其他所有控制块仅控制跟在其后的图形描绘块。也就是说,在表一中,逻辑屏幕描述块和全局彩色表的作用范围是整个文件,应用扩展块、无格式文本扩展块、注释扩展块、图形控制扩展块仅控制跟在其后的图形描绘块。
表一中,逻辑屏幕描述块包含定义图像显示区域的参数,包括逻辑显示屏大小、背景颜色、是否有全局彩色表等信息。
彩色表,由于一个GIF文件可以包含多幅彩色图像,每幅彩色图像也许都包含适合自身特点的彩色表,所以一个GIF文件可以有好几个彩色表。但归纳起来只有两类全局彩色表(Global Color Table)或局部彩色表(Local ColorTable)。全局彩色表可用于图像本身没有带彩色表的所有图像和无格式文本扩展块(Plain Text Extension),而局部彩色表只用于紧跟在它后面的一幅图像。当每帧图像都有局部彩色表时,此时全局彩色表可不存在。
应用扩展块包含制作该图像文件的应用程序的相关信息,如是否循环动画显示、动画循环显示的次数等。在静止的图像文件中,此块可省略。
图形控制扩展块包含处理图形描绘块时要使用的参数透明标志,即是否有透明、透明彩色索引、处理方法、停留时间等。处理方法用于规定图形显示之后应进行的处理,比如a)没有指定要做任何处理;b)不处理,图形留在原处;c)显示图形的区域必须要恢复成背景颜色;d)恢复成以前显示的图形。停留时间用来指定在图形显示之后继续处理之前的等待时间,以百分之一秒为单位。
图像描述块用于记录每帧图像的大小,可包含数量不限的图像,而且也没有固定的存放顺序,仅用一个字节的图像分隔符来判断是不是图像描述块。每一幅图像都由一个图像描述块、可有可无的局部彩色表和图像数据组成。每幅图像必须要落在逻辑屏幕描述块中定义的逻辑屏尺寸范围里。
图像数据由数据子块序列组成,图像数据以彩色表的索引值记录每个像素,并用LZW算法进行压缩。
现有技术中一般采用网上通用合成软件包如GD库实现虚拟形象合成处理,由于GD库不能处理多帧GIF格式文件,只能处理单帧的GIF文件,因此,现有虚拟形象合成技术只能合成静态的虚拟形象,通常称为静态虚拟形象合成。现有技术中实现静态虚拟形象合成的过程是先确定每个构件的前后关系,以层来定义这种前后关系;合成时,按层号顺序先以第一层与背景图像相合成,接下来用第二层与前面合成的图像相合成,直到合成完所有需要合成的层。比如,除背景以外有三个构件裤子、衣服和脸形,而且最终的虚拟形象是脸在衣服前,有一部分衣领被脸盖住、衣服在裤子前,即衣服挡住部分裤子,那么,预先确定的层号就是裤子1、衣服2、脸形3;在合成时,先把裤子帖在背景上,再把衣服帖上去,最后把脸形帖上去,这里所说的帖是指采用已有的合成函数合成。
上述合成方式虽然比较简单、易实现,但由于每个部件都是单帧的,每次临时合成的图像也都是单帧的,最后合成的形象也是单帧的、静止的,也就是说,只能合成静止的虚拟形象。即使合成构件为多帧的动态GIF文件时,也只能读取第一帧进行合成,如此,使得合成的虚拟形象单一、呆板,不能满足用户的需求、令用户满意。

发明内容
有鉴于此,本发明的主要目的在于提供一种动态虚拟形象的合成方法,能实现动态虚拟形象的合成,进而为用户提供更好的服务。
为达到上述目的,本发明的技术方案是这样实现的一种动态虚拟形象的合成方法,该方法包括以下步骤a.合成服务器端接收用户发来的用户请求,根据用户请求中的信息获取合成所需虚拟形象所有构件的构件图像文件;b.根据层号逐个读取一个构件相应的构件图像文件,并将当前读取的构件图像文件统一为规定格式;
c.将步骤b中经过格式化的构件与之前合成的中间形象进行合成;d.判断是否合成完所有构件,如果是,则将合成的虚拟形象写入虚拟形象图像文件;否则,返回步骤b。
其中,在读取所有构件图像文件之前,该方法进一步包括读取一底板文件。所述步骤c具体包括确定中间形象和格式化后构件的合成图像帧数、每帧的显示停留时间以及构件中帧与中间形象中帧的对应合成关系,然后,按照所确定的对应合成关系,根据每帧的显示停留时间将构件与中间形象对应的帧进行合成。步骤d中将合成的虚拟形象按帧写入虚拟形象图像文件,写入之前该方法进一步包括对合成虚拟形象对应的图像文件,从最后一帧起逐帧进行压缩,直至第二帧,则所述将合成的虚拟形象写入虚拟形象图像文件为将经过压缩的合成虚拟形象对应的每一帧写入虚拟形象图像文件。这里,所述压缩具体为将当前帧与前一帧像素值逐点进行比较,如果相同,则将该点换为透明色;否则,不作处理。
该方法进一步包括预先获取所需合成虚拟形象的所有组成构件的信息,则步骤a具体包括用户端向合成服务器端发送携带有用户标识信息和合成虚拟形象所需构件信息的用户请求;合成服务器端通过解析用户请求获取所有构件的构件编号和相应层号,再根据所获得的构件编号和相应层号取得相应的构件图像文件。其中,所述构件信息至少包括唯一标识构件的构件编号、当前构件的相应层号。
上述方案中,步骤b中所述将构件图像文件统一为规定格式具体包括b11.将当前构件图像文件中局部彩色表中的颜色加入全局彩色表,并判断全局彩色表是否超过最大颜色数,如果超过,则计算最短距离颜色,将计算的最短距离颜色加入全局彩色表,否则,直接将局部彩色表中的颜色加入全局彩色表;b12.判断当前帧的每个像素点是否为透明色,如果是,则采用前面相关联帧对应像素点的颜色,如果不是,则采用当前帧像素点的颜色;
b13.将当前构件图像文件中图形控制扩展块中的显示后处理方式统一设置为显示图形的区域必须要恢复成背景颜色。
该方法进一步包括从构件图像文件或中间形象图像文件的图像控制扩展模块中获得每帧的显示停留时间。
上述方案中,步骤c中所述根据每帧的显示停留时间将构件与中间形象对应的帧进行合成进一步包括c11.计算中间形象每帧的显示时间和,同时计算构件中每帧的显示时间和,取两个显示时间和的最小公倍数作为合成形象各帧显示时间和;c12.根据构件帧数和每帧的停留显示时间、中间形象帧数和每帧的停留显示时间、以及步骤c11得到的各帧显示时间和确定帧插入点;c13.在每个插入点将构件当前帧与中间形象当前帧合成。
其中,步骤c11为取构件停留时间和与中间形象停留时间和的较大值;则步骤c12为根据构件每帧的停留显示时间、中间形象每帧的停留显示时间、以及构件停留时间和与中间形象停留时间和的较大值确定帧插入点。
当中间形象与构件的各帧显示停留时间统一时,步骤c11为计算构件帧数与中间形象帧数的最小公倍数;则步骤c12为根据构件帧数、中间形象帧数以及构件帧数与中间形象帧数的最小公倍数确定帧插入点。
当中间形象与构件的各帧显示停留时间统一,且构件帧数与中间形象帧数为2的幂次方时,步骤c11为取构件帧数与中间形象帧数的最大值;则步骤c12为根据构件帧数、中间形象帧数以及构件帧数与中间形象帧数的最大值确定帧插入点。
上述方案中,步骤c中所述合成进一步包括c21.对构件中当前帧的每个像素点进行分析,判断当前像素点颜色是否为透明色,如果是,则合成帧相应像素点颜色与中间形象相关帧相应像素点颜色一样,则继续处理下一个像素点,如果不是,执行步骤c22;c22.判断是否能在中间形象的全局颜色表中找一个相等颜色,如果找到,则用该相等颜色标记该合成帧相应像素点,则继续处理下一个像素点;如果未找到,则执行步骤c23;c23.判断中间形象的全局颜色表是否填满,如没填满,则将构件中当前帧相应像素点颜色填入中间形象的全局颜色表,并以此颜色标记该合成帧相应像素点;如已填满,则在中间形象的全局颜色表中找一个最短距离颜色标记该合成帧相应像素点。
上述方案中,所述图像文件为可交换的图像文件格式GIF文件。
本发明所提供的动态虚拟形象的合成方法,在虚拟形象合成前,将所有构件的格式统一为标准格式,并在合成过程中,采用帧停留时间插入方式确定合成虚拟形象的帧数、每帧显示的停留时间以及构件中的某帧与中间形象的哪一帧合成,同时,在合成后,采用从最后一帧开始,逐帧对比的压缩算法。如此,即可实现动态虚拟形象的合成,进而为用户提供更好的服务,提高用户的满意度。另外,动态虚拟形象合成技术也可能为服务提供商带来很大收益,因为实际调查表明,10%的网民希望合成动态虚拟形象,85%以上的网民非常希望合成动态虚拟形象。


图1为本发明方法实现的处理流程图;图2为本发明方法中进行合成时确定帧插入点的原理示意图。
具体实施例方式
本发明的核心思想是在读取每个构件后,首先对构件进行标准的格式化,采用统一的全局彩色表,并采用统一的帧处理方式;然后,根据构件每帧和中间形象每帧的停留时间,确定合成时的帧插入点,在每个插入点完成构件帧与中间形象帧的合成。另外,在合成后,可从最后一帧开始进行逐帧对比压缩方式,减小合成后动态虚拟形象的大小。
由于每个虚拟形象构件都是一个GIF图像文件,那么,在进行合成之前先要对合成虚拟形象的所有构件进行编号,每一个构件由唯一的编号来标识。同时,还要根据每个构件在虚拟形象中的前后顺序确定每个构件的层号,每个构件的层号和编号是没有任何关系的,在合成时,同一层号的构件只能有一个。通常,从背景到前景采用从低到高的层号,也就是说,前景的层号相对较高,背景的层号相对较低,这种情况下,层号高的构件可部分挡住层号低的构件,比如人物挡住背景,手挡住身体等等。
每个构件的编号和层号确定后,将所有构件文件以构件编号及层号的方式组织目录结构进行存储,比如小汽车的构件编号4层号20;花朵的构件编号8层号12等等,如此,可以在合成虚拟形象时方构件便读取。
一般合成虚拟形象都是根据用户的请求来触发启动的,用户在发出请求前,会获知自己所要合成的虚拟形象是由哪些构件组成的,并同时获知相应构件的编号和层号,比如用户预先购买所需构件,选某种背景、某种衣服进行搭配。这样,用户在发出请求时就会携带所有的构件信息,也就是说,用户将自身的标识信息和合成虚拟形象所需的构件信息一起发给网络服务器,可采用这样的请求格式用户标识1构件编号相应层号2构件编号相应层号......n构件编号相应层号。这里,用户标识可以是相应用户的注册名或注册编号。
参见图1所示,本发明实现动态虚拟形象合成的处理流程包括以下步骤步骤101当用户需要合成虚拟形象时,用户端向服务器端发送携带有用户标识信息和构件信息的用户请求;合成服务器解析所收到的用户请求,从用户请求中获取合成虚拟形象的构件个数,以及每个构件相应的构件编号、相应层号;再根据构件编号和相应层号从构件目录结构取得相应的构件图像文件。
步骤102合成服务器在确定本次合成虚拟形象需要的所有构件后,首先要读取一个虚拟形象底板,之后将每个构件按照不同的层号依次合成到底板上。
由于每个用户选取的构件个数不一,层号也不相同,所以要在虚拟形象的最底层用一个底板,底板是按规定格式生成的GIF文件,可以是白色或透明图像;也可以把底板看成是前面已经合成的中间虚拟形象。通常底板可以由合成服务器自动添加进去。
步骤103读取虚拟形象底板后,合成服务器根据构件编号及层号,依次从层号低的开始,读取一个构件相应的构件图像文件。
具体过程是根据表一所给出的GIF文件格式,读取GIF文件头、逻辑屏幕描述块、全局彩色表、应用扩展块、图形控制扩展块、图像描述块、图像数据等,如果有局部彩色表,在图像描述块之后还要读局部彩色表,并存入相应内存结构中。如果该构件为动态GIF图像,那么,要读出多个图形控制扩展块、图像描述块、图像数据,组成多帧图像。每一帧中如果有自己的局部彩色表,此时帧中图像颜色由局部彩色表决定,不再由全局彩色表决定。这里,从GIF文件是否存在多个帧就可以知道该构件是否为动态GIF图像,只要在合成的构件中有一个是多帧,合成的虚拟形象就是多帧的、动态的。
由于GIF文件中注释扩展块和无格式文本扩展块在合成虚拟形象时没有用,为减少合成文件的大小,在读取GIF图像中可暂时去掉注释扩展块和无格式文本扩展块两部分。
步骤104将所读取的构件图像文件统一为规定格式,即进行格式初始化。
根据对GIF文件格式中图形控制扩展块的描述可知,存在三方面的问题,使得合成动态GIF图像很困难①在GIF文件中,解码器对每帧显示后的处理有四种选择,因而有四种方式的动态GIF,但是,对于静态的GIF,因为只有一帧,体现不出这四种方式的差别;②对于多帧GIF,由于在GIF中每帧可以有自己的局部彩色表,也可以不带局部彩色表,而使用全局彩色表中颜色,如此就造成多帧GIF文件的多样化;③由于每个构件的GIF文件中帧数不一样、每帧显示停留时间也不一样,如此也会造成多帧GIF文件的多样化。
针对上述三个问题,在本发明中,可采用格式化构件GIF的方式解决前两方面问题,而第三方面问题将留在合成时解决。具体的格式化方法如下a1.统一彩色表,即将局部彩色表中的颜色加入全局彩色表,当超过全局彩色表最大颜色数时,新加颜色用最短距离颜色代替。
这里,颜色距离是指两种颜色的红、绿、蓝值差的平方和,这个平方和最小的两种颜色就是最短距离颜色。
b1.让每帧单独成可视图,当一帧不能单独成图,需要与前面帧相关联才形成可视图时,就将当前帧与前面相关联的帧合成,使当前帧单独成图,形成统一格式,并将图形控制扩展块中的显示后处理方式统一设置为显示图形的区域必须要恢复成背景颜色。
这里,将当前帧与前面相关联的帧合成具体是指分析当前帧的每个像素点,对每个像素点进行重新着色,如果是透明色,则采用前面相关联帧对应像素点的颜色,如果不是透明色,则采用当前帧像素点的颜色。
在格式化过程中,局部彩色表颜色加入全局彩色表,是在让每帧单独成图时逐步加入的;格式化后的每个构件,只有全局彩色表,每帧单独成可视图,且处理方式唯一。
步骤105将格式化后的构件与之前合成的中间形象进行合成。本步骤所述的合成进一步分为两个步骤a2.根据构件以及合成的中间形象的帧数、每帧的显示停留时间,来确定构件中某帧与中间形象的哪帧进行合成,即确定构件中每帧与中间形象中每帧之间的对应合成关系。这里,每帧显示停留时间从构件或中间形象图像文件的图像控制扩展模块中获得。
由于构件可能是动态的,有多帧图像;中间形象也可能有多帧;而且,每帧图像显示停留时间也不一定相同,所以,要将当前构件与中间形象合成,必须先确定合成图像的帧数以及当前构件中的某帧与中间形象的哪帧合成,即先确定插入点。
b2.在每个插入点上,将构件中的当前帧与中间形象的当前帧合成,即将构件中的当前帧帖到中间形象的当前帧上。
在步骤a2和b2所述的合成过程中,关键是根据构件帧和中间形象帧的相关信息确定帧插入点,这里,所述的相关信息是指构件帧数、构件每帧的停留显示时间、中间形象帧数、中间形象每帧的停留显示时间。通常的做法是首先,计算中间形象每帧的显示时间和,同时计算构件中每帧的显示时间和,取这两个时间和的最小公倍数作为合成形象各帧显示时间和;然后,将构件和中间形象的各帧按时间插入这个合成形象各帧显示时间和,每个插入点便会产生合成后的一帧,每个合成后的帧都由构件中的某帧帖在中间形象的相关帧上合成,这里的中间形象相关帧是指在当前构件帧之前最近的中间形象帧。
构件中某帧与中间形象相关帧合成,就是将每个插入点上构件的当前帧帖到中间形象的当前帧上。合成两帧时,将构件中当前帧用到的颜色加到中间形象的全局彩色表中,如果表已满,则用最短距离颜色代替。
参见图2所示,假定中间形象为三帧,分别表示为M1、M2和M3,三帧的停留时间分别为40、50、60,则和为150;构件为三帧,分别表示为G1、G2和G3,三帧的停留时间分别为30、30、40,和为100。那么,两个和的最小公倍数为300,也就是说,合成虚拟形象各帧的显示时间和为300。因此,中间形象的每帧循环插入两次,有6个插入点,即改变6次画面;构件的每帧循环插入三次,有9个插入点,即改变9次画面。由于中间形象与构件的第一插入点,即第一帧重合,其余插入点均不重合,所以共有14个插入点,形成14帧。
合成帧数和停留时间确定后,就进行帧合成,每一帧都由构件中某帧与中间形象中相关帧合成,相关帧的确定是根据帧插入时间点,每个合成帧都是由与合成帧插入时间点最近的或重合的构件帧,和与合成帧插入时间点最近的或重合的中间形象帧合成。合成方法还是将构件中的某帧帖到中间形象中的相应帧上,如有重合的帧,则将重合的两帧合成一帧。如图2所示,新合成的第1帧是将构件G1帧帖到中间形象M1帧合成的,新合成的第2帧是将构件G2帧帖到中间形象M1帧上合成的,新合成的第3帧是将构件G2帧帖到中间形象M2帧上合成的,新合成的第4帧是将构件G3帧帖到中间形象M2帧上合成的,新合成的第5帧是将构件G3帧帖到中间形象M3帧上合成的,新合成的第6帧是将构件G1帧帖到中间形象M3帧上合成的,新合成的第7帧是将构件G2帧帖到中间形象M3帧上合成的,......以此类推。这里,所述新合成的第1帧就是图2中显示的合成帧1,其它以此类推。
所说的帖是按下述方法进行的在合成时,对构件中某帧的每个像素点进行分析如果是透明色,则合成帧相应像素点颜色与中间形象相关帧相应像素点颜色一样,如果不是透明色,有三种处理A)在中间形象的全局颜色表中找一个相等颜色标记该合成帧相应像素点;B)如果没有相等颜色,看中间形象的全局颜色表是否填满,如没填满,则将构件中某帧相应像素点颜色填入中间形象的全局颜色表,并以此颜色标记该合成帧相应像素点;C)中间形象的颜色表已经填满,则在中间形象的全局颜色表中找一个最短距离颜色标记该合成帧相应像素点。
为减少合成形象文件大小,在确定合成后停留时间和时,也可采用构件停留时间和与中间形象停留时间和二者中的较大值代替上述的最小公倍数。仍以图2为例,构件帧数为3,停留时间分别为40、50、60,停留时间和为150;中间形象帧数为3,停留时间分别为30、30、40,停留时间和为100;则构件停留时间和与中间形象停留时间和两者中的最大值为150。从图2可以看出,如果确定150为循环周期的话,对于中间形象就是到M3的显示停留时间结束为止,即第二个M1的位置;对于构件来说就是到第二个G2和G3之间为止,那么,对应的只需要完成七帧的合成,即图2中显示的合成后1~合成后7。其中,合成后1是将构件G1帧帖到中间形象M1帧合成的,合成后2是将构件G2帧帖到中间形象M1帧上合成的,合成后3是将构件G2帧帖到中间形象M2帧上合成的......,以此类推。这样做不仅可降低合成形象文件大小,而且对用户的感觉影响很小。
当中间形象与构件的各帧显示停留时间都统一时,停留时间插入算法可转化为帧数最小公倍数法,即将构件帧数与中间形象帧数的最小公倍数做为合成后的帧数,比如构件帧数为3,停留时间均为50;中间形象帧数为4,停留时间均为50,则构件帧数与中间形象帧数的最小公倍数为12,也就是,确定构件帧循环插入四次,中间形象帧循环插入三次。
如果中间形象与构件的各帧显示停留时间都统一,并且构件帧数与中间形象的帧数为2的幂次方时,停留时间插入算法便进一步转化为取构件帧数与中间形象帧数的较大值。比如构件帧数为2,停留时间均为50;中间形象帧数为4,停留时间均为50,则确定构件帧循环插入二次,中间形象帧只插入一次。
步骤106将新合成的虚拟形象作为中间形象,然后判断是否合成完所有用户所需的构件,如果是,则执行步骤107;否则,返回步骤103,按层号顺序读取下一层的构件图像文件进行处理、合成。如此循环,直至合成完所有用户选定的构件,即可得到用户所需的动态虚拟形象。
步骤107由于合成后的动态GIF每帧单独成图,文件相对较大,为减少空间,需要对合成后的虚拟形象进行压缩。
因为按照步骤104所述合成的虚拟形象只有全局彩色表,每个帧中像素点的值相同则代表颜色相同,因此,具体可采用以下压缩算法选一个没用到的颜色做为透明色,从最后一帧开始,将当前帧与前一帧像素值逐点进行比较,如果相同,则将该点换为透明色,依此类推,一直比较处理压缩完第二帧;将所有帧显示后处理方式统一为不处理,图形留在原处。经过此压缩算法后,每帧只记录与前一帧有变化的像素。采用此压缩算法后的虚拟形象文件大小将会大幅度减少,比如会从上百K减少至几十K。
步骤108将内存结构中合成虚拟形象的GIF文件头、逻辑屏幕描述块、全局彩色表、应用扩展块按GIF文件格式分别写入虚拟形象GIF文件,再按帧分别将各帧的图形控制扩展块、图像描述块、图像数据写入虚拟形象GIF文件,最后加上GIF文件结束块。其中,图像数据的写入是以LZW法压缩写入的。
是否对合成后的虚拟形象进行压缩可以根据需要选择使用,如果不需要压缩,就直接将合成的虚拟形象按帧写入虚拟形象图像文件;如果需要压缩,再执行步骤107和108。
经过以上步骤,最后合成的动态虚拟形象是多帧图象,每一帧与前面相关帧构成一幅幅画面,这些画面循环显示形成动态效果。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1.一种动态虚拟形象的合成方法,其特征在于,该方法包括以下步骤a.合成服务器端接收用户发来的用户请求,根据用户请求中的信息获取合成所需虚拟形象所有构件的构件图像文件;b.根据层号逐个读取一个构件相应的构件图像文件,并将当前读取的构件图像文件统一为规定格式;c.将步骤b中经过格式化的构件与之前合成的中间形象进行合成;d.判断是否合成完所有构件,如果是,则将合成的虚拟形象写入虚拟形象图像文件;否则,返回步骤b。
2.根据权利要求1所述的方法,其特征在于,在读取所有构件图像文件之前,该方法进一步包括读取一底板文件。
3.根据权利要求1所述的方法,其特征在于,所述步骤c具体包括确定中间形象和格式化后构件的合成图像帧数、每帧的显示停留时间以及构件中帧与中间形象中帧的对应合成关系,然后,按照所确定的对应合成关系,根据每帧的显示停留时间将构件与中间形象对应的帧进行合成。
4.根据权利要求1所述的方法,其特征在于,步骤d中将合成的虚拟形象按帧写入虚拟形象图像文件,写入之前该方法进一步包括对合成虚拟形象对应的图像文件,从最后一帧起逐帧进行压缩,直至第二帧,则所述将合成的虚拟形象写入虚拟形象图像文件为将经过压缩的合成虚拟形象对应的每一帧写入虚拟形象图像文件。
5.根据权利要求4所述的方法,其特征在于,所述压缩具体为将当前帧与前一帧像素值逐点进行比较,如果相同,则将该点换为透明色;否则,不作处理。
6.根据权利要求1至4任一项所述的方法,其特征在于,该方法进一步包括预先获取所需合成虚拟形象的所有组成构件的信息,则步骤a具体包括用户端向合成服务器端发送携带有用户标识信息和合成虚拟形象所需构件信息的用户请求;合成服务器端通过解析用户请求获取所有构件的构件编号和相应层号,再根据所获得的构件编号和相应层号取得相应的构件图像文件。
7.根据权利要求6所述的方法,其特征在于,所述构件信息至少包括唯一标识构件的构件编号、当前构件的相应层号。
8.根据权利要求1至4任一项所述的方法,其特征在于,步骤b中所述将构件图像文件统一为规定格式具体包括b11.将当前构件图像文件中局部彩色表中的颜色加入全局彩色表,并判断全局彩色表是否超过最大颜色数,如果超过,则计算最短距离颜色,将计算的最短距离颜色加入全局彩色表,否则,直接将局部彩色表中的颜色加入全局彩色表;b12.判断当前帧的每个像素点是否为透明色,如果是,则采用前面相关联帧对应像素点的颜色,如果不是,则采用当前帧像素点的颜色;b13.将当前构件图像文件中图形控制扩展块中的显示后处理方式统一设置为显示图形的区域必须要恢复成背景颜色。
9.根据权利要求3所述的方法,其特征在于,该方法进一步包括从构件图像文件或中间形象图像文件的图像控制扩展模块中获得每帧的显示停留时间。
10.根据权利要求3所述的方法,其特征在于,步骤c中所述根据每帧的显示停留时间将构件与中间形象对应的帧进行合成进一步包括c11.计算中间形象每帧的显示时间和,同时计算构件中每帧的显示时间和,取两个显示时间和的最小公倍数作为合成形象各帧显示时间和;c12.根据构件帧数和每帧的停留显示时间、中间形象帧数和每帧的停留显示时间、以及步骤c11得到的各帧显示时间和确定帧插入点;c13.在每个插入点将构件当前帧与中间形象当前帧合成。
11.根据权利要求10所述的方法,其特征在于,步骤c11为取构件停留时间和与中间形象停留时间和的较大值;则步骤c12为根据构件每帧的停留显示时间、中间形象每帧的停留显示时间、以及构件停留时间和与中间形象停留时间和的较大值确定帧插入点。
12.根据权利要求10所述的方法,其特征在于,中间形象与构件的各帧显示停留时间统一时,步骤c11为计算构件帧数与中间形象帧数的最小公倍数;则步骤c12为根据构件帧数、中间形象帧数以及构件帧数与中间形象帧数的最小公倍数确定帧插入点。
13.根据权利要求10所述的方法,其特征在于,中间形象与构件的各帧显示停留时间统一,且构件帧数与中间形象帧数为2的幂次方时,步骤c11为取构件帧数与中间形象帧数的最大值;则步骤c12为根据构件帧数、中间形象帧数以及构件帧数与中间形象帧数的最大值确定帧插入点。
14.根据权利要求3、10、11、12或13所述的方法,其特征在于,步骤c中所述合成进一步包括c21.对构件中当前帧的每个像素点进行分析,判断当前像素点颜色是否为透明色,如果是,则合成帧相应像素点颜色与中间形象相关帧相应像素点颜色一样,则继续处理下一个像素点,如果不是,执行步骤c22;c22.判断是否能在中间形象的全局颜色表中找一个相等颜色,如果找到,则用该相等颜色标记该合成帧相应像素点,则继续处理下一个像素点;如果未找到,则执行步骤c23;c23.判断中间形象的全局颜色表是否填满,如没填满,则将构件中当前帧相应像素点颜色填入中间形象的全局颜色表,并以此颜色标记该合成帧相应像素点;如已填满,则在中间形象的全局颜色表中找一个最短距离颜色标记该合成帧相应像素点。
15.根据权利要求1至4任一项所述的方法,其特征在于,所述图像文件为可交换的图像文件格式GIF文件。
全文摘要
本发明公开了一种动态虚拟形象的合成方法,包括a.合成服务器端接收用户发来的用户请求,根据用户请求中的信息获取合成所需虚拟形象所有构件的构件图像文件;b.根据层号逐个读取一个构件相应的构件图像文件,并将当前读取的构件图像文件统一为规定格式;c.将步骤b中经过格式化的构件与之前合成的中间形象进行合成;d.判断是否合成完所有构件,如果是,则将合成的虚拟形象写入虚拟形象图像文件;否则,返回步骤b。采用该方法能实现动态虚拟形象的合成,并为用户提供更好的服务。
文档编号G06T13/80GK1696979SQ200410037999
公开日2005年11月16日 申请日期2004年5月14日 优先权日2004年5月14日
发明者熊璞 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1