掌桥专利:专业的专利平台
掌桥专利
首页

一种化妆进度检测方法、装置、设备及存储介质

文献发布时间:2023-06-19 13:49:36


一种化妆进度检测方法、装置、设备及存储介质

技术领域

本申请属于图像处理技术领域,具体涉及一种化妆进度检测方法、装置、设备及存储介质。

背景技术

化妆已经成为很多人日常生活必不可少的环节,眼线能够使修饰眼型,使眼睛看起来更加有神且美观。因此眼线是化妆过程中的重要步骤,如果能够将眼线的化妆进度实时反馈给用户,将可以极大减少化妆对用户精力的消耗,节省化妆时间。

目前,相关技术中存在一些使用深度学习模型提供虚拟试妆、肤色侦测、个性化产品推荐等功能,这些功能均需要预先收集大量的人脸图片对深度学习模型进行训练。

但人脸图片是用户的隐私数据,很难收集到庞大的人脸图片。且模型训练需耗费大量计算资源,成本高。模型的精度与实时性成反比,化妆进度检测需要实时捕获用户人脸面部信息来确定用户当前的化妆进度,实时性要求很高,能够满足实时性要求的深度学习模型,其检测的准确性不高。

发明内容

本申请提出一种化妆进度检测方法、装置、设备及存储介质,无需采用深度学习模型,仅通过图像处理即可准确地检测出眼线的化妆进度,运算量小,成本低,减少了服务器的处理压力,提高了眼线化妆进度检测的效率,能够满足眼线化妆进度检测的实时性要求。

本申请第一方面实施例提出了一种化妆进度检测方法,包括:

获取用户化妆视频的初始帧图像和当前帧图像,以及获取所述初始帧图像和所述当前帧图像对应的眼线掩码图;

根据所述初始帧图像,模拟生成眼线上妆完成后的结果图像;

根据所述眼线掩码图、所述结果图像、所述初始帧图像和所述当前帧图像,确定所述当前帧图像对应的当前化妆进度。

在本申请的一些实施例中,所述根据所述眼线掩码图、所述结果图像、所述初始帧图像和所述当前帧图像,确定所述当前帧图像对应的当前化妆进度,包括:

根据所述初始帧图像对应的眼线掩码图,从所述初始帧图像中获取眼线上妆的第一目标区域图像;

根据所述结果图像获取眼线上妆的第二目标区域图像;

根据所述当前帧图像对应的眼线掩码图,从所述当前帧图像中获取眼线上妆的第三目标区域图像;

根据所述第一目标区域图像、所述第二目标区域图像和所述第三目标区域图像,确定所述当前帧图像对应的当前化妆进度。

在本申请的一些实施例中,所述根据所述初始帧图像对应的眼线掩码图,从所述初始帧图像中获取眼线上妆的第一目标区域图像,包括:

检测所述初始帧图像对应的第一人脸关键点;

根据所述第一人脸关键点,获取所述初始帧图像对应的人脸区域图像;

根据所述初始帧图像对应的眼线掩码图,从所述人脸区域图像中获取眼线上妆的第一目标区域图像。

在本申请的一些实施例中,所述根据所述初始帧图像对应的眼线掩码图,从所述人脸区域图像中获取眼线上妆的第一目标区域图像,包括:

分别将所述初始帧图像对应的眼线掩码图和所述人脸区域图像转换为二值化图像;

对所述眼线掩码图对应的二值化图像和所述人脸区域图像对应的二值化图像进行与运算,获得所述眼线掩码图与所述人脸区域图像的相交区域对应的第一掩膜图像;

对所述第一掩膜图像与所述初始帧图像对应的人脸区域图像进行与运算,获得所述初始帧图像对应的第一目标区域图像。

在本申请的一些实施例中,所述对所述眼线掩码图对应的二值化图像和所述人脸区域图像对应的二值化图像进行与运算之前,还包括:

根据所述眼线掩码图对应的标准人脸关键点,确定所述眼线掩码图中位于每个眼线上妆区域的轮廓上的一个或多个第一定位点;

根据所述第一人脸关键点,从所述人脸区域图像中确定出与每个所述第一定位点对应的第二定位点;

对所述眼线掩码图进行拉伸处理,将每个所述第一定位点拉伸至对应的每个所述第二定位点对应的位置处。

在本申请的一些实施例中,所述根据所述初始帧图像对应的眼线掩码图,从所述人脸区域图像中获取眼线上妆的第一目标区域图像,包括:

将所述初始帧图像对应的眼线掩码图拆分为多个子掩码图,每个所述子掩码图中包括至少一个眼线上妆区域;

分别将每个所述子掩码图及所述人脸区域图像转换为二值化图像;

分别对每个所述子掩码图对应的二值化图像与所述人脸区域图像对应的二值化图像进行与运算,获得每个所述子掩码图各自对应的子掩膜图像;

分别对每个所述子掩膜图像与所述初始帧图像对应的人脸区域图像进行与运算,获得所述初始帧图像对应的多个子目标区域图像;

将所述多个子目标区域图像合并为所述初始帧图像对应的第一目标区域图像。

在本申请的一些实施例中,所述分别对每个所述子掩码图对应的二值化图像与所述人脸区域图像对应的二值化图像进行与运算之前,还包括:

根据所述眼线掩码图对应的标准人脸关键点,确定第一子掩码图中位于眼线上妆区域的轮廓上的一个或多个第一定位点,所述第一子掩码图为所述多个子掩码图中的任一子掩码图;

根据所述第一人脸关键点,从所述人脸区域图像中确定出与每个所述第一定位点对应的第二定位点;

对所述第一子掩码图进行拉伸处理,将每个所述第一定位点拉伸至对应的每个所述第二定位点对应的位置处。

在本申请的一些实施例中,所述根据所述第一目标区域图像、所述第二目标区域图像和所述第三目标区域图像,确定所述当前帧图像对应的当前化妆进度,包括:

分别将所述第一目标区域图像、所述第二目标区域图像和所述第三目标区域图像转换为HLS颜色空间下包含饱和度通道的图像;

根据转换后的所述第一目标区域图像、所述第二目标区域图像和所述第三目标区域图像,确定所述当前帧图像对应的当前化妆进度。

在本申请的一些实施例中,所述根据转换后的所述第一目标区域图像、所述第二目标区域图像和所述第三目标区域图像,确定所述当前帧图像对应的当前化妆进度,包括:

分别计算转换后的所述第一目标区域图像对应的第一平均像素值、所述第二目标区域图像对应的第二平均像素值和所述第三目标区域图像对应的第三平均像素值;

计算第二平均像素值与所述第一平均像素值之间的第一差值,以及计算所述第三平均像素值与所述第一平均像素值之间的第二差值;

计算所述第二差值与所述第一差值之间的比值,得到所述当前帧图像对应的当前化妆进度。

在本申请的一些实施例中,所述根据所述第一目标区域图像、所述第二目标区域图像和所述第三目标区域图像,确定所述当前帧图像对应的当前化妆进度之前,还包括:

