待播放视频中人脸的替换方法和装置与流程

文档序号:18739796发布日期:2019-09-21 01:38阅读:780来源:国知局
待播放视频中人脸的替换方法和装置与流程

本公开涉及图像处理领域,具体涉及一种待播放视频中人脸的替换方法和装置。



背景技术:

目前的人脸图像编辑处理中,经常需要人脸替换,即通常所称的“换脸”。目前的“换脸”主要是针对静态图片之间的“换脸”,即从用户A的静态图片中“抠”出用户A的人脸,替换掉用户B的静态图片中用户B的人脸。

这种“换脸”技术应用到视频的人脸替换中效果较差。因为这种技术只是单纯的静态图片内容替换,无法还原视频中人脸的朝向和表情等特征。



技术实现要素:

本公开的一个目的在于提供一种将视频中的人脸替换为另一个人的人脸的技术,它能还原视频中人脸的朝向和表情等特征。

根据本公开实施例的第一方面,公开了一种待播放视频中人脸的替换方法,包括:

从待播放视频的解码帧数据中识别出第一人脸;

以识别出的第一人脸的关键点为顶点,进行三维建模,以得到三维模型,使所述三维模型顶点坐标与待播放视频中第一人脸的关键点坐标保持同步;

获取第二人脸;

把获取的第二人脸作为纹理,应用到所述三维模型。

根据本公开实施例的第二方面,公开了一种待播放视频中人脸的替换装置,包括:

识别单元,用于从待播放视频的解码帧数据中识别出第一人脸;

三维建模单元,用于以识别出的第一人脸的关键点为顶点,进行三维建模,以得到三维模型,使所述三维模型顶点坐标与待播放视频中第一人脸的关键点坐标保持同步;

获取单元,用于获取第二人脸;

应用单元,用于把获取的第二人脸作为纹理,应用到所述三维模型。

根据本公开实施例的第三方面,公开了一种待播放视频中人脸的替换装置,包括:

存储器,存储有计算机可读指令;

处理器,读取存储器存储的计算机可读指令,以执行以上所述的方法。

根据本公开实施例的第四方面,公开了一种计算机程序介质,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行以上所述的方法。

在本公开的实施例中,从待播放视频的解码帧数据中识别出第一人脸。以识别出的第一人脸的关键点为顶点,进行三维建模,以得到三维模型,使所述三维模型顶点坐标与待播放视频中第一人脸的关键点坐标保持同步。随着待播放视频中第一人脸的朝向和表情变化,由第一人脸的关键点得到的三维模型就会跟随这种朝向和表情变化。但是,该三维模型是关键点构成的轮廓图形,其不具有颜色,即缺少纹理。然后,本公开实施例把第二人脸作为纹理,应用到所述三维模型。这样,得到的图片中的人脸就具有第二人脸的样子,却具有第一人脸的朝向和表情。因此,达到了人脸替换过程中还原视频中原人脸的朝向和表情的效果。

本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。

附图说明

通过参照附图详细描述其示例实施例,本公开的上述和其它目标、特征及优点将变得更加显而易见。

图1示出根据本公开一示例实施方式的待播放视频中人脸的替换方法的一个应用环境的构架图。

图2示出根据本公开一示例实施方式的待播放视频中人脸的替换方法的流程图。

图3示出根据本公开一示例实施方式的待播放视频中人脸的替换方法的流程图。

图4示出根据本公开一示例实施方式的三维建模的详细流程图。

图5示出根据本公开一示例实施方式的把第二人脸作为纹理应用到所述三维模型的详细流程图。

图6A示出根据本公开一示例实施方式的在待播放视频的解码帧数据中识别出的第一人脸的关键点。

图6B示出根据本公开一示例实施方式的、基于图6A中识别的关键点建立的三维模型。

图6C示出根据本公开一示例实施方式的带有关键点的第二人脸的示意图。

图6D示出根据本公开一示例实施方式将图6C所示的第二人脸作为纹理,应用到图6B所示的三维模型得到的结果示意图。

图7示出根据本公开一示例实施方式的待播放视频中人脸的替换装置的框图。

