CN102592296A - 一种实现水波纹荡漾特效的方法和装置 - Google Patents

一种实现水波纹荡漾特效的方法和装置 Download PDF

Info

Publication number
CN102592296A
CN102592296A CN2011104488595A CN201110448859A CN102592296A CN 102592296 A CN102592296 A CN 102592296A CN 2011104488595 A CN2011104488595 A CN 2011104488595A CN 201110448859 A CN201110448859 A CN 201110448859A CN 102592296 A CN102592296 A CN 102592296A
Authority
CN
China
Prior art keywords
pixels
location
wave amplitude
zone
frame image
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN2011104488595A
Other languages
English (en)
Inventor
章国庆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Wondershare Software Co Ltd
Original Assignee
Shenzhen Wondershare Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Wondershare Software Co Ltd filed Critical Shenzhen Wondershare Software Co Ltd
Priority to CN2011104488595A priority Critical patent/CN102592296A/zh
Publication of CN102592296A publication Critical patent/CN102592296A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Image Processing (AREA)

Abstract

本发明实施例公开了一种实现水波纹荡漾特效的方法,包括:获取波源点,并根据所述波源点和预设的荡漾程度确定当前帧区域中水面上的荡漾区域;根据预设的第一公式计算所述当前帧区域中水面上的荡漾区域内的每个像素位置的波幅值;根据所述当前帧区域中的每个像素位置的波幅值确定像素偏移量,并根据所述像素偏移量将上一帧图像中的每个像素复制到当前帧区域中对应的像素位置,得到当前帧图像。本发明实施例还公开了一种实现波纹荡漾特效的装置。采用本发明,可以简单快速地对视频或图像添加水波纹荡漾的动态特效,效果逼真,看起来好像在水底播放,从而增加了用户的使用乐趣,提升了用户体验。

Description