对所述第一目标区域图像和所述第二目标区域图像进行对齐处理;

对所述第一目标区域图像和所述第三目标区域图像进行对齐处理。

在本申请的一些实施例中,所述对所述第一目标区域图像和所述第二目标区域图像进行对齐处理,包括:

分别对所述第一目标区域图像和所述第二目标区域图像进行二值化处理,得到所述第一目标区域图像对应的第一二值化掩膜图像及所述第二目标区域图像对应的第二二值化掩膜图像;

对所述第一二值化掩膜图像和所述第二二值化掩膜图像进行与运算,得到所述第一目标区域图像与所述第二目标区域图像的相交区域对应的第二掩膜图像。

在本申请的一些实施例中,所述对所述第一目标区域图像和所述第二目标区域图像进行对齐处理,还包括:

获取所述初始帧图像对应的人脸区域图像及所述结果图像对应的人脸区域图像;

对所述第二掩膜图像和所述初始帧图像对应的人脸区域图像进行与运算,得到所述初始帧图像对应的新的第一目标区域图像;对所述第二掩膜图像和所述结果图像对应的人脸区域图像进行与运算,得到所述结果图像对应的新的第二目标区域图像。

在本申请的一些实施例中,所述获取所述初始帧图像和所述当前帧图像对应的眼线掩码图,包括:

获取用户选择的眼线样式图;

将所述眼线样式图确定为所述初始帧图像和所述当前帧图像对应的眼线掩码图。

在本申请的一些实施例中,所述获取所述初始帧图像和所述当前帧图像对应的眼线掩码图,包括:

获取用户选择的眼线样式图;

根据所述眼线样式图和所述初始帧图像中用户的眼部状态,确定所述初始帧图像对应的眼线掩码图;

根据所述眼线样式图和所述当前帧图像中用户的眼部状态,确定所述当前帧图像对应的眼线掩码图。

在本申请的一些实施例中,所述根据所述眼线样式图和所述初始帧图像中用户的眼部状态,确定所述初始帧图像对应的眼线掩码图,包括:

若所述初始帧图像中用户的眼部状态为睁眼状态,则获取所述眼线样式图对应的睁眼样式图;将所述睁眼样式图确定为所述初始帧图像对应的眼线掩码图;

若所述初始帧图像中用户的眼部状态为闭眼状态,则获取所述眼线样式图对应的闭眼样式图,并将所述闭眼样式图确定为所述初始帧图像对应的眼线掩码图。

在本申请的一些实施例中,所述根据所述第一人脸关键点,获取所述初始帧图像对应的人脸区域图像,包括:

根据所述第一人脸关键点,对所述初始帧图像及所述第一人脸关键点进行旋转矫正;

根据矫正后的所述第一人脸关键点,从矫正后的所述初始帧图像中截取包含人脸区域的图像;

将所述包含人脸区域的图像缩放至预设尺寸,得到所述初始帧图像对应的人脸区域图像。

在本申请的一些实施例中,所述根据所述第一人脸关键点,对所述初始帧图像及所述第一人脸关键点进行旋转矫正,包括:

根据所述第一人脸关键点包括的左眼关键点和右眼关键点,分别确定左眼中心坐标和右眼中心坐标;

根据所述左眼中心坐标和所述右眼中心坐标,确定所述初始帧图像对应的旋转角度及旋转中心点坐标;

根据所述旋转角度和所述旋转中心点坐标,对所述初始帧图像及所述第一人脸关键点进行旋转矫正。

在本申请的一些实施例中,所述根据矫正后的所述第一人脸关键点,从矫正后的所述初始帧图像中截取包含人脸区域的图像,包括:

从矫正后的所述第一人脸关键点中确定最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值;

根据所述最小横坐标值、所述最小纵坐标值、所述最大横坐标值和所述最大纵坐标值,确定矫正后的所述初始帧图像中人脸区域对应的截取框;

根据所述截取框,从矫正后的所述初始帧图像中截取出包含所述人脸区域的图像。

本申请第二方面的实施例提供了一种化妆进度检测装置,包括:

获取模块,用于获取用户化妆视频的初始帧图像和当前帧图像,以及获取所述初始帧图像和所述当前帧图像对应的眼线掩码图;

生成模块,用于根据所述初始帧图像,模拟生成眼线上妆完成后的结果图像;

进度确定模块,用于根据所述眼线掩码图、所述结果图像、所述初始帧图像和所述当前帧图像,确定所述当前帧图像对应的当前化妆进度。

本申请第三方面的实施例提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序以实现上述第一方面所述的方法。

本申请第四方面的实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行实现上述第一方面所述的方法。

本申请实施例中提供的技术方案,至少具有如下技术效果或优点:

在本申请实施例中,获取用户化妆过程的当前帧图像与初始帧图像,在初始帧图像的基础上渲染出完成眼线上妆的结果图像。确定出眼线上妆区域从当前帧图像到初始帧图像的饱和度变化值,以及确定出眼线上妆区域从结果图像到初始帧图像的饱和度变化值,计算当前帧图像对应的饱和度变化值与结果图像对应的饱和度变化值之间的比值,即得到了眼线上妆的当前化妆进度。无需采用深度学习模型,仅通过图像处理即可准确地检测出眼线的化妆进度,运算量小,成本低,减少了服务器的处理压力,提高了眼线化妆进度检测的效率,能够满足眼线化妆进度检测的实时性要求。

本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变的明显,或通过本申请的实践了解到。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。

在附图中:

图1示出了本申请一实施例所提供的一种化妆进度检测方法的流程图;

图2示出了本申请一实施例所提供的求解图像的旋转角度的示意图;

图3示出了本申请一实施例所提供的两次坐标系转换的示意图;

图4示出了本申请一实施例所提供的一种化妆进度检测方法的另一流程示意图;

图5示出了本申请一实施例所提供的一种化妆进度检测装置的结构示意图;

图6示出了本申请一实施例所提供的一种电子设备的结构示意图;

图7示出了本申请一实施例所提供的一种存储介质的示意图。

具体实施方式

下面将参照附图更详细地描述本申请的示例性实施方式。虽然附图中显示了本申请的示例性实施方式,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。

需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本申请所属领域技术人员所理解的通常意义。

下面结合附图来描述根据本申请实施例提出的一种化妆进度检测方法、装置、设备及存储介质。

目前相关技术中存在一些虚拟试妆功能,可以应用在销售柜台或者手机应用软件中,采用人脸识别技术对用户提供虚拟试妆服务,可以将多种眼线样式进行实时的面部贴合展示。此外还提供人脸皮肤检测服务,但这些服务只能解决用户挑选适合自己的化妆品,或者选取适合自己的皮肤保养方案的需求。基于这些服务可以帮助用户挑选适合自己的眼线产品,但是无法对眼线上妆的进度进行显示,不能满足用户实时化妆的需求。相关技术中还存在一些使用深度学习模型提供虚拟试妆、肤色侦测、个性化产品推荐等功能,这些功能均需要预先收集大量的人脸图片对深度学习模型进行训练。但人脸图片是用户的隐私数据,很难收集到庞大的人脸图片。且模型训练需耗费大量计算资源,成本高。模型的精度与实时性成反比,化妆进度检测需要实时捕获用户人脸面部信息来确定用户当前的化妆进度,实时性要求很高,能够满足实时性要求的深度学习模型,其检测的准确性不高。