图8示出根据本公开一示例实施方式的待播放视频中人脸的替换装置的框图。

图9示出根据本公开一示例实施方式的待播放视频中人脸的替换方法应用在模板换脸的场景下的具体流程图。

图10A示出根据本公开一示例实施方式应用在换脸模板视频的场景下让用户选择换脸模板视频的界面。

图10B示出根据本公开一示例实施方式应用在换脸模板视频的场景下让用户拍照的界面。

图11示出根据本公开一示例实施方式的待播放视频中人脸的替换装置的结构图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些示例实施方式使得本公开的描述将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。

此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多示例实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的示例实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、步骤等。在其它情况下,不详细示出或描述公知结构、方法、实现或者操作以避免喧宾夺主而使得本公开的各方面变得模糊。

附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

图1示出根据本公开一示例实施方式的待播放视频中人脸的替换方法的应用环境的构架图。

待播放视频中人脸的替换方法是指将待播放视频中的人脸替换成另一个人脸的方法,具体地,在本公开中,是指将待播放视频中的第一人脸替换成第二人脸的方法。

图1所示的应用环境包括互联网1、用户设备1和用户设备2。用户设备2是待人脸替换的视频的提供者。用户2通过用户设备2录制一段视频,放到互联网1上。用户1通过用户设备1在互联网1上看到该视频,想要将该视频中的用户2的人脸替换成自己的人脸,以便发给好友。于是,用户1通过用户设备1中的照相机11拍摄一张自己的图片。然后,图片传输到用户设备1中的图像处理单元12。同时,图像处理单元12从互联网上下载用户2的视频。图像处理单元12基于用户1的图片、以及用户2的视频,将用户2的视频中用户2的人脸替换成用户1的人脸,从而完成了换脸。换脸后的视频通过显示器13进行显示。用户1也可以将该视频发给自己的好友。

如图2所示,根据本公开的一个实施例,提供了一种待播放视频中人脸的替换方法,包括:

步骤110、从待播放视频的解码帧数据中识别出第一人脸;

步骤120、以识别出的第一人脸的关键点为顶点,进行三维建模,以得到三维模型,使所述三维模型顶点坐标与待播放视频中第一人脸的关键点坐标保持同步;

步骤125、获取第二人脸;

步骤130、把获取的第二人脸作为纹理,应用到所述三维模型。

下面对这些步骤进行详细描述。

在步骤110中,从待播放视频的解码帧数据中识别出第一人脸。

在一个实施例中,步骤110包括:

将待播放视频中的帧顺序解码成解码帧数据;

将解码帧数据放入缓冲区;

从缓冲区的解码帧数据中识别出第一人脸。

一般来说,在播放视频时,存储的待播放视频的格式不同于能够在显示屏上显示的格式。因此,要对待播放视频进行解码,然后才能在显示器上播放。为了提高播放速度的均匀性,一般将待播放视频先按照解码的顺序先放入缓冲区,然后再从缓冲区中顺序取出解码后的解码帧数据进行上屏播放。因此,首先将待播放视频中的帧顺序解码成解码帧数据,并放入缓冲区。解码帧数据是指对待播放视频的帧解码后得到的帧数据。在该实施例中,解码成的解码帧数据并非直接上屏显示,而是要先完成“换脸”的过程,即将待播放视频中的第一人脸替换成第二人脸。因此,在该实施例中,需要从缓冲区的解码帧数据中识别出第一人脸,而不是直接将解码帧数据上屏显示。

在放入缓冲区的解码帧数据中,有的帧数据中含有第一人脸,有的帧数据中不含有第一人脸。在一个实施例中,顺序从缓冲区取出各帧的解码帧数据并识别其中是否有第一人脸,直到找到含有第一人脸的解码帧数据,则认为从待播放视频的解码帧数据中识别出第一人脸。

在一个实施例中,通过人脸识别技术从缓冲区的解码帧数据中识别出第一人脸。

在步骤120中,以识别出的第一人脸的关键点为顶点,进行三维建模,以得到三维模型,使所述三维模型顶点坐标与待播放视频中第一人脸的关键点坐标保持同步.

