一种在视频中实现火焰特效的方法和装置
技术领域
本发明涉及视频图像处理技术,更具体地说,涉及一种在视频中实现火焰特效的方法和装置。
背景技术
为美化软件界面,提高软件的视觉效果,在一般的商业软件中,几乎每一幅图像的显示都采用了图像特效显示,如Windows系统的屏幕保护程序就采用了各种各样的图像特效显示,使人感到耳目一新。
例如在视频中添加火焰特效就为许多用户所青睐,但是目前在视频中实现火焰特效的算法较为复杂,运算效率较低,需耗费大量的系统资源,这样会导致添加有火焰特效的视频显示不流畅,无法达到预期的效果。因此,如何提高火焰特效添加过程中的运算效率及提高所得到的特效效果,以便于更好地实现对视频的添加火焰特效,是人们一直研究在的问题。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种运算效率高、特效效果好的在视频中实现火焰特效的方法和装置。
本发明解决其技术问题所采用的技术方案是:
构造一种在视频中实现火焰特效的方法,其中,所述方法包括步骤:
A、读取一帧视频图像数据,根据所述视频图像的大小初始化需要添加的火焰图像的大小,设定所述火焰图像在所述视频图像中的位置参数、所述火焰图像的高度参数及宽度参数,并存储;
B、生成与所述视频图像相对应的火焰图像数据,并存储在火焰数据存储模块中;
C、根据所述火焰图像在所述视频图像中的位置参数、所述火焰图像的高度参数及宽度参数,将所述火焰数据存储模块中当前存储的火焰图像数据叠加到所述视频图像中;
D、删除所述火焰数据存储模块中当前存储的火焰图像数据;
E、判断是否已读取完全部需要添加火焰特效的视频图像,如果是,则结束操作,否则重复执行步骤A,读取下一帧视频图像数据。
本发明所述的方法,其中,所述步骤B包括:
B1、初始化火焰颜色调色板,所述火焰颜色调色板中含有预设的数值到火焰颜色值的映射关系;
B2、根据所述火焰图像在所述视频图像中的位置参数,得到所述视频图像中的火焰区域,并在所述火焰区域的最下端随机生成火源点,定义所述火源点的数值;
B3、根据所述火源点的数值生成所述火焰区域中除火源点以外的其余火焰点的数值;
B4、根据所述火源点的数值以及其余火焰点的数值,从所述火焰颜色调色板中获取对应的火焰颜色值,生成所述火焰图像数据。
本发明所述的方法,其中,所述步骤B1包括:
将所述火焰图像由所述火源点处到火焰顶部分为四个渐变颜色范围;
计算每一个所述渐变颜色范围的渐变颜色值;
根据所述渐变颜色值计算每一个所述渐变颜色范围内的火焰颜色值,得到所述预设的数值到所述火焰颜色值的映射关系。
本发明所述的方法,其中,所述步骤B3包括:
根据火焰图像在所述视频图像中的位置参数、所述火焰图像的高度参数及宽度参数,从所述火源点开始,逐行往上遍历所述火焰图像的各个像素点;
取各个像素点的八邻域均值,得到每一火焰点的数值。
本发明所述的方法,其中,所述步骤C包括:
读取所述火焰图像在所述视频图像中的位置参数、所述火焰图像的高度参数及宽度参数;
读取所述火焰数据存储模块中当前存储的火焰图像数据;
利用图像叠加原理,将所述火焰图像数据叠加到所述视频图像中。
本发明还提供了一种在视频中实现火焰特效的装置,其中,包括:
参数设置模块,用于读取一帧视频图像数据,根据所述视频图像的大小初始化需要添加的火焰图像的大小,设定所述火焰图像在所述视频图像中的位置参数、所述火焰图像的高度参数及宽度参数,并存储;
火焰数据生成模块,用于生成与所述视频图像相对应的火焰图像数据,并存储在火焰数据存储模块中;
火焰数据存储模块,用于存储所述火焰图像数据;
图像处理模块,用于根据所述火焰图像在所述视频图像中的位置参数、所述火焰图像的高度参数及宽度参数,将所述火焰数据存储模块中当前存储的火焰图像数据叠加到所述视频图像中;
存储管理模块,用于删除所述火焰数据存储模块中当前存储的火焰图像数据;
判断模块,用于判断是否已读取完全部需要添加火焰特效的视频图像,如果是,则结束操作,否则触发所述参数设置模块,读取下一帧视频图像数据。
本发明所述的装置,其中,所述火焰数据生成模块包括:
调色板初始化单元,用于初始化火焰颜色调色板,所述火焰颜色调色板中含有预设的数值到火焰颜色值的映射关系;
火源点生成单元,用于根据所述火焰图像在所述视频图像中的位置参数,得到所述视频图像中的火焰区域,并在所述火焰区域的最下端随机生成火源点,定义所述火源点的数值;
火焰点生成单元,用于根据所述火源点的数值生成所述火焰区域中除火源点以外的其余火焰点的数值;
火焰图像数据产生单元,用于根据所述火源点的数值以及其余火焰点的数值,从所述火焰颜色调色板中获取对应的火焰颜色值,生成所述火焰图像数据。
本发明所述的装置,其中,所述调色板初始化单元包括:
范围划分子单元,用于将所述火焰图像由所述火源点处到火焰顶部分为四个渐变颜色范围;
渐变颜色值计算子单元,用于计算每一个所述渐变颜色范围的渐变颜色值;
映射关系产生子单元,用于根据所述渐变颜色值计算每一个所述渐变颜色范围内的火焰颜色值,得到所述预设的数值到所述火焰颜色值的映射关系。
本发明所述的装置,其中,所述火焰点生成单元包括:
像素点读取子单元,用于根据火焰图像在所述视频图像中的位置参数、所述火焰图像的高度参数及宽度参数,从所述火源点开始,逐行往上遍历所述火焰图像的各个像素点;
数值计算子单元,用于取各个像素点的八邻域均值,得到每一火焰点的数值。
本发明所述的装置,其中,所述图像处理模块包括:
参数读取单元,用于读取所述火焰图像在所述视频图像中的位置参数、所述火焰图像的高度参数及宽度参数;
火焰图像数据读取单元,用于读取所述火焰数据存储模块中当前存储的火焰图像数据;
图像叠加单元,用于利用图像叠加原理,将所述火焰图像数据叠加到所述视频图像中。
本发明的有益效果在于:通过读取视频图像数据,初始化火焰图像大小,并设定火焰图像在视频图像中的位置参数,以及火焰图像的高度参数和宽度参数,再生成与该视频图像相对应的火焰图像数据,然后将火焰图像数据加入到对应的视频图像中,完成火焰特效在视频中的实现过程。在该过程中,存入到火焰数据存储模块中的火焰图像数据在每一帧视频图像完成火焰图像添加后即被删除,以便于存储用于下一帧视频图像的火焰图像数据,这样可以重复使用同一个内存块,避免重复申请内存块分配及释放内存,节省资源,可实现在视频图像中实时添加特效,且运算效率更高。由于是针对每一帧视频图像分别实时添加火焰图像,因此可以对添加过的视频图像进行实时预览。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明较佳实施例的在视频中实现火焰特效的方法流程图;
图2是图1所示的方法S100中火焰图像数据产生流程图;
图3是本发明较佳实施例的在视频中实现火焰特效的装置原理框图;
图4是本发明较佳实施例的装置中火焰数据生成模块原理框图;
图5是本发明较佳实施例的装置中调色板初始化单元原理框图;
图6是本发明较佳实施例的装置中火焰点生成单元原理框图;
图7是本发明较佳实施例的装置中图像处理模块原理框图。
具体实施方式
本发明较佳实施例的在视频中实现火焰特效的方法S100流程图如图1所示,该方法S100可以采用软件、硬件或软硬件结合方式来实现。上述方法S100起始于步骤S110。在步骤S120中,读取一帧视频图像数据,根据视频图像的大小初始化需要添加的火焰图像的大小,设定火焰图像参数,包括火焰图像在视频图像中的位置参数、火焰图像的高度参数及宽度参数,并存储;在步骤S130中,生成与视频图像相对应的火焰图像数据,并存储在火焰数据存储模块中;在步骤S140中,根据火焰图像在视频图像中的位置参数,以及火焰图像的高度参数及宽度参数,将火焰数据存储模块中当前存储的火焰图像数据叠加到视频图像中;在步骤S150中,删除火焰数据存储模块中当前存储的火焰图像数据;在步骤S160中,判断是否已读取完全部需要添加火焰特效的视频图像,如果是,则结束操作,否则重复执行步骤S120,读取下一帧视频图像数据。上述方法S100结束于步骤S170。
在上述方法S100中,存入到火焰数据存储模块中的火焰图像数据在每一帧视频图像完成火焰图像添加后即被删除,以便于存储用于下一帧视频图像的火焰图像数据,这样可以重复使用同一个内存块,避免重复申请内存块分配及释放内存,节省资源,可实现在视频图像中实时添加特效,且运算效率更高。由于是针对每一帧视频图像分别实时添加火焰图像,因此可以对添加过的视频图像进行实时预览。
具体地,上述步骤S120中,所读取的视频图像大小为视频的一帧图像的大小,比如640*480,那么相应地将火焰图像的大小也初始化为640*480,即设定火焰图像水平方向像素点为640个,垂直方向像素点为480个,同时可以根据所读取的视频图像在所有视频帧中的位置来确定火焰图像在视频图像中的位置。
优选地,如图2所示,上述步骤S130具体包括:步骤S131、初始化火焰颜色调色板(pPalletteBuffer),在该火焰颜色调色板中,含有预设的数值到火焰颜色值的映射关系,比如该预设的数值为自然数0-254,即映射有255种火焰颜色值,以记录火焰从火源点处开始到火焰顶部的渐变色;步骤S132、根据火焰图像在视频图像中的位置参数,得到视频图像中的火焰区域,并在火焰区域的最下端随机生成火源点,定义火源点的数值;步骤S133、根据火源点的数值生成火焰区域中除火源点以外的其余火焰点的数值;步骤S134、根据火源点的数值以及其余火焰点的数值,从火焰颜色调色板中获取对应的火焰颜色值,生成火焰图像数据。其中,火源点为所有火焰点中位于火焰区域最下端的火焰点。
其中,上述步骤S131具体包括:将火焰图像由火源点处到火焰顶部分为四个渐变颜色范围;计算每一个渐变颜色范围的渐变颜色值;根据渐变颜色值计算每一个渐变颜色范围内的火焰颜色值,得到预设的数值到火焰颜色值的映射关系。
例如,设定火焰图像由火源点处开始,到火焰顶部颜色渐变分为四个渐变颜色范围:0黑色→255(十六进制值Oxff)红色→65535(十六进制值Oxffff)黄色→16777215(十六进制值Oxffffff)白色。
可逐个计算每一个渐变颜色范围的渐变颜色值,设置步长为255,每一渐变颜色范围的火焰渐变颜色值计算过程如下,其中,下面R代表红色,G代表绿色,B代表蓝色:
R=渐变颜色范围的结束值红色分量-渐变颜色范围的开始值红色分量;
G=渐变颜色范围的结束值绿色分量-渐变颜色范围的开始值绿色分量;
B=渐变颜色范围的结束值蓝色分量-渐变颜色范围的开始值蓝色分量。
例如,第一个渐变颜色范围为(255-0),则各颜色步长为:
rStep=R/255;
gStep=G/255;
bStep=B/255。
计算每一个渐变颜色范围内的调色板中火焰颜色值(m_pPalletteBuffer),起始值由所处的范围段确定,比如当前计算的是第一个渐变颜色范围,则起始值为0,依次类推为1、2。具体地,可通过下面的程序段来完成火焰颜色值(m_pPall etteBuffer)计算过程:
经过上述处理,即可得到火焰颜色调色板中预设的数值到火焰颜色值的映射关系,假设预设的数值为自然数0-254,则计算得到的映射关系如下表1所示:
表1 火焰颜色调色板的映射关系
即,在步骤S131中,按照从白色到黄色到红色、最后到黑色的颜色值,分成了3段(0,1,2),并分成254份等分,计算好各等分的火焰颜色值;在步骤S132中,设置火焰图像的底部随机产生的火源点的数值254;在步骤S133中,以火源点的数值254开始,逐行往上计算剩余火焰图像各像素点的颜色值,即其余火焰点的数值;具体包括,根据火焰图像在视频图像中的位置参数、火焰图像的高度参数及宽度参数,从火源点开始,逐行往上遍历火焰图像中的各个像素点,取各个像素点的八邻域均值,得到每一火焰点的数值;在步骤S134中,根据所得到的每一个火焰点的数值,通过上述表1查找到相对应的火焰颜色值,然后集合所有的火焰颜色值,生成火焰图像数据。
需要说明的是,上述实施例中,火源点的数值并不限于254,该数值可以从200到500之间;也不限于对0-254进行等分,大致进行划分即可,所得到的效果相差不大。
进一步地,上述方法S100中的步骤S140具体包括:读取火焰图像在视频图像中的位置参数、火焰图像的高度参数及宽度参数;读取火焰数据存储模块中当前存储的火焰图像数据;利用图像叠加原理,将火焰图像数据叠加到视频图像中。构成火焰图像数据存储模块的内存块具有与视频帧相同的分辨率,以便于存储火焰图像数据,进行火焰特效的实时更新。其中,上述图像叠加的具体算法可参考现有技术,在此不一一赘述。
本发明的另一实施例中,如图3所示,还提供了一种在视频中实现火焰特效的装置00,包括:参数设置模块10,用于读取一帧视频图像数据,根据视频图像的大小初始化需要添加的火焰图像的大小,设定火焰图像在视频图像中的位置参数、火焰图像的高度参数及宽度参数,并存储;火焰数据生成模块20,用于生成与视频图像相对应的火焰图像数据,并存储在火焰数据存储模块中;火焰数据存储模块30,用于存储火焰图像数据;图像处理模块40,用于根据火焰图像在视频图像中的位置参数、火焰图像的高度参数及宽度参数,将火焰数据存储模块中当前存储的火焰图像数据叠加到视频图像中;存储管理模块50,用于删除火焰数据存储模块中当前存储的火焰图像数据;判断模块60,用于判断是否已读取完全部需要添加火焰特效的视频图像,如果是,则结束操作,否则触发参数设置模块,读取下一帧视频图像数据。
在上述装置00中,存入到火焰数据存储模块30中的火焰图像数据在每一帧视频图像完成火焰图像添加后即被删除,以便于存储用于下一帧视频图像的火焰图像数据,这样可以重复使用火焰数据存储模块30中同一个内存块,避免重复申请内存块分配及释放内存,节省资源,可实现在视频图像中实时添加特效,且运算效率更高。由于本装置00中是针对每一帧视频图像分别实时添加火焰图像,因此可以对添加过的视频图像进行实时预览。
具体地,上述装置00的参数设置模块10中,所读取的视频图像大小为视频的一帧图像的大小,比如640*480,那么相应地将火焰图像的大小也初始化为640*480,即设定火焰图像水平方向像素点为640个,垂直方向像素点为480个,同时可以根据所读取的视频图像在所有视频帧中的位置来确定火焰图像在视频图像中的位置。
进一步地,如图4所示,上述实施例的装置00中火焰数据生成模块20包括:调色板初始化单元21,用于初始化火焰颜色调色板,该火焰颜色调色板中含有预设的数值到火焰颜色值的映射关系;火源点生成单元22,用于根据火焰图像在视频图像中的位置参数,得到视频图像中的火焰区域,并在火焰区域的最下端随机生成火源点,定义火源点的数值;火焰点生成单元23,用于根据火源点的数值生成火焰区域中除火源点以外的其余火焰点的数值;火焰图像数据产生单元24,用于根据火源点的数值以及其余火焰点的数值,从火焰颜色调色板中获取对应的火焰颜色值,生成火焰图像数据。比如,上述预设的数值为自然数0-254,即映射有255种火焰颜色值,以记录火焰从火源点处开始到火焰顶部的渐变色。其中,火源点为所有火焰点中位于火焰区域最下端的火焰点。
具体地,如图5所示,上述实施例的火焰数据生成模块20中调色板初始化单元21包括:范围划分子单元211,用于将火焰图像由火源点处到火焰顶部分为四个渐变颜色范围;渐变颜色值计算子单元212,用于计算每一个渐变颜色范围的渐变颜色值;映射关系产生子单元213,用于根据渐变颜色值计算每一个渐变颜色范围内的火焰颜色值,得到预设的数值到火焰颜色值的映射关系。具体火焰颜色值的计算过程举例可参照上述方法S100中步骤S131的例子,在此不再赘述。
如图6所示,上述火焰数据生成模块20中火焰点生成单元23包括:像素点读取子单元231,用于根据火焰图像在视频图像中的位置参数、火焰图像的高度参数及宽度参数,从火源点开始,逐行往上遍历火焰图像的各个像素点;数值计算子单元232,用于取各个像素点的八邻域均值,得到每一火焰点的数值。其中,具体的计算过程可参照已有的八邻域均值计算方法进行,在此不一一详述。
进一步地,如图7所示,上述装置00中图像处理模块40包括:参数读取单元41,用于读取火焰图像在视频图像中的位置参数、火焰图像的高度参数及宽度参数;火焰图像数据读取单元42,用于读取火焰数据存储模块中当前存储的火焰图像数据;图像叠加单元43,用于利用图像叠加原理,将火焰图像数据叠加到视频图像中。其中,构成火焰图像数据存储模块30的内存块具有与需要添加火焰特效的视频帧相同的分辨率,以便于存储火焰图像数据,进行火焰特效的实时更新。其中,上述图像叠加的具体算法可参考现有技术,在此不一一赘述。
上述装置00中,判断模块60中具体的判断逻辑可以根据需要设定,例如可以对每一帧需要添加火焰特效的视频图像进行标记,通过对该标记的识别来判断是否已读取完全部需要添加火焰特效的视频图像,具体方法在此不详细描述。
需要理解的是,上述各实施例中,火焰图像参数并不限于火焰图像在视频图像中的位置参数、火焰图像的高度参数及宽度参数,还可以包括火焰透明度信息等参数,具体的参数种类在此不一一列举。
综上,本发明的在视频中实现火焰特效的方法和装置中,由于存入到火焰数据存储模块中的火焰图像数据在每一帧视频图像完成火焰图像添加后即被删除,以便于存储用于下一帧视频图像的火焰图像数据,这样可以重复使用同一个内存块,避免重复申请内存块分配及释放内存,节省资源,可实现在视频图像中实时添加特效,且运算效率更高。由于是针对每一帧视频图像分别实时添加火焰图像,因此可以对添加过的视频图像进行实时预览。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。