基于此,本申请实施例提供了一种化妆进度检测方法,该方法用于检测眼线的化妆进度,获取用户化妆过程的当前帧图像与初始帧图像(即第一帧图像),在初始帧图像的基础上渲染出完成眼线上妆的结果图像。确定出眼线上妆区域从当前帧图像到初始帧图像的变化值,以及确定出眼线上妆区域从结果图像到初始帧图像的变化值,计算当前帧图像对应的变化值与结果图像对应的变化值之间的比值,即得到了眼线上妆的当前化妆进度。该方法无需采用深度学习模型,仅通过图像处理即可准确地检测出眼线的化妆进度,运算量小,成本低,减少了服务器的处理压力,提高了眼线化妆进度检测的效率,能够满足眼线化妆进度检测的实时性要求。

参见图1,该方法具体包括以下步骤:

步骤101:获取用户化妆视频的初始帧图像和当前帧图像,以及获取初始帧图像和当前帧图像对应的眼线掩码图。

本申请实施例的执行主体为服务器。用户的手机或电脑等终端上安装有与服务器提供的化妆进度检测服务相适配的客户端。当用户需要使用化妆进度检测服务时,用户打开终端上的该客户端,客户端显示多个眼线样式图,眼线样式图是基于预设标准人脸图像制作的,预设标准人脸图像为脸部无遮挡、五官清晰且两眼连线与水平线平行的人脸图像。每个眼线样式图分别对应于不同眼线形状的眼线效果,如有的眼线样式图对应于圆眼形状的眼线效果,有的眼线样式图对应于下垂眼的眼线效果,有的眼线样式图对应于上挑眼的眼线效果,等等。考虑到用户在眼线上妆过程中大部分时间是睁着眼睛的,因此预设标准人脸图像中人脸的眼部状态为睁眼状态,以睁眼状态的预设标准人脸图像来制作眼线样式图。

客户端显示的界面中可以同时显示多个眼线样式图,用户从显示的多个眼线样式图中选择一个眼线样式图。客户端将用户选择的眼线样式图发送给服务器,服务器接收客户端发送的眼线样式图。

上述客户端的显示界面中还设置有视频上传接口,当检测到用户点击该视频上传接口时,调用终端的摄像装置拍摄用户的化妆视频,在拍摄过程中用户在自己脸部进行眼线上妆操作。用户的终端将拍摄的化妆视频以视频流的形式传输给服务器。服务器接收用户的终端传输的该化妆视频的每一帧图像。

在本申请实施例中,服务器将接收到的第一帧图像作为初始帧图像,以该初始帧图像作为参考来比对后续接收到的每一帧图像对应的特定妆容的当前化妆进度。由于对于后续每一帧图像的处理方式都相同,因此本申请实施例以当前时刻接收到的当前帧图像为例来阐述化妆进度检测的过程。

在本申请的另一些实施例中,服务器获得用户的化妆视频的初始帧图像和当前帧图像后,还检测初始帧图像和当前帧图像中是否均仅包含同一个用户的人脸图像。首先检测初始帧图像和当前帧图像中是否均仅包含一个人脸图像,若初始帧图像和/或当前帧图像中包含多个人脸图,或者,初始帧图像和/或当前帧图像中不包含人脸图像,则发送提示信息给用户的终端。用户的终端接收并显示该提示信息,以提示用户保持化妆视频中仅出现同一个用户的人脸。例如,提示信息可以为“请保持镜头内仅出现同一个人的人脸”。

若检测出初始帧图像和当前帧图像中均仅包含一个人脸图像,则进一步判断初始帧图像中的人脸图像与当前帧图像中的人脸图像是否属于同一个用户。具体地,可以通过人脸识别技术提取初始帧图像中人脸图像对应的人脸特征信息,以及提取当前帧图像中人脸图像对应的人脸特征信息,计算这两帧图像中提取的人脸特征信息的相似度,若计算的相似度大于或等于设定值,则确定初始帧图像和当前帧图像中的人脸属于同一用户。若计算的相似度小于设定值,则确定初始帧图像和当前帧图像中的人脸属于不同用户,则发送提示信息给用户的终端。用户的终端接收并显示该提示信息,以提示用户保持化妆视频中仅出现同一个用户的人脸。

服务器通过上述方式获得用户选择的眼线样式图,以及获得用户化妆过程中的初始帧图像和当前帧图像后,服务器可以直接将用户选择的眼线样式图确定为初始帧图像和当前帧图像对应的眼线掩码图。

或者,在另一些实施例中,在制作眼线样式图时,对于每一种眼线形状的眼线效果,都制作了睁眼状态对应的睁眼样式图,以及制作了避免状态对应的闭眼样式图,并在服务器中预先配置了每种眼线样式对应的睁眼样式图和闭眼样式图。客户端显示的界面中显示的眼线样式图可以都为睁眼样式图,也可以都为闭眼样式图。用户从显示的多个眼线样式图中选择自己需要的眼线样式图后,客户端将用户选择的眼线样式图发送给服务器。服务器根据用户选择的眼线样式图以及上述初始帧图像和当前帧图像中用户的眼部状态,分别确定初始帧图像对应的眼线掩码图及当前帧图像对应的眼线掩码图。

对于初始帧图像,首先通过图像处理分析初始帧图像中人脸的眼部区域的纹理特征,确定初始帧图像中用户的眼部状态是否为睁眼状态。如果是,则根据用户选择的眼线样式图,从预先配置的多组睁眼样式图和闭眼样式图中,获取用户选择的该眼线样式图对应的睁眼样式图,将该睁眼样式图确定为初始帧图像对应的眼线掩码图。如果确定出初始帧图像中用户的眼部状态为闭眼状态,则根据用户选择的眼线样式图,从预先配置的多组睁眼样式图和闭眼样式图中,获取用户选择的该眼线样式图对应的闭眼样式图,将该闭眼样式图确定为初始帧图像对应的眼线掩码图。

对于当前帧图像,与上述初始帧图像的操作相同,按照上述方式确定出当前帧图像对应的眼线掩码图。

依据初始帧图像和当前帧图像中用户的眼部状态,来分别确定初始帧图像对应的眼线掩码图及当前帧图像对应的眼线掩码图。如此使得初始帧图像与其对应的眼线掩码图对应的眼部状态一致,以及使当前帧图像与其对应的眼线掩码图对应的眼部状态一致。进而使后续依据眼线掩码图扣取眼线上妆区域时准确性更高,消除初始帧图像和当前帧图像中眼部状态不一致带来的误差,提高眼线化妆进度检测的准确性。