在人脸识别技术中,关键点是指对于区别不同人脸来说最为重要的点。这些点最能够代表不同人脸之间的区别。图6A示出根据本公开一示例实施方式的在待播放视频的帧中识别出的第一人脸的关键点。如图6A所示,在人脸的面部轮廓、眉毛轮廓、眼睛轮廓、鼻子轮廓、嘴的轮廓上分布着很多关键点。以嘴的轮廓为例,如图6A所示,左嘴角、左嘴角到下唇最低部1/3位置、左嘴角到下唇最低部2/3位置、下唇最低部、下唇最低部到右嘴角1/3位置、下唇最低部到右嘴角2/3位置、右嘴角分别是6个关键点。例如,关键点801表示右嘴角这个关键点,关键点802表示下巴尖与右耳垂最低点之间的1/2处的关键点。

关键点可以由用户事先定义。

三维模型是指用三维软件建造的立体模型,包括各种建筑、人物、植被、机械等等,比如一个大楼的三维模型图。它是由若干顶点按照预定顺序连接而形成的图形。例如,大楼的三维模型是将大楼的每个棱角作为顶点描绘在三维坐标系中的适当坐标位置,再将这些顶点按照预定顺序连接而成的图形。它可以是静态的,也可以是动态的。静态三维模型是指三维模型中的顶点坐标固定的模型。动态三维模型是指三维模型中的顶点坐标变化的模型。本公开实施例中,三维模型是指后者。顶点是指三维模型的轮廓所穿过的点,所述三维模型由轮廓穿过这些顶点绘制而成。在动态三维模型中,这些顶点动态变化,使得三维模型的形状动态变化。

三维建模是指建立三维模型的过程。

在该实施例中,将步骤110中识别出的第一人脸的关键点作为顶点。将这些顶点按照预定顺序进行连接,从而构造出如图6B所示的三维模型。图6B所示的三维模型中的关键点不是静态不变的,而是随待播放视频中第一人脸的关键点在视频各帧间的变化而变化。

在一个实施例中,以识别出的第一人脸的关键点为顶点,进行三维建模,具体包括:

步骤1201、识别所述第一人脸的关键点;

步骤1202、确定识别的关键点的坐标;

步骤1203、以识别出的关键点的坐标作为顶点坐标,进行三维建模。

在步骤1201中,通过人脸识别技术,识别所述第一人脸的关键点。在一个实施例中,步骤1202包括:以所述第一人脸的中心为坐标系的原点建立x、y坐标,所述关键点在坐标系中的x、y坐标即为第一人脸的关键点在所述待播放视频帧中的坐标。

在一个实施例中,可以将第一人脸的中心设置在鼻尖位置。在另一个实施例中,也可以将第一人脸的几何中心作为第一人脸的中心。

在一个实施例中,步骤1203包括:以识别出的关键点的坐标作为顶点坐标,将顶点坐标按照预定顺序进行连接,得到建立的三维模型。

预定顺序是事先规定的。例如,对于图6A所示的下嘴唇轮廓来说,将左嘴角、左嘴角到下唇最低部1/3位置、左嘴角到下唇最低部2/3位置、下唇最低部、下唇最低部到右嘴角1/3位置、下唇最低部到右嘴角2/3位置、右嘴角这6个关键点顺序连接。对于人脸的轮廓上的关键点、眼睛的轮廓上的关键点等,分别有预定的连接它们的顺序。按照所述预定顺序,连接出的三维模型如图6B所示。但图6B的三维模型并不是静态的。图6B的三维模型上的各个顶点并不是静止不动的,而是其顶点坐标与待播放视频中第一人脸的关键点坐标保持同步。

为了实现这种同步,如图4所示,在一个实施例中,使所述三维模型顶点坐标与待播放视频中第一人脸的关键点坐标保持同步,具体包括:

步骤1204、跟踪待播放视频的帧中第一人脸的关键点;

步骤1205、跟踪第一人脸的关键点在各帧中的坐标;