一种实现水波纹荡漾特效的方法和装置
技术领域
本发明涉及基于视频或图像的视觉特效技术领域,尤其涉及一种实现水波纹荡漾特效的方法和装置。
背景技术
随着生活水平的提高,用户已不满足于单调地录制或观看视频或图像,而希望能够给视频或图像增加丰富多彩的特效,从而增加乐趣。因此,电子产品生产商越来越注重用户的体验,因为那些能给用户带来好的视觉感受的产品,比如苹果公司的iphone手机,往往能占据很大的市场。
但是,在当前市面上流行的各种电子产品中,仅仅只能对视频或图像添加静态特效,而不能添加一些更加有趣的动态特效。
发明内容
本发明实施例所要解决的技术问题在于,提供一种实现水波纹荡漾特效的方法和装置。可对视频或图像添加动态特效,增加了用户的使用乐趣,提升了用户体验。
为了解决上述技术问题,本发明实施例提供了一种实现水波纹荡漾特效的方法,包括:
获取波源点,并根据所述波源点和预设的荡漾程度确定当前帧区域中水面上的荡漾区域;
根据预设的第一公式计算所述当前帧区域中水面上的荡漾区域内的每个像素位置的波幅值,所述第一公式为:当前帧区域中像素位置(x,y)的波幅值=上一帧图像中像素位置(x,y)的波幅值+(预设的荡漾程度-像素位置(x,y)与波源点间的距离)*预设的荡漾高度,其中所述当前帧区域与所述上一帧图像的尺寸相同,0<x<当前帧区域的宽度,0<y<当前帧区域的高度;
根据所述当前帧区域中的每个像素位置的波幅值确定像素偏移量,并根据所述像素偏移量将上一帧图像中的每个像素复制到当前帧区域中对应的像素位置,得到当前帧图像。
其中,所述方法还包括:
根据当前帧图像中的每个像素位置及其相邻的像素位置的波幅值分别计算下一帧区域中该像素位置的波幅值,其中所述下一帧区域与所述当前帧图像的尺寸相同。
其中,所述根据当前帧图像中的每个像素位置及其相邻的像素位置的波幅值分别计算下一帧区域中该像素位置的波幅值的步骤具体包括:
根据第二公式计算下一帧区域中像素位置(x,y)的理想波幅值,所述第二公式为:下一帧区域中像素位置(x,y)的理想波幅值=(当前帧图像中像素位置(x-1,y-1)的波幅值+当前帧图像中像素位置(x-1,y)的波幅值+当前帧图像中像素位置(x-1,y+1)的波幅值+当前帧图像中像素位置(x,y-1)的波幅值+当前帧图像中像素位置(x,y+1)的波幅值+当前帧图像中像素位置(x+1,y-1)的波幅值+当前帧图像中像素位置(x+1,y)的波幅值+当前帧图像中像素位置(x+1,y+1)的波幅值)/2-当前帧图像中像素位置(x,y)的波幅值;
将所述下一帧区域中像素位置(x,y)的理想波幅值乘以衰减系数,得到所述下一帧区域中像素位置(x,y)的波幅值。
其中,所述当前帧区域中水面上的荡漾区域为水面上在以所述波源点为圆心、以所述预设的荡漾程度为半径的圆内的区域。
其中,所述根据所述当前帧区域中的每个像素位置的波幅值确定像素偏移量,并根据所述像素偏移量将上一帧图像中的每个像素复制到当前帧区域中对应的像素位置的步骤具体包括:
将所述当前帧区域中像素位置(x-1,y)的波幅值与所述当前帧区域中像素位置(x+1,y)的波幅值之差作为上一帧图像中像素位置(x,y)上像素的水平偏移量dx,将所述当前帧区域中像素位置(x,y-1)的波幅值与所述当前帧区域中像素位置(x,y+1)的波幅值之差作为上一帧图像中像素位置(x,y)上像素的垂直偏移量dy;
将所述上一帧图像中像素位置(x+dx,y+dy)上的像素复制到所述当前帧区域中的像素位置(x,y),得到当前帧图像。
相应地,本发明实施例还提供了一种实现水波纹荡漾特效的装置,包括:
荡漾触发模块,用于获取波源点,并根据所述波源点和预设的荡漾程度确定当前帧区域中水面上的荡漾区域;
荡漾初次波幅计算模块,用于根据预设的第一公式计算所述当前帧区域中水面上的荡漾区域内的每个像素位置的波幅值,所述第一公式为:当前帧区域中像素位置(x,y)的波幅值=上一帧图像中像素位置(x,y)的波幅值+(预设的荡漾程度-像素位置(x,y)与波源点间的距离)*预设的荡漾高度,其中所述当前帧区域与所述上一帧图像的尺寸相同,0<x<当前帧区域的宽度,0<y<当前帧区域的高度;
图像生成模块,用于根据所述当前帧区域中的每个像素位置的波幅值确定像素偏移量,并根据所述像素偏移量将上一帧图像中的每个像素复制到当前帧区域中对应的像素位置,得到当前帧图像。
其中,所述装置还包括:
荡漾持续波幅计算模块,用于根据当前帧图像中的每个像素位置及其相邻的像素位置的波幅值分别计算下一帧区域中该像素位置的波幅值,其中所述下一帧区域与所述当前帧图像的尺寸相同。
其中,所述荡漾持续波幅计算模块具体包括:
理想波幅值计算模块,用于根据第二公式计算下一帧区域中像素位置(x,y)的理想波幅值,所述第二公式为:下一帧区域中像素位置(x,y)的理想波幅值=(当前帧图像中像素位置(x-1,y-1)的波幅值+当前帧图像中像素位置(x-1,y)的波幅值+当前帧图像中像素位置(x-1,y+1)的波幅值+当前帧图像中像素位置(x,y-1)的波幅值+当前帧图像中像素位置(x,y+1)的波幅值+当前帧图像中像素位置(x+1,y-1)的波幅值+当前帧图像中像素位置(x+1,y)的波幅值+当前帧图像中像素位置(x+1,y+1)的波幅值)/2-当前帧图像中像素位置(x,y)的波幅值;
衰减波幅值计算模块,用于将所述下一帧区域中像素位置(x,y)的理想波幅值乘以衰减系数,得到所述下一帧区域中像素位置(x,y)的波幅值。
其中,所述当前帧区域中水面上的荡漾区域为水面上在以所述波源点为圆心、以所述预设的荡漾程度为半径的圆内的区域。
其中,所述图像生成模块具体包括:
偏移量计算模块,用于将所述当前帧区域中像素位置(x-1,y)的波幅值与所述当前帧区域中像素位置(x+1,y)的波幅值之差作为上一帧图像中像素位置(x,y)上像素的水平偏移量dx,将所述当前帧区域中像素位置(x,y-1)的波幅值与所述当前帧区域中像素位置(x,y+1)的波幅值之差作为上一帧图像中像素位置(x,y)上像素的垂直偏移量dy;
像素复制模块,用于将所述上一帧图像中像素位置(x+dx,y+dy)上的像素复制到所述当前帧区域中的像素位置(x,y),得到当前帧图像。
实施本发明实施例,具有如下有益效果:通过根据上一帧图像中的每个像素位置的波幅值计算当前帧区域中每个像素位置的波幅值,并根据当前帧区域中每个像素位置的波幅值计算像素偏移量,再根据像素偏移量将上一帧图像中的像素复制到当前帧区域中对应的像素位置,可以简单快速地对视频或图像添加水波纹荡漾的动态特效,效果逼真,看起来好像在水底播放,从而增加了用户的使用乐趣,提升了用户体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的实现水波纹荡漾特效的方法的第一实施例流程图;
图2是本发明提供的实现水波纹荡漾特效的方法的第二实施例流程图;
图3是本发明提供的实现水波纹荡漾特效的方法的第三实施例流程图;
图4是本发明提供的实现水波纹荡漾特效的装置的第一实施例结构示意图;
图5是本发明提供的实现水波纹荡漾特效的装置的第二实施例结构示意图;
图6是本发明提供的实现水波纹荡漾特效的装置的第三实施例结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,是本发明提供的实现水波纹荡漾特效的方法的第一实施例流程图,该方法包括: 
在步骤S100,获取波源点,并根据该波源点和预设的荡漾程度确定当前帧区域中水面上的荡漾区域。
在步骤S101,根据预设的第一公式计算当前帧区域中水面上的荡漾区域内的每个像素位置的波幅值。其中,第一公式可以为:当前帧区域中像素位置(x,y)的波幅值=上一帧图像中像素位置(x,y)的波幅值+(预设的荡漾程度-像素位置(x,y)与波源点间的距离)*预设的荡漾高度,其中当前帧区域与上一帧图像的尺寸相同,0<x<当前帧区域的宽度,0<y<当前帧区域的高度。
在步骤S102,根据当前帧区域中的每个像素位置的波幅值确定像素偏移量,并根据像素偏移量将上一帧图像中的每个像素复制到当前帧区域中对应的像素位置,得到当前帧图像。
本发明实施例提供的实现水波纹荡漾特效的方法,通过根据上一帧图像中的每个像素位置的波幅值计算当前帧区域中每个像素位置的波幅值,并根据当前帧区域中每个像素位置的波幅值计算像素偏移量,再根据像素偏移量将上一帧图像中的像素复制到当前帧区域中对应的像素位置,可以简单快速地对视频或图像添加水波纹荡漾的动态特效,效果逼真,看起来好像在水底播放,从而增加了用户的使用乐趣,提升了用户体验。
参见图2,是本发明提供的实现水波纹荡漾特效的方法的第二实施例流程图,该方法包括:
在步骤S200,获取波源点,并根据该波源点和预设的荡漾程度确定当前帧区域中水面上的荡漾区域。具体地,可以随机地选取当前帧区域中水面上的某一点作为波源点,也可以获取显示界面上被点击的位置作为波源点。预设的荡漾程度的取值范围可以是0~100。
在步骤S201,根据预设的第一公式,计算当前帧区域中水面上的荡漾区域内的每个像素位置的波幅值。其中,第一公式可以为:当前帧区域中像素位置(x,y)的波幅值=上一帧图像中像素位置(x,y)的波幅值+(预设的荡漾程度-像素位置(x,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,获取波源点,并根据该波源点和预设的荡漾程度确定当前帧区域中水面上的荡漾区域。具体地,可以随机地选取当前帧区域中水面上的某一点作为波源点,也可以获取显示界面上被点击的位置作为波源点。该波源点引起的荡漾区域可以为水面上在以该波源点为圆心、以预设的荡漾程度为半径的圆内的区域。预设的荡漾程度的取值范围可以是0~100。
在步骤S301,根据预设的第一公式,计算当前帧区域中水面上的荡漾区域内的每个像素位置的波幅值。其中,第一公式可以为:当前帧区域中像素位置(x,y)的波幅值=上一帧图像中像素位置(x,y)的波幅值+(预设的荡漾程度-像素位置(x,y)与波源点间的距离)*预设的荡漾高度,其中当前帧区域与上一帧图像的尺寸相同,0<x<当前帧区域的宽度,0<y<当前帧区域的高度。当前帧区域中不属于荡漾区域的像素位置的波幅值与上一帧图像中相同像素位置的波幅值相同。具体地,水面在初始状态时是个平面,各像素位置的初始波幅值均为0。预设的荡漾高度的取值范围可以是0~1000。
在步骤S302,将当前帧区域中像素位置(x-1,y)的波幅值与当前帧区域中像素位置(x+1,y)的波幅值之差作为上一帧图像中像素位置(x,y)上像素的水平偏移量dx,将当前帧区域中像素位置(x,y-1)的波幅值与当前帧区域中像素位置(x,y+1)的波幅值之差作为上一帧图像中像素位置(x,y)上像素的垂直偏移量dy。因为折射引起的偏移的程度与水波的斜率、水的折射率以及水的深度等都有关系,如果要进行精确的计算的话,显然是很不现实的。因此,我们只需要做线性的近似处理就行了。由于水面越倾斜,所看到的水下景物偏移量就越大,所以近似地用水面上某像素位置的前后、左右两像素位置的波幅之差来代表所看到的水底景物的偏移量,不仅保障了逼真的效果,而且加快了运算速率,降低了对硬件的要求。
在步骤S303,将上一帧图像中像素位置(x+dx,y+dy)上的像素复制到当前帧区域中的像素位置(x,y),得到当前帧图像。
在步骤S304,根据第二公式计算下一帧区域中像素位置(x,y)的理想波幅值。其中,第二公式为:下一帧区域中像素位置(x,y)的理想波幅值=(当前帧图像中像素位置(x-1,y-1)的波幅值+当前帧图像中像素位置(x-1,y)的波幅值+当前帧图像中像素位置(x-1,y+1)的波幅值+当前帧图像中像素位置(x,y-1)的波幅值+当前帧图像中像素位置(x,y+1)的波幅值+当前帧图像中像素位置(x+1,y-1)的波幅值+当前帧图像中像素位置(x+1,y)的波幅值+当前帧图像中像素位置(x+1,y+1)的波幅值)/2-当前帧图像中像素位置(x,y)的波幅值。
在步骤S305,将下一帧区域中像素位置(x,y)的理想波幅值乘以衰减系数,得到下一帧区域中像素位置(x,y)的波幅值。优选地,衰减系数为2/3。但是,衰减系数并不限于2/3。由于水具有阻力,每一时刻某像素位置的波幅值都应比上一时刻该像素位置的波幅值衰减一些,这样可以使水波纹荡漾的幅度越来越小,达到更加真实的模拟效果。
在步骤S306,将下一帧区域作为当前帧区域。然后返回步骤S302。
在图2-3所示的实施例中,可以在一个波源点引起的荡漾尚未结束时获取其他一个或多个波源点,实现更加丰富真实的动画效果。例如,在步骤S204或步骤S306之后,可以包括步骤:判断是否有新的波源点产生,若判断为是,则返回步骤S200或步骤S300;若判断为否,则返回步骤S202或S302。
参见图4,是本发明提供的实现水波纹荡漾特效的装置的第一实施例结构示意图,该装置包括: 
荡漾触发模块410,用于获取波源点,并根据该波源点和预设的荡漾程度确定当前帧区域中水面上的荡漾区域。
荡漾初次波幅计算模块420,用于根据预设的第一公式计算当前帧区域中水面上的荡漾区域内的每个像素位置的波幅值。其中,第一公式可以为:当前帧区域中像素位置(x,y)的波幅值=上一帧图像中像素位置(x,y)的波幅值+(预设的荡漾程度-像素位置(x,y)与波源点间的距离)*预设的荡漾高度,其中当前帧区域与上一帧图像的尺寸相同,0<x<当前帧区域的宽度,0<y<当前帧区域的高度。
图像生成模块430,用于根据当前帧区域中的每个像素位置的波幅值确定像素偏移量,并根据像素偏移量将上一帧图像中的每个像素复制到当前帧区域中对应的像素位置,得到当前帧图像。
本发明实施例提供的实现水波纹荡漾特效的装置,通过根据上一帧图像中的每个像素位置的波幅值计算当前帧区域中每个像素位置的波幅值,并根据当前帧区域中每个像素位置的波幅值计算像素偏移量,再根据像素偏移量将上一帧图像中的像素复制到当前帧区域中对应的像素位置,可以简单快速地对视频或图像添加水波纹荡漾的动态特效,效果逼真,看起来好像在水底播放,从而增加了用户的使用乐趣,提升了用户体验。
参见图5,是本发明提供的实现水波纹荡漾特效的装置的第二实施例结构示意图,该装置包括:
荡漾触发模块510,用于获取波源点,并根据该波源点和预设的荡漾程度确定当前帧区域中水面上的荡漾区域。具体地,荡漾触发模块510可以随机地选取当前帧区域中水面上的某一点作为波源点,荡漾触发模块510还可以获取显示界面上被点击的位置作为波源点。预设的荡漾程度的取值范围可以是0~100。
荡漾初次波幅计算模块520,用于根据预设的第一公式,计算当前帧区域中水面上的荡漾区域内的每个像素位置的波幅值。其中,第一公式可以为:当前帧区域中像素位置(x,y)的波幅值=上一帧图像中像素位置(x,y)的波幅值+(预设的荡漾程度-像素位置(x,y)与波源点间的距离)*预设的荡漾高度,其中当前帧区域与上一帧图像的尺寸相同,0<x<当前帧区域的宽度,0<y<当前帧区域的高度。当前帧区域中不属于荡漾区域的像素位置的波幅值与上一帧图像中相同像素位置的波幅值相同。具体地,水面在初始状态时是个平面,各像素位置的初始波幅值均为0。预设的荡漾高度的取值范围可以是0~1000。
图像生成模块530,用于根据当前帧区域中的每个像素位置的波幅值确定像素偏移量,并根据像素偏移量将上一帧图像中的每个像素复制到当前帧区域中对应的像素位置,得到当前帧图像。因为水的折射,当水面不与我们的视线相垂直的时候,我们所看到的水下的景物并不是在观察点的正下方,而存在一定的偏移。因此,进行像素偏移处理后再生成当前帧图像,可以得到更加逼真的效果,看起来就像在水底播放一样。
荡漾持续波幅计算模块540,用于根据当前帧图像中的每个像素位置及其相邻的像素位置的波幅值分别计算下一帧区域中该像素位置的波幅值,其中下一帧区域与当前帧图像的尺寸相同。通过在波源点引起的初次荡漾后继续计算下一帧中的每个像素位置的波幅值,可以将一个波源点引起的荡漾时间延长,实现波纹起伏、更加真实的荡漾效果。
在具体实施过程中,本装置还可以包括两个临时存储空间A和B,即bufA[width*height]和bufB[width*height](width为图像的宽度,height为图像的高度),存储空间A和B 的大小与原始图像的大小一样,分别用于保存水面上每一个点的前一个时刻和后一个时刻的波幅数据。也就是说,临时存储空间A和B分别用于存储相邻的两个帧图像中的水面上的点的波幅值。
参见图6,是本发明提供的实现水波纹荡漾特效的装置的第三实施例结构示意图,图6是对图5所示实施例的更加详细的说明。如图6所示,该装置包括:
荡漾触发模块610,用于获取波源点,并根据该波源点和预设的荡漾程度确定当前帧区域中水面上的荡漾区域。具体地,荡漾触发模块610可以随机地选取当前帧区域中水面上的某一点作为波源点,荡漾触发模块610还可以获取显示界面上被点击的位置作为波源点。该波源点引起的荡漾区域可以为水面上在以该波源点为圆心、以预设的荡漾程度为半径的圆内的区域。预设的荡漾程度的取值范围可以是0~100。
荡漾初次波幅计算模块620,用于根据预设的第一公式,计算当前帧区域中水面上的荡漾区域内的每个像素位置的波幅值。其中,第一公式可以为:当前帧区域中像素位置(x,y)的波幅值=上一帧图像中像素位置(x,y)的波幅值+(预设的荡漾程度-像素位置(x,y)与波源点间的距离)*预设的荡漾高度,其中当前帧区域与上一帧图像的尺寸相同,0<x<当前帧区域的宽度,0<y<当前帧区域的高度。当前帧区域中不属于荡漾区域的像素位置的波幅值与上一帧图像中相同像素位置的波幅值相同。具体地,水面在初始状态时是个平面,各像素位置的初始波幅值均为0。预设的荡漾高度的取值范围可以是0~1000。
图像生成模块630包括偏移量计算模块631和像素复制模块632。
偏移量计算模块631,用于将当前帧区域中像素位置(x-1,y)的波幅值与当前帧区域中像素位置(x+1,y)的波幅值之差作为上一帧图像中像素位置(x,y)上像素的水平偏移量dx,将当前帧区域中像素位置(x,y-1)的波幅值与当前帧区域中像素位置(x,y+1)的波幅值之差作为上一帧图像中像素位置(x,y)上像素的垂直偏移量dy。因为折射引起的偏移的程度与水波的斜率、水的折射率以及水的深度等都有关系,如果要进行精确的计算的话,显然是很不现实的。因此,我们只需要做线性的近似处理就行了。由于水面越倾斜,所看到的水下景物偏移量就越大,所以近似地用水面上某像素位置的前后、左右两像素位置的波幅之差来代表所看到的水底景物的偏移量,不仅保障了逼真的效果,而且加快了运算速率,降低了对硬件的要求。
像素复制模块632,用于将上一帧图像中像素位置(x+dx,y+dy)上的像素复制到当前帧区域中的像素位置(x,y),得到当前帧图像。
荡漾持续波幅计算模块640包括理想波幅值计算模块641和衰减波幅值计算模块642。
理想波幅值计算模块641用于根据第二公式计算下一帧区域中像素位置(x,y)的理想波幅值。其中,第二公式为:下一帧区域中像素位置(x,y)的理想波幅值=(当前帧图像中像素位置(x-1,y-1)的波幅值+当前帧图像中像素位置(x-1,y)的波幅值+当前帧图像中像素位置(x-1,y+1)的波幅值+当前帧图像中像素位置(x,y-1)的波幅值+当前帧图像中像素位置(x,y+1)的波幅值+当前帧图像中像素位置(x+1,y-1)的波幅值+当前帧图像中像素位置(x+1,y)的波幅值+当前帧图像中像素位置(x+1,y+1)的波幅值)/2-当前帧图像中像素位置(x,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)等。
    以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。

Claims (10)

1.一种实现水波纹荡漾特效的方法,其特征在于,包括:
获取波源点,并根据所述波源点和预设的荡漾程度确定当前帧区域中水面上的荡漾区域;
根据预设的第一公式计算所述当前帧区域中水面上的荡漾区域内的每个像素位置的波幅值,所述第一公式为:当前帧区域中像素位置(x,y)的波幅值=上一帧图像中像素位置(x,y)的波幅值+(预设的荡漾程度-像素位置(x,y)与波源点间的距离)*预设的荡漾高度,其中所述当前帧区域与所述上一帧图像的尺寸相同,0<x<当前帧区域的宽度,0<y<当前帧区域的高度;
根据所述当前帧区域中的每个像素位置的波幅值确定像素偏移量,并根据所述像素偏移量将上一帧图像中的每个像素复制到当前帧区域中对应的像素位置,得到当前帧图像。
2.根据权利要求1所述的实现水波纹荡漾特效的方法,其特征在于,所述方法还包括:
根据当前帧图像中的每个像素位置及其相邻的像素位置的波幅值分别计算下一帧区域中该像素位置的波幅值,其中所述下一帧区域与所述当前帧图像的尺寸相同。
3.根据权利要求2所述的实现水波纹荡漾特效的方法,其特征在于,所述根据当前帧图像中的每个像素位置及其相邻的像素位置的波幅值分别计算下一帧区域中该像素位置的波幅值的步骤具体包括:
根据第二公式计算下一帧区域中像素位置(x,y)的理想波幅值,所述第二公式为:下一帧区域中像素位置(x,y)的理想波幅值=(当前帧图像中像素位置(x-1,y-1)的波幅值+当前帧图像中像素位置(x-1,y)的波幅值+当前帧图像中像素位置(x-1,y+1)的波幅值+当前帧图像中像素位置(x,y-1)的波幅值+当前帧图像中像素位置(x,y+1)的波幅值+当前帧图像中像素位置(x+1,y-1)的波幅值+当前帧图像中像素位置(x+1,y)的波幅值+当前帧图像中像素位置(x+1,y+1)的波幅值)/2-当前帧图像中像素位置(x,y)的波幅值;
将所述下一帧区域中像素位置(x,y)的理想波幅值乘以衰减系数,得到所述下一帧区域中像素位置(x,y)的波幅值。
4.根据权利要求1所述的实现水波纹荡漾特效的方法,其特征在于,所述当前帧区域中水面上的荡漾区域为水面上在以所述波源点为圆心、以所述预设的荡漾程度为半径的圆内的区域。
5.根据权利要求1所述的实现水波纹荡漾特效的方法,其特征在于,所述根据所述当前帧区域中的每个像素位置的波幅值确定像素偏移量,并根据所述像素偏移量将上一帧图像中的每个像素复制到当前帧区域中对应的像素位置的步骤具体包括:
将所述当前帧区域中像素位置(x-1,y)的波幅值与所述当前帧区域中像素位置(x+1,y)的波幅值之差作为上一帧图像中像素位置(x,y)上像素的水平偏移量dx,将所述当前帧区域中像素位置(x,y-1)的波幅值与所述当前帧区域中像素位置(x,y+1)的波幅值之差作为上一帧图像中像素位置(x,y)上像素的垂直偏移量dy;
将所述上一帧图像中像素位置(x+dx,y+dy)上的像素复制到所述当前帧区域中的像素位置(x,y),得到当前帧图像。
6.一种实现水波纹荡漾特效的装置,其特征在于,包括:
荡漾触发模块,用于获取波源点,并根据所述波源点和预设的荡漾程度确定当前帧区域中水面上的荡漾区域;
荡漾初次波幅计算模块,用于根据预设的第一公式计算所述当前帧区域中水面上的荡漾区域内的每个像素位置的波幅值,所述第一公式为:当前帧区域中像素位置(x,y)的波幅值=上一帧图像中像素位置(x,y)的波幅值+(预设的荡漾程度-像素位置(x,y)与波源点间的距离)*预设的荡漾高度,其中所述当前帧区域与所述上一帧图像的尺寸相同,0<x<当前帧区域的宽度,0<y<当前帧区域的高度;
图像生成模块,用于根据所述当前帧区域中的每个像素位置的波幅值确定像素偏移量,并根据所述像素偏移量将上一帧图像中的每个像素复制到当前帧区域中对应的像素位置,得到当前帧图像。
7.根据权利要求6所述的实现水波纹荡漾特效的装置,其特征在于,所述装置还包括:
荡漾持续波幅计算模块,用于根据当前帧图像中的每个像素位置及其相邻的像素位置的波幅值分别计算下一帧区域中该像素位置的波幅值,其中所述下一帧区域与所述当前帧图像的尺寸相同。
8.根据权利要求7所述的实现水波纹荡漾特效的装置,其特征在于,所述荡漾持续波幅计算模块具体包括:
理想波幅值计算模块,用于根据第二公式计算下一帧区域中像素位置(x,y)的理想波幅值,所述第二公式为:下一帧区域中像素位置(x,y)的理想波幅值=(当前帧图像中像素位置(x-1,y-1)的波幅值+当前帧图像中像素位置(x-1,y)的波幅值+当前帧图像中像素位置(x-1,y+1)的波幅值+当前帧图像中像素位置(x,y-1)的波幅值+当前帧图像中像素位置(x,y+1)的波幅值+当前帧图像中像素位置(x+1,y-1)的波幅值+当前帧图像中像素位置(x+1,y)的波幅值+当前帧图像中像素位置(x+1,y+1)的波幅值)/2-当前帧图像中像素位置(x,y)的波幅值;
衰减波幅值计算模块,用于将所述下一帧区域中像素位置(x,y)的理想波幅值乘以衰减系数,得到所述下一帧区域中像素位置(x,y)的波幅值。
9.根据权利要求6所述的实现水波纹荡漾特效的装置,其特征在于,所述当前帧区域中水面上的荡漾区域为水面上在以所述波源点为圆心、以所述预设的荡漾程度为半径的圆内的区域。
10.根据权利要求6所述的实现水波纹荡漾特效的装置,其特征在于,所述图像生成模块具体包括:
偏移量计算模块,用于将所述当前帧区域中像素位置(x-1,y)的波幅值与所述当前帧区域中像素位置(x+1,y)的波幅值之差作为上一帧图像中像素位置(x,y)上像素的水平偏移量dx,将所述当前帧区域中像素位置(x,y-1)的波幅值与所述当前帧区域中像素位置(x,y+1)的波幅值之差作为上一帧图像中像素位置(x,y)上像素的垂直偏移量dy;
像素复制模块,用于将所述上一帧图像中像素位置(x+dx,y+dy)上的像素复制到所述当前帧区域中的像素位置(x,y),得到当前帧图像。
CN2011104488595A 2011-12-29 2011-12-29 一种实现水波纹荡漾特效的方法和装置 Pending CN102592296A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2011104488595A CN102592296A (zh) 2011-12-29 2011-12-29 一种实现水波纹荡漾特效的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2011104488595A CN102592296A (zh) 2011-12-29 2011-12-29 一种实现水波纹荡漾特效的方法和装置

Publications (1)

Publication Number Publication Date
CN102592296A true CN102592296A (zh) 2012-07-18

Family

ID=46480886

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011104488595A Pending CN102592296A (zh) 2011-12-29 2011-12-29 一种实现水波纹荡漾特效的方法和装置

Country Status (1)

Country Link
CN (1) CN102592296A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108900903A (zh) * 2018-07-27 2018-11-27 北京市商汤科技开发有限公司 视频处理方法及装置、电子设备和存储介质
CN109410292A (zh) * 2018-09-30 2019-03-01 深圳市创维软件有限公司 实现水波纹动效的方法、装置、设备及存储介质
CN111008928A (zh) * 2019-11-26 2020-04-14 杭州趣维科技有限公司 一种实现图像雨滴滴落、划动波纹特效的方法及系统
CN111586444A (zh) * 2020-06-05 2020-08-25 广州繁星互娱信息科技有限公司 视频处理方法、装置、电子设备及存储介质
WO2021004171A1 (zh) * 2019-07-11 2021-01-14 北京字节跳动网络技术有限公司 水波纹图像实现方法及装置
WO2021031846A1 (zh) * 2019-08-16 2021-02-25 北京字节跳动网络技术有限公司 水波纹效果实现方法、装置、电子设备和计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004310797A (ja) * 2004-08-03 2004-11-04 Fujitsu Ltd 映像生成装置
CN101814006A (zh) * 2010-04-28 2010-08-25 中兴通讯股份有限公司 一种实现水波纹特效的方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004310797A (ja) * 2004-08-03 2004-11-04 Fujitsu Ltd 映像生成装置
CN101814006A (zh) * 2010-04-28 2010-08-25 中兴通讯股份有限公司 一种实现水波纹特效的方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
陈和平 等: "水波特效模拟原理及其快速实现方法", 《计算机应用研究》, vol. 22, no. 4, 30 April 2005 (2005-04-30), pages 252 - 253 *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108900903A (zh) * 2018-07-27 2018-11-27 北京市商汤科技开发有限公司 视频处理方法及装置、电子设备和存储介质
CN108900903B (zh) * 2018-07-27 2021-04-27 北京市商汤科技开发有限公司 视频处理方法及装置、电子设备和存储介质
CN109410292A (zh) * 2018-09-30 2019-03-01 深圳市创维软件有限公司 实现水波纹动效的方法、装置、设备及存储介质
CN109410292B (zh) * 2018-09-30 2023-07-07 深圳市创维软件有限公司 实现水波纹动效的方法、装置、设备及存储介质
WO2021004171A1 (zh) * 2019-07-11 2021-01-14 北京字节跳动网络技术有限公司 水波纹图像实现方法及装置
WO2021031846A1 (zh) * 2019-08-16 2021-02-25 北京字节跳动网络技术有限公司 水波纹效果实现方法、装置、电子设备和计算机可读存储介质
US11854121B2 (en) 2019-08-16 2023-12-26 Beijing Bytedance Network Technology Co., Ltd. Water ripple effect implementing method and apparatus, electronic device, and computer readable storage medium
CN111008928A (zh) * 2019-11-26 2020-04-14 杭州趣维科技有限公司 一种实现图像雨滴滴落、划动波纹特效的方法及系统
CN111008928B (zh) * 2019-11-26 2024-03-29 杭州小影创新科技股份有限公司 一种实现图像雨滴滴落、划动波纹特效的方法及系统
CN111586444A (zh) * 2020-06-05 2020-08-25 广州繁星互娱信息科技有限公司 视频处理方法、装置、电子设备及存储介质
CN111586444B (zh) * 2020-06-05 2022-03-15 广州繁星互娱信息科技有限公司 视频处理方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN102592296A (zh) 一种实现水波纹荡漾特效的方法和装置
US8368688B2 (en) Method for rendering fluid
CN104618663B (zh) 视频处理方法、终端和系统
US9378590B2 (en) Augmented reality auction platform
US8237722B2 (en) Systems and method for visualization of fluids
CN111111172B (zh) 游戏场景的地表处理方法、装置、处理器及电子装置
US20190149886A1 (en) An apparatus and associated methods
CN104244087A (zh) 一种视频渲染的方法及设备
CN1981306B (zh) 用于渲染图形的图形管道
CN103458310A (zh) 一种信息展示方法及装置
CN109191550A (zh) 一种粒子渲染方法、装置、电子设备及存储介质
CN110876079A (zh) 视频处理方法、装置和设备
JP2016049251A (ja) ゲームプログラム、コンピュータの制御方法、およびコンピュータ
JP2006516921A5 (zh)
CN105187737A (zh) 一种图像特效处理的显示方法、系统及拍摄终端
TW200617806A (en) Image processing apparatus, image processing method, and information recording medium
CN111008928A (zh) 一种实现图像雨滴滴落、划动波纹特效的方法及系统
CN102568015A (zh) 一种实现水滴荡漾特效的方法和装置
Mago New trends of marketing communication based on digital games
CN106303493B (zh) 图像处理方法及装置
CN102088571B (zh) 一种字幕显示方法和终端设备
CN102750726A (zh) 一种基于OpenGL实现景深效果的方法
JP2012081163A (ja) ゲーム装置
Syihabudin et al. The introduction of 3D applications Animal In Indonesia Using Augmented Reality Marker-Based Tracking Method
CN105006009B (zh) 一种2d水体模拟方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: 518000 Guangdong city of Shenzhen province Nanshan District Gao Xin Road, room 9 building on the north side of block A901 No. 006 TCL Industry Research Institute building A A Building 8 floor

Applicant after: Shenzhen Wondershare Information Technology Co., Ltd.

Address before: 518000 Guangdong city of Shenzhen province Nanshan District Gao Xin Road Building A block 8 Building TCL

Applicant before: Shenzhen Wondershare Software Co., Ltd.

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: SHENZHEN WONDERSHARE SOFTWARE CO., LTD. TO: SHENZHEN WONDERSHARE INFORMATION TECHNOLOGY CO., LTD.

C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20120718