服务器通过本步骤获得用户化妆的初始帧图像及其对应的眼线掩码图,以及获得用户化妆的当前帧图像及其对应的眼线掩码图后,通过如下步骤102和103的操作来确定用户的当前化妆进度。

步骤102:根据初始帧图像,模拟生成眼线上妆完成后的结果图像。

利用3D渲染技术在初始帧图像上渲染完成眼线上妆的效果,得到结果图像。

步骤103:根据眼线掩码图、结果图像、初始帧图像和当前帧图像,确定当前帧图像对应的当前化妆进度。

首先根据初始帧图像对应的眼线掩码图,从初始帧图像中获取眼线上妆的第一目标区域图像。由于结果图像是在初始帧图像的基础上生成的,因此可以采用初始帧图像对应的眼线掩码图来扣取结果图像中的眼线上妆区域。即根据初始帧图像对应的眼线掩码图,从结果图像中获取眼线上妆的第二目标区域图像。还根据当前帧图像对应的眼线掩码图,从当前帧图像中获取眼线上妆的第三目标区域图像。然后根据截取出的第一目标区域图像、第二目标区域图像和第三目标区域图像,确定当前帧图像对应的当前化妆进度。

由于上述第一目标区域图像、第二目标区域图像和第三目标区域图像的获取过程均相同,因此本申请实施例以从初始帧图像中获取第一目标区域图像为例具体说明该过程。服务器具体通过如下步骤S1-S3的操作来获取初始帧图像对应的第一目标区域图像,包括:

S1:检测初始帧图像对应的第一人脸关键点。

服务器中配置了预先训练好的用于检测人脸关键点的检测模型,通过该检测模型提供人脸关键点检测的接口服务。服务器获取到用户化妆视频的初始帧图像后,调用人脸关键点检测的接口服务,通过检测模型识别出初始帧图像中用户脸部的所有人脸关键点。为了与当前帧图像对应的人脸关键点进行区分,本申请实施例将初始帧图像对应的所有人脸关键点称为第一人脸关键点。将当前帧图像对应的所有人脸关键点称为第二人脸关键点。将结果图像对应的所有人脸关键点成为第三人脸关键点。

其中,识别出的人脸关键点包括用户脸部轮廓上的关键点及嘴巴、鼻子、眼睛、眉毛等部位的关键点。识别出的人脸关键点的数目可以为106个。

S2:根据第一人脸关键点,获取初始帧图像对应的人脸区域图像。

服务器具体通过如下步骤S20-S22的操作来获取初始帧图像对应的人脸区域图像,包括:

S20:根据第一人脸关键点,对初始帧图像及第一人脸关键点进行旋转矫正。

由于用户在通过终端拍摄化妆视频时,不能保证每一帧图像中人脸的姿态角度均相同,为了将每一帧图像中人脸的姿态角度对齐,需要对每一帧图像中的人脸进行旋转矫正,以使矫正后每一帧图像中人脸眼睛的连线都处在同一水平线上,从而确保每一帧图像中人脸的姿态角度相同,避免因姿态角度不同导致化妆进度检测误差较大的问题。

具体地,根据第一人脸关键点包括的左眼关键点和右眼关键点,分别确定左眼中心坐标和右眼中心坐标。从第一人脸关键点确定出左眼区域的全部左眼关键点及右眼区域的全部右眼关键点。对确定出的全部左眼关键点的横坐标取均值,以及对全部左眼关键点的纵坐标取均值,将左眼对应的横坐标的均值和纵坐标的均值组成一个坐标,将该坐标确定为左眼中心坐标。按照同样的方式确定出右眼中心坐标。

然后根据左眼中心坐标和右眼中心坐标,确定初始帧图像对应的旋转角度及旋转中心点坐标。如图2所示,根据左眼中心坐标和右眼中心坐标计算出两个坐标的水平差值dx和竖直差值dy,以及计算出左眼中心坐标和右眼中心坐标的两眼连线长度d。依据两眼连线长度d、水平差值dx和竖直差值dy,计算出两眼连线与水平方向的夹角θ,该夹角θ即为初始帧图像对应的旋转角度。然后根据左眼中心坐标和右眼中心坐标计算出两眼连线的中心点坐标,该中点点坐标即为初始帧图像对应的旋转中心点坐标。

根据计算出的旋转角度和旋转中心点坐标,对初始帧图像及第一人脸关键点进行旋转矫正。具体将旋转角度和旋转中心点坐标输入用于计算图片的旋转矩阵的预设函数中,该预设函数可以为OpenCV中的函数cv2.getRotationMatrix2D()。通过调用该预设函数获得初始帧图像对应的旋转矩阵。然后计算初始帧图像和该旋转矩阵的乘积,得到矫正后的初始帧图像。利用旋转矩阵对初始帧图像进行矫正的操作,也可以通过调用OpenCV中的函数cv2.warpAffine()来完成。

对于第一人脸关键点,需要对每个第一人脸关键点逐一进行矫正,以与矫正后的初始帧图像相对应。在对第一人脸关键点逐一矫正时,需要进行两次坐标系的转换,第一次将以初始帧图像左上角为原点的坐标系转化为以左下角为原点的坐标系,第二次进一步将以左下角为原点的坐标系转化为以上述旋转中心点坐标为坐标原点的坐标系,如图3所示。经过两次坐标系转换后对每个第一人脸关键点进行如下公式(1)的转换,可完成对第一人脸关键点的旋转矫正。

在公式(1)中,x

在本申请实施例中步骤102生成结果图像之前,可以先通过本步骤的方式对初始帧图像进行旋转矫正,使图像中两眼连线与水平线平行之后,再在旋转矫正后的初始帧图像的基础上渲染出完成眼线上妆后的结果图像,从而使结果图像中人脸两眼连线也与水平线平行,如此无需再对结果图像进行旋转矫正,节省运算量。

经过矫正后的初始帧图像和第一人脸关键点是基于整张图像的,整张图像不仅包含用户的人脸信息,还包括其他多余的图像信息,因此需要通过如下步骤S21对矫正后的图像进行人脸区域的裁剪。

S21:根据矫正后的第一人脸关键点,从矫正后的初始帧图像中截取包含人脸区域的图像。

首先从矫正后的第一人脸关键点中确定最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值。然后根据最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值,确定矫正后的初始帧图像中人脸区域对应的截取框。具体地,将最小横坐标值和最小纵坐标值组成一个坐标点,将该坐标点作为人脸区域对应的截取框的左上角顶点。将最大横坐标值和最大纵坐标值组成另一个坐标点,将该坐标点作为人脸区域对应的截取框的右下角顶点。根据上述左上角顶点和右下角顶点在矫正后的初始帧图像中确定截取框的位置,从矫正后的初始帧图像中截取出位于该截取框内的图像,即截取出包含人脸区域的图像。