步骤1206、使所述三维模型顶点坐标与对应的关键点在跟踪的各帧中的坐标保持一致。

在步骤1204中,跟踪待播放视频的帧中第一人脸的关键点是指,在步骤1201中从待播放视频的某一帧的解码帧数据中识别出所述第一人脸的关键点之后,对于每一关键点,在之后的帧的解码帧数据中持续识别该关键点。

例如,在待播放视频的第4个帧的解码帧数据中识别出了第一人脸的右嘴角的关键点之后,在之后的第5、6、7……个帧的解码帧数据中持续识别出右嘴角的关键点。

在一个实施例中,步骤1205包括:以跟踪到第一人脸的关键点的帧中第一人脸的中心为坐标系的原点建立x、y坐标,以跟踪到的关键点在坐标系中的x、y坐标,作为第一人脸的关键点在帧中的坐标。

在步骤1206中,使所述三维模型顶点坐标与对应的关键点在跟踪的各帧中的坐标保持一致。

例如,在待播放视频的第4个帧的解码帧数据中识别出了第一人脸的右嘴角的关键点的坐标为(2,-2),在第5个帧的解码帧数据中识别出了第一人脸的右嘴角的关键点的坐标为(2,-2.1),在第6个帧的解码帧数据中识别出了第一人脸的右嘴角的关键点的坐标为(2,-2.2)……,则如图6B所示的三维模型的右嘴角处的顶点坐标由(2,-2)变化到(2,-2.1),再变化到(2,-2.2)……。

在步骤125中,获取第二人脸。

在一个实施例中,第二人脸是从用户设备上存储的自己或他人的人脸图像中识别出的人脸。在这种情况下,步骤125可包括:

调取用户设备上存储的人脸图像;

从人脸图像中识别出人脸;

从人脸图像中获取识别出的人脸,作为第二人脸。

在一种情况下,用户设备上仅存储了一张人脸图像,该人脸图像可能是执行人脸替换操作的用户自己的图像,也可能是他人的图像。这时,从调取的人脸图像中识别出的第二人脸是唯一的人脸。

在另一种情况下,用户设备上可能存储着多个人脸图像,但是执行人脸替换操作的用户需要将其中自己或某个特定其他人的人脸替换到视频中的人脸上。在这种情况下,从人脸图像中获取识别出的人脸包括:如果识别出的人脸是特定用户的人脸,才从人脸图像中获取识别出的人脸。

在这里,特定用户可以是执行人脸替换操作的用户自己,也可以是其他用户。例如,用户A可能希望用用户设备中存储的用户C的照片中的用户C人脸,来替换视频中用户B的人脸。这时,特定用户就是用户C。

在一个实施例中,特定用户可以由操作人脸替换的用户来指定。在该实施例中,从人脸图像中获取识别出的人脸包括:

接收对特定用户的指定;

如果识别出的人脸是指定的特定用户的人脸,才从人脸图像中获取识别出的人脸。

该实施例中的好处是,增加人脸替换中人脸选择的灵活性。在这种情况下,执行人脸替换操作的用户可以指定不同的特定用户,从而完成不同的人脸替换。

在一个实施例中,接收对特定用户的指定包括:

显示与从人脸图像中识别出的人脸对应的人脸身份列表;

接收对人脸身份列表中人脸身份的选择,作为对特定用户的指定。

在该实施例中,当用户每次拍照时,用户设备可能会提示用户输入照片中人脸身份。用户设备将照片与人脸身份对应存储。这样,当从用户设备存储的人脸图像中识别出人脸后,就可以获得对应的人脸身份,将其放在人脸身份列表中用于显示。执行人脸替换的用户可以从人脸身份列表中方便地选择一个人脸身份,作为指定的特定用户。该实施例的优点是,可以让执行人脸替换操作的用户方便地指定用于替换的第二人脸,提高替换效率。

在另一个实施例中,接收对特定用户的指定包括:

显示从人脸图像中识别出的人脸的人脸缩略图列表;

接收对人脸缩略图列表中人脸缩略图的指定,作为对特定用户的指定。

