图像合成方法和装置转让专利

申请号 : CN201810974975.2

文献号 : CN110072046B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨辉王沈韬胡博远

申请人 : 北京微播视界科技有限公司

摘要 :

本公开公开了一种图像合成方法、装置、电子设备和计算机可读存储介质。其中该图像合成方法包括:获取虚拟对象;获取图像传感器采集到的视频;识别所述视频中的人手,得到人手信息;获取与所述虚拟对象和所述人手信息对应的图像渲染信息;根据所述图像渲染信息,将所述虚拟对象和人手合成渲染,生成合成图像。本公开实施例通过采取该技术方案,解决了现有技术中虚拟对象无法跟随人手移动以及虚拟对象挂载到人手上的方式不灵活的技术问题。

权利要求 :

1.一种图像合成方法,其特征在于,包括:获取虚拟对象的名称或ID;

获取图像传感器采集到的视频;

识别所述视频中的人手,得到人手信息;

读取渲染配置文件;

使用所述虚拟对象的名称或ID以及人手信息,从所述渲染配置文件中获取所述虚拟对象以及图像渲染信息,其中获取所述图像渲染信息包括获取虚拟对象和人手的渲染位置以及确定虚拟对象和人手的渲染顺序;

根据所述图像渲染信息,将所述虚拟对象和人手合成渲染,生成合成图像。

2.如权利要求1中所述的图像合成方法,其特征在于,所述识别所述视频中的人手,得到人手信息,包括:识别所述视频中的人手,获取人手的位置以及人手关键点。

3.如权利要求1所述的图像合成方法,其特征在于:所述渲染位置由人手位置和/或人手骨架关键点确定;所述渲染顺序由虚拟对象的类型确定。

4.如权利要求1中所述的图像合成方法,其特征在于:所述渲染信息包括虚拟对象需要跟随的人手关键点编号、虚拟对象的缩放比例、渲染模式、渲染顺序中的一个或多个。

5.如权利要求1所述的图像合成方法,其特征在于,在所述读取渲染配置文件之前,还包括:设置渲染配置文件,对所述渲染信息进行设置。

6.如权利要求1所述的图像合成方法,其特征在于,所述识别所述视频中的人手,得到人手信息,还包括:识别所述视频中的人手,得到人手的角度。

7.如权利要求6所述的图像合成方法,其特征在于,所述图像渲染信息,还包括:获取虚拟对象和人手的渲染角度。

8.一种图像合成装置,其特征在于,包括:虚拟对象获取模块,用于获取虚拟对象的名称;

视频获取模块,用于获取图像传感器采集到的视频;

人手识别模块,用于识别所述视频中的人手,得到人手信息;

渲染信息获取模块,用于使用所述虚拟对象的名称以及所述人手信息,使用所述虚拟对象的名称以及人手信息,从所述渲染配置文件中获取所述虚拟对象以及图像渲染信息,其中获取所述图像渲染信息包括获取虚拟对象和人手的渲染位置以及确定虚拟对象和人手的渲染顺序;

图像合成模块,用于根据所述图像渲染信息,将所述虚拟对象和人手合成渲染,生成合成图像。

9.一种电子设备,包括:

存储器,用于存储非暂时性计算机可读指令;以及处理器,用于运行所述计算机可读指令,使得所述处理器执行时实现根据权利要求1-7中任意一项所述的图像合成方法。

10.一种计算机可读存储介质,用于存储非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时,使得所述计算机执行权利要求1-7中任意一项所述的图像合成方法。

说明书 :

图像合成方法和装置

技术领域

[0001] 本公开涉及图像处理领域,尤其涉及一种图像合成方法、装置、电子设备及计算机可读存储介质。

背景技术

[0002] 随着计算机技术的发展,智能终端的应用范围得到了广泛的提高,例如可以通过智能终端听音乐、玩游戏、上网聊天和拍照等。对于智能终端的拍照技术来说,其拍照像素已经达到千万像素以上,具有较高的清晰度和媲美专业相机的拍照效果。
[0003] 目前在采用智能终端进行拍照时,不仅可以使用出厂时内置的拍照软件实现传统功能的拍照效果,还可以通过从网络端下载应用程序(Application,简称为:APP)来实现具有附加功能的拍照效果,例如可以实现暗光检测、美颜相机和超级像素等功能的APP。智能终端的美颜功能通常包括肤色调整、磨皮、大眼和瘦脸等美颜处理效果,能对图像中已识别出的所有人脸进行相同程度的美颜处理。目前也有APP可以实现简单的合成功能,如将一个面具与人脸合成在一起。
[0004] 然而目前的图像合成功能,合成后只能位于固定位置,素材无法跟随目标物体移动,且素材挂载到目标物体上的方式不灵活,一般只能挂载到屏幕的预定位置上。

发明内容