在本申请的另一些实施例中,为了确保将用户的全部的人脸区域截取出来,避免截取不完整导致后续化妆进度检测误差很大的情况发生,还可以将上述截取框放大预设倍数,该预设倍数可以为1.15或1.25等。本申请实施例并不限制预设倍数的具体取值,实际应用中可根据需求来设定该预设倍数。将上述截取框向周围放大预设倍数之后,从矫正后的初始帧图像中截取出位于放大后的截取框中的图像,从而截取出包含用户的完整人脸区域的图像。

S22:将包含人脸区域的图像缩放至预设尺寸,得到初始帧图像对应的人脸区域图像。

通过上述方式从初始帧图像中截取出包含用户的人脸区域的图像后,将包含人脸区域的图像缩放至预设尺寸,得到初始帧图像对应的人脸区域图像。该预设尺寸可以为390×390或400×400等。本申请实施例并不限制预设尺寸的具体取值,实际应用中可根据需求进行设定。

为了使第一人脸关键点与缩放后的人脸区域图像相适应,将截取的包含人脸区域的图像缩放至预设尺寸后,还需根据缩放前包含人脸区域的图像的尺寸及该预设尺寸,对上述矫正后的第一人脸关键点进行缩放平移处理。具体地,依据缩放前包含人脸区域的图像的尺寸及图像所需缩放至的预设尺寸,确定每个第一人脸关键点的平移方向及平移距离,进而根据每个第一人脸关键点对应的平移方向和平移距离,分别对每个第一人脸关键点进行平移操作,并记录平移后的每个第一人脸关键点的坐标。

通过上述方式从初始帧图像中获得人脸区域图像,并通过旋转矫正和平移缩放等操作使第一人脸关键点与获得的人脸区域图像相适应,之后通过如下步骤S3的方式从人脸区域图像中提取出上妆区域对应的图像区域。

在本申请的另一些实施例中,执行步骤S3之前,还可以先对初始帧图像对应的人脸区域图像进行滤波处理,用于去除人脸区域图像中的噪声。具体可以采用高斯滤波算法或拉普拉斯算法对初始帧图像对应的人脸区域图像进行滤波和平滑处理。

以高斯滤波算法为例,可以根据预设尺寸的高斯核,对初始帧图像对应的人脸区域图像进行高斯滤波处理。高斯滤波的高斯核是高斯滤波处理的关键参数,高斯核选取过小,则不能达到很好的滤波效果,高斯核选取过大,虽然能过滤掉图像中的噪声信息,但同时会平滑掉图像中有用的信息。本申请实施例选取预设尺寸的高斯核,预设尺寸可以为9×9。此外高斯滤波函数的另一组参数sigmaX、sigmaY均设置为0,经过高斯滤波后,图像信息更加平滑,进而提高后续获取化妆进度的准确性。

通过上述方式获得初始帧图像对应的人脸区域图像后,通过步骤S3从人脸区域图像出提取特定妆容对应的目标区域图像。

S3:根据初始帧图像对应的眼线掩码图,从初始帧图像对应的人脸区域图像中获取眼线上妆的第一目标区域图像。

眼线上妆区域通常包括上眼睑、下眼睑、眼尾处等区域。因此可以直接从人脸区域图像中抠取出需要进行上妆的这些特定区域,进而避免无效区域对眼线化妆进度检测的干扰,提高眼线化妆进度检测的准确性。

服务器具体通过如下步骤S30-S32的操作来获得第一目标区域图像,包括:

S30:分别将初始帧图像对应的眼线掩码图和人脸区域图像转换为二值化图像。

S31:对眼线掩码图对应的二值化图像和人脸区域图像对应的二值化图像进行与运算,获得眼线掩码图与该人脸区域图像的相交区域对应的第一掩膜图像。

分别将眼线掩码图对应的二值化图像和该人脸区域图像对应的二值化图像中坐标相同的像素点的像素值进行与运算。由于眼线掩码图中只有眼线上妆区域中的像素点的像素值不为零,其他区域的像素点均为零。因此与运算得到的第一掩膜图像相当于从初始帧图像对应的人脸区域图像中截取出了各个眼线上妆区域。

在本申请的另一些实施例中,由于眼线掩码图是基于预设标准人脸图像生成的,因此眼线掩码图中的眼线上妆区域很可能无法与初始帧图像中用户实际上妆的区域完全重合,从而影响眼线化妆进度检测的准确性。因此在将眼线掩码图对应的二值化图像和人脸区域图像对应的二值化图像进行与运算之前,还可以先对眼线掩码图中的眼线上妆区域与初始帧图像中的对应区域进行对齐操作。

具体地,根据眼线掩码图对应的标准人脸关键点,确定眼线掩码图中位于每个眼线上妆区域的轮廓上的一个或多个第一定位点。眼线掩码图对应的标准人脸关键点即为预设标准人脸图像对应的标准人脸关键点。每个眼线上妆区域对应的第一定位点的数目可以为预设数目个,预设数目可以为3或4等。

对于眼线掩码图中的任一眼线上妆区域,首先确定该眼线上妆区域的轮廓上是否包含预设数目个标准人脸关键点,若包含,则将位于轮廓上的任意预设数目个标准人脸关键点确定为该眼线上妆区域对应的第一定位点。若该眼线上妆区域的轮廓上的标准人脸关键点不足预设数目个,则利用该眼线上妆区域周围的标准人脸关键点,通过线性变换的方式生成位于该眼线上妆区域的轮廓上的第一定位点。具体可以将周围的标准人脸关键点上移、下移、左移或右移等平移操作获得第一定位点。

通过上述方式获得眼线掩码图中每个眼线上妆区域对应的第一定位点后,根据初始帧图像对应的第一人脸关键点,从初始帧图像中确定出与每个第一定位点对应的第二定位点。由于眼线掩码图对应的标准人脸关键点和初始帧图像对应的第一人脸关键点都是通过相同的检测模型获得的,不同位置的关键点都具有各自的编号。因此对于属于标准人脸关键点的第一定位点,从初始帧图像对应的第一人脸关键点中确定出与该第一定位点对应的标准人脸关键点的编号相同的第一人脸关键点,将确定出的第一人脸关键点作为该第一定位点对应的第二定位点。对于利用标准人脸关键点进行线性变换得到的第一定位点,则从初始帧图像对应的第一人脸关键点中确定出该第一定位点对应的第一人脸关键点,将对该第一人脸关键点进行相同的线性变换得到的点确定为该第一定位点对应的第二定位点。

通过上述方式确定每个第一定位点对应的第二定位点之后,对眼线掩码图进行拉伸处理,将每个第一定位点拉伸至对应的每个第二定位点对应的位置处,即使得拉伸后眼线掩码图中每个第一定位点的位置都与其对应的第二定位点的位置相同。

通过上述方式能够将眼线掩码图中的眼线上妆区域与初始帧图像中用户实际上妆的区域对齐,从而确保通过眼线掩码图能够精确地从初始帧图像中提取出眼线上妆的第一目标图像,进而提高化妆进度检测的准确性。