该实施例的优点是,不需要用户在每次拍照时都在用户设备上输入照片中的人脸身份。当从用户设备存储的人脸图像中识别出人脸后,将这些人脸变成缩略图放在人脸缩略图列表中显示出来。执行人脸替换操作的用户可以在该人脸缩略图列表中指定人脸缩略图,同样可以指定特定用户。这样,即使用户在每次拍照后不在用户设备上输入照片中的人脸身份,也能通过人脸缩略图,方便快捷地指定特定用户。

在另一个实施例中,第二人脸是提示用户拍照,并从用户拍摄的人脸图像中提取的人脸。也就是说,它不是从存储的图像中提取第二人脸,而是现场拍摄图像,从中提取第二人脸。该实施例的好处是,它可以在用户对用户设备中存储的人脸照片不满意的情况下,现场拍摄人脸图像,增强现实互动感。

在该实施例中,步骤125可包括:

显示用户拍照选项;

响应于对用户拍照选项的选择,拍摄图像;

从拍摄的图像中识别出人脸;

从拍摄的图像中获取识别的人脸,作为第二人脸。

在一个实施例中,显示的用户拍照选项包括显示的照相机图标。如果执行人脸替换的用户按下屏幕上显示的照相机图标,则开始拍摄图像。

在另一个实施例中,显示的用户拍照选项包括拍照的文字提示。如果用户点击或触摸该文字提示,则开始拍摄图像。

本领域技术人员理解,用户拍照选项还可以采取其它的形式,如用屏幕上预定位置的区域表示用户拍照选项。如果用户触摸该区域,则开始拍摄图像。本领域技术人员还可以构想出其它用户拍照选项的形式。

另外,从拍摄的图像中可能识别出多个人脸。在这种情况下,在一个实施例中,从拍摄的图像中获取识别的人脸,作为第二人脸,具体包括:

将识别成的多个人脸提取出进行显示;

响应于用户对提取出的多个人脸的选择,将用户选择的人脸作为第二人脸。

例如,用户A想用用户C的人脸替换视频中用户B的人脸,但在拍摄时,凑巧用户D靠近用户C,进入了拍摄的图像。此时,从拍摄的图像中识别出用户C和用户D的人脸。将识别出的用户C和用户D的人脸都向用户A显示。用户A通过触摸的方式选择列出的用户C的人脸而不是用户D的人脸。这样,就将用户C的人脸作为第二人脸,而不是将用户D的人脸作为第二人脸。

该实施例的优点是,可以在拍摄的画面有他人闯入时,让执行人脸替换的用户方便地从中指定其真正希望用于替换的人的人脸。

在步骤130中,把第二人脸作为纹理,应用到所述三维模型。

计算机图形学中的纹理既包括通常意义上物体表面的纹理即使物体表面呈现凹凸不平的沟纹,同时也包括在物体的光滑表面上的彩色图案。在本公开中是指后者。纹理是一个像素阵列,具有若干行和若干列。行和列的交叉点对应一个像素。每个像素有R、G、B、A四个值,分别表示对应位置的红色(R)色值、绿色(G)色值、蓝色(B)色值、不透明度(α)。纹理对外的表现形式类似一张彩色图片。如图6C所示的第二人脸,可以看作图片,实际上也可以看作纹理,即若干行若干列的像素阵列,每个像素有R、G、B、A四个值。

由于步骤120中建立的三维模型的关键点是动态变化的,它反映了待播放视频中第一人脸的朝向和表情变化。但是,该三维模型是关键点连接成的轮廓图形,其不具有颜色,即缺少纹理。然后,本公开实施例把第二人脸作为纹理,应用到所述三维模型。这样,得到的图片中的人脸就具有第二人脸的样子,却具有第一人脸的朝向和表情。因此,达到了人脸替换过程中还原视频中原人脸的朝向和表情的效果。

在一个实施例中,步骤130可以包括:

用所述纹理中第二人脸边缘像素的颜色,对三维模型的人脸边缘像素进行填充;

用所述纹理中第二人脸脸内部像素的颜色,对三维模型的脸内部像素进行填充。

