一种实现水滴荡漾特效的方法和装置的制作方法

文档序号:6443887阅读:448来源:国知局
专利名称:一种实现水滴荡漾特效的方法和装置的制作方法
技术领域
本发明涉及基于视频或图像的视觉特效技术领域,尤其涉及一种实现水滴荡漾特效的方法和装置。
背景技术
随着生活水平的提高,用户已不满足于单调地录制或观看视频或图像,而希望能够给视频或图像增加丰富多彩的特效,从而增加乐趣。因此,电子产品生产商越来越注重用户的体验,因为那些能给用户带来好的视觉感受的产品,比如苹果公司的iphone手机,往往能占据很大的市场。但是,在当前市面上流行的各种电子产品中,仅仅只能对视频或图像添加静态特效,而不能添加一些更加有趣的动态特效。

发明内容
本发明实施例所要解决的技术问题在于,提供一种实现水滴荡漾特效的方法和装置。可对视频或图像添加动态特效,增加了用户的使用乐趣,提升了用户体验。为了解决上述技术问题,本发明实施例提供了一种实现水滴荡漾特效的方法,包括
获取波源点,并根据所述波源点和预设的荡漾程度确定当前帧区域中水面上的荡漾区
域;
根据预设的第一公式计算所述当前帧区域中水面上的荡漾区域内的每个像素位置的波幅值,所述第一公式为当前帧区域中像素位置(X,y)的波幅值=上一帧图像中像素位置(x,y)的波幅值+预设的荡漾高度,其中所述当前帧区域与所述上一帧图像的尺寸相同,0<χ<当前帧区域的宽度,0<y<当前帧区域的高度;
根据所述当前帧区域中的每个像素位置的波幅值确定像素偏移量,并根据所述像素偏移量将上一帧图像中的每个像素复制到当前帧区域中对应的像素位置,得到当前帧图像。其中,所述方法还包括
根据当前帧图像中的每个像素位置及其相邻的像素位置的波幅值分别计算下一帧区域中该像素位置的波幅值,其中所述下一帧区域与所述当前帧图像的尺寸相同。其中,所述根据当前帧图像中的每个像素位置及其相邻的像素位置的波幅值分别计算下一帧区域中该像素位置的波幅值的步骤具体包括
根据第二公式计算下一帧区域中像素位置(χ,y)的理想波幅值,所述第二公式为下一帧区域中像素位置(X,y)的理想波幅值=(当前帧图像中像素位置(x-l,y-1)的波幅值+当前帧图像中像素位置(x-1,y)的波幅值+当前帧图像中像素位置(x-1,y+1)的波幅值+当前帧图像中像素位置(X,y-Ι)的波幅值+当前帧图像中像素位置(X,y+Ι)的波幅值+当前帧图像中像素位置(χ+1,y- )的波幅值+当前帧图像中像素位置(χ+1,y)的波幅值+当前帧图像中像素位置(x+l,y+l)的波幅值)/2-当前帧图像中像素位置(x,y)的波幅值;将所述下一帧区域中像素位置(χ,y)的理想波幅值乘以衰减系数,得到所述下一帧区域中像素位置(x,y)的波幅值。其中,所述当前帧区域中水面上的荡漾区域为水面上在以所述波源点为圆心、以所述预设的荡漾程度为半径的圆内的区域。其中,所述根据所述当前帧区域中的每个像素位置的波幅值确定像素偏移量,并根据所述像素偏移量将上一帧图像中的每个像素复制到当前帧区域中对应的像素位置的步骤具体包括
将所述当前帧区域中像素位置(x-1,y)的波幅值与所述当前帧区域中像素位置(χ+1,y)的波幅值之差作为上一帧图像中像素位置(x,y)上像素的水平偏移量dx,将所述当前帧区域中像素位置(x,y-l)的波幅值与所述当前帧区域中像素位置(x,y+l)的波幅值之差作为上一帧图像中像素位置(χ,y)上像素的垂直偏移量dy ;
将所述上一帧图像中像素位置(x+dx,y+dy)上的像素复制到所述当前帧区域中的像素位置(x,y),得到当前帧图像。相应地,本发明实施例还提供了一种实现水滴荡漾特效的装置,包括
荡漾触发模块,用于获取波源点,并根据所述波源点和预设的荡漾程度确定当前帧区域中水面上的荡漾区域;
荡漾初次波幅计算模块,用于根据预设的第一公式计算所述当前帧区域中水面上的荡漾区域内的每个像素位置的波幅值,所述第一公式为当前帧区域中像素位置(X,y)的波幅值=上一帧图像中像素位置(χ,y)的波幅值+预设的荡漾高度,其中所述当前帧区域与所述上一帧图像的尺寸相同,0<x<当前帧区域的宽度,0<y<当前帧区域的高度;
图像生成模块,用于根据所述当前帧区域中的每个像素位置的波幅值确定像素偏移量,并根据所述像素偏移量将上一帧图像中的每个像素复制到当前帧区域中对应的像素位置,得到当前帧图像。其中,所述装置还包括
荡漾持续波幅计算模块,用于根据当前帧图像中的每个像素位置及其相邻的像素位置的波幅值分别计算下一帧区域中该像素位置的波幅值,其中所述下一帧区域与所述当前帧图像的尺寸相同。其中,所述荡漾持续波幅计算模块具体包括
理想波幅值计算模块,用于根据第二公式计算下一帧区域中像素位置(X,y)的理想波幅值,所述第二公式为下一帧区域中像素位置(x,y)的理想波幅值=(当前帧图像中像素位置(x-l,y-l)的波幅值+当前帧图像中像素位置(x_l,y)的波幅值+当前帧图像中像素位置(x-l,y+l)的波幅值+当前帧图像中像素位置(x,y_l)的波幅值+当前帧图像中像素位置(x,y+l)的波幅值+当前帧图像中像素位置(x+l,y_l)的波幅值+当前帧图像中像素位置(x+1,y)的波幅值+当前帧图像中像素位置(x+1,y+Ι)的波幅值)/2-当前帧图像中像素位置(x,y)的波幅值;
衰减波幅值计算模块,用于将所述下一帧区域中像素位置(χ,y)的理想波幅值乘以衰减系数,得到所述下一帧区域中像素位置(χ,y)的波幅值。其中,所述当前帧区域中水面上的荡漾区域为水面上在以所述波源点为圆心、以所述预设的荡漾程度为半径的圆内的区域。
其中,所述图像生成模块具体包括
偏移量计算模块,用于将所述当前帧区域中像素位置(x-1,y)的波幅值与所述当前帧区域中像素位置(x+1,y)的波幅值之差作为上一帧图像中像素位置(χ,y)上像素的水平偏移量dx,将所述当前帧区域中像素位置(χ,y-1)的波幅值与所述当前帧区域中像素位置(χ,y+1)的波幅值之差作为上一帧图像中像素位置(χ,y)上像素的垂直偏移量dy ;
像素复制模块,用于将所述上一帧图像中像素位置(χ+dx,y+dy)上的像素复制到所述当前帧区域中的像素位置(χ,y),得到当前帧图像。实施本发明实施例,具有如下有益效果通过根据上一帧图像中的每个像素位置的波幅值计算当前帧区域中每个像素位置的波幅值,并根据当前帧区域中每个像素位置的波幅值计算像素偏移量,再根据像素偏移量将上一帧图像中的像素复制到当前帧区域中对应的像素位置,可以简单快速地对视频或图像添加水滴荡漾的动态特效,效果逼真,看起来好像在下雨时雨滴如水的场景中,从而增加了用户的使用乐趣,提升了用户体验。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明提供的实现水滴荡漾特效的方法的第一实施例流程图;图2是本发明提供的实现水滴荡漾特效的方法的第二实施例流程图3是本发明提供的实现水滴荡漾特效的方法的第三实施例流程图;图4是本发明提供的实现水滴荡漾特效的装置的第一实施例结构示意图;图5是本发明提供的实现水滴荡漾特效的装置的第二实施例结构示意图;图6是本发明提供的实现水滴荡漾特效的装置的第三实施例结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。参见图1,是本发明提供的实现水滴荡漾特效的方法的第一实施例流程图,该方法包括
在步骤S100,获取波源点,并根据该波源点和预设的荡漾程度确定当前帧区域中水面上的荡漾区域。在步骤S101,根据预设的第一公式计算当前帧区域中水面上的荡漾区域内的每个像素位置的波幅值。其中,第一公式可以为当前帧区域中像素位置(X,y)的波幅值=上一帧图像中像素位置(χ,y)的波幅值+预设的荡漾高度,其中当前帧区域与上一帧图像的尺寸相同,0<x<当前帧区域的宽度,0<y<当前帧区域的高度。在步骤S102,根据当前帧区域中的每个像素位置的波幅值确定像素偏移量,并根据像素偏移量将上一帧图像中的每个像素复制到当前帧区域中对应的像素位置,得到当前帧图像。本发明实施例提供的实现水滴荡漾特效的方法,通过根据上一帧图像中的每个像素位置的波幅值计算当前帧区域中每个像素位置的波幅值,并根据当前帧区域中每个像素位置的波幅值计算像素偏移量,再根据像素偏移量将上一帧图像中的像素复制到当前帧区域中对应的像素位置,可以简单快速地对视频或图像添加水滴荡漾的动态特效,效果逼真,看起来好像在下雨时雨滴如水的场景中,从而增加了用户的使用乐趣,提升了用户体验。参见图2,是本发明提供的实现水滴荡漾特效的方法的第二实施例流程图,该方法包括
在步骤S200,获取波源点,并根据该波源点和预设的荡漾程度确定当前帧区域中水面上的荡漾区域。具体地,可以将随机生成的水滴与水面的接触点作为波源点。预设的荡漾程度的取值范围可以是(Γ100。在步骤S201,根据预设的第一公式,计算当前帧区域中水面上的荡漾区域内的每个像素位置的波幅值。其中,第一公式可以为当前帧区域中像素位置(X,y)的波幅值=上一帧图像中像素位置(χ,y)的波幅值+预设的荡漾高度,其中当前帧区域与上一帧图像的尺寸相同,0<x<当前帧区域的宽度,0<y<当前帧区域的高度。当前帧区域中不属于荡漾区域的像素位置的波幅值与上一帧图像中相同像素位置的波幅值相同。具体地,水面在初始状态时是个平面,各像素位置的初始波幅值均为0。预设的荡漾高度的取值范围可以是0 1000。在步骤S202,根据当前帧区域中的每个像素位置的波幅值确定像素偏移量,并根据像素偏移量将上一帧图像中的每个像素复制到当前帧区域中对应的像素位置,得到当前帧图像。因为水的折射,当水面不与我们的视线相垂直的时候,我们所看到的水下的景物并不是在观察点的正下方,而存在一定的偏移。因此,进行像素偏移处理后再生成当前帧图像,可以得到更加逼真的效果,看起来就像在水底播放一样。在步骤S203,根据当前帧图像中的每个像素位置及其相邻的像素位置的波幅值分别计算下一帧区域中该像素位置的波幅值,其中下一帧区域与当前帧图像的尺寸相同。通过在波源点引起的初次荡漾后继续计算下一帧中的每个像素位置的波幅值,可以将一个波源点引起的荡漾时间延长,实现波纹起伏、更加真实的荡漾效果。在步骤S204中,将下一帧区域作为当前帧区域。然后返回步骤S202。在具体实施过程中,可以设置两个临时存储空间A和B,即bufA[width*height]和bufB[width*height] (width为图像的宽度,height为图像的高度),存储空间A和B的大小与原始图像的大小一样,分别用于保存水面上每一个点的前一个时刻和后一个时刻的波幅数据。也就是说,临时存储空间A和B分别用于存储相邻的两个帧图像中的水面上的点的波幅值。参见图3,是本发明提供的实现水滴荡漾特效的方法的第三实施例流程图,图3是对图2所示实施例的更加详细的说明。如图3所示,该方法包括
在步骤S300,获取波源点,并根据该波源点和预设的荡漾程度确定当前帧区域中水面上的荡漾区域。具体地,可以将随机生成的水滴与水面的接触点作为波源点。该波源点引起的荡漾区域可以为水面上在以该波源点为圆心、以预设的荡漾程度为半径的圆内的区域。预设的荡漾程度的取值范围可以是(Γ100。在步骤S301,根据预设的第一公式,计算当前帧区域中水面上的荡漾区域内的每个像素位置的波幅值。其中,第一公式可以为当前帧区域中像素位置(X,y)的波幅值= 上一帧图像中像素位置(χ,y)的波幅值+预设的荡漾高度,其中当前帧区域与上一帧图像的尺寸相同,0<x<当前帧区域的宽度,0<y<当前帧区域的高度。当前帧区域中不属于荡漾区域的像素位置的波幅值与上一帧图像中相同像素位置的波幅值相同。具体地,水面在初始状态时是个平面,各像素位置的初始波幅值均为0。预设的荡漾高度的取值范围可以是 0 1000。在步骤S302,将当前帧区域中像素位置(x_l,y)的波幅值与当前帧区域中像素位置(x+1,y)的波幅值之差作为上一帧图像中像素位置(χ,y)上像素的水平偏移量dx,将当前帧区域中像素位置(x,y-l)的波幅值与当前帧区域中像素位置(x,y+l)的波幅值之差作为上一帧图像中像素位置(x,y)上像素的垂直偏移量dy。因为折射引起的偏移的程度与水波的斜率、水的折射率以及水的深度等都有关系,如果要进行精确的计算的话,显然是很不现实的。因此,我们只需要做线性的近似处理就行了。由于水面越倾斜,所看到的水下景物偏移量就越大,所以近似地用水面上某像素位置的前后、左右两像素位置的波幅之差来代表所看到的水底景物的偏移量,不仅保障了逼真的效果,而且加快了运算速率,降低了对硬件的要求。在步骤S303,将上一帧图像中像素位置(x+dx,y+dy)上的像素复制到当前帧区域中的像素位置(χ,y),得到当前帧图像。在步骤S304,根据第二公式计算下一帧区域中像素位置(X,y)的理想波幅值。其中,第二公式为下一帧区域中像素位置(χ,y)的理想波幅值=(当前帧图像中像素位置 (χ-Ly-l)的波幅值+当前帧图像中像素位置(x_l,y)的波幅值+当前帧图像中像素位置 (x-1,y+Ι)的波幅值+当前帧图像中像素位置(χ,y-Ι)的波幅值+当前帧图像中像素位置 (χ,y+Ι)的波幅值+当前帧图像中像素位置(x+1,y-Ι)的波幅值+当前帧图像中像素位置 (x+1,y)的波幅值+当前帧图像中像素位置(χ+1,y+Ι)的波幅值)/2-当前帧图像中像素位置(x,y)的波幅值。在步骤S305,将下一帧区域中像素位置(X,y)的理想波幅值乘以衰减系数,得到下一帧区域中像素位置(X,y)的波幅值。优选地,衰减系数为2/3。但是,衰减系数并不限于2/3。由于水具有阻力,每一时刻某像素位置的波幅值都应比上一时刻该像素位置的波幅值衰减一些,这样可以使水滴荡漾的幅度越来越小,达到更加真实的模拟效果。在步骤S306中,将下一帧区域作为当前帧区域。然后返回步骤S302。在图2-3所示的实施例中,可以在一个波源点引起的荡漾尚未结束时获取其他一个或多个波源点,实现更加丰富真实的动画效果。例如,可以通过调节水滴密度来调节波源点的个数,水滴密度的取值范围可以是(Γ10。又例如,在步骤S204或步骤S306之后,可以包括步骤判断是否有新的波源点产生,若判断为是,则返回步骤S200或步骤S300 ;若判断为否,则返回步骤S202或S302。参见图4,是本发明提供的实现水滴荡漾特效的装置的第一实施例结构示意图,该装置包括
荡漾触发模块410,用于获取波源点,并根据该波源点和预设的荡漾程度确定当前帧区域中水面上的荡漾区域。荡漾初次波幅计算模块420,用于根据预设的第一公式计算当前帧区域中水面上的荡漾区域内的每个像素位置的波幅值。其中,第一公式可以为当前帧区域中像素位置 (X,y)的波幅值=上一帧图像中像素位置(X,y)的波幅值+预设的荡漾高度,其中当前帧区域与上一帧图像的尺寸相同,0<x<当前帧区域的宽度,0<y<当前帧区域的高度。图像生成模块430,用于根据当前帧区域中的每个像素位置的波幅值确定像素偏移量,并根据像素偏移量将上一帧图像中的每个像素复制到当前帧区域中对应的像素位置,得到当前帧图像。本发明实施例提供的实现水滴荡漾特效的装置,通过根据上一帧图像中的每个像素位置的波幅值计算当前帧区域中每个像素位置的波幅值,并根据当前帧区域中每个像素位置的波幅值计算像素偏移量,再根据像素偏移量将上一帧图像中的像素复制到当前帧区域中对应的像素位置,可以简单快速地对视频或图像添加水滴荡漾的动态特效,效果逼真, 看起来好像在下雨时雨滴如水的场景中,从而增加了用户的使用乐趣,提升了用户体验。参见图5,是本发明提供的实现水滴荡漾特效的装置的第二实施例结构示意图,该装置包括
荡漾触发模块510,用于获取波源点,并根据该波源点和预设的荡漾程度确定当前帧区域中水面上的荡漾区域。具体地,荡漾触发模块510可以将随机生成的水滴与水面的接触点作为波源点。预设的荡漾程度的取值范围可以是(Γ100。荡漾初次波幅计算模块520,用于根据预设的第一公式,计算当前帧区域中水面上的荡漾区域内的每个像素位置的波幅值。其中,第一公式可以为当前帧区域中像素位置 (X,y)的波幅值=上一帧图像中像素位置(X,y)的波幅值+预设的荡漾高度,其中当前帧区域与上一帧图像的尺寸相同,0<x<当前帧区域的宽度,0<y<当前帧区域的高度。当前帧区域中不属于荡漾区域的像素位置的波幅值与上一帧图像中相同像素位置的波幅值相同。 具体地,水面在初始状态时是个平面,各像素位置的初始波幅值均为0。预设的荡漾高度的取值范围可以是(Γ1000。图像生成模块530,用于根据当前帧区域中的每个像素位置的波幅值确定像素偏移量,并根据像素偏移量将上一帧图像中的每个像素复制到当前帧区域中对应的像素位置,得到当前帧图像。因为水的折射,当水面不与我们的视线相垂直的时候,我们所看到的水下的景物并不是在观察点的正下方,而存在一定的偏移。因此,进行像素偏移处理后再生成当前帧图像,可以得到更加逼真的效果,看起来就像在水底播放一样。荡漾持续波幅计算模块M0,用于根据当前帧图像中的每个像素位置及其相邻的像素位置的波幅值分别计算下一帧区域中该像素位置的波幅值,其中下一帧区域与当前帧图像的尺寸相同。通过在波源点引起的初次荡漾后继续计算下一帧中的每个像素位置的波幅值,可以将一个波源点引起的荡漾时间延长,实现波纹起伏、更加真实的荡漾效果。在具体实施过程中,本装置还可以包括两个临时存储空间A和B,即 bufA[width*height]和 bufB[width*height] (width 为图像的宽度,height 为图像的高度),存储空间A和B的大小与原始图像的大小一样,分别用于保存水面上每一个点的前一个时刻和后一个时刻的波幅数据。也就是说,临时存储空间A和B分别用于存储相邻的两个帧图像中的水面上的点的波幅值。
参见图6,是本发明提供的实现水滴荡漾特效的装置的第三实施例结构示意图,图 6是对图5所示实施例的更加详细的说明。如图6所示,该装置包括
荡漾触发模块610,用于获取波源点,并根据该波源点和预设的荡漾程度确定当前帧区域中水面上的荡漾区域。具体地,荡漾触发模块610可以将随机生成的水滴与水面的接触点作为波源点。该波源点引起的荡漾区域可以为水面上在以该波源点为圆心、以预设的荡漾程度为半径的圆内的区域。预设的荡漾程度的取值范围可以是(Γ100。荡漾初次波幅计算模块620,用于根据预设的第一公式,计算当前帧区域中水面上的荡漾区域内的每个像素位置的波幅值。其中,第一公式可以为当前帧区域中像素位置 (X,y)的波幅值=上一帧图像中像素位置(X,y)的波幅值+预设的荡漾高度,其中当前帧区域与上一帧图像的尺寸相同,0<x<当前帧区域的宽度,0<y<当前帧区域的高度。当前帧区域中不属于荡漾区域的像素位置的波幅值与上一帧图像中相同像素位置的波幅值相同。 具体地,水面在初始状态时是个平面,各像素位置的初始波幅值均为0。预设的荡漾高度的取值范围可以是(Γ1000。图像生成模块630包括偏移量计算模块631和像素复制模块632。偏移量计算模块631,用于将当前帧区域中像素位置(x-1,y)的波幅值与当前帧区域中像素位置(x+l,y)的波幅值之差作为上一帧图像中像素位置(x,y)上像素的水平偏移量dx,将当前帧区域中像素位置(X,y-1)的波幅值与当前帧区域中像素位置(x,y+l)的波幅值之差作为上一帧图像中像素位置(x,y)上像素的垂直偏移量dy。因为折射引起的偏移的程度与水波的斜率、水的折射率以及水的深度等都有关系,如果要进行精确的计算的话,显然是很不现实的。因此,我们只需要做线性的近似处理就行了。由于水面越倾斜,所看到的水下景物偏移量就越大,所以近似地用水面上某像素位置的前后、左右两像素位置的波幅之差来代表所看到的水底景物的偏移量,不仅保障了逼真的效果,而且加快了运算速率,降低了对硬件的要求。像素复制模块632,用于将上一帧图像中像素位置(x+dx,y+dy)上的像素复制到当前帧区域中的像素位置(X,y),得到当前帧图像。荡漾持续波幅计算模块640包括理想波幅值计算模块641和衰减波幅值计算模块 642。理想波幅值计算模块641用于根据第二公式计算下一帧区域中像素位置(x,y)的理想波幅值。其中,第二公式为下一帧区域中像素位置(x,y)的理想波幅值=(当前帧图像中像素位置(x-l,y-l)的波幅值+当前帧图像中像素位置(x-l,y)的波幅值+当前帧图像中像素位置(x-l,y+l)的波幅值+当前帧图像中像素位置(x,y-l)的波幅值+当前帧图像中像素位置(x,y+l)的波幅值+当前帧图像中像素位置(x+l,y-l)的波幅值+当前帧图像中像素位置(x+1,y)的波幅值+当前帧图像中像素位置(x+1,y+1)的波幅值)/2-当前帧图像中像素位置(χ,y)的波幅值。衰减波幅值计算模块642用于将下一帧区域中像素位置(x,y)的理想波幅值乘以衰减系数,得到下一帧区域中像素位置(x,y)的波幅值。优选地,衰减系数为2/3。但是,衰减系数并不限于2/3。由于水具有阻力,每一时刻某像素位置的波幅值都应比上一时刻该像素位置的波幅值衰减一些,这样可以使水滴荡漾的幅度越来越小,达到更加真实的模拟效果。
在图5-6所示的实施例中,荡漾触发模块510或610可以在一个波源点引起的荡漾尚未结束时获取其他一个或多个波源点,实现更加丰富真实的动画效果。例如,可以通过调节水滴密度来调节波源点的个数,水滴密度的取值范围可以是(Γιο。又例如,本装置还可以包括判断模块,用于判断是否有新的波源点产生,若判断为是,则通知荡漾触发模块510 或610获取新的波源点;若判断为否,则通知图像生成模块530或630将下一帧区域作为当前帧区域,生成当前帧图像。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random Access Memory, RAM)等。以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
权利要求
1.一种实现水滴荡漾特效的方法,其特征在于,包括获取波源点,并根据所述波源点和预设的荡漾程度确定当前帧区域中水面上的荡漾区域;根据预设的第一公式计算所述当前帧区域中水面上的荡漾区域内的每个像素位置的波幅值,所述第一公式为当前帧区域中像素位置(X,y)的波幅值=上一帧图像中像素位置(x,y)的波幅值+预设的荡漾高度,其中所述当前帧区域与所述上一帧图像的尺寸相同,0<χ<当前帧区域的宽度,0<y<当前帧区域的高度;根据所述当前帧区域中的每个像素位置的波幅值确定像素偏移量,并根据所述像素偏移量将上一帧图像中的每个像素复制到当前帧区域中对应的像素位置,得到当前帧图像。
2.根据权利要求1所述的实现水滴荡漾特效的方法,其特征在于,所述方法还包括根据当前帧图像中的每个像素位置及其相邻的像素位置的波幅值分别计算下一帧区域中该像素位置的波幅值,其中所述下一帧区域与所述当前帧图像的尺寸相同。
3.根据权利要求2所述的实现水滴荡漾特效的方法,其特征在于,所述根据当前帧图像中的每个像素位置及其相邻的像素位置的波幅值分别计算下一帧区域中该像素位置的波幅值的步骤具体包括根据第二公式计算下一帧区域中像素位置(X,y)的理想波幅值,所述第二公式为下一帧区域中像素位置(X,y)的理想波幅值=(当前帧图像中像素位置(X-1,y-1)的波幅值+当前帧图像中像素位置(x-1,y)的波幅值+当前帧图像中像素位置(x-1,y+1)的波幅值+当前帧图像中像素位置(χ,y-1)的波幅值+当前帧图像中像素位置(χ,y+1)的波幅值+当前帧图像中像素位置(χ+1,y- )的波幅值+当前帧图像中像素位置(χ+1,y)的波幅值+当前帧图像中像素位置(x+l,y+1)的波幅值)/2-当前帧图像中像素位置(x,y)的波幅值;将所述下一帧区域中像素位置(χ,y)的理想波幅值乘以衰减系数,得到所述下一帧区域中像素位置(x,y)的波幅值。
4.根据权利要求1所述的实现水滴荡漾特效的方法,其特征在于,所述当前帧区域中水面上的荡漾区域为水面上在以所述波源点为圆心、以所述预设的荡漾程度为半径的圆内的区域。
5.根据权利要求1所述的实现水滴荡漾特效的方法,其特征在于,所述根据所述当前帧区域中的每个像素位置的波幅值确定像素偏移量,并根据所述像素偏移量将上一帧图像中的每个像素复制到当前帧区域中对应的像素位置的步骤具体包括将所述当前帧区域中像素位置(x-1,y)的波幅值与所述当前帧区域中像素位置(χ+1,y)的波幅值之差作为上一帧图像中像素位置(x,y)上像素的水平偏移量dx,将所述当前帧区域中像素位置(x,y-l)的波幅值与所述当前帧区域中像素位置(x,y+l)的波幅值之差作为上一帧图像中像素位置(χ,y)上像素的垂直偏移量dy ;将所述上一帧图像中像素位置(χ+dx,y+dy)上的像素复制到所述当前帧区域中的像素位置(x,y),得到当前帧图像。
6.一种实现水滴荡漾特效的装置,其特征在于,包括荡漾触发模块,用于获取波源点,并根据所述波源点和预设的荡漾程度确定当前帧区域中水面上的荡漾区域;荡漾初次波幅计算模块,用于根据预设的第一公式计算所述当前帧区域中水面上的荡漾区域内的每个像素位置的波幅值,所述第一公式为当前帧区域中像素位置(χ,y)的波幅值=上一帧图像中像素位置(χ,y)的波幅值+预设的荡漾高度,其中所述当前帧区域与所述上一帧图像的尺寸相同,0<x<当前帧区域的宽度,0<y<当前帧区域的高度;图像生成模块,用于根据所述当前帧区域中的每个像素位置的波幅值确定像素偏移量,并根据所述像素偏移量将上一帧图像中的每个像素复制到当前帧区域中对应的像素位置,得到当前帧图像。
7.根据权利要求6所述的实现水滴荡漾特效的装置,其特征在于,所述装置还包括荡漾持续波幅计算模块,用于根据当前帧图像中的每个像素位置及其相邻的像素位置的波幅值分别计算下一帧区域中该像素位置的波幅值,其中所述下一帧区域与所述当前帧图像的尺寸相同。
8.根据权利要求7所述的实现水滴荡漾特效的装置,其特征在于,所述荡漾持续波幅计算模块具体包括理想波幅值计算模块,用于根据第二公式计算下一帧区域中像素位置(χ,y)的理想波幅值,所述第二公式为下一帧区域中像素位置(x,y)的理想波幅值=(当前帧图像中像素位置(x-l,y-l)的波幅值+当前帧图像中像素位置(x_l,y)的波幅值+当前帧图像中像素位置(x-l,y+l)的波幅值+当前帧图像中像素位置(x,y_l)的波幅值+当前帧图像中像素位置(x,y+l)的波幅值+当前帧图像中像素位置(x+l,y_l)的波幅值+当前帧图像中像素位置(x+1,y)的波幅值+当前帧图像中像素位置(x+1,y+1)的波幅值)/2-当前帧图像中像素位置(x,y)的波幅值;衰减波幅值计算模块,用于将所述下一帧区域中像素位置(χ,y)的理想波幅值乘以衰减系数,得到所述下一帧区域中像素位置(χ,y)的波幅值。
9.根据权利要求6所述的实现水滴荡漾特效的装置,其特征在于,所述当前帧区域中水面上的荡漾区域为水面上在以所述波源点为圆心、以所述预设的荡漾程度为半径的圆内的区域。
10.根据权利要求6所述的实现水滴荡漾特效的装置,其特征在于,所述图像生成模块具体包括偏移量计算模块,用于将所述当前帧区域中像素位置(x-1,y)的波幅值与所述当前帧区域中像素位置(x+1,y)的波幅值之差作为上一帧图像中像素位置(χ,y)上像素的水平偏移量dx,将所述当前帧区域中像素位置(χ,y-1)的波幅值与所述当前帧区域中像素位置(χ,y+1)的波幅值之差作为上一帧图像中像素位置(χ,y)上像素的垂直偏移量dy ;像素复制模块,用于将所述上一帧图像中像素位置(χ+dx,y+dy)上的像素复制到所述当前帧区域中的像素位置(χ,y),得到当前帧图像。
全文摘要
本发明实施例公开了一种实现水滴荡漾特效的方法,包括获取波源点,并根据所述波源点和预设的荡漾程度确定当前帧区域中水面上的荡漾区域;根据预设的第一公式计算所述当前帧区域中水面上的荡漾区域内的每个像素位置的波幅值;根据所述当前帧区域中的每个像素位置的波幅值确定像素偏移量,并根据所述像素偏移量将上一帧图像中的每个像素复制到当前帧区域中对应的像素位置,得到当前帧图像。本发明实施例还公开了一种实现波纹荡漾特效的装置。采用本发明,可以简单快速地对视频或图像添加水滴荡漾的动态特效,效果逼真,看起来好像在水底播放,从而增加了用户的使用乐趣,提升了用户体验。
文档编号G06T11/00GK102568015SQ20111044885
公开日2012年7月11日 申请日期2011年12月29日 优先权日2011年12月29日
发明者章国庆 申请人:深圳市万兴软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1