将眼线掩码图与初始帧图像对齐之后,再通过步骤S31的操作获得眼线掩码图与初始帧图像的人脸区域图像之间相交区域对应的第一掩膜图像,然后通过步骤S32的方式来扣取初始帧图像对应的第一目标区域图像。

S32:对第一掩膜图像与初始帧图像对应的人脸区域图像进行与运算,获得初始帧图像对应的第一目标区域图像。

由于第一掩膜图像为二值化图像,因此对第一掩膜图像和初始帧图像对应的人脸区域图像进行与运算,从初始帧图像对应的人脸区域图像中截取出彩色的各个眼线上妆区域的图像,即得到了初始帧图像对应的第一目标区域图像。

在本申请的另一些实施例中,由于眼线掩码图中各个眼线上妆区域是不连贯的,因此还可以将眼线掩码图拆成多个子掩码图,每个子掩码图中包含的眼线上妆区域均不相同。然后利用拆分出的子掩码图来从初始帧图像对应的人脸区域图像中获取第一目标区域图像。具体可以通过如下步骤S33-S37的操作来实现,包括:

S33:将初始帧图像对应的眼线掩码图拆分为多个子掩码图,每个子掩码图中包括至少一个眼线上妆区域。

眼线掩码图中包括多个互不连贯的眼线上妆区域,对互不连贯的眼线上妆区域进行拆分,得到多个子掩码图中,每个子掩码图中可以仅包括一个眼线上妆区域,也可以包括一个以上的眼线上妆区域。各子掩码图包括的眼线上妆区域互不相同,且子掩码图中除眼线上妆区域内的像素点的像素值不为零外,其他区域的像素点的像素值均为零。

S34:分别将每个子掩码图及初始帧图像对应的人脸区域图像转换为二值化图像。

S35:分别对每个子掩码图对应的二值化图像与人脸区域图像对应的二值化图像进行与运算,获得每个子掩码图各自对应的子掩膜图像。

对于任意一个子掩码图,将该子掩码图的二值化图像和该人脸区域图像对应的二值化图像中坐标相同的像素点的像素值进行与运算。由于子妆掩码图中只有眼线上妆区域中的像素点的像素值不为零,其他区域的像素点均为零。因此与运算得到的子掩膜图像相当于从初始帧图像对应的人脸区域图像中截取出了该子掩膜图像对应的眼线上妆区域。

在本申请的另一些实施例中,由于眼线掩码图是基于预设标准人脸图像生成的,子掩码图是从眼线掩码图中拆分出来的,因此子掩码图中的眼线上妆区域很可能无法与初始帧图像中用户实际上妆的区域完全重合,从而影响化妆进度检测的准确性。因此在将子掩码图对应的二值化图像和人脸区域图像对应的二值化图像进行与运算之前,还可以先对子掩码图中的眼线上妆区域与初始帧图像中的对应区域进行对齐操作。

具体地,根据眼线掩码图对应的标准人脸关键点,确定子掩码图中位于眼线上妆区域的轮廓上的一个或多个第一定位点。根据初始帧图像对应的第一人脸关键点,从初始帧图像中确定出与每个第一定位点对应的第二定位点。对子掩码图进行拉伸处理,将每个第一定位点拉伸至对应的每个第二定位点对应的位置处,即使得拉伸后子掩码图中每个第一定位点的位置都与其对应的第二定位点的位置相同。

通过上述方式能够将子掩码图中的眼线上妆区域与初始帧图像中用户实际上妆的区域对齐,从而确保通过各子掩码图能够精确地从初始帧图像中提取出上妆的第一目标图像,进而提高化妆进度检测的准确性。通过将眼线掩码图拆分成多个子掩码图,分别通过上述方式将每个子掩码图与初始帧图像对齐,相对于直接将眼线掩码图像与初始帧图像对齐的方式,拆分之后分别进行对齐的准确性更高。

S36:分别对每个子掩膜图像与初始帧图像对应的人脸区域图像进行与运算,获得初始帧图像对应的多个子目标区域图像。

S37:将多个子目标区域图像合并为初始帧图像对应的第一目标区域图像。

对于结果图像和当前帧图像,可以采用与初始帧相同地方式,分别获得结果图像对应的第二目标区域图像和当前帧图像对应的第三目标区域图像。

通过上述方式获得的初始帧图像对应的第一目标区域图像、结果图像对应的第二目标区域图像和当前帧图像对应的第三目标区域图像,这些图像的颜色空间均为RGB颜色空间。本申请实施例预先通过大量试验确定了眼线上妆对颜色空间的各通道分量的影响,发现对RGB颜色空间中各颜色通道的影响差别不大。而HLS颜色空间是由Hue(色调)、Saturation(饱和度)和Light(亮度)三个分量组成,通过试验发现眼线上妆能够引起HLS颜色空间的饱和度分量发生明显的变化。

通过上述任一方式获得初始帧图像对应的第一目标区域图像、结果图像对应的第二目标区域图像和当前帧图像对应的第三目标区域图像后,还将第一目标区域图像、第二目标区域图像和第三目标区域图像均由RGB颜色空间转换为HLS颜色空间下。并从转换后的第一目标区域图像的HLS颜色空间中分离出饱和度通道,得到仅包含饱和度通道的第一目标区域图像。从转换后的第二目标区域图像的HLS颜色空间中分离出饱和度通道,得到仅包含饱和度通道的第二目标区域图像。以及,从转换后的第三目标区域图像的HLS颜色空间中分离出饱和度通道,得到包含饱和度通道的第三目标区域图像。

然后根据转换后的第一目标区域图像、第二目标区域图像和第三目标区域图像,确定当前帧图像对应的当前化妆进度。

具体地,分别计算转换后的第一目标区域图像对应的第一平均像素值、第二目标区域图像对应的第二平均像素值和第三目标区域图像对应的第三平均像素值。其中,平均像素值即为图像中眼线上妆区域中所有像素点的饱和度分量的平均值。

计算第二平均像素值与第一平均像素值之间的第一差值,第一差值能够表示眼线上妆区域从结果图像到初始帧图像的饱和度变化,该饱和度变化是由完成眼线上妆而形成的。

计算第三平均像素值与第一平均像素值之间的第二差值,第二差值能够表示眼线上妆区域从当前帧图像到初始帧图像的饱和度变化,该饱和度变化是由当前帧图像对应的当前已进行的眼线上妆操作而形成的。

计算第二差值与第一差值之间的比值,得到当前帧图像对应的当前化妆进度。即将当前已进行的眼线上妆所引起的饱和度变化与完成眼线上妆所引起的饱和度变化之间的比值,作为当前化妆进度。

在本申请的另一些实施例中,为了进一步提高眼线化妆进度检测的准确性,还对初始帧图像对应的第一目标区域图像和结果图像对应的第二目标区域图像进行对齐处理;以及,对初始帧图像对应的第一目标区域图像和当前帧图像对应的第三目标区域图像进行对齐处理。