纹理可以看作若干行若干列的像素阵列。纹理中的人脸边缘像素是指在这个像素阵列中被人脸的边缘所经过的那些像素。三维模型是一个顶点坐标与待播放视频中第一人脸的关键点坐标一直保持同步、不断变化的模型,它的外周缘仍然是一个脸的形状,该脸的形状也是由像素组成。三维模型的人脸边缘像素就是指三维模型的外周缘中的像素,只不过在未进行颜色填充之前,这些像素是空白的。

在一个实施例中,如果纹理中第二人脸边缘像素的数目与三维模型的人脸边缘像素的数目相等,则可以将纹理中第二人脸边缘各像素的颜色,一一对应地填充到三维模型的人脸边缘的空白像素中。

在另一个实施例中,如果纹理中第二人脸边缘像素的数目与三维模型的人脸边缘像素的数目不相等,则可以将纹理中第二人脸边缘各像素的颜色进行像素插值法变换。像素插值法是已有方法,具体实现不赘述。在该变换后,纹理中第二人脸边缘像素的数目会变得与三维模型的人脸边缘像素的数目相等。然后,可以将变换后的纹理中第二人脸边缘各像素的颜色,一一对应地填充到三维模型的人脸边缘的空白像素中。例如,纹理中第二人脸边缘像素的数目为100个,而三维模型的人脸边缘像素的数目为200个,先按照像素插值法,在纹理中第二人脸边缘的相邻像素之间再插入一个像素,按照像素差值法估算出这个像素的颜色(包括红色色度、绿色色度、蓝色色度、不透明度值)。这样,纹理中第二人脸边缘像素的数目变为200个,将它们的颜色一一对应地填充到三维模型的人脸边缘的空白像素中。再例如,纹理中第二人脸边缘像素的数目为100个,而三维模型的人脸边缘像素的数目为150个。在纹理中第二人脸边缘中取3个相邻的像素,中间有2段像素间距离。将该2段像素间距离变成3段像素间距离,即变成两端的像素中间平均插入2个像素。此时,根据第二人脸边缘中这3个相邻的像素的颜色值,可以求出插入的这2个像素各自的颜色值。这样,纹理中第二人脸边缘像素的数目变为150个,将它们的颜色一一对应地填充到三维模型的人脸边缘的空白像素中。

然后,开始用所述纹理中第二人脸脸内部像素的颜色,对三维模型的脸内部像素进行填充。

纹理可以看作若干行若干列的像素阵列。纹理中的人脸脸内部像素是指在这个像素阵列中被人脸的边缘所包围的内部区域中的像素。三维模型是一个顶点坐标与待播放视频中第一人脸的关键点坐标一直保持同步、不断变化的模型,它的外周缘仍然是一个脸的形状,该脸的形状也是由像素组成。三维模型的脸内部像素就是指三维模型的外周缘包围的区域中的像素。在未进行颜色填充之前,这些像素是空白的。

在一个实施例中,用所述纹理中第二人脸脸内部像素的颜色,对三维模型的脸内部像素进行填充也可以采用像素差值法。

在一个例子中,由于纹理是像素阵列,因此可以取出所述纹理中第二人脸脸内部的某一行的所有像素。三维模型的脸内部也由像素构成,也可以取出脸内部相应行的所有空白像素。如果纹理中取出的该行的像素的数目与三维模型的人脸内部相应行的像素的数目相等,则可以将纹理中取出的该行的像素的颜色,一一对应地填充到三维模型的人脸内部相应行的空白像素中。如果纹理中取出的该行的像素的数目与三维模型的人脸内部相应行的像素的数目不相等,则可以纹理中取出的该行的像素的颜色进行像素插值法变换。在该变换后,纹理中取出的该行的像素的数目会变得与三维模型的人脸内部相应行的像素的数目相等。然后,可以将变换后的纹理中取出的该行的像素的颜色,一一对应地填充到三维模型的人脸内部相应行的空白像素中。

在另一个实施例中,如图5所示,步骤130包括:

步骤1301、用所述纹理中关键点的像素的颜色,对所述三维模型中的对应顶点的像素进行填充;