[0005] 第一方面,本公开实施例提供一种图像合成方法,包括:获取虚拟对象;获取图像传感器采集到的视频;识别所述视频中的人手,得到人手信息;获取与所述虚拟对象和所述人手信息对应的图像渲染信息;根据所述图像渲染信息,将所述虚拟对象和人手合成渲染,生成合成图像。
[0006] 进一步的,所述识别所述视频中的人手,得到人手信息,包括:识别所述视频中的人手,获取人手的位置以及人手关键点。
[0007] 进一步的,所述获取与所述虚拟对象和所述人手信息对应的图像渲染信息,包括:获取虚拟对象和人手的渲染位置以及渲染顺序。
[0008] 进一步的,所述渲染位置由人手位置和/或人手骨架关键点确定;所述渲染顺序由虚拟对象的类型确定。
[0009] 进一步的,所述根据所述图像渲染信息,将所述虚拟对象和人手合成渲染,生成合成图像,包括:根据所述渲染位置和所述渲染顺序,渲染人手和虚拟对象,生成合成图像。
[0010] 进一步的,所述获取与所述虚拟对象和所述人手信息对应的图像渲染信息,包括:读取渲染配置文件;使用所述虚拟对象以及人手信息,从所述渲染配置文件中获取图像渲染信息。
[0011] 进一步的,所述渲染信息包括虚拟对象需要跟随的人手关键点编号、虚拟对象的缩放比例、渲染模式、渲染顺序中的一个或多个。
[0012] 进一步的,在所述读取渲染配置文件之前,还包括:设置渲染配置文件,对所述渲染信息进行设置。
[0013] 进一步的,所述识别所述视频中的人手,得到人手信息,还包括:识别所述视频中的人手,得到人手的角度。
[0014] 进一步的,所述获取与所述虚拟对象和所述人手信息对应的图像渲染信息,包括:获取虚拟对象和人手的渲染位置、渲染角度以及渲染顺序。
[0015] 第二方面,本公开实施例提供一种图像合成装置,包括:虚拟对象获取模块,用于获取虚拟对象;视频获取模块,用于获取图像传感器采集到的视频;人手识别模块,用于识别所述视频中的人手,得到人手信息;渲染信息获取模块,用于获取与所述虚拟对象和所述人手信息对应的图像渲染信息;图像合成模块,用于根据所述图像渲染信息,将所述虚拟对象和人手合成渲染,生成合成图像。
[0016] 进一步的,进一步的,所述人手识别模块,包括:第一识别模块,用于识别所述视频中的人手;第一信息获取模块,用于获取人手的位置以及人手关键点。
[0017] 进一步的,所述渲染信息获取模块:用于获取虚拟对象和人手的渲染位置以及渲染顺序。
[0018] 进一步的,所述渲染位置由人手位置和/或人手骨架关键点确定;所述渲染顺序由虚拟对象的类型确定。
[0019] 进一步的,所述图像合成模块:用于根据渲染位置和渲染顺序,渲染人手和虚拟对象,生成合成图像。
[0020] 进一步的,所述渲染信息获取模块还包括:读取模块,用于读取渲染配置文件;第一渲染信息获取模块,用于使用所述虚拟对象以及人手信息,从所述渲染配置文件中获取图像渲染信息。
[0021] 进一步的,所述渲染信息包括虚拟对象需要跟随的人手关键点编号、虚拟对象的缩放比例、渲染模式、渲染顺序中的一个或多个。
[0022] 进一步的,所述渲染信息获取模块还可以包括:设置模块,用于设置渲染配置文件,对所述渲染信息进行设置。
[0023] 进一步的,所述人手识别模块,还包括:第二识别模块,用于识别所述视频中的人手;第二信息获取模块,用于获取人手的角度。
[0024] 进一步的,所述渲染信息获取模块:用于获取虚拟对象和人手的渲染位置、渲染角度以及渲染顺序。
[0025] 第三方面,本公开实施例提供一种电子设备,包括:至少一个处理器;以及,[0026] 与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有能被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述第一方面中的任一所述图像合成方法。
[0027] 第四方面,本公开实施例提供一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述第一方面中的任一所述图像合成方法。
[0028] 本公开实施例提供一种图像合成方法、装置、电子设备和计算机可读存储介质。其中该图像合成方法包括:获取虚拟对象;获取图像传感器采集到的视频;识别所述视频中的人手,得到人手信息;获取与所述虚拟对象和所述人手信息对应的图像渲染信息;根据所述图像渲染信息,将所述虚拟对象和人手合成渲染,生成合成图像。本公开实施例通过采取该技术方案,解决了现有技术中虚拟对象无法跟随人手移动以及虚拟对象挂载到人手上的方式不灵活的技术问题。
[0029] 上述说明仅是本公开技术方案的概述,为了能更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为让本公开的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。

附图说明