由于对第一目标区域图像和第二目标区域图像对齐的操作,与对第一目标区域图像和第三目标区域图像对齐的操作相同。因此本申请实施例仅以第一目标区域图像和第二目标区域图像对齐进行详细说明。

具体地,分别对仅包含饱和度通道的第一目标区域图像和第二目标区域图像进行二值化处理,即将第一目标区域图像和第二目标区域图像眼线上妆区域中的像素点对应的饱和度分量的值均修改为1,将其余位置处的像素点的饱和度分量的值均修改为0。通过二值化处理得到第一目标区域图像对应的第一二值化掩膜图像和第二目标区域图像对应的第二二值化掩膜图像。

然后对第一二值化掩膜图像和第二二值化掩膜图像进行与运算,即分别将第一二值化掩膜图像和第二二值化掩膜图像中相同位置处的像素点进行与运算,得到第一目标区域图像与第二目标区域图像的相交区域对应的第二掩膜图像。该第二掩膜图像中像素点的饱和度分量不为零的区域,即为第一目标区域图像和第二目标区域中重合的眼线上妆区域。

通过步骤103的操作获得初始帧图像对应的人脸区域图像及当前帧图像对应的人脸区域图像。对第二掩膜图像和初始帧图像对应的人脸区域图像进行与运算,得到初始帧图像对应的新的第一目标区域图像;对第二掩膜图像和当前帧图像对应的人脸区域图像进行与运算,得到当前帧图像对应的新的第二目标区域图像。

由于第二掩膜图像中包含初始帧图像和当前帧图像中重合的眼线上妆区域,因此通过第二掩膜图像按照上述方式从初始帧图像和当前帧图像中分别抠取出新的第一目标区域图像和新的第二目标区域图像,使得新的第一目标区域图像和新的第二目标区域图像中眼线上妆区域的位置是完全一致的,即对齐了初始帧图像和结果图像中的眼线上妆区域,能够提高眼线化妆进度检测的准确性。

同样按照上述方式对第一目标区域图像和第三目标区域图像进行对齐,使得新的第一目标区域图像和新的第三目标区域图像中眼线上妆区域的位置是完全一致的,即对齐了初始帧图像和当前帧图像中的眼线上妆区域,能够提高眼线化妆进度检测的准确性。

通过上述方式得到新的第一目标区域图像、新的第二目标区域图像和新的第三目标区域图像后,再次通过上述步骤103的操作来确定当前帧图像对应的当前化妆进度。

通过上述任一方式确定出当前化妆进度后,服务器发送该当前化妆进度给用户的终端。用户的终端接收到当前化妆进度后,显示该当前化妆进度。当前化妆进度可以为比值或百分数。终端可以通过进度条的形式来显示当前化妆进度。

在用户化妆的过程中,通过本申请实施例提供的化妆进度检测方法,实时检测第一帧图像之后的每帧图像相对于第一帧图像的化妆进度,并将检测的化妆进度显示给用户,使用户能够直观地看到自己的眼线化妆进度,提高化妆效率。

为了便于理解本申请实施例提供的方法,下面结合附图进行说明。如图4所示,根据初始帧图像及其对应的第一人脸关键点,当前帧图像及其对应的第二人脸关键点,以及结果图像及其对应的第三人脸关键点,分别对初始帧图像、结果图像和当前帧图像中的人脸进行矫正和裁剪,然后通过拉普拉斯算法对裁剪出的三个人脸区域图像进行平滑去噪。然后将眼线掩码图分别与三个人脸区域图像进行对齐,根据眼线掩码图分别扣取出初始帧图像对应的第一目标区域图像、结果图像对应的第二目标区域图像和当前帧图像对应的第三目标区域图像。然后将第一目标区域图像、第二目标区域图像和第三目标区域图像转换为HLS颜色空间下仅包含饱和度通道的图像。计算转换后第一目标区域图像、第二目标区域图像和第三目标区域图像各自对应的第一平均像素值、第二平均像素值和第三平均像素值,计算第二平均像素值与第一平均像素值之间的第一差值和第三平均像素值与第一平均像素值之间的第二差值,计算第二差值与第一差值之间的比值得到当前化妆进度。

在本申请实施例中,获取用户化妆过程的当前帧图像与初始帧图像,在初始帧图像的基础上渲染出完成眼线上妆的结果图像。确定出眼线上妆区域从当前帧图像到初始帧图像的饱和度变化值,以及确定出眼线上妆区域从结果图像到初始帧图像的饱和度变化值,计算当前帧图像对应的饱和度变化值与结果图像对应的饱和度变化值之间的比值,即得到了眼线上妆的当前化妆进度。无需采用深度学习模型,仅通过图像处理即可准确地检测出眼线的化妆进度,运算量小,成本低,减少了服务器的处理压力,提高了眼线化妆进度检测的效率,能够满足眼线化妆进度检测的实时性要求。

进一步地,利用人脸关键点,对视频帧中用户的人脸区域进行矫正和裁剪,提高了识别人脸区域的准确性。对初始帧图像和当前帧图像以及对初始帧图像和结果图像中的眼线上妆区域对齐,减少因眼线上妆区域的位置差别引入的误差。在对扣取眼线上妆区域时可以将不连贯的眼线上妆区域分开计算,增加获取眼线上妆区域的准确率。还将眼线掩码图中的眼线上妆区域与人脸区域图像中的眼线上妆区域对齐,保证了扣取的眼线上妆区域的精确性。

本申请实施例还提供一种化妆进度检测装置,该用于执行上述任一实施例提供的化妆进度检测方法。如图5所示,该装置包括:

获取模块201,用于获取用户化妆视频的初始帧图像和当前帧图像,以及获取初始帧图像和当前帧图像对应的眼线掩码图;

生成模块202,用于根据初始帧图像,模拟生成眼线上妆完成后的结果图像;

进度确定模块203,用于根据眼线掩码图、结果图像、初始帧图像和当前帧图像,确定当前帧图像对应的当前化妆进度。

进度确定模块203,用于根据初始帧图像对应的眼线掩码图,从初始帧图像中获取眼线上妆的第一目标区域图像;根据结果图像获取眼线上妆的第二目标区域图像;根据当前帧图像对应的眼线掩码图,从当前帧图像中获取眼线上妆的第三目标区域图像;根据第一目标区域图像、第二目标区域图像和第三目标区域图像,确定当前帧图像对应的当前化妆进度。

进度确定模块203,用于检测初始帧图像对应的第一人脸关键点;根据第一人脸关键点,获取初始帧图像对应的人脸区域图像;根据初始帧图像对应的眼线掩码图,从人脸区域图像中获取眼线上妆的第一目标区域图像。

进度确定模块203,用于分别将初始帧图像对应的眼线掩码图和人脸区域图像转换为二值化图像;对眼线掩码图对应的二值化图像和人脸区域图像对应的二值化图像进行与运算,获得眼线掩码图与人脸区域图像的相交区域对应的第一掩膜图像;对第一掩膜图像与初始帧图像对应的人脸区域图像进行与运算,获得初始帧图像对应的第一目标区域图像。