步骤1302、基于所述纹理中关键点之间的像素的颜色,对所述三维模型中的对应顶点之间的像素进行填充。

在步骤1301中,用所述纹理中关键点的像素的颜色,对所述三维模型中的对应顶点的像素进行填充。在一个实施例中,所述像素的颜色包括所述像素的红色(R)色度、绿色(G)色度、蓝色(B)色度、不透明度(α)。

例如,用第二人脸的纹理中右嘴角处像素的R、G、B、α值,对三维模型中右嘴角处的像素进行填充,使该像素具有该R、G、B、α值。这样,以第一人脸的关键点为顶点建立的三维模型的右嘴角的像素就具有第二人脸的纹理中右嘴角像素的R、G、B、α值。

将三维模型中所有顶点的像素在步骤1301中填充后,三维模型中就留下了顶点以外的区域未被颜色填充。在步骤1302中填充这些区域。在步骤1302中,基于所述纹理中关键点之间的像素的颜色,对所述三维模型中的对应顶点之间的像素进行填充。例如,在纹理中两个关键点K1、K2的像素之间有2个像素P1、P2,分别具有R、G、B、α值(R1、G1、B1、α1)和(R2、G2、B2、α2)。但在三维模型中,对应的顶点的像素之间具有3个像素。此时,这3个像素的R、G、B、α值可以根据(R1、G1、B1、α1)和(R2、G2、B2、α2)利用像素插值法求出。

相对于前面利用边缘像素填充和脸内部像素填充的实施例,这种利用关键点填充和关键点之间像素填充的实施例,能使替换后的人脸表情更生动、真实。因为关键点是人脸中最能代表脸部特点的点,将这些点先进行像素填充,再对它们之间进行像素填充,则能够更好地将人脸做各种表情时的典型变化体现出来,使呈现出的人脸表情更贴近真实。

在一个实施例中,如图3所示,所述方法还包括:

步骤140、基于解码帧数据,绘制成显示帧;

步骤150、将第二人脸作为纹理应用到所述三维模型的结果绘制在所述显示帧之上,覆盖第一人脸。

下面对这些步骤进行详细描述。

在步骤140中,基于解码帧数据,绘制成显示帧。

解码帧数据是带有第一人脸的待播放视频解码成的帧数据。显示帧是用于显示的一幅画面,它与待播放视频中的一帧是对应的。基于该解码帧数据绘制的显示帧是带有第一人脸的显示帧。

在步骤150中,将第二人脸作为纹理应用到所述三维模型的结果绘制在所述显示帧之上,覆盖第一人脸。

将第二人脸作为纹理应用到所述三维模型的结果是一个具有第二人脸的纹理(颜色图案)、却具有第一人脸的朝向和表情的人脸。该人脸与显示帧上的第一人脸具有相等大小。将第二人脸作为纹理应用到所述三维模型的结果绘制在所述显示帧之上,正好覆盖第一人脸,从而得到了用第二人脸替换第一人脸的待播放视频,如图6D所示。视频中的第二人脸保持了第一人脸的朝向和表情。

图9示出根据本公开一示例实施方式的待播放视频中人脸的替换方法应用在模板换脸的场景下的具体流程图。

在步骤901中,终端设备显示换脸模板视频让用户选择,如图10A所示。

在步骤902中,用户选择了一个换脸模板视频。

在步骤903中,终端设备显示界面,提示用户拍照或选照片。如图10B所示为提示用户拍照的界面。

在步骤904中,用户拍照或选照片。

在步骤905中,终端设备利用解码器将换脸模板视频中的帧解码,成为解码帧数据,放入缓冲区,等待上屏。

在步骤906中,终端设备从缓冲区的解码帧数据中,识别出换脸模板视频中的人脸。

在步骤907中,终端设备识别出换脸模板视频中的人脸的关键点。

在步骤908中,终端设备确定识别出的关键点的坐标。

在步骤909中,终端设备以识别出的关键点坐标作为顶点坐标,进行三维建模。

在步骤910中,终端设备跟踪换脸模板视频中的人脸的关键点。