[0030] 为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0031] 图1为本公开实施例提供的图像合成方法实施例一的流程图;
[0032] 图2a为本公开实施例提供的图像合成方法实施例二中步骤S104的流程图;
[0033] 图2b-2d为本公开实施例的图像合成方法的具体实例的示意图;
[0034] 图3为本公开实施例提供的图像合成装置实施例一的结构示意图;
[0035] 图4为本公开实施例提供的图像合成装置实施例二中渲染信息获取模块的结构示意图
[0036] 图5为根据本公开实施例提供的电子设备的结构示意图;
[0037] 图6为根据本公开实施例提供的计算机可读存储介质的结构示意图;
[0038] 图7为根据本公开实施例提供的图像合成终端的结构示意图。

具体实施方式

[0039] 以下通过特定的具体实例说明本公开的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本公开的其他优点与功效。显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。本公开还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本公开的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
[0040] 需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
[0041] 还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本公开的基本构想,图式中仅显示与本公开中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0042] 另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。
[0043] 图1为本公开实施例提供的图像合成方法实施例一的流程图,本实施例提供的该图像合成方法可以由一图像合成装置来执行,该图像合成装置可以实现为软件,或者实现为软件和硬件的组合,该图像合成装置可以集成设置在图像处理系统中的某设备中,比如图像处理服务器或者图像处理终端设备中。如图1所示,该方法包括如下步骤:
[0044] 步骤S101,获取虚拟对象;
[0045] 此处的虚拟对象可以是任何2D或者3D的虚拟对象,典型的如虚拟的宝剑、虚拟的手枪等虚拟武器,虚拟的笔、虚拟的书等虚拟文具,虚拟的手套、虚拟的戒指等虚拟可穿戴物品等等,在此不做具体的限制,任何可以挂载在人手上的虚拟对象都可以引入到本公开中,虚拟对象可以有类型,比如适合手握的类型,如上述的宝剑、手枪、笔,适合穿戴的类型,如手套、戒指等,适合放置于手掌上的类型,如书等,当然同一个虚拟对象可以有不止一种类型,比如书,既可以放置于手掌上也可以手握。
[0046] 步骤S102,获取图像传感器采集到的视频;
[0047] 图像传感器指可以采集图像的各种设备,典型的图像传感器为摄像机、摄像头、相机等。在该实施例中,所述图像传感器可以是移动终端上的摄像头,比如智能手机上的前置或者后置摄像头,摄像头采集的视频图像可以直接显示在手机的显示屏上,在该步骤中,获取图像传感器所拍摄的图像视频,用于在下一步进一步识别图像。
[0048] 步骤S103,识别所述视频中的人手,得到人手信息;
[0049] 在识别人手时,可以使用颜色特征定位人手的位置,将人手从背景中分割出来,对找到和分割出的人手图像进行特征提取与识别。具体的,使用图像传感器获取图像的颜色信息以及颜色信息的位置信息;将所述颜色信息与预设的人手颜色信息对比;识别第一颜色信息,所述第一颜色信息与所述预设的人手颜色信息的误差小于第一阈值;利用所述第一颜色信息的位置信息形成人手的轮廓。优选的,为了避免环境亮度对颜色信息的干扰,可以将图像传感器采集到的RGB颜色空间的图像数据映射到HSV颜色空间,使用HSV颜色空间中的信息作为对比信息,优选的,将HSV颜色空间中的色调值作为颜色信息,色调信息受亮度的影响最小,可以很好的过滤亮度的干扰。使用人手轮廓粗略确定人手的位置,之后对人手进行关键点提取。在图像上进行人手关键点提取,相当于寻找每个人手轮廓关键点在人手图像中的对应位置坐标,即关键点定位,这一过程需要基于关键点对应的特征进行,在获得了能够清晰标识关键点的图像特征之后,依据此特征在图像中进行搜索比对,在图像上精确定位关键点的位置。由于关键点在图像中仅占据非常小的面积(通常只有几个至几十个像素的大小),关键点对应的特征在图像上所占据的区域通常也是非常有限和局部的,目前用的特征提取方式有两种:(1)沿轮廓垂向的一维范围图像特征提取;(2)关键点方形邻域的二维范围图像特征提取。上述两种方式有很多种实现方法,如ASM和AAM类方法、统计能量函数类方法、回归分析方法、深度学习方法、分类器方法、批量提取方法等等。上述各种实现方法所使用的关键点个数,准确度以及速度各不相同,适用于不同的应用场景。同样的,对于其他的目标物体,也可以使用同样的原理来识别目标物体。
[0050] 在识别出人手之后,在人手的外轮廓之外圈定一个多边形,作为人手的外接检测框,该外接检测框用于替代所述人手,描述所述人手的位置,在此以矩形为例,在识别出人手的关键点之后,可以计算人手最宽处的宽度以及最长处的长度,以该宽度和长度识别出人手的外接检测框。计算人手的最长处和最宽处的一个实现方式为,提取人手的边界关键点,计算X坐标距离最远的两个边界关键点的X坐标之差,作为矩形宽的长度,计算Y坐标距离最远的两个边界关键点的Y坐标之差,作为矩形长的长度。如果人手缩成拳头状,可以设定外接检测框为覆盖拳头的最小圆形。具体的,可以用外检检测框的中心点作为手的位置,所述外接检测框的中心点为外接检测框对角线的交点;也可以用所述圆形的圆心代替拳头的位置。
[0051] 人手信息还包括检测出来的人手关键点,所述关键点的数量可以设置,一般来说可以包括人手轮廓的关键点和关节关键点,每个关键点有固定编号,比如可以按照轮廓关键点、大拇指关节关键点、食指关节关键点、中指关节关键点、无名指关节关键点、小拇指关节关键点的顺序,从上到下编号,在一个典型的应用中,所述关键点为22个,每个关键点有固定编号。
[0052] 在一个实施例中,所述人手信息还可以包括人手的角度,所述角度可以包括人手在拍摄平面上的角度,也可以包括在空间中的角度,或者两者的结合。在一种实现方式中,该角度可以使用外接检测框来描述,在拍摄平面上,可以计算外检检测框相对于X轴的偏移角度,在空间中,可以检测外接检测框的缩放程度,根据该缩放程度与角度的对应关系来确定在空间中的旋转角度,比如手掌正对摄像机时,所检测出来的外接检测框具有最大面积,当旋转手掌时,外接检测框的面积逐渐减小,可以预先设置面积减小的比例与角度的关系,这样通过外接检测框的面积可以计算出手掌的旋转角度。当然,角度的获取方式不止实施例中的这一种,任何可以确定人手的角度的方法均可以应用于本公开中,在此的目的仅仅是得到人手角度。
[0053] 在一个实施例中,在计算所述人手信息之前,还包括对人手的识别数据进行平滑和坐标归一化处理的步骤。具体的,所述平滑处理可以是将多帧视频中的图像进行平均,将平均之后的图像作为识别出的图像,对应到本公开中的人手上,可以对多帧图像中的人手进行识别,之后将人手图像做加权平均,将平均之后得到的人手图像作为识别出的人手,计算人手信息,这样可以在丢失某些帧或者某些帧识别的图像不是很清晰的情况下,依然可以确定人手的图像并计算人手的信息。坐标归一化处理,是将坐标范围统一,如摄像头所采集到的人手图像和显示在显示屏上的人手图像的坐标并不统一,需要有一个映射关系来将大坐标系映射到一个小坐标系上。经过平滑处理和归一化处理之后,得到人手的信息。
[0054] 步骤S104,获取与所述虚拟对象和所述人手信息对应的图像渲染信息。
[0055] 在该步骤中,所述图像渲染信息至少包括虚拟对象和人手的渲染位置以及渲染的顺序。所述渲染位置,包括虚拟对象的渲染位置以及人手的渲染位置,其中人手的渲染位置可以在人手的识别位置,虚拟对象的渲染位置可以与人手的位置相关联,比如人手的位置在步骤S103中由外接检测框的中心点确定,则虚拟对象的渲染位置可以直接跟中心点重合,此时可以将虚拟对象的中心位置与外接检测框的中心点重合;或者所述虚拟对象的渲染位置可以与所述中心点保持一定的位置关系,比如虚拟对象的渲染位置可以位于所述中心点Y轴正向上1个长度单位的位置,所述长度单位可以是自定义的长度单位,比如1个长度单位等于1cm等等,在此不做限制。总之,可以通过一定的关系来确定虚拟对象的渲染位置,这样就解决了人手和虚拟对象的显示在什么位置的问题。为了渲染位置更加精确,可以加入人手的关键点,此时可以设置虚拟对象挂载于人手的某几个关键点上,在一个实现方式中,可以在虚拟对象上设置3个点,这3个点与人手上的3个关键点对应,通过这种对应关系,可以确定虚拟对象的渲染位置。
[0056] 所述渲染顺序,决定了虚拟对象和人手的显示关系。在某些场景下,虚拟对象和人手会有相互遮挡的问题,比如人手握着宝剑,被人手握着的宝剑部分需要被人手遮挡,比如人手戴着手套,则手套需要覆盖人手,在这样在某些时候需要先渲染人手之后再渲染虚拟对象,以使虚拟对象覆盖在人手之上,比如人手戴手套的情况;而在某些时候,需要先渲染虚拟对象,之后再渲染人手以使人手覆盖虚拟对象,比如手握宝剑的情况。渲染顺序与虚拟对象的类型相关,当然也可以预先设定虚拟对象的区域图层,比如可以设置宝剑的剑柄部分为下图层部分,设置手套永远位于上图层。
[0057] 在一个实施例中,在所述步骤S103中得到的人手信息包括了人手的角度信息,此时获取的图像渲染信息中还包括了渲染的角度,其决定了渲染出的人手和虚拟对象的角度,以使虚拟对象随着人手的角度变化而变化,比如当人手握着虚拟宝剑时,手做出挥舞的动作时,宝剑会随着手的角度不同而发生角度的变化。
[0058] 步骤S105,根据所述图像渲染信息,将所述虚拟对象和人手合成渲染,生成合成图像。
[0059] 在该实施例中,根据步骤S104中获取的渲染信息,对步骤S101中获取的虚拟对象以及步骤S103中所识别出的人手进行合成渲染,以生成合成图像。
[0060] 在一个具体的实现方式中,根据步骤S104中的渲染位置信息,得到人手渲染位置以及虚拟对象的渲染的位置,根据步骤S104中的渲染角度信息,得到人手的渲染角度以及虚拟对象的渲染角度,根据步骤S104中的渲染顺序,依序渲染出人手以及虚拟对象,形成由人手和虚拟对象的合成图像
[0061] 本公开实施例提供一种图像合成方法、装置、电子设备和计算机可读存储介质。其中该图像合成方法包括:获取虚拟对象;获取图像传感器采集到的视频;识别所述视频中的人手,得到人手信息;获取与所述虚拟对象和所述人手信息对应的图像渲染信息;根据所述图像渲染信息,将所述虚拟对象和人手合成渲染,生成合成图像。本公开实施例通过获取人手的信息,来确定图像的渲染信息,以使渲染信息与人手相关,解决了现有技术中虚拟对象无法跟随人手移动以及虚拟对象挂载到人手上的方式不灵活的技术问题。
[0062] 如图2a所示,在本公开的图像合成方法的另一个实施例中,所述步骤S104:获取与所述虚拟对象和所述人手信息对应的图像渲染信息,包括:
[0063] 步骤S201,读取渲染配置文件;
[0064] 步骤S202,使用所述虚拟对象以及人手信息,从所述渲染配置文件中获取图像渲染信息。
[0065] 在该实施例中,所述渲染配置文件中保存了虚拟对象的序列帧的保存路径,步骤S101中获取到虚拟对象的名称或ID,根据该名称或者ID可以在配置文件中获取虚拟对象的序列帧,所有序列帧可以组成一个完整的虚拟对象。具体的,可以在渲染配置文件中设置参数“range”:[idx_start,idx_end],表示在文件的列表中从第idx_start开始到第idx_end结束的连续文件,组成该序列帧;或者设置参数"idx":[idx0,idx1,……],表示在文件的列表中的第idx0、第idx1、……等文件,按次序组成该序列帧。
[0066] 所述渲染配置文件中还包括虚拟对象位置的关联参数,所述关联参数描述序列帧关联哪几个人手关键点,默认可以关联所有关键点,也可以设置跟随其中的几个关键点。除了关联参数外,渲染配置文件中还包括虚拟对象与关键点的位置关系参数"point","point"中可以包括两组关联点,"point0"表示第一组关联点,"point1"表示第二组。对于每一组关联点,"point"描述了camera中的锚点位置,通过对若干组关键点及其权重,求加权平均得到;使用"idx"字段描述了关键点的序号,对于包括了检测框的人手,还可以使用"topleft"、"topright"、"bottomleft"、"bottomright",分别对应人手外接检测框的四个角(或前景的屏幕四个角)。举例来说,设置虚拟对象跟随人手的4个关键点,分别为9号、10号、11号和12号关键点,切每个关键点的权重为0.25,其中每个关键点的坐标分别为(X9,Y9),(X10,Y10),(X11,Y11),(X12,Y12),则可以得到虚拟对象所跟随的锚点的X轴坐标为Xa=X9*0.25+X10*0.25+X11*0.25+X12*0.25,锚点的Y轴坐标为Ya=Y9*0.25+Y10*0.25+Y11*0.25+Y12*0.25。
可以理解的是,"point"中可以包括任一组关联点,并不局限于两组。在上述具体实例中,可以得到两个锚点,虚拟对象跟随这两个锚点的位置发生移动。而实际上,锚点可以不止两个,这与所使用的关联点的组数有关。其中每个关键点的坐标可以有步骤S103中所获取的人手信息中获得。
[0067] 所述渲染配置文件中还可以包括虚拟对象的缩放程度与关键点的关系,使用参数"scaleX"和"scaleY"分别描述了x和y方向的缩放需求。对于每个方向,都包括两个参数"start_idx"和"end_idx",其对应了两个关键点,这两个关键点之间的距离乘以"factor"的值后得到缩放的强度。其中factor为预先设置的值,可以为任意值。对于缩放来说,如果"position"中只有一组关联点"point0",那么x方向就是实际的水平向右方向;y方向为实际垂直向下方向;"scaleX"和"scaleY"都会生效,如果任一有缺失,则按照存在的那个参数保持虚拟对象原始长宽比进行缩放。如果"position"中"point0"和"point1"都有,那么x方向为point1.anchor-point0.anchor得到的向量方向;y方向由x方向顺时针旋转90度确定;"scaleX"无效,x方向的缩放由锚点跟随决定。"scaleY"会生效,若"scaleY"缺失,则保持虚拟对象原始长宽比进行缩放。
[0068] 所述渲染配置文件中还可以包括虚拟对象的旋转参数"rotationtype",其只有在"position"中只有"point0"时,才会生效,其可以包括0和1两个值,其中:0:不需要旋转;1:需要根据关键点的相关角度值进行旋转。
[0069] 所述渲染配置文件中还可以包括渲染混合模式,所述渲染混合是指将两种颜色混合在一起,具体到本公开中是指将某一像素位置的颜色与将要画上去的颜色混合在一起,从而实现特殊效果,而渲染混合模式是指混合所使用的方式,一般来说混合方式是指将源颜色和目标颜色做计算,得出混合后的颜色,在实际应用中常常将源颜色乘以源因子得到的结果与目标颜色乘以目标因子得到的结果做计算,得到混合后的颜色,举例来说,所述计算为加,则BLENDcolor=SRC_color*SCR_factor+DST_color*DST_factor,其中0≤SCR_factor≤1,0≤DST_factor≤1。根据上述运算公式,假设源颜色的四个分量(指红色,绿色,蓝色,alpha值)是(Rs,Gs,Bs,As),目标颜色的四个分量是(Rd,Gd,Bd,Ad),又设源因子为(Sr,Sg,Sb,Sa),目标因子为(Dr,Dg,Db,Da)。则混合产生的新颜色可以表示为:(Rs*Sr+Rd*Dr,Gs*Sg+Gd*Dg,Bs*Sb+Bd*Db,As*Sa+Ad*Da),其中alpha值表示透明度,0≤alpha≤1。上述混合方式仅仅是举例,实际应用中,可以自行定义或者选择混合方式,所述计算可以是加、减、乘、除、取两者中较大的、取两者中较小的、逻辑运算(和、或、异或等等)。上述混合方式仅仅是举例,实际应用中,可以自行定义或者选择混合方式,所述计算可以是加、减、乘、除、取两者中较大的、取两者中较小的、逻辑运算(和、或、异或等等)。
[0070] 所述渲染配置文件中还可以包括渲染顺序,所述渲染顺序包括两个层次,一个是虚拟对象的序列帧之间的渲染顺序,该顺序可以使用参数"zorder"来定义,"zorder"的值越小,表示渲染的顺序越靠前;第二个层次是虚拟对象和人手之间的渲染顺序,该顺序可以通过多种方式来确定,典型的,也可以使用与"zorder"类似的方式,可以直接设置人手先渲染或者虚拟对象先渲染。在一个实施例中,还可以使用深度测试的方式来确定渲染的顺序,具体的所述深度测试,是指设置一个深度缓冲区,该深度缓冲区与颜色缓冲区相对应,深度缓冲区存储像素的深度信息,颜色缓冲区存储的像素的颜色信息,在决定是否绘制一个物体的表面时,首先将表面对应像素的深度值与存储在深度缓冲区中的值进行比较,如果大于等于深度缓冲区中值,则丢弃这部分;否则利用这个像素对应的深度值和颜色值,分别更新深度缓冲区和颜色缓冲区。这一过程称之为深度测试(Depth Testing)。在绘制场景前,清除颜色缓冲区时,清除深度缓冲区,清除深度缓冲区时将深度缓冲区的值设置为1,表示最大的深度值,深度值的范围在[0,1]之间,值越小表示越靠近观察着,值越大表示远离观察者。在开启深度测试时,还需要设置深度测试的比较函数,典型的函数如下:DF_ALWAYS,总是通过测试,此时与不开启深度测试是一样的,总是使用当前像素的深度值和颜色值更新深度缓冲区和颜色缓冲区;DF_NEVER,总是不通过测试,此时会一直保持深度缓冲和颜色缓冲区中的值,就是任何像素点都不会被绘制到屏幕上;DF_LESS,在当前深度值<存储的深度值时通过;DF_EQUAL,在当前深度值=存储的深度值时通过;DF_LEQUAL,在当前深度值≤存储的深度值时通过;DF_GREATER,在当前深度值>存储的深度值时通过;DF_NOTEQUAL,在当前深度值≠存储的深度值时通过;DF_GEQUAL,在当前深度值>=存储的深度值时通过。所述深度写是与深度测试关联的,一般来说如果开启了深度测试,并且深度测试的结果有可能会更新深度缓冲区的值时,需要开启深度写,以便对深度缓冲区的值进行更新。以下举例说明开启深度测试以及深度写时的图像绘制过程,假设要绘制两个色块,分别为红色和黄色,在渲染队列中,红色块在前,黄色块在后,红色块深度值为0.5,黄色块深度值为0.2,使用的深度测试比较函数为DF_LEQUAL,此时深度缓冲区中会先被写入0.5,颜色缓冲区中写入红色,之后在渲染黄色时,通过比较函数得出0.2<0.5,通过测试,则将深度缓冲区的值更新为0.2,颜色缓冲区更新为黄色,也就是说因为黄色的深度比较浅,因此需要覆盖到深度较深的红色。使用上述方法可以确定人手和虚拟对象的渲染顺序,以形成合成图像的效果。
[0071] 进一步的,在步骤S201之前,还可以包括步骤S2001,在该步骤中设置渲染配置文件,以对上述渲染文件中的各种参数进行配置。
[0072] 为了方便理解,参见附图2b-2d为本公开所公开的一种图像合成方法的具体实例。参见附图2b,为图像传感器所采集到的视频中的视频帧,在初始状态,检测到两只人手掌张开,触发与虚拟彩虹的合成,其中虚拟彩虹挂载于两只人手的食指上。当移动手掌,如图2c所示,向上移动右手,则虚拟彩虹跟随上升的右手食指上升,如图2d所示,向上移动左手,则虚拟彩虹跟随上升的左手食指上升,当然也可以同时一只手上升一直手下降,此时彩虹的两端还是挂在于左右手的食指上,虚拟彩虹的长度可以随着两手间的距离发生变化。
[0073] 图3为本公开实施例提供的图像合成装置30实施例一的结构示意图,如图3所示,该装置包括:虚拟对象获取模块31、视频获取模块32、人手识别模块33、渲染信息获取模块34和图像合成模块35。其中,
[0074] 虚拟对象获取模块31,用于获取虚拟对象;
[0075] 视频获取模块32,用于获取图像传感器采集到的视频;
[0076] 人手识别模块33,用于识别所述视频中的人手,得到人手信息;
[0077] 渲染信息获取模块34,用于获取与所述虚拟对象和所述人手信息对应的图像渲染信息;
[0078] 图像合成模块35,用于根据所述图像渲染信息,将所述虚拟对象和人手合成渲染,生成合成图像。
[0079] 进一步的,所述人手识别模块33,包括:
[0080] 第一识别模块,用于识别所述视频中的人手;
[0081] 第一信息获取模块,用于获取人手的位置以及人手关键点。
[0082] 进一步的,所述渲染信息获取模块34:
[0083] 用于获取虚拟对象和人手的渲染位置以及渲染顺序。
[0084] 进一步的,所述渲染位置由人手位置和/或人手骨架关键点确定;所述渲染顺序由虚拟对象的类型确定。
[0085] 进一步的,所述图像合成模块35:
[0086] 用于根据渲染位置和渲染顺序,渲染人手和虚拟对象,生成合成图像。
[0087] 进一步的,所述人手识别模块33,还包括:
[0088] 第二识别模块,用于识别所述视频中的人手;
[0089] 第二信息获取模块,用于获取人手的角度。
[0090] 进一步的,所述渲染信息获取模块34:
[0091] 用于获取虚拟对象和人手的渲染位置、渲染角度以及渲染顺序。
[0092] 图3所示装置可以执行图1所示实施例的方法,本实施例未详细描述的部分,可参考对图1所示实施例的相关说明。该技术方案的执行过程和技术效果参见图1所示实施例中的描述,在此不再赘述。
[0093] 在本公开实施例提供的图像合成装置实施例二中,如图4所示,所述渲染信息获取模块34还包括:读取模块41,用于读取渲染配置文件;第一渲染信息获取模块42,用于使用所述虚拟对象以及人手信息,从所述渲染配置文件中获取图像渲染信息。
[0094] 在该实施例中,所述渲染信息获取模块34还可以包括:设置模块43,用于设置渲染配置文件,对所述渲染信息进行设置。
[0095] 上述实施例二中的装置可以执行图2所示实施例的方法,本实施例未详细描述的部分,可参考对图2所示实施例的相关说明。该技术方案的执行过程和技术效果参见图2所示实施例中的描述,在此不再赘述。
[0096] 图5是图示根据本公开的实施例的电子设备的硬件框图。如图5所示,根据本公开实施例的电子设备50包括存储器51和处理器52。
[0097] 该存储器51用于存储非暂时性计算机可读指令。具体地,存储器51可以包括一个或多个计算机程序产品,该计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。该易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。该非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。
[0098] 该处理器52可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元,并且可以控制电子设备50中的其它组件以执行期望的功能。在本公开的一个实施例中,该处理器52用于运行该存储器51中存储的该计算机可读指令,使得该电子设备50执行前述的本公开各实施例的图像合成方法的全部或部分步骤。
[0099] 本领域技术人员应能理解,为了解决如何获得良好用户体验效果的技术问题,本实施例中也可以包括诸如通信总线、接口等公知的结构,这些公知的结构也应包含在本发明的保护范围之内。
[0100] 有关本实施例的详细说明可以参考前述各实施例中的相应说明,在此不再赘述。
[0101] 图6是图示根据本公开的实施例的计算机可读存储介质的示意图。如图6所示,根据本公开实施例的计算机可读存储介质60,其上存储有非暂时性计算机可读指令61。当该非暂时性计算机可读指令61由处理器运行时,执行前述的本公开各实施例的图像合成方法的全部或部分步骤。
[0102] 上述计算机可读存储介质60包括但不限于:光存储介质(例如:CD-ROM和DVD)、磁光存储介质(例如:MO)、磁存储介质(例如:磁带或移动硬盘)、具有内置的可重写非易失性存储器的媒体(例如:存储卡)和具有内置ROM的媒体(例如:ROM盒)。
[0103] 有关本实施例的详细说明可以参考前述各实施例中的相应说明,在此不再赘述。
[0104] 图7是图示根据本公开实施例的终端设备的硬件结构示意图。如图7所示,该图像合成终端70包括上述图像合成装置实施例。
[0105] 该终端设备可以以各种形式来实施,本公开中的终端设备可以包括但不限于诸如移动电话、智能电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、导航装置、车载终端设备、车载显示终端、车载电子后视镜等等的移动终端设备以及诸如数字TV、台式计算机等等的固定终端设备。
[0106] 作为等同替换的实施方式,该终端还可以包括其他组件。如图7所示,该图像合成终端70可以包括电源单元71、无线通信单元72、A/V(音频/视频)输入单元73、用户输入单元74、感测单元75、接口单元76、控制器77、输出单元78和存储单元79等等。图7示出了具有各种组件的终端,但是应理解的是,并不要求实施所有示出的组件,也可以替代地实施更多或更少的组件。
[0107] 其中,无线通信单元72允许终端70与无线通信系统或网络之间的无线电通信。A/V输入单元73用于接收音频或视频信号。用户输入单元74可以根据用户输入的命令生成键输入数据以控制终端设备的各种操作。感测单元75检测终端70的当前状态、终端70的位置、用户对于终端70的触摸输入的有无、终端70的取向、终端70的加速或减速移动和方向等等,并且生成用于控制终端70的操作的命令或信号。接口单元76用作至少一个外部装置与终端70连接可以通过的接口。输出单元78被构造为以视觉、音频和/或触觉方式提供输出信号。存储单元79可以存储由控制器77执行的处理和控制操作的软件程序等等,或者可以暂时地存储己经输出或将要输出的数据。存储单元79可以包括至少一种类型的存储介质。而且,终端70可以与通过网络连接执行存储单元79的存储功能的网络存储装置协作。控制器77通常控制终端设备的总体操作。另外,控制器77可以包括用于再现或回放多媒体数据的多媒体模块。控制器77可以执行模式识别处理,以将在触摸屏上执行的手写输入或者图片绘制输入识别为字符或图像。电源单元71在控制器77的控制下接收外部电力或内部电力并且提供操作各元件和组件所需的适当的电力。
[0108] 本公开提出的图像合成方法的各种实施方式可以使用例如计算机软件、硬件或其任何组合的计算机可读介质来实施。对于硬件实施,本公开提出的图像合成方法的各种实施方式可以通过使用特定用途集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理装置(DSPD)、可编程逻辑装置(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器、被设计为执行这里描述的功能的电子单元中的至少一种来实施,在一些情况下,本公开提出的图像合成方法的各种实施方式可以在控制器77中实施。对于软件实施,本公开提出的图像合成方法的各种实施方式可以与允许执行至少一种功能或操作的单独的软件模块来实施。软件代码可以由以任何适当的编程语言编写的软件应用程序(或程序)来实施,软件代码可以存储在存储单元79中并且由控制器77执行。
[0109] 有关本实施例的详细说明可以参考前述各实施例中的相应说明,在此不再赘述。
[0110] 以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
[0111] 本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
[0112] 另外,如在此使用的,在以“至少一个”开始的项的列举中使用的“或”指示分离的列举,以便例如“A、B或C的至少一个”的列举意味着A或B或C,或AB或AC或BC,或ABC(即A和B和C)。此外,措辞“示例的”不意味着描述的例子是优选的或者比其他例子更好。
[0113] 还需要指出的是,在本公开的系统和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
[0114] 可以不脱离由所附权利要求定义的教导的技术而进行对在此所述的技术的各种改变、替换和更改。此外,本公开的权利要求的范围不限于以上所述的处理、机器、制造、事件的组成、手段、方法和动作的具体方面。可以利用与在此所述的相应方面进行基本相同的功能或者实现基本相同的结果的当前存在的或者稍后要开发的处理、机器、制造、事件的组成、手段、方法或动作。因而,所附权利要求包括在其范围内的这样的处理、机器、制造、事件的组成、手段、方法或动作。
[0115] 提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
[0116] 为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。