一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

图像处理方法、装置、电子设备及存储介质与流程

2022-03-16 13:51:29 来源:中国专利 TAG:


1.本公开涉及图像处理技术领域,具体而言,涉及一种图像处理方法、装置、电子设备及存储介质。


背景技术:

2.在图像处理中,各种炫酷的画面特效能够增强视频特效的张力,其中模拟仿真是一种比较好的方向。在模拟仿真的过程中,常常需要对图像进行扭曲,以得到具有美感的图像。
3.相关技术中,设计师通常需要通过专业的制图软件实现图像的扭曲效果,过程繁琐、扭曲效果的真实性较差、且不能自动生成动态扭曲图像;此外,相关技术中的模拟仿真的方法通常运算量较大,不能实时模拟动态效果,且不适用于在移动端部署。
4.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

5.本公开实施例提供一种图像处理方法、图像处理装置、电子设备、计算机可读存储介质及计算机程序产品,可以实时模拟动态波动的图像效果,提高了画面真实性与吸引力;并且该方法实现简单,可以节省计算资源,提高计算效率,从而可以部署在移动端。
6.本公开实施例提供一种图像处理方法,该方法包括:获取待处理图像的初始纹理坐标;确定初始纹理坐标在各个时刻的目标偏移量;根据初始纹理坐标和各个时刻的目标偏移量,确定各个时刻的目标纹理坐标;根据各个时刻的目标纹理坐标,生成各个时刻的目标扭曲图像;根据各个时刻的目标扭曲图像,生成目标动态扭曲图像。
7.在本公开的一些示例性实施例中,初始纹理坐标包括第一方向初始纹理坐标和第二方向初始纹理坐标,第一方向初始纹理坐标所在的第一方向和第二方向初始纹理坐标所在的第二方向垂直;其中,确定初始纹理坐标在各个时刻的目标偏移量的步骤包括:获取波动速度和像素扭曲周期,其中波动速度是用于控制待处理图像运动程度的参数,像素扭曲周期是用于控制根据待处理图像生成的目标动态扭曲图像中的弦波的数量的参数;使用余弦函数处理波动速度、像素扭曲周期和目标方向初始纹理坐标,确定各个时刻的目标偏移量;其中,目标方向初始纹理坐标为第一方向初始纹理坐标或第二方向初始纹理坐标。
8.在本公开的一些示例性实施例中,根据初始纹理坐标和各个时刻的目标偏移量,确定各个时刻的目标纹理坐标的步骤包括:获取像素扭曲振幅、协同调节参数和目标方向向量,其中像素扭曲振幅是用于调控待处理图像的初始纹理坐标的偏移范围的参数,协同调节参数是用于调节像素扭曲振幅的粒度的参数,目标方向向量是用于调节第一方向初始纹理坐标和第二方向初始纹理坐标的向量;根据各个时刻的目标偏移量、像素扭曲振幅、协同调节参数、目标方向向量以及初始纹理坐标,确定各个时刻的目标纹理坐标。
9.在本公开的一些示例性实施例中,确定初始纹理坐标在各个时刻的目标偏移量的
步骤包括:获取柏林噪声图像;使用纹理采样函数处理柏林噪声图像和初始纹理坐标,确定初始纹理坐标在各个时刻的目标偏移量。
10.在本公开的一些示例性实施例中,使用纹理采样函数处理柏林噪声图像和初始纹理坐标,确定初始纹理坐标在各个时刻的目标偏移量的步骤包括:获得第一层采样偏移和第二层采样偏移,以及第一层偏移量的第一权重,其中,第一层采样偏移是用于调控第一次采样柏林噪声图像时的位置偏移的参数,第二层采样偏移是用于调控第二次采样柏林噪声图像时的位置偏移的参数,第一层偏移量的第一权重是用于调控第一层偏移量的权重的参数;使用纹理采样函数处理柏林噪声图像、初始纹理坐标、以及第一层采样偏移,获得各个时刻的第一层偏移量;使用纹理采样函数处理柏林噪声图像、初始纹理坐标、第二层采样偏移、以及第一层偏移量及其第一权重,确定各个时刻的目标偏移量。
11.在本公开的一些示例性实施例中,使用纹理采样函数处理柏林噪声图像、初始纹理坐标、第二层采样偏移向量、以及第一层偏移量及其第一权重,确定各个时刻的目标偏移量的步骤,包括:获得第三层采样偏移,以及第二层偏移量的第二权重,其中第三层采样偏移是用于调控第三次采样柏林噪声图像时的位置偏移的参数,第二层偏移量的第二权重是用于调控第二层偏移量的权重的参数;使用纹理采样函数处理柏林噪声图像、初始纹理坐标、第二层采样偏移、以及第一层偏移量及其第一权重,获得各个时刻对应的第二层偏移量;使用纹理采样函数处理柏林噪声图像、初始纹理坐标、第三层采样偏移、以及第二层偏移量及其第二权重,确定各个时刻的目标偏移量。
12.在本公开的一些示例性实施例中,初始纹理坐标包括第一方向初始纹理坐标和第二方向初始纹理坐标;其中,使用纹理采样函数处理柏林噪声图像、初始纹理坐标、以及第一层采样偏移,确定各个时刻的第一层偏移量的步骤包括:确定待处理图像的宽高比、第一层的时间权重和第一时刻;根据待处理图像的宽高比、第一方向初始纹理坐标、第一层采样偏移、和第二方向初始纹理坐标,确定第一中间坐标向量;根据第一层的时间权重和第一时刻,确定第二中间坐标向量;根据第一中间坐标向量和第二中间坐标向量,确定目标中间坐标向量;使用纹理采样函数处理柏林噪声图像和目标中间坐标向量,获得第一时刻的第一层偏移量。
13.在本公开的一些示例性实施例中,根据初始纹理坐标和各个时刻的目标偏移量,确定各个时刻的目标纹理坐标的步骤包括:获取像素扭曲振幅和协同调节参数,其中像素扭曲振幅是用于调控待处理图像的初始纹理坐标的偏移范围的参数,协同调节参数是用于调节像素扭曲振幅的粒度的参数;根据各个时刻的目标偏移量、像素扭曲振幅、协同调节参数以及初始纹理坐标,确定各个时刻的目标纹理坐标。
14.本公开实施例提供一种图像处理装置,包括:获取模块,被配置为执行获取待处理图像的初始纹理坐标;确定模块,被配置为执行确定初始纹理坐标在各个时刻的目标偏移量;确定模块还被配置为执行根据初始纹理坐标和各个时刻的目标偏移量,获得各个时刻的目标纹理坐标;生成模块,被配置为执行根据各个时刻的目标纹理坐标,生成各个时刻的目标扭曲图像;生成模块还被配置为执行根据各个时刻的目标扭曲图像,生成目标动态扭曲图像。
15.在本公开的一些示例性实施例中,初始纹理坐标包括第一方向初始纹理坐标和第二方向初始纹理坐标,第一方向初始纹理坐标所在的第一方向和第二方向初始纹理坐标所
在的第二方向垂直;获取模块还被配置为执行获取波动速度和像素扭曲周期,其中波动速度是用于控制待处理图像运动程度的参数,像素扭曲周期是用于控制根据待处理图像生成的目标动态扭曲图像中的弦波的数量的参数;确定模块还被配置为执行使用余弦函数处理波动速度、像素扭曲周期和目标方向初始纹理坐标,确定各个时刻的目标偏移量;其中,目标方向初始纹理坐标为第一方向初始纹理坐标或第二方向初始纹理坐标。
16.在本公开的一些示例性实施例中,获取模块还被配置为执行获取像素扭曲振幅、协同调节参数和目标方向向量,其中像素扭曲振幅是用于调控待处理图像的初始纹理坐标的偏移范围的参数,协同调节参数是用于调节像素扭曲振幅的粒度的参数,目标方向向量是用于调节第一方向初始纹理坐标和第二方向初始纹理坐标的向量;确定模块还被配置为执行根据各个时刻的目标偏移量、像素扭曲振幅、协同调节参数、目标方向向量以及初始纹理坐标,确定各个时刻的目标纹理坐标。
17.在本公开的一些示例性实施例中,获取单元还被配置为执行获取柏林噪声图像;确定模块还被配置为执行使用纹理采样函数处理柏林噪声图像和初始纹理坐标,确定初始纹理坐标在各个时刻的目标偏移量。
18.在本公开的一些示例性实施例中,获取模块还被配置为执行获取第一层采样偏移和第二层采样偏移,以及第一层偏移量的第一权重,其中,第一层采样偏移是用于调控第一次采样柏林噪声图像时的位置偏移的参数,第二层采样偏移是用于调控第二次采样柏林噪声图像时的位置偏移的参数,第一层偏移量的第一权重是用于调控第一层偏移量的权重的参数;确定模块还被配置为执行使用纹理采样函数处理柏林噪声图像、初始纹理坐标、以及第一层采样偏移,确定各个时刻的第一层偏移量;确定模块还被配置为执行使用纹理采样函数处理柏林噪声图像、初始纹理坐标、第二层采样偏移、以及第一层偏移量及其第一权重,确定各个时刻的目标偏移量。
19.在本公开的一些示例性实施例中,获取模块还被配置为执行获取第三层采样偏移,以及第二层偏移量的第二权重,其中第三层采样偏移是用于调控第三次采样柏林噪声图像时的位置偏移的参数,第二层偏移量的第二权重是用于调控第二层偏移量的权重的参数;确定模块还被配置为执行使用纹理采样函数处理柏林噪声图像、初始纹理坐标、第二层采样偏移、以及第一层偏移量及其第一权重,确定各个时刻对应的第二层偏移量;确定模块还被配置为执行使用纹理采样函数处理柏林噪声图像、初始纹理坐标、第三层采样偏移、以及第二层偏移量及其第二权重,确定各个时刻的目标偏移量。
20.在本公开的一些示例性实施例中,初始纹理坐标包括第一方向初始纹理坐标和第二方向初始纹理坐标,各个时刻包括第一时刻;获取模块还被配置为执行获取待处理图像的宽高比和第一层的时间权重;确定模块还被配置为执行根据待处理图像的宽高比、第一方向初始纹理坐标、第一层采样偏移、和第二方向初始纹理坐标,确定第一中间坐标向量;确定模块还被配置为执行根据第一层的时间权重和第一时刻,确定第二中间坐标向量;确定模块还被配置为执行根据第一中间坐标向量和第二中间坐标向量,确定目标中间坐标向量;确定模块还配置为执行使用纹理采样函数处理柏林噪声图像和目标中间坐标向量,确定第一时刻的第一层偏移量。
21.在本公开的一些示例性实施例中,获取单元还被配置为执行获取像素扭曲振幅和协同调节参数,其中像素扭曲振幅是用于调控待处理图像的初始纹理坐标的偏移范围的参
数,协同调节参数是用于调节像素扭曲振幅的粒度的参数;确定模块还被配置为执行根据各个时刻的目标偏移量、像素扭曲振幅、协同调节参数以及初始纹理坐标,确定各个时刻的目标纹理坐标。
22.本公开实施例提供一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行可执行指令,以实现如上述任一项的图像处理方法。
23.本公开实施例提供一种计算机可读存储介质,当计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如上述任一项的图像处理方法。
24.本公开实施例提供一种计算机程序产品,计算机程序/指令,其特征在于,计算机程序/指令被处理器执行时实现上述任一项的图像处理方法。
25.在本公开的一些实施例所提供的技术方案中,可以确定初始纹理坐标在各个时刻的目标偏移量,并根据目标偏移量获得目标纹理坐标,从而简单高效地获得目标扭曲图像和目标动态扭曲图像,可以实时模拟动态波动的图像效果,提高了画面真实性与吸引力,从而提升用户体验,增加用户粘度。此外,该方法实现简单,可以节省计算资源,提高计算效率,从而可以部署在移动端。
26.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
27.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
28.图1是根据一示例性实施例示出的一种图像处理方法的流程图。
29.图2是根据一示例示出的一种待处理图像的示意图。
30.图3是根据一示例示出的一种目标扭曲图像的示意图。
31.图4是根据一示例示出的另一种目标扭曲图像的示意图。
32.图5是根据一示例示出的另一种待处理图像的示意图。
33.图6是根据一示例示出的某一时刻的目标扭曲图像的示意图。
34.图7是根据一示例性实施例示出的另一种图像处理方法的流程图。
35.图8是根据一示例性实施例示出的另一种图像处理方法的流程图。
36.图9是根据一示例示出的再一种待处理图像的示意图。
37.图10是根据一示例示出的一种柏林噪声图像的示意图。
38.图11是根据一示例示出的再一种目标扭曲图像的示意图。
39.图12是根据一示例性实施例示出的一种图像处理装置的框图。
40.图13是根据一示例性实施例示出了适于用来实现本公开示例性实施例的电子设备的结构示意图。
具体实施方式
41.现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实
施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本公开将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
42.本公开所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
43.附图仅为本公开的示意性图解,图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在至少一个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
44.附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和步骤,也不是必须按所描述的顺序执行。例如,有的步骤还可以分解,而有的步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
45.本说明书中,用语“一个”、“一”、“该”、“所述”和“至少一个”用以表示存在至少一个要素/组成部分/等;用语“包含”、“包括”和“具有”用以表示开放式的包括在内的意思并且是指除了列出的要素/组成部分/等之外还可存在另外的要素/组成部分/等;用语“第一”、“第二”和“第三”等仅作为标记使用,不是对其对象的数量限制。
46.下面结合附图对本公开示例实施方式进行详细说明。
47.图1是根据一示例性实施例示出的一种图像处理方法的流程图,如图1所示,图像处理方法可以包括以下步骤。
48.在步骤s110中,获取待处理图像的初始纹理坐标。
49.本公开实施例中,待处理图像可以包括但不限于用户拍摄的图像、网站上下载的图像、应用软件上展示的图像等。
50.图2是根据一示例示出的一种待处理图像的示意图。
51.本公开实施例中,例如,可以获取图2所示的待处理图像的纹理坐标作为初始纹理坐标。
52.在示例性实施例中,初始纹理坐标可以包括第一方向初始纹理坐标和第二方向初始纹理坐标,第一方向初始纹理坐标所在的第一方向和第二方向初始纹理坐标所在的第二方向垂直。
53.例如,第一方向初始纹理坐标可以为水平方向纹理坐标,第二方向初始纹理坐标可以为垂直方向纹理坐标。
54.在步骤s120中,确定初始纹理坐标在各个时刻的目标偏移量。
55.本公开实施例中,可以分别确定待处理图像的初始纹理坐标在各个时刻的目标偏移量。
56.其中,目标偏移量可以是数值形式,也可以是向量形式。
57.本公开实施例中,可以分别确定待处理图像的初始纹理坐标在各个时刻的目标偏
移量。
58.本公开实施例中,各个时刻可以包括一个或多个时刻,例如第一时刻、第二时刻
……
。在下面的举例说明中,均以确定第一时刻的目标偏移量、从而确定第一时刻的目标纹理坐标为例进行说明,其他时刻与第一时刻的处理方法类似,本公开不再赘述。
59.其中,时刻可以为真实时刻,也可以为计算机的程序运行的时刻,本公开对此不作限定。
60.本公开实施例中,可以使用余弦函数确定初始纹理坐标在第一时刻的目标偏移量,也可以使用纹理采样函数确定初始纹理坐标在第一时刻的目标偏移量。
61.在步骤s130中,根据初始纹理坐标和各个时刻的目标偏移量,确定各个时刻的目标纹理坐标。
62.本公开实施例中,可以将各个时刻的目标偏移量叠加至初始纹理坐标,获得各个时刻的目标纹理坐标。
63.本公开实施例中,若目标偏移量是数值形式,可以使用目标方向向量对目标偏移量进行处理,然后再叠加至初始纹理坐标,其中,目标方向向量的维度和初始纹理坐标的维度相同。
64.本公开实施例中,若目标偏移量是向量形式,可以直接将目标偏移量叠加至初始纹理坐标,也可以先使用像素扭曲振幅和协同调节参数对目标偏移量进行处理,再叠加至初始纹理坐标。
65.其中,像素扭曲振幅可以用于控制图像整体的运动趋势,像素扭曲振幅越大,目标扭曲图像的扭曲程度越大。
66.在步骤s140中,根据各个时刻的目标纹理坐标,生成各个时刻的目标扭曲图像。
67.本公开实施例中,以第一时刻为例,可以根据第一时刻的目标纹理坐标对待处理图像进行采样,生成第一时刻的目标扭曲图像。
68.图3是根据一示例示出的一种目标扭曲图像的示意图。
69.图4是根据一示例示出的另一种目标扭曲图像的示意图。
70.本公开实施例中,第一时刻的目标扭曲图像可以如图3或图4所示,可以看出,图3所示的目标扭曲图像风格自然、美观,可以让人联想到自然界水波粼粼的场景,图4所示的目标扭曲图像画面和谐、规律,具有数学美,可以让人联想到海浪波动的景象。
71.具体地,可以根据第一时刻的目标纹理坐标对待处理图像进行采样,获得输出颜色值,将输出颜色值渲染至对应的像素点,获得第一时刻的目标扭曲图像。
72.在步骤s150中,根据各个时刻的目标扭曲图像,生成目标动态扭曲图像。
73.本公开实施例中,可以根据第一时刻的目标扭曲图像、第二时刻的目标扭曲图像、
……
,按照时间顺序拼接,生成目标动态扭曲图像。
74.例如,使用上述方法对图5所示的待处理图像进行处理,可以获得图6所示的某一时刻的目标扭曲图像,根据两张或多张如图6所示的不同时刻的目标扭曲图像可以生成目标动态扭曲图像。
75.本公开实施例中,生成的目标动态扭曲图像可以显示在客户端,供用户观看;生成的目标动态扭曲图像也可以使用在直播软件或视频播放软件中,供用户观看,可以提升用户体验,增加用户黏度。
76.本公开实施例提供的图像处理方法,可以确定初始纹理坐标在各个时刻的目标偏移量,并根据目标偏移量获得目标纹理坐标,从而简单高效地获得目标扭曲图像和目标动态扭曲图像,可以实时模拟动态波动的图像效果,提高了画面真实性与吸引力,从而提升用户体验,增加用户粘度。此外,该方法实现简单,可以节省计算资源,提高计算效率,从而可以部署在移动端。
77.此外,在本公开一些实施例中,该方法使用余弦函数或使用纹理采样函数都可以快速地计算出目标偏移量,节省设备资源,从而可以部署在移动端,并且,在cpu和gpu能力有限的设备上也可以高效运行。
78.图7是根据一示例性实施例示出的另一种图像处理方法的流程图,如图9所示,图像处理方法可以包括以下步骤。
79.在步骤s710中,获取待处理图像的初始纹理坐标。
80.本公开实施例中,例如可以获取如图2或图5所示的待处理图像。
81.在步骤s720中,获取波动速度和像素扭曲周期。
82.本公开实施例中,波动速度是用于控制待处理图像运动程度的参数,其中波动速度可以作为下述余弦函数的频率,波动速度越大,图像运动越剧烈;像素扭曲周期是用于控制根据待处理图像生成的目标动态扭曲图像中的弦波的数量的参数,即像素扭曲周期可以控制图像内弦波的数量,图像扭曲周期越大,图像内出现的弦波数量越多。
83.例如,波动速度(speed)的数值可以为1、3、4、9等,像素扭曲周期(distortionintensity)的数值可以为8、9、12、15等。例如,波动速度的数值为3、像素扭曲周期为12。
84.在实际应用中,本领域技术人员也可以根据实际情况设置波动速度和像素扭曲周期的数值,本公开对此不作限定。
85.在步骤s730中,使用余弦函数处理波动速度、像素扭曲周期和目标方向初始纹理坐标,确定各个时刻的目标偏移量。
86.其中,目标方向初始纹理坐标为第一方向初始纹理坐标或第二方向初始纹理坐标。
87.本公开实施例中,第一方向初始纹理坐标可以为水平方向初始纹理坐标,第二方向初始纹理坐标可以为垂直方向初始纹理坐标。
88.以第一时刻为例,本公开实施例中,可以将波动速度作为余弦函数的频率、将第一时刻作为余弦函数的时间(time),根据水平方向初始纹理坐标(uv.x)或者垂直方向初始纹理坐标(uv.y)和像素扭曲周期确定余弦函数的初相(初始相位),通过余弦函数获得第一时刻的目标偏移量(dist),公式可以为:
89.dist=cos(speed
×
time-abs(1.0-uv.x)
×
distortionintensity)
ꢀꢀꢀ
(1)
90.其中,cos表示余弦函数,abs表示取绝对值的函数,dist表示目标偏移量,speed表示波动速度,time表示时间,uv.x表示水平方向初始纹理坐标,distortionintensity表示像素扭曲周期。
91.或者,公式可以为:
92.dist=cos(speed
×
time-abs(1.0-uv.y)
×
distortionintensity)
ꢀꢀꢀ
(2)
93.其中,uv.y表示水平方向初始纹理坐标。
94.其他时刻的目标偏移量的获得方法和第一时刻的目标偏移量的获得方法类似,本公开在此不再赘述。
95.本公开实施例中,可以使用余弦函数简单高效地确定待处理图像的初始纹理坐标在各个时刻的目标偏移量,从而根据目标偏移量确定目标纹理坐标,以实现模拟动态波浪的效果,该方法使用余弦函数可以快速地计算出目标偏移量,节省设备资源,从而可以部署在移动端。
96.在步骤s740中,获取像素扭曲振幅、协同调节参数和目标方向向量。
97.本公开实施例中,像素扭曲振幅是用于调控待处理图像的初始纹理坐标的偏移范围的参数,即像素扭曲振幅可以调控待处理图像中每个像素的纹理坐标的偏移范围;协同调节参数是用于调节像素扭曲振幅的粒度的参数,即协同调节参数可以为预设常数,便于调节像素扭曲振幅;目标方向向量是用于调节第一方向初始纹理坐标和所述第二方向初始纹理坐标的向量,其中目标方向向量可以为二维向量,用于分别调节第一方向初始纹理坐标和第二方向初始纹理坐标。
98.例如,协同调节参数(distortionamount)的数值可以为0.001、0.01、0.1等,像素扭曲振幅(power)的数值可以为7、8.2、10等。例如,协同调节参数的数值为0.01、像素扭曲振幅的数值为8.2。
99.例如,目标方向向量可以为vec2(0.0,1.0)、vec2(1.0,0.0)、vec2(0.5,0.5)、vec2(0.6,0.4)、vec2(0.6,0.8)。其中,目标方向向量的第一维可以用于调节水平方向初始纹理坐标,目标方向向量的第二维可以用于调节垂直方向初始纹理坐标。
100.在实际应用中,本领域技术人员也可以根据实际情况设置像素扭曲振幅、协同调节参数和目标方向向量,本公开对此不作限定。
101.在步骤s750中,根据各个时刻的目标偏移量、像素扭曲振幅、协同调节参数、目标方向向量以及初始纹理坐标,确定各个时刻的目标纹理坐标。
102.以第一时刻为例,本公开实施例中,可以将第一时刻的目标偏移量、像素扭曲周期和协同调节参数相乘,再乘目标方向向量,然后加上初始纹理坐标,得到第一时刻的目标纹理坐标,公式可以为:
[0103][0104]
其中,表示目标纹理坐标,表示初始纹理坐标,表示目标方向向量,其中和均为二维向量。
[0105]
其中,像素扭曲周期、协同调节参数和目标方向向量均可以根据实际情况调节。
[0106]
本公开实施例中,可以根据使用余弦函数确定出的待处理图像在各个时刻的目标偏移量确定目标纹理坐标,从而生成目标扭曲图像,可以实现模拟动态波浪的效果,该方法可以快速生成目标动态扭曲图像,节省设备资源,从而可以部署在移动端。
[0107]
在步骤s760中,根据各个时刻的目标纹理坐标,生成各个时刻的目标扭曲图像。
[0108]
本公开实施例中,根据各个时刻的目标纹理坐标可以生成图4或者如图6~图8所示的各个时刻的目标扭曲图像。
[0109]
在步骤s770中,根据各个时刻的目标扭曲图像,生成目标动态扭曲图像。
[0110]
图7所示的实施例中与图1所示的实施例中相同的步骤可以参见图1所示的实施例
的文字描述,本公开在此不再赘述。
[0111]
本公开实施例提供的图像处理方法,可以使用余弦函数简单高效地对待处理图像进行扭曲液化,实现模拟动态波浪的效果,获得画面和谐、规律且具有数学美的目标扭曲图像和目标动态扭曲图像,可以让人联想到海浪波动的景象。此外,该方法使用余弦函数可以快速地计算出目标偏移量,节省设备资源,从而可以部署在移动端。并且,在cpu和gpu能力有限的设备上也可以高效运行。
[0112]
图8是根据一示例性实施例示出的另一种图像处理方法的流程图,如图10所示,图像处理方法可以包括以下步骤。
[0113]
在步骤s810中,获取待处理图像的初始纹理坐标。
[0114]
图9是根据一示例示出的再一种待处理图像的示意图。
[0115]
本公开实施例中,例如可以获取如图2或图9所示的待处理图像。
[0116]
在步骤s820中,获取柏林噪声图像。
[0117]
其中,柏林噪声指由ken perlin发明的自然噪声生成算法。
[0118]
本公开实施例中,可以通过纹理采样函数对柏林噪声图像进行处理,以获得初始纹理坐标的目标偏移量。
[0119]
图10是根据一示例示出的一种柏林噪声图像的示意图。
[0120]
本公开实施例中,例如可以获取如图10所示的柏林噪声图像,需要说明的是,该柏林噪声图像可以是彩色的。
[0121]
在步骤s830中,使用纹理采样函数处理柏林噪声图像和初始纹理坐标,确定初始纹理坐标在各个时刻的目标偏移量。
[0122]
本公开实施例中,可以使用纹理采样函数(例如texture2d)处理柏林噪声图像和初始纹理坐标,可以获得该柏林噪声图像在该初始纹理坐标处的颜色采样值,可以将该颜色采样值作为目标偏移量。
[0123]
本公开实施例提供的图像处理方法,可以使用纹理采样函数简单高效地确定待处理图像的初始纹理坐标在各个时刻的目标偏移量,从而根据目标偏移量确定目标纹理坐标,以实现模拟动态波浪的效果,该方法使用纹理采样函数可以快速地计算出目标偏移量,节省设备资源,从而可以部署在移动端。
[0124]
在示例性实施例中,使用纹理采样函数处理柏林噪声图像和初始纹理坐标,获得初始纹理坐标在各个时刻的目标偏移量的步骤可以包括:获取第一层采样偏移和第二层采样偏移,以及第一层偏移量的第一权重;使用纹理采样函数处理柏林噪声图像、初始纹理坐标、以及第一层采样偏移,确定各个时刻的第一层偏移量;使用纹理采样函数处理柏林噪声图像、初始纹理坐标、第二层采样偏移、以及第一层偏移量及其第一权重,确定各个时刻的目标偏移量。
[0125]
本公开实施例中,第一层采样偏移是用于调控第一次采样柏林噪声图像时的位置偏移的参数,第二层采样偏移是用于调控第二次采样柏林噪声图像时的位置偏移的参数,第三层采样偏移是用于调控第三次采样所述柏林噪声图像时的位置偏移的参数,第一层偏移量的第一权重是用于调控第一层偏移量的权重的参数,第二层偏移量的第二权重是用于调控第二层偏移量的权重的参数。
[0126]
下面以通过两次纹理采样函数处理获得目标偏移量为例进行说明,但本公开并不
限定于此。
[0127]
本公开实施例中,可以设置采样偏移向量sampleoff,该采样偏移向量可以为二维向量,其每一维可以表示每一层的采样偏移。
[0128]
例如,采样偏移向量设置为vec2(1.2,1.35)、vec2(1.05,1.1)、vec2(1.38,1.25)等,以采样偏移向量设置为vec2(1.2,1.1)为例,则第一层采样偏移可以为1.2,第二层采样偏移可以为1.1。
[0129]
本公开实施例中,可以设置每一层偏移量的权重,例如,第一层偏移量的第一权重为0.65。
[0130]
以第一时刻为例,本公开实施例中,可以将柏林噪声图像、初始纹理坐标和第一层采样偏移输入至纹理采样函数(例如texture2d),获得第一时刻的第一层偏移量;可以将柏林噪声图像、初始纹理坐标、第二层采样偏移、以及第一层偏移量及其第一权重输入至texture2d函数,获得第一时刻的目标偏移量。
[0131]
本公开实施例提供的图像处理方法,使用纹理采样函数对柏林操作图像进行两次或两次以上采样,可以使得采样获得的目标偏移量更加离散随机,从而使得获得的目标扭曲图像更加离散随机,动态效果更真实。
[0132]
在示例性实施例中,使用纹理采样函数处理柏林噪声图像、初始纹理坐标、第二层采样偏移向量、以及第一层偏移量及其第一权重,确定各个时刻的目标偏移量的步骤可以包括:获得第三层采样偏移,以及第二层偏移量的第二权重;使用纹理采样函数处理柏林噪声图像、初始纹理坐标、第二层采样偏移、以及第一层偏移量及其第一权重,确定各个时刻对应的第二层偏移量;使用纹理采样函数处理柏林噪声图像、初始纹理坐标、第三层采样偏移、以及第二层偏移量及其第二权重,确定各个时刻的目标偏移量。
[0133]
下面以通过三次纹理采样函数处理获得目标偏移量为例进行说明,但本公开并不限定于此。
[0134]
本公开实施例中,可以设置采样偏移向量sampleoff,该采样偏移向量可以为三维向量,其每一维可以表示每一层的采样偏移。
[0135]
例如,采样偏移向量设置为:vec3(1.2,1.1,1.23)、vec3(1.05,1.1,1.33)、vec3(1.2,1.35,1.23)等,以采样偏移向量设置为vec3(1.2,1.1,1.23)为例,则第一层采样偏移可以为1.2,第二层采样偏移可以为1.1,第三层的采样偏移可以为1.23。
[0136]
本公开实施例中,可以设置每一层偏移量的权重,权重可以为0.5、0.65、0.1、0.2、0.8等。例如,第一层偏移量的第一权重为0.65,第二层偏移量的第二权重为0.01。
[0137]
本公开实施例中,上述迭代过程次数越多,生成的目标扭曲图像更离散随机,模拟水纹波动的效果越真实。
[0138]
以第一时刻为例,本公开实施例中,可以将柏林噪声图像、初始纹理坐标和第一层采样偏移输入至texture2d函数,获得第一时刻的第一层偏移量;可以将柏林噪声图像、初始纹理坐标、第二层采样偏移、以及第一层偏移量及其第一权重输入至texture2d函数,获得第一时刻的第二层偏移量;可以将柏林噪声图像、初始纹理坐标、第三层采样偏移、以及第二层偏移量及其第二权重输入至texture2d函数,获得第一时刻的目标偏移量。
[0139]
本公开实施例提供的图像处理方法,使用纹理采样函数对柏林操作图像进行三次或三次以上采样,可以使得采样获得的目标偏移量更加离散随机,从而使得获得的目标扭
曲图像更加离散随机,动态效果更真实。
[0140]
在示例性实施例中,使用纹理采样函数处理柏林噪声图像、初始纹理坐标、以及第一层采样偏移,确定各个时刻的第一层偏移量的步骤可以包括:获取待处理图像的宽高比和第一层的时间权重;根据待处理图像的宽高比、第一方向初始纹理坐标、第一层采样偏移、和第二方向初始纹理坐标,确定第一中间坐标向量;根据第一层的时间权重和第一时刻,确定第二中间坐标向量;根据第一中间坐标向量和第二中间坐标向量,确定目标中间坐标向量;使用纹理采样函数处理柏林噪声图像和目标中间坐标向量,确定第一时刻的第一层偏移量,以获得各个时刻的第一层偏移量。
[0141]
下面以获得第一时刻的第一层偏移量为例进行说明。
[0142]
本公开实施例中,可以设置时间权重向量timehelp,该时间权重向量可以为三维向量,其每一维可以表示每一层的时间权重。
[0143]
例如,时间权重向量设置为vec3(0.1,0.1,0.1)、vec3(0.2,0.2,0.2)、vec3(0.1,0.3,0.2)等,以采样偏移向量设置为vec3(0.1,0.1,0.1)为例,则第一层的时间权重、第二层的时间权重和第三层的时间权重都可以为0.1。
[0144]
需要说明的是,每一层的时间权重可以相同,也可以不同,本公开对此不做限制。
[0145]
本公开实施例中,可以获取待处理图像的宽和高,从而获得待处理图像的宽高比。
[0146]
其中,待处理图像的宽的数值可以为360、720、1280等,待处理图像的高的数值可以为640、1280、2560等。
[0147]
以待处理图像是手机上显示的图像为例,待处理图像的宽高比也可以为该手机的屏幕的宽高比。以720*1280的屏幕为例,获得待处理图像的宽高比的可以为:720/1280。
[0148]
本公开实施例中,可以待处理图像的宽高比(ratio)和第一方向初始纹理坐标相乘作为第一中间坐标向量的横坐标,将第一层采样偏移和第二方向初始纹理坐标相乘作为第一中间坐标向量的纵坐标。
[0149]
本公开实施例中,可以将第一层的时间权重(timehelp.x)和第一时刻(time1)相乘,将相乘的结果转换为第二中间坐标向量;可以将第一中间坐标向量和第二中间坐标向量相加,作为目标中间坐标向量。
[0150]
本公开实施例中,可以将柏林噪声图像(noisetexture)作为texture2d函数的第一个输入参数,将目标中间坐标向量作为texture2d函数的第二个输入参数,texture2d函数的输出为第一时刻的第一层偏移量(noise1),公式可以为:
[0151][0152]
其中,表示第一中间坐标向量,其横坐标可以为待处理图像的宽高比ratio,纵坐标可以为第一层采样偏移(例如1.2),表示第二中间坐标向量,其横纵坐标均为第一层时间权重和第一时刻的乘积,texture2d表示纹理采样函数,表示第一层偏移量。
[0153]
本公开实施例中,在待处理图像是长方形的情况下,通过uv*vec2(ratio,1.2)处理,即将水平方向初始纹理坐标和宽高比相乘,可以将待处理图像转换为正方形,将垂直方向初始纹理坐标和采样偏移相乘,可以使结果更离散随机。
[0154]
使用纹理采样函数获得各个时刻的第二层偏移量和第三层偏移量的步骤与获得
各个时刻的第一层偏移量的步骤类似,具体公式可以为:
[0155][0156][0157]
其中,表示第二层偏移量,表示第三层偏移量(也可以表示目标偏移量),在公式(5)中,表示第二次采样过程中的第一中间坐标向量,其横坐标可以为待处理图像的宽高比ratio,纵坐标可以为第二层采样偏移(例如1.1),表示第二次采样过程中的第二中间坐标向量,其横纵坐标均为第二层时间权重和第一时刻的乘积;在公式(6)中,表示第三次采样过程中的第一中间坐标向量,其横坐标可以为待处理图像的宽高比ratio,纵坐标可以为第二层采样偏移(例如1.23),表示第三次采样过程中的第二中间坐标向量,其横纵坐标均为第三层时间权重和第一时刻的乘积。
[0158]
本公开实施例中,与第一层迭代过程不同的是,在第二层迭代和第三层迭代过程中,第一中间坐标向量和第二中间坐标向量相加之后,再和上一层的偏移量及其权重的乘积相加,得到目标中间坐标向量。
[0159]
本公开实施例提供的图像处理方法,通过设置每层的时间权重和采样偏移,可以使采样获得的每层偏移量更加随机,从而可以使得采样获得的目标偏移量更加离散随机。
[0160]
在步骤s840中,获取像素扭曲振幅和协同调节参数。
[0161]
本公开实施例中,像素扭曲振幅是用于调控待处理图像的初始纹理坐标的偏移范围的参数,协同调节参数是用于调节像素扭曲振幅的粒度的参数。
[0162]
在步骤s850中,根据各个时刻的目标偏移量、像素扭曲振幅、协同调节参数以及初始纹理坐标,确定目标纹理坐标。
[0163]
以第一时刻为例,本公开实施例中,可以将第一时刻的目标偏移量(noise)、像素扭曲周期和协同调节参数相乘,然后加上初始纹理坐标,得到第一时刻的目标纹理坐标。
[0164]
其中,像素扭曲周期和协同调节参数均可以根据实际情况调节。
[0165]
本公开实施例中,可以根据使用纹理采样函数确定出的待处理图像在各个时刻的目标偏移量确定目标纹理坐标,从而生成目标扭曲图像,可以实现模拟动态波浪的效果,该方法可以快速生成目标动态扭曲图像,节省设备资源,从而可以部署在移动端。
[0166]
在步骤s860中,根据各个时刻的目标纹理坐标,生成各个时刻的目标扭曲图像。
[0167]
图11是根据一示例示出的再一种目标扭曲图像的示意图。
[0168]
本公开实施例中,根据各个时刻的目标纹理坐标可以生成如图3或图11所示的各个时刻的目标扭曲图像。
[0169]
在步骤s870中,根据各个时刻的目标扭曲图像,生成目标动态扭曲图像。
[0170]
图8所示的实施例中与图1或图7所示的实施例中相同的步骤可以参见图1或图7所示的实施例的文字描述,本公开在此不再赘述。
[0171]
本公开实施例提供的图像处理方法,可以使用纹理采样函数简单高效地对待处理图像进行扭曲液化,实现模拟动态水纹的效果,获得风格自然、美观的目标扭曲图像和目标动态扭曲图像,可以让人联想到自然界水波粼粼的场景。此外,上述迭代过程次数越多,生成的目标扭曲图像更离散随机,模拟水纹波动的效果越真实。此外,该方法可以使用纹理采
样函数快速地计算出目标偏移量,节省设备资源,从而可以部署在移动端。并且,在cpu和gpu能力有限的设备上也可以高效运行。
[0172]
图12是根据一示例性实施例示出的一种图像处理装置的框图。参照图12,该装置1200可以包括获取模块1210、确定模块1220和生成模块1230。
[0173]
其中,获取模块1210可以被配置为执行获取待处理图像的初始纹理坐标;确定模块1220可以被配置为执行确定初始纹理坐标在各个时刻的目标偏移量;确定模块1220还可以被配置为执行根据初始纹理坐标和各个时刻的目标偏移量,获得各个时刻的目标纹理坐标;生成模块1230可以被配置为执行根据各个时刻的目标纹理坐标,生成各个时刻的目标扭曲图像;生成模块1230还可以被配置为执行根据各个时刻的目标扭曲图像,生成目标动态扭曲图像。
[0174]
在本公开的一些示例性实施例中,初始纹理坐标包括第一方向初始纹理坐标和第二方向初始纹理坐标,所述第一方向初始纹理坐标所在的第一方向和所述第二方向初始纹理坐标所在的第二方向垂直;获取模块还可以被配置为执行获取波动速度和像素扭曲周期,其中所述波动速度是用于控制所述待处理图像运动程度的参数,所述像素扭曲周期是用于控制根据所述待处理图像生成的所述目标动态扭曲图像中的弦波的数量的参数;确定模块还可以被配置为执行使用余弦函数处理波动速度、像素扭曲周期和目标方向初始纹理坐标,确定各个时刻的目标偏移量;其中,目标方向初始纹理坐标为第一方向初始纹理坐标或第二方向初始纹理坐标。
[0175]
在本公开的一些示例性实施例中,获取模块还可以被配置为执行获取像素扭曲振幅、协同调节参数和目标方向向量,其中所述像素扭曲振幅是用于调控所述待处理图像的初始纹理坐标的偏移范围的参数,所述协同调节参数是用于调节所述像素扭曲振幅的粒度的参数,所述目标方向向量是用于调节所述第一方向初始纹理坐标和所述第二方向初始纹理坐标的向量;确定模块还可以被配置为执行根据各个时刻的目标偏移量、像素扭曲振幅、协同调节参数、目标方向向量以及初始纹理坐标,确定各个时刻的目标纹理坐标。
[0176]
在本公开的一些示例性实施例中,获取单元还可以被配置为执行获取柏林噪声图像;确定模块还可以被配置为执行使用纹理采样函数处理柏林噪声图像和初始纹理坐标,确定初始纹理坐标在各个时刻的目标偏移量。
[0177]
在本公开的一些示例性实施例中,获取模块还可以被配置为执行获取第一层采样偏移和第二层采样偏移,以及第一层偏移量的第一权重,其中,所述第一层采样偏移是用于调控第一次采样所述柏林噪声图像时的位置偏移的参数,所述第二层采样偏移是用于调控第二次采样所述柏林噪声图像时的位置偏移的参数,所述第一层偏移量的第一权重是用于调控所述第一层偏移量的权重的参数;确定模块还可以被配置为执行使用纹理采样函数处理柏林噪声图像、初始纹理坐标、以及第一层采样偏移,确定各个时刻的第一层偏移量;确定模块还可以被配置为执行使用纹理采样函数处理柏林噪声图像、初始纹理坐标、第二层采样偏移、以及第一层偏移量及其第一权重,确定各个时刻的目标偏移量。
[0178]
在本公开的一些示例性实施例中,获取模块还可以被配置为执行获取第三层采样偏移,以及第二层偏移量的第二权重,其中所述第三层采样偏移是用于调控第三次采样所述柏林噪声图像时的位置偏移的参数,所述第二层偏移量的第二权重是用于调控所述第二层偏移量的权重的参数;确定模块还可以被配置为执行使用纹理采样函数处理柏林噪声图
像、初始纹理坐标、第二层采样偏移、以及第一层偏移量及其第一权重,确定各个时刻对应的第二层偏移量;确定模块还可以被配置为执行使用纹理采样函数处理柏林噪声图像、初始纹理坐标、第三层采样偏移、以及第二层偏移量及其第二权重,确定各个时刻的目标偏移量。
[0179]
在本公开的一些示例性实施例中,初始纹理坐标包括第一方向初始纹理坐标和第二方向初始纹理坐标,各个时刻包括第一时刻;获取模块还可以被配置为执行获取待处理图像的宽高比和第一层的时间权重;确定模块还可以被配置为执行根据待处理图像的宽高比、第一方向初始纹理坐标、第一层采样偏移、和第二方向初始纹理坐标,确定第一中间坐标向量;确定模块还可以被配置为执行根据第一层的时间权重和第一时刻,确定第二中间坐标向量;确定模块还可以被配置为执行根据第一中间坐标向量和第二中间坐标向量,确定目标中间坐标向量;确定模块还可以被配置为执行使用纹理采样函数处理柏林噪声图像和目标中间坐标向量,确定第一时刻的第一层偏移量。
[0180]
在本公开的一些示例性实施例中,获取单元还可以被配置为执行获取像素扭曲振幅和协同调节参数,其中所述像素扭曲振幅是用于调控所述待处理图像的初始纹理坐标的偏移范围的参数,所述协同调节参数是用于调节所述像素扭曲振幅的粒度的参数;确定模块还可以被配置为执行根据各个时刻的目标偏移量、像素扭曲振幅、协同调节参数以及初始纹理坐标,确定各个时刻的目标纹理坐标。
[0181]
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0182]
下面参照图13来描述根据本公开的这种实施例的电子设备1300。图13显示的电子设备1300仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0183]
如图13所示,电子设备1300以通用计算设备的形式表现。电子设备1300的组件可以包括但不限于:上述至少一个处理单元1310、上述至少一个存储单元1320、连接不同系统组件(包括存储单元1320和处理单元1310)的总线1330、显示单元1340。
[0184]
其中,存储单元存储有程序代码,程序代码可以被处理单元1310执行,使得处理单元1310执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施例的步骤。例如,处理单元1310可以执行如图1中所示的步骤s110,获取待处理图像的初始纹理坐标;步骤s120,确定初始纹理坐标在各个时刻的目标偏移量;步骤s130,根据初始纹理坐标和各个时刻的目标偏移量,获得各个时刻的目标纹理坐标;步骤s140,根据各个时刻的目标纹理坐标,生成各个时刻的目标扭曲图像;步骤s150,根据各个时刻的目标扭曲图像,生成目标动态扭曲图像。
[0185]
又如,电子设备可以实现如图1所示的各个步骤。
[0186]
存储单元1320可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)1321和/或高速缓存存储单元1322,还可以进一步包括只读存储单元(rom)1323。
[0187]
存储单元1320还可以包括具有一组(至少一个)程序模块1325的程序/实用工具1324,这样的程序模块1325包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
[0188]
总线1330可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构
的局域总线。
[0189]
电子设备1300也可以与一个或多个外部设备1370(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1300交互的设备通信,和/或与使得该电子设备1300能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口1350进行。并且,电子设备1300还可以通过网络适配器1360与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器1360通过总线1330与电子设备1300的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1300使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
[0190]
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施例的方法。
[0191]
在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器,上述指令可由装置的处理器执行以完成上述方法。可选地,计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
[0192]
在示例性实施例中,还提供一种计算机程序产品,包括计算机程序/指令,计算机程序/指令被处理器执行时实现上述实施例中的图像处理方法。
[0193]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
[0194]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献