在步骤911中,终端设备跟踪所述人脸的关键点在各帧中的坐标。

在步骤912中,终端设备使所述三维模型顶点坐标与对应的关键点在跟踪的各帧中的坐标保持一致。

在步骤913中,终端设备把用户拍摄或选择的照片中的用户人脸作为纹理,用纹理中关键点的像素的颜色,对三维模型中对应顶点的像素进行填充。

在步骤914中,终端设备基于纹理中关键点之间的像素的颜色,对三维模型中的对应顶点之间的像素进行填充。

在步骤915中,终端设备基于解码帧数据,绘制成显示帧。

在步骤916中,终端设备将用户人脸作为纹理应用到所述三维模型的结果绘制在所述显示帧之上,覆盖模板视频中的人脸。

在步骤917中,终端设备将用户人脸作为纹理应用到所述三维模型的结果绘制在所述显示帧之上后的结果上屏显示。

如图7所示,根据本公开的一个实施例,提供了一种待播放视频中人脸的替换装置,包括:

识别单元710,用于从待播放视频的解码帧数据中识别出第一人脸;

三维建模单元720,用于以识别出的第一人脸的关键点为顶点,进行三维建模,以得到三维模型,使所述三维模型顶点坐标与待播放视频中第一人脸的关键点坐标保持同步;

获取单元725,用于获取第二人脸;

应用单元730,用于把获取的第二人脸作为纹理,应用到所述三维模型。

可选地,如图8所示,所述装置还包括:

第一绘制单元740,用于基于解码帧数据,绘制成显示帧;

第二绘制单元750,用于将第二人脸作为纹理应用到所述三维模型的结果绘制在所述显示帧之上,覆盖第一人脸。

可选地,所述三维建模单元720进一步用于:

识别所述第一人脸的关键点;

确定识别的关键点的坐标;

以识别出的关键点的坐标作为顶点坐标,进行三维建模。

可选地,所述三维建模单元720进一步用于:

跟踪待播放视频的帧中第一人脸的关键点;

跟踪第一人脸的关键点在各帧中的坐标;

使所述三维模型顶点坐标与对应的关键点在跟踪的各帧中的坐标保持一致。

可选地,所述应用单元730进一步用于:

用所述纹理中关键点的像素的颜色,对所述三维模型中的对应顶点的像素进行填充;

基于所述纹理中关键点之间的像素的颜色,对所述三维模型中的对应顶点之间的像素进行填充。

可选地,所述像素的颜色包括所述像素的红色(R)色度、绿色(G)色度、蓝色(B)色度、不透明度(α)。

下面参照图11来描述根据本公开的实施方式的待播放视频中人脸的替换装置9。图11显示的待播放视频中人脸的替换装置9仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图11所示,待播放视频中人脸的替换装置9以通用计算设备的形式表现。待播放视频中人脸的替换装置9的组件可以包括但不限于:至少一个处理单元810、至少一个存储单元820、连接不同系统组件(包括存储单元820和处理单元810)的总线830。

所述存储单元存储有程序代码,所述程序代码可以被所述处理单元810执行,使得所述处理单元810执行本说明书上述示例性方法的描述部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元810可以执行如图2中所示的各个步骤。

存储单元820可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)8201和/或高速缓存存储单元8202,还可以进一步包括只读存储单元(ROM)8203。

存储单元820还可以包括具有一组(至少一个)程序模块8205的程序/实用工具8204,这样的程序模块8205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

总线830可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。

待播放视频中人脸的替换装置9也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该待播放视频中人脸的替换装置9交互的设备通信,和/或与使得该待播放视频中人脸的替换装置9能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,待播放视频中人脸的替换装置9还可以通过网络适配器860与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器860通过总线830与待播放视频中人脸的替换装置9的其它模块通信。应当明白,尽管图中未示出,可以待播放视频中人脸的替换装置9可以使用其它硬件和/或软件模块实现,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。

在本公开的示例性实施例中,还提供了一种计算机程序介质,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行上述方法实施例部分描述的方法。

根据本公开的一个实施例,还提供了一种用于实现上述方法实施例中的方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1