进度确定模块203,用于根据眼线掩码图对应的标准人脸关键点,确定眼线掩码图中位于每个眼线上妆区域的轮廓上的一个或多个第一定位点;根据第一人脸关键点,从人脸区域图像中确定出与每个第一定位点对应的第二定位点;对眼线掩码图进行拉伸处理,将每个第一定位点拉伸至对应的每个第二定位点对应的位置处。

进度确定模块203,用于将初始帧图像对应的眼线掩码图拆分为多个子掩码图,每个子掩码图中包括至少一个眼线上妆区域;分别将每个子掩码图及人脸区域图像转换为二值化图像;分别对每个子掩码图对应的二值化图像与人脸区域图像对应的二值化图像进行与运算,获得每个子掩码图各自对应的子掩膜图像;分别对每个子掩膜图像与初始帧图像对应的人脸区域图像进行与运算,获得初始帧图像对应的多个子目标区域图像;将多个子目标区域图像合并为初始帧图像对应的第一目标区域图像。

进度确定模块203,用于根据眼线掩码图对应的标准人脸关键点,确定第一子掩码图中位于眼线上妆区域的轮廓上的一个或多个第一定位点,第一子掩码图为多个子掩码图中的任一子掩码图;根据第一人脸关键点,从人脸区域图像中确定出与每个第一定位点对应的第二定位点;对第一子掩码图进行拉伸处理,将每个第一定位点拉伸至对应的每个第二定位点对应的位置处。

进度确定模块203,用于分别将第一目标区域图像、第二目标区域图像和第三目标区域图像转换为HLS颜色空间下包含饱和度通道的图像;根据转换后的第一目标区域图像、第二目标区域图像和第三目标区域图像,确定当前帧图像对应的当前化妆进度。

进度确定模块203,用于分别计算转换后的第一目标区域图像对应的第一平均像素值、第二目标区域图像对应的第二平均像素值和第三目标区域图像对应的第三平均像素值;计算第二平均像素值与第一平均像素值之间的第一差值,以及计算第三平均像素值与第一平均像素值之间的第二差值;计算第二差值与第一差值之间的比值,得到当前帧图像对应的当前化妆进度。

该装置还包括:对齐模块,用于对第一目标区域图像和第二目标区域图像进行对齐处理;对第一目标区域图像和第三目标区域图像进行对齐处理。

对齐模块,用于分别对第一目标区域图像和第二目标区域图像进行二值化处理,得到第一目标区域图像对应的第一二值化掩膜图像及第二目标区域图像对应的第二二值化掩膜图像;对第一二值化掩膜图像和第二二值化掩膜图像进行与运算,得到第一目标区域图像与第二目标区域图像的相交区域对应的第二掩膜图像;获取初始帧图像对应的人脸区域图像及结果图像对应的人脸区域图像;对第二掩膜图像和初始帧图像对应的人脸区域图像进行与运算,得到初始帧图像对应的新的第一目标区域图像;对第二掩膜图像和结果图像对应的人脸区域图像进行与运算,得到结果图像对应的新的第二目标区域图像。

获取模块201,用于获取用户选择的眼线样式图;将眼线样式图确定为初始帧图像和当前帧图像对应的眼线掩码图。

获取模块201,用于获取用户选择的眼线样式图;根据眼线样式图和初始帧图像中用户的眼部状态,确定初始帧图像对应的眼线掩码图;根据眼线样式图和当前帧图像中用户的眼部状态,确定当前帧图像对应的眼线掩码图。

获取模块201,用于若初始帧图像中用户的眼部状态为睁眼状态,则获取眼线样式图对应的睁眼样式图;将睁眼样式图确定为初始帧图像对应的眼线掩码图;若初始帧图像中用户的眼部状态为闭眼状态,则获取眼线样式图对应的闭眼样式图,并将闭眼样式图确定为初始帧图像对应的眼线掩码图。

进度确定模块203,用于根据第一人脸关键点,对初始帧图像及第一人脸关键点进行旋转矫正;根据矫正后的第一人脸关键点,从矫正后的初始帧图像中截取包含人脸区域的图像;将包含人脸区域的图像缩放至预设尺寸,得到初始帧图像对应的人脸区域图像。

进度确定模块203,用于根据第一人脸关键点包括的左眼关键点和右眼关键点,分别确定左眼中心坐标和右眼中心坐标;根据左眼中心坐标和右眼中心坐标,确定初始帧图像对应的旋转角度及旋转中心点坐标;根据旋转角度和旋转中心点坐标,对初始帧图像及第一人脸关键点进行旋转矫正。

进度确定模块203,用于从矫正后的第一人脸关键点中确定最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值;根据最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值,确定矫正后的初始帧图像中人脸区域对应的截取框;根据截取框,从矫正后的初始帧图像中截取出包含人脸区域的图像。

本申请的上述实施例提供的化妆进度检测装置与本申请实施例提供的化妆进度检测方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。

本申请实施方式还提供一种电子设备,以执行上述化妆进度检测方法。请参考图6,其示出了本申请的一些实施方式所提供的一种电子设备的示意图。如图6所示,电子设备8包括:处理器800,存储器801,总线802和通信接口803,所述处理器800、通信接口803和存储器801通过总线802连接;所述存储器801中存储有可在所述处理器800上运行的计算机程序,所述处理器800运行所述计算机程序时执行本申请前述任一实施方式所提供的化妆进度检测方法。

其中,存储器801可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口803(可以是有线或者无线)实现该装置网元与至少一个其他网元之间的通信连接,可以使用互联网、广域网、本地网、城域网等。

总线802可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。其中,存储器801用于存储程序,所述处理器800在接收到执行指令后,执行所述程序,前述本申请实施例任一实施方式揭示的所述化妆进度检测方法可以应用于处理器800中,或者由处理器800实现。

处理器800可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器800中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器800可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器801,处理器800读取存储器801中的信息,结合其硬件完成上述方法的步骤。

本申请实施例提供的电子设备与本申请实施例提供的化妆进度检测方法出于相同的发明构思,具有与其采用、运行或实现的方法相同的有益效果。

本申请实施方式还提供一种与前述实施方式所提供的化妆进度检测方法对应的计算机可读存储介质,请参考图7,其示出的计算机可读存储介质为光盘30,其上存储有计算机程序(即程序产品),所述计算机程序在被处理器运行时,会执行前述任意实施方式所提供的化妆进度检测方法。

需要说明的是,所述计算机可读存储介质的例子还可以包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。

本申请的上述实施例提供的计算机可读存储介质与本申请实施例提供的化妆进度检测方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。

需要说明的是:

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本申请的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本申请并帮助理解各个发明方面中的一个或多个,在上面对本申请的示例性实施例的描述中,本申请的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下示意图:即所要求保护的本申请要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本申请的单独实施例。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本申请的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

以上所述,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

技术分类

06120113821671