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.根据所述美妆掩码图、所述初始帧图像和所述当前帧图像,确定所述当前帧图像对应的当前化妆进度。
29.在本技术的一些实施例中,所述根据所述美妆掩码图、所述初始帧图像和所述当前帧图像,确定所述当前帧图像对应的当前化妆进度,包括:
30.以所述美妆掩码图为参照,从所述初始帧图像中获取上妆的第一目标区域图像,以及从所述当前帧图像中获取上妆的第二目标区域图像;
31.根据所述第一目标区域图像和所述第二目标区域图像,确定所述当前帧图像对应的当前化妆进度。
32.在本技术的一些实施例中,所述特定妆容包括眼线妆容;所述根据所述实时化妆视频的初始帧图像和当前帧图像,确定所述用户进行所述特定妆容的当前化妆进度,包括:
33.获取所述初始帧图像和所述当前帧图像对应的美妆掩码图;
34.根据所述初始帧图像,模拟生成眼线上妆完成后的结果图像;
35.根据所述美妆掩码图、所述结果图像、所述初始帧图像和所述当前帧图像,确定所述当前帧图像对应的当前化妆进度。
36.在本技术的一些实施例中,所述根据所述美妆掩码图、所述结果图像、所述初始帧图像和所述当前帧图像,确定所述当前帧图像对应的当前化妆进度,包括:
37.以所述初始帧图像对应的美妆掩码图为参照,从所述初始帧图像中获取上妆的第一目标区域图像;
38.根据所述当前帧图像对应的美妆掩码图,从所述当前帧图像中获取上妆的第二目标区域图像;
39.根据所述结果图像获取眼线上妆的第三目标区域图像;
40.根据所述第一目标区域图像、所述第二目标区域图像和所述第三目标区域图像,确定所述当前帧图像对应的当前化妆进度。
41.在本技术的一些实施例中,所述根据所述第一目标区域图像、所述第二目标区域图像和所述第三目标区域图像,确定所述当前帧图像对应的当前化妆进度,包括:
42.分别将所述第一目标区域图像、所述第二目标区域图像和所述第三目标区域图像转换为hls颜色空间下包含饱和度通道的图像;
43.根据转换后的所述第一目标区域图像、所述第二目标区域图像和所述第三目标区域图像,确定所述当前帧图像对应的当前化妆进度。
44.在本技术的一些实施例中,所述根据转换后的所述第一目标区域图像、所述第二目标区域图像和所述第三目标区域图像,确定所述当前帧图像对应的当前化妆进度,包括:
45.分别计算转换后的所述第一目标区域图像对应的第一平均像素值、所述第二目标区域图像对应的第二平均像素值和所述第三目标区域图像对应的第三平均像素值;
46.计算第二平均像素值与所述第一平均像素值之间的第一差值,以及计算所述第三平均像素值与所述第一平均像素值之间的第二差值;
47.计算所述第一差值与所述第二差值之间的比值,得到所述当前帧图像对应的当前化妆进度。
48.在本技术的一些实施例中,所述根据所述第一目标区域图像、所述第二目标区域图像和所述第三目标区域图像,确定所述当前帧图像对应的当前化妆进度之前,还包括:
49.对所述第一目标区域图像和所述第二目标区域图像进行对齐处理;
50.对所述第一目标区域图像和所述第三目标区域图像进行对齐处理。
51.在本技术的一些实施例中,所述对所述第一目标区域图像和所述第二目标区域图像进行对齐处理,包括:
52.分别对所述第一目标区域图像和所述第二目标区域图像进行二值化处理,得到所述第一目标区域图像对应的第一二值化掩膜图像及所述第二目标区域图像对应的第二二值化掩膜图像;
53.对所述第一二值化掩膜图像和所述第二二值化掩膜图像进行与运算,得到所述第一目标区域图像与所述第二目标区域图像的相交区域对应的第二掩膜图像。
54.在本技术的一些实施例中,所述对所述第一目标区域图像和所述第二目标区域图像进行对齐处理,还包括:
55.获取所述初始帧图像对应的人脸区域图像及所述结果图像对应的人脸区域图像;
56.对所述第二掩膜图像和所述初始帧图像对应的人脸区域图像进行与运算,得到所述初始帧图像对应的新的第一目标区域图像;
57.对所述第二掩膜图像和所述结果图像对应的人脸区域图像进行与运算,得到所述结果图像对应的新的第二目标区域图像。
58.在本技术的一些实施例中,所述获取所述初始帧图像和所述当前帧图像对应的美妆掩码图,包括:
59.获取用户选择的眼线样式图;
60.若所述初始帧图像中用户的眼部状态为睁眼状态,则获取所述眼线样式图对应的睁眼样式图;将所述睁眼样式图确定为所述初始帧图像对应的美妆掩码图;
61.若所述初始帧图像中用户的眼部状态为闭眼状态,则获取所述眼线样式图对应的闭眼样式图,并将所述闭眼样式图确定为所述初始帧图像对应的美妆掩码图。
62.在本技术的一些实施例中,所述特定妆容包括眼影妆容;所述根据所述实时化妆视频的初始帧图像和当前帧图像,确定所述用户进行所述特定妆容的当前化妆进度,包括:
63.获取眼影掩码图;
64.根据眼影上妆的每个目标上妆区域,分别从所述眼影掩码图中拆分出每个所述目标上妆区域对应的美妆掩码图;
65.根据所述初始帧图像、所述当前帧图像及每个所述目标上妆区域对应的美妆掩码图,确定所述当前帧图像对应的当前化妆进度。
66.在本技术的一些实施例中,所述根据所述初始帧图像、所述当前帧图像及每个所述目标上妆区域对应的美妆掩码图,确定所述当前帧图像对应的当前化妆进度,包括:
67.分别以每个所述目标上妆区域对应的美妆掩码图为参照,从所述初始帧图像中获取每个所述目标上妆区域对应的第一目标区域图像;
68.分别以每个所述目标上妆区域对应的美妆掩码图为参照,从所述当前帧图像中获取每个所述目标上妆区域对应的第二目标区域图像;
69.根据每个所述目标上妆区域对应的第一目标区域图像及第二目标区域图像,确定所述当前帧图像对应的当前化妆进度。
70.在本技术的一些实施例中,所述根据每个所述目标上妆区域对应的第一目标区域图像及第二目标区域图像,确定所述当前帧图像对应的当前化妆进度,包括:
71.分别将每个所述目标上妆区域对应的第一目标区域图像和第二目标区域图像转换为hls颜色空间下包含预设单通道分量的图像;
72.根据转换后的每个所述目标上妆区域对应的第一目标区域图像和第二目标区域图像,确定所述当前帧图像对应的当前化妆进度。
73.在本技术的一些实施例中,所述根据转换后的每个所述目标上妆区域对应的第一目标区域图像和第二目标区域图像,确定所述当前帧图像对应的当前化妆进度,包括:
74.分别计算转换后同一目标上妆区域对应的第一目标区域图像和第二目标区域图像中位置相同的像素点对应的所述预设单通道分量的差值绝对值;
75.统计每个目标上妆区域对应的差值绝对值满足预设化妆完成条件的像素点数目;
76.分别计算每个目标上妆区域对应的所述像素点数目与对应目标上妆区域中的像素点总数目之间的比值,得到每个目标上妆区域对应的化妆进度;
77.根据每个目标上妆区域对应的化妆进度及每个目标上妆区域对应的预设权重,计算所述当前帧图像对应的当前化妆进度。
78.在本技术的一些实施例中,以美妆掩码图为参照,从所述初始帧图像中获取第一目标区域图像,包括:
79.检测所述初始帧图像对应的第一人脸关键点;
80.根据所述第一人脸关键点,获取所述初始帧图像对应的人脸区域图像;
81.以美妆掩码图为参照,从所述人脸区域图像中获取上妆的第一目标区域图像。
82.在本技术的一些实施例中,所述以美妆掩码图为参照,从所述人脸区域图像中获取上妆的第一目标区域图像,包括:
83.分别将美妆掩码图和所述人脸区域图像转换为二值化图像;
84.对所述美妆掩码图对应的二值化图像和所述人脸区域图像对应的二值化图像进行与运算,获得所述美妆掩码图与所述人脸区域图像的相交区域对应的第一掩膜图像;
85.对所述第一掩膜图像与所述初始帧图像对应的人脸区域图像进行与运算,获得第一目标区域图像。
86.在本技术的一些实施例中,所述对所述美妆掩码图对应的二值化图像和所述人脸区域图像对应的二值化图像进行与运算之前,还包括:
87.根据所述美妆掩码图对应的标准人脸关键点,确定所述美妆掩码图中位于每个上妆区域的轮廓上的一个或多个第一定位点;
88.根据所述第一人脸关键点,从所述人脸区域图像中确定出与每个所述第一定位点对应的第二定位点;
89.对所述美妆掩码图进行拉伸处理,将每个所述第一定位点拉伸至对应的每个所述第二定位点对应的位置处。
90.在本技术的一些实施例中,所述以美妆掩码图为参照,从所述人脸区域图像中获取上妆的第一目标区域图像,包括:
91.将所述美妆掩码图拆分为多个子掩码图,每个所述子掩码图中包括至少一个目标上妆区域;
92.分别将每个所述子掩码图及所述人脸区域图像转换为二值化图像;
93.分别对每个所述子掩码图对应的二值化图像与所述人脸区域图像对应的二值化图像进行与运算,获得每个所述子掩码图各自对应的子掩膜图像;
94.分别对每个所述子掩膜图像与所述初始帧图像对应的人脸区域图像进行与运算,获得所述初始帧图像对应的多个子目标区域图像;
95.将所述多个子目标区域图像合并为所述初始帧图像对应的第一目标区域图像。
96.在本技术的一些实施例中,所述分别对每个所述子掩码图对应的二值化图像与所述人脸区域图像对应的二值化图像进行与运算之前,还包括:
97.根据所述美妆掩码图对应的标准人脸关键点,确定第一子掩码图中位于目标上妆区域的轮廓上的一个或多个第一定位点,所述第一子掩码图为所述多个子掩码图中的任一子掩码图;
98.根据所述第一人脸关键点,从所述人脸区域图像中确定出与每个所述第一定位点对应的第二定位点;
99.对所述第一子掩码图进行拉伸处理,将每个所述第一定位点拉伸至对应的每个所述第二定位点对应的位置处。
100.在本技术的一些实施例中,所述特定妆容包括眉毛妆容;所述根据所述实时化妆视频的初始帧图像和当前帧图像,确定所述用户进行所述特定妆容的当前化妆进度,包括:
101.从所述初始帧图像中获取眉毛对应的第一目标区域图像,及从所述当前帧图像中获取眉毛对应的第二目标区域图像;
102.根据所述第一目标区域图像和所述第二目标区域图像,确定所述当前帧图像对应的当前化妆进度。
103.在本技术的一些实施例中,所述从所述初始帧图像中获取眉毛对应的第一目标区域图像,包括:
104.检测所述初始帧图像对应的第一人脸关键点;
105.根据所述第一人脸关键点,获取所述初始帧图像对应的人脸区域图像;
106.根据所述第一人脸关键点中包括的眉毛关键点,从所述人脸区域图像中获取眉毛对应的第一目标区域图像。
107.在本技术的一些实施例中,所述根据所述第一人脸关键点中包括的眉毛关键点,从所述人脸区域图像中截取眉毛对应的第一目标区域图像,包括:
108.对所述第一人脸关键点包括的眉头至眉峰之间的眉毛关键点进行插值,得到多个插值点;
109.从所述人脸区域图像中截取出眉头至眉峰之间所有眉毛关键点及所述多个插值点连接而成的闭合区域,得到眉头至眉峰之间的部分眉毛图像;
110.从所述人脸区域图像中截取出眉峰至眉尾之间的所有眉毛关键点连接而成的闭合区域,得到眉峰至眉尾之间的部分眉毛图像;
111.将所述眉头至眉峰之间的部分眉毛图像与所述眉峰至眉尾之间的部分眉毛图像拼接为眉毛对应的第一目标区域图像。
112.在本技术的一些实施例中,所述根据所述第一目标区域图像和所述第二目标区域图像,确定所述当前帧图像对应的当前化妆进度,包括:
113.分别将所述第一目标区域图像和所述第二目标区域图像转换为hsv颜色空间下包含预设单通道分量的图像;
114.根据转换后的所述第一目标区域图像和所述第二目标区域图像,确定所述当前帧图像对应的当前化妆进度。
115.在本技术的一些实施例中,所述根据转换后的所述第一目标区域图像和所述第二目标区域图像,确定所述当前帧图像对应的当前化妆进度,包括:
116.分别计算转换后的所述第一目标区域图像和所述第二目标区域图像中位置相同的像素点对应的所述预设单通道分量的差值绝对值;
117.统计对应的差值绝对值满足预设化妆完成条件的像素点数目;
118.计算统计的所述像素点数目与所述第一目标区域图像中所有目标上妆区域中的像素点总数目之间的比值,得到所述当前帧图像对应的当前化妆进度。
119.在本技术的一些实施例中,所述根据所述第一目标区域图像和所述第二目标区域图像,确定所述当前帧图像对应的当前化妆进度之前,还包括:
120.分别对所述第一目标区域图像和所述第二目标区域图像进行二值化处理,得到所述第一目标区域图像对应的第一二值化掩膜图像和所述第二目标区域图像对应的第二二
值化掩膜图像;
121.对所述第一二值化掩膜图像和所述第二二值化掩膜图像进行与运算,得到所述第一目标区域图像与所述第二目标区域图像的相交区域对应的第二掩膜图像;
122.获取所述初始帧图像对应的人脸区域图像及所述当前帧图像对应的人脸区域图像;
123.对所述第二掩膜图像和所述初始帧图像对应的人脸区域图像进行与运算,得到所述初始帧图像对应的新第一目标区域图像;
124.对所述第二掩膜图像和所述当前帧图像对应的人脸区域图像进行与运算,得到所述当前帧图像对应的新第二目标区域图像。
125.在本技术的一些实施例中,所述确定所述当前帧图像对应的当前化妆进度之前,还包括:
126.分别对所述第一目标区域图像和所述第二目标区域图像中的上妆区域进行边界腐蚀处理。
127.在本技术的一些实施例中,所述特定妆容包括粉底妆容;所述根据所述实时化妆视频的初始帧图像和当前帧图像,确定所述用户进行所述特定妆容的当前化妆进度,包括:
128.根据所述初始帧图像,模拟生成完成所述特定妆容后的结果图像;
129.分别获取所述初始帧图像、所述结果图像和所述当前帧图像对应的整体图像亮度;
130.分别获取所述初始帧图像、所述结果图像和所述当前帧图像对应的人脸区域亮度;
131.根据所述初始帧图像、所述结果图像和所述当前帧图像各自对应的整体图像亮度和人脸区域亮度,确定所述当前帧图像对应的当前化妆进度。
132.在本技术的一些实施例中,所述分别获取所述初始帧图像、所述结果图像和所述当前帧图像对应的整体图像亮度,包括:
133.分别将所述初始帧图像、所述结果图像和所述当前帧图像转换为灰度图像;
134.分别计算转换后所述初始帧图像、所述结果图像和所述当前帧图像各自对应的灰度图像中像素点的灰度平均值;
135.将所述初始帧图像、所述结果图像和所述当前帧图像各自对应的灰度平均值分别确定为所述初始帧图像、所述结果图像和所述当前帧图像各自对应的整体图像亮度。
136.在本技术的一些实施例中,所述分别获取所述初始帧图像、所述结果图像和所述当前帧图像对应的人脸区域亮度,包括:
137.分别获取所述初始帧图像、所述结果图像和所述当前帧图像各自对应的人脸区域图像;
138.分别将所述初始帧图像、所述结果图像和所述当前帧图像各自对应的人脸区域图像转换为人脸灰度图像;
139.分别计算所述初始帧图像、所述结果图像和所述当前帧图像各自对应的人脸灰度图像中像素点的灰度平均值,得到所述初始帧图像、所述结果图像和所述当前帧图像各自对应的人脸区域亮度。
140.在本技术的一些实施例中,所述根据所述初始帧图像、所述结果图像和所述当前
帧图像各自对应的整体图像亮度和人脸区域亮度,确定所述当前帧图像对应的当前化妆进度,包括:
141.根据所述初始帧图像对应的整体图像亮度和人脸区域亮度以及所述当前帧图像对应的整体图像亮度和人脸区域亮度,确定所述当前帧图像对应的第一环境变化亮度;
142.根据所述初始帧图像对应的整体图像亮度和人脸区域亮度以及所述结果图像对应的整体图像亮度和人脸区域亮度,确定所述结果图像对应的第二环境变化亮度;
143.根据所述第一环境变化亮度、所述第二环境变化亮度、所述初始帧图像对应的人脸区域亮度、所述当前帧图像对应的人脸区域亮度、所述结果图像对应的人脸区域亮度,确定所述当前帧图像对应的当前化妆进度。
144.在本技术的一些实施例中,所述根据所述初始帧图像对应的整体图像亮度和人脸区域亮度以及所述当前帧图像对应的整体图像亮度和人脸区域亮度,确定所述当前帧图像对应的第一环境变化亮度,包括:
145.计算所述初始帧图像对应的整体图像亮度与其对应的人脸区域亮度之间的差值,得到所述初始帧图像的环境亮度;
146.计算所述当前帧图像对应的整体图像亮度与其对应的人脸区域亮度之间的差值,得到所述当前帧图像的环境亮度;
147.将所述当前帧图像的环境亮度与所述初始帧图像的环境亮度之间的差值绝对值确定为所述当前帧图像对应的第一环境变化亮度。
148.在本技术的一些实施例中,所述根据所述第一环境变化亮度、所述第二环境变化亮度、所述初始帧图像对应的人脸区域亮度、所述当前帧图像对应的人脸区域亮度、所述结果图像对应的人脸区域亮度,确定所述当前帧图像对应的当前化妆进度,包括:
149.根据所述第一环境变化亮度、所述初始帧图像对应的人脸区域亮度、所述当前帧图像对应的人脸区域亮度,确定所述当前帧图像对应的上妆亮度变化值;
150.根据所述第二环境变化亮度、所述初始帧图像对应的人脸区域亮度、所述结果图像对应的人脸区域亮度,确定所述结果图像对应的上妆亮度变化值;
151.计算所述当前帧图像对应的上妆亮度变化值与所述结果图像对应的上妆亮度变化值的比值,得到所述当前帧图像对应的当前化妆进度。
152.在本技术的一些实施例中,所述根据所述第一环境变化亮度、所述初始帧图像对应的人脸区域亮度、所述当前帧图像对应的人脸区域亮度,确定所述当前帧图像对应的上妆亮度变化值,包括:
153.计算所述当前帧图像对应的人脸区域亮度与所述初始帧图像对应的人脸区域亮度之间的差值,得到所述当前帧图像对应的总亮度变化值;
154.计算所述总亮度变化值与所述第一环境变化亮度之间的差值,得到所述当前帧图像对应的上妆亮度变化值。
155.在本技术的一些实施例中,所述方法还包括:
156.若所述第一环境变化亮度大于预设阈值,则将上一帧图像对应的化妆进度确定为所述当前帧图像对应的当前化妆进度;
157.发送第一提示信息给所述用户的终端,所述第一提示信息用于提示所述用户回到所述初始帧图像对应的亮度环境下上妆。
158.在本技术的一些实施例中,所述特定妆容包括遮瑕妆容;所述根据所述实时化妆视频的初始帧图像和当前帧图像,确定所述用户进行所述特定妆容的当前化妆进度,包括:
159.分别获取所述初始帧图像和所述当前帧图像各自对应的脸部瑕疵信息;
160.根据所述初始帧图像对应的脸部瑕疵信息和所述当前帧图像对应的脸部瑕疵信息,计算所述当前帧图像与所述初始帧图像之间的脸部瑕疵差异值;
161.若所述脸部瑕疵差异值大于预设阈值,则根据所述脸部瑕疵差异值和所述初始帧图像对应的脸部瑕疵信息,计算所述当前帧图像对应的当前化妆进度;
162.若所述脸部瑕疵差异值小于或等于所述预设阈值,则获取所述用户完成遮瑕上妆后的结果图像,根据所述初始帧图像、所述结果图像和所述当前帧图像,确定所述当前帧图像对应的当前化妆进度。
163.在本技术的一些实施例中,所述脸部瑕疵信息包括瑕疵类别及对应的瑕疵数目;所述根据所述初始帧图像对应的脸部瑕疵信息和所述当前帧图像对应的脸部瑕疵信息,计算所述当前帧图像与所述初始帧图像之间的脸部瑕疵差异值,包括:
164.分别计算每种瑕疵类别下所述初始帧图像对应的瑕疵数目与所述当前帧图像对应的瑕疵数目之间的差值;
165.计算每种瑕疵类别对应的差值之和,将得到的和值作为所述当前帧图像与所述初始帧图像之间的脸部瑕疵差异值。
166.在本技术的一些实施例中,所述根据所述脸部瑕疵差异值和所述初始帧图像对应的脸部瑕疵信息,计算所述当前帧图像对应的当前化妆进度,包括:
167.计算所述初始帧图像对应的脸部瑕疵信息中各瑕疵类别对应的瑕疵数目之和,得到总瑕疵数;
168.计算所述脸部瑕疵差异值与所述总瑕疵数之间的比值,将所述比值作为所述当前帧图像对应的当前化妆进度。
169.在本技术的一些实施例中,所述获取所述用户完成遮瑕上妆后的结果图像,根据所述初始帧图像、所述结果图像和所述当前帧图像,确定所述当前帧图像对应的当前化妆进度,包括:
170.根据所述初始帧图像,模拟生成所述用户完成遮瑕上妆后的结果图像;
171.分别获取所述初始帧图像、所述结果图像和所述当前帧图像各自对应的人脸区域图像;
172.根据所述初始帧图像、所述结果图像和所述当前帧图像各自对应的人脸区域图像,确定所述当前帧图像对应的当前化妆进度。
173.在本技术的一些实施例中,所述根据所述初始帧图像、所述结果图像和所述当前帧图像各自对应的人脸区域图像,确定所述当前帧图像对应的当前化妆进度,包括:
174.分别将所述初始帧图像、所述结果图像和所述当前帧图像各自对应的人脸区域图像转换为hls颜色空间下包含饱和度通道的图像;
175.通过预设滤波算法分别计算转换后所述初始帧图像、所述结果图像和所述当前帧图像各自的人脸区域图像对应的平滑因子;
176.根据所述初始帧图像、所述结果图像和所述当前帧图像各自对应的平滑因子,确定所述当前帧图像对应的当前化妆进度。
177.在本技术的一些实施例中,所述根据所述初始帧图像、所述结果图像和所述当前帧图像各自对应的平滑因子,确定所述当前帧图像对应的当前化妆进度,包括:
178.计算所述当前帧图像对应的平滑因子与所述初始帧图像对应的平滑因子之间的第一差值;
179.计算所述结果图像对应的平滑因子与所述初始帧图像对应的平滑因子之间的第二差值;
180.计算所述第一差值与所述第二差值之间的比值,将所述比值作为所述当前帧图像对应的当前化妆进度。
181.在本技术的一些实施例中,所述分别获取所述初始帧图像和所述当前帧图像各自对应的脸部瑕疵信息,包括:
182.分别获取所述初始帧图像和所述当前帧图像各自对应的人脸区域图像;
183.通过预设的皮肤检测模型分别检测所述初始帧图像和所述当前帧图像各自对应的人脸区域图像中各瑕疵类别对应的瑕疵数目,得到所述初始帧图像和所述当前帧图像各自对应的脸部瑕疵信息。
184.在本技术的一些实施例中,所述获取所述初始帧图像对应的人脸区域图像,包括:
185.根据所述初始帧图像对应的第一人脸关键点,对所述初始帧图像及所述第一人脸关键点进行旋转矫正;
186.根据矫正后的所述第一人脸关键点,从矫正后的所述初始帧图像中截取包含人脸区域的图像;
187.将所述包含人脸区域的图像缩放至预设尺寸,得到所述初始帧图像对应的人脸区域图像。
188.在本技术的一些实施例中,所述根据所述第一人脸关键点,对所述初始帧图像及所述第一人脸关键点进行旋转矫正,包括:
189.根据所述第一人脸关键点包括的左眼关键点和右眼关键点,分别确定左眼中心坐标和右眼中心坐标;
190.根据所述左眼中心坐标和所述右眼中心坐标,确定所述初始帧图像对应的旋转角度及旋转中心点坐标;
191.根据所述旋转角度和所述旋转中心点坐标,对所述初始帧图像及所述第一人脸关键点进行旋转矫正。
192.在本技术的一些实施例中,所述根据矫正后的所述第一人脸关键点,从矫正后的所述初始帧图像中截取包含人脸区域的图像,包括:
193.根据矫正后的所述第一人脸关键点,对矫正后的所述初始帧图像中包含的人脸区域进行图像截取。
194.在本技术的一些实施例中,所述根据矫正后的所述第一人脸关键点,对矫正后的所述初始帧图像中包含的人脸区域进行图像截取,包括:
195.从矫正后的所述第一人脸关键点中确定最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值;
196.根据所述最小横坐标值、所述最小纵坐标值、最大横坐标值和最大纵坐标值,确定矫正后的所述初始帧图像中人脸区域对应的截取框;
197.根据所述截取框,从矫正后的所述初始帧图像中截取出包含所述人脸区域的图像。
198.在本技术的一些实施例中,所述方法还包括:
199.将所述截取框放大预设倍数;
200.根据放大后的所述截取框,从矫正后的所述初始帧图像中截取出包含所述人脸区域的图像。
201.在本技术的一些实施例中,所述方法还包括:
202.根据所述包含人脸区域的图像的尺寸及所述预设尺寸,对矫正后的所述第一人脸关键点进行缩放平移处理。
203.在本技术的一些实施例中,所述方法还包括:
204.检测所述初始帧图像和所述当前帧图像中是否均仅包含同一个用户的人脸图像;
205.如果是,则执行所述确定所述用户进行所述特定妆容的当前化妆进度的操作;
206.如果否,则发送提示信息给所述用户的终端,所述提示信息用于提示所述用户保持所述实时化妆视频中仅出现同一个用户的人脸。
207.本技术第二方面的实施例提供了一种化妆进度检测装置,包括:
208.视频获取模块,用于获取用户当前进行特定妆容的实时化妆视频;
209.化妆进度确定模块,用于根据所述实时化妆视频的初始帧图像和当前帧图像,确定所述用户进行所述特定妆容的当前化妆进度。
210.本技术第三方面的实施例提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序以实现上述第一方面所述的方法。
211.本技术第四方面的实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行实现上述第一方面所述的方法。
212.本技术实施例中提供的技术方案,至少具有如下技术效果或优点:
213.在本技术实施例中,将用户化妆过程的当前帧图像与初始帧图像做对比来确定化妆进度。仅通过图像处理即可检测出化妆进度,化妆进度检测的准确性很高,对于高光、修容、腮红、粉底、遮瑕、眼影、眼线、眉毛等化妆过程均能实时检测用户的化妆进度。无需使用深度学习模型,运算量小,成本低,减少了服务器的处理压力,提高了化妆进度检测的效率,能够满足化妆进度检测的实时性要求。
214.本技术附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变的明显,或通过本技术的实践了解到。
附图说明
215.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。
216.在附图中:
217.图1示出了本技术一实施例所提供的一种化妆进度检测方法的流程图;
218.图2示出了本技术一实施例所提供的用于检测高光、修容等妆容的化妆进度检测
方法的流程图;
219.图3示出了本技术一实施例所提供的客户端显示的供用户选择目标上妆区域的显示界面的示意图;
220.图4示出了本技术一实施例所提供的求解图像的旋转角度的示意图;
221.图5示出了本技术一实施例所提供的两次坐标系转换的示意图;
222.图6示出了本技术一实施例所提供的用于检测高光、修容等妆容的化妆进度检测方法的模块流程示意图;
223.图7示出了本技术一实施例所提供的用于检测腮红等妆容的化妆进度检测方法的流程图;
224.图8示出了本技术一实施例所提供的客户端显示的供用户选择上妆区域的显示界面的另一示意图;
225.图9示出了本技术一实施例所提供的用于检测腮红等妆容的化妆进度检测方法的模块流程示意图;
226.图10示出了本技术一实施例所提供的用于检测眼线妆容的化妆进度检测方法的流程图;
227.图11示出了本技术一实施例所提供的用于检测眼线妆容的化妆进度检测方法的模块流程示意图;
228.图12示出了本技术一实施例所提供的用于检测眼影妆容的化妆进度检测方法的流程图;
229.图13示出了本技术一实施例所提供的用于检测眼影妆容的化妆进度检测方法的模块流程示意图;
230.图14示出了本技术一实施例所提供的用于检测眼影妆容的化妆进度检测装置的结构示意图;
231.图15示出了本技术一实施例所提供的用于检测眉毛妆容的化妆进度检测方法的流程图;
232.图16示出了本技术一实施例所提供的用于检测眉毛妆容的化妆进度检测方法的模块流程示意图;
233.图17示出了本技术一实施例所提供的用于检测眉毛妆容的化妆进度检测装置的结构示意图;
234.图18示出了本技术一实施例所提供的用于检测粉底、散粉等妆容的化妆进度检测方法的流程图;
235.图19示出了本技术一实施例所提供的用于检测粉底、散粉等妆容的化妆进度检测方法的另一流程图;
236.图20示出了本技术一实施例所提供的用于检测粉底、散粉等妆容的化妆进度检测方法的模块流程示意图;
237.图21示出了本技术一实施例所提供的用于检测遮瑕妆容的化妆进度检测方法的流程图;
238.图22示出了本技术一实施例所提供的用于检测遮瑕妆容的化妆进度检测方法的模块流程示意图;
239.图23示出了本技术一实施例所提供的一种妆容颜色识别方法的流程图;
240.图24示出了本技术一实施例所提供的一种妆容颜色识别装置的结构示意图;
241.图25示出了本技术一实施例所提供的祛除面部瑕疵的图像处理方法的流程图;
242.图26(a)示出了用户的人脸图像,图26(b)示出了图26(a)所示人脸图像对应的瑕疵纹理贴图;
243.图27示出了本技术一实施例所提供的祛除面部瑕疵的图像处理装置的结构示意图;
244.图28示出了本技术一实施例所提供的一种化妆进度检测装置的结构示意图;
245.图29示出了本技术一实施例所提供的一种电子设备的结构示意图;
246.图30示出了本技术一实施例所提供的一种存储介质的示意图。
具体实施方式
247.下面将参照附图更详细地描述本技术的示例性实施方式。虽然附图中显示了本技术的示例性实施方式,然而应当理解,可以以各种形式实现本技术而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本技术,并且能够将本技术的范围完整的传达给本领域的技术人员。
248.需要注意的是,除非另有说明,本技术使用的技术术语或者科学术语应当为本技术所属领域技术人员所理解的通常意义。
249.下面结合附图来描述根据本技术实施例提出的一种化妆进度检测方法、装置、设备及存储介质。
250.目前相关技术中存在一些虚拟试妆功能,可以应用在销售柜台或者手机应用软件中,采用人脸识别技术对用户提供虚拟试妆服务,可以将多种妆容进行搭配和实时的面部贴合展示。此外还是提供人脸皮肤检测服务,但这些服务只能解决用户挑选适合自己的化妆品,或者选取适合自己的皮肤保养方案的需求。基于这些服务可以帮助用户挑选适合自己的高光/修容化妆产品,但是无法对上妆的进度进行显示,不能满足用户实时化妆的需求。相关技术中还存在一些使用深度学习模型提供虚拟试妆、肤色侦测、个性化产品推荐等功能,这些功能均需要预先收集大量的人脸图片对深度学习模型进行训练。但人脸图片是用户的隐私数据,很难收集到庞大的人脸图片。且模型训练需耗费大量计算资源,成本高。模型的精度与实时性成反比,化妆进度检测需要实时捕获用户人脸面部信息来确定用户当前的化妆进度,实时性要求很高,能够满足实时性要求的深度学习模型,其检测的准确性不高。
251.基于此,本技术实施例提供了一种化妆进度检测方法,该方法将用户化妆过程的当前帧图像与初始帧图像(即第一帧图像)做对比来确定化妆进度。仅通过图像处理即可检测出化妆进度,化妆进度检测的准确性很高,对于高光、修容、腮红、粉底、遮瑕、眼影、眼线、眉毛等化妆过程均能实时检测用户的化妆进度。无需使用深度学习模型,运算量小,成本低,减少了服务器的处理压力,提高了化妆进度检测的效率,能够满足化妆进度检测的实时性要求。
252.参见图1,该方法具体包括以下步骤:
253.步骤101:获取用户当前进行特定妆容的实时化妆视频。
254.步骤102:根据实时化妆视频的初始帧图像和当前帧图像,确定用户进行特定妆容的当前化妆进度。
255.特定妆容可以为高光妆容、修容妆容、腮红妆容、粉底妆容、遮瑕妆容、眼影妆容、眼线妆容、眉毛妆容等。下面分别对检测不同妆容的化妆进度的过程进行详细说明。
256.实施例一
257.本技术实施例提供一种化妆进度检测方法,该方法用于检测高光妆容、修容妆容或其他任意会产生明暗变化的妆容对应的化妆进度。参见图2,该实施例具体包括以下步骤:
258.步骤201:获取特定妆容对应的至少一个目标上妆区域及用户当前进行特定妆容的实时化妆视频。
259.本技术实施例的执行主体为服务器。用户的手机或电脑等终端上安装有与服务器提供的化妆进度检测服务相适配的客户端。当用户需要使用化妆进度检测服务时,用户打开终端上的该客户端,客户端显示特定妆容对应的所有目标上妆区域,特定妆容可以包括高光妆容或修容妆容等。目标上妆区域可以包括额头区域、鼻梁区域、鼻尖区域、左侧脸颊区域、右侧脸颊区域、下巴区域等。用户从显示的多个目标上妆区域中选择自己需要化特定妆容的一个或多个目标上妆区域。
260.作为一种示例,客户端可以以文本选择项的形式来显示特定妆容对应的所有目标上妆区域。如图3所示的显示界面,该显示界面中包括多个目标上妆区域对应的文本选择项及提交按键,用户可以单击选择出自己需要的目标上妆区域的文本选择项,然后点击提交按键。客户端检测到提交按键触发的提交指令后,从该显示界面中获取用户选择的一个或多个目标上妆区域。
261.作为另一种示例,客户端可以显示一张脸部图像,在该脸部图像上标识出特定妆容对应的所有目标上妆区域。用户通过单击操作从显示的该脸部图像中选择出自己需要的目标上妆区域。客户端显示的显示界面中可以包括一张脸部图像和提交按键,该脸部图像中可以通过实线圈出特定妆容对应的每个目标上妆区域,用户点击自己需要的目标上妆区域后,被选中的目标上妆区域的轮廓线可以显示为预设颜色(如红色或黄色),或者被选中的目标上妆区域的全部会显示为预设颜色。用户选择出自己需要的目标上妆区域后,点击提交按键。客户端检测到提交按键触发的提交指令后,从显示的脸部图像中获取用户选择的一个或多个目标上妆区域。
262.用户的终端通过上述任一方式获得用户选择的一个或多个目标上妆区域之后,将该一个或多个目标上妆区域的区域标识信息发送给服务器,该区域标识信息中可以包括用户选择的每个目标上妆区域的名称或编号等标识信息。服务器接收用户的终端发送的该区域标识信息,根据该区域标识信息确定出用户选择的特定妆容对应的至少一个目标上妆区域。
263.通过上述方式由用户自定义选择自己需要化特定妆容的区域,能够满足不同用户对高光、修容等特定妆容的个性化需求。
264.在本技术的另一些实施例中,也可以不由用户自己选择目标上妆区域,而是预先在服务器中配置好特定妆容对应的多个目标上妆区域。如此在用户需要检测化妆进度时,无需从用户的终端获取目标上妆区域,节省带宽,同时简化了用户操作,缩短了处理时间。
265.上述客户端的显示界面中还设置有视频上传接口,当检测到用户点击该视频上传接口时,调用终端的摄像装置拍摄用户的化妆视频,在拍摄过程中用户在自己脸部的上述目标上妆区域中进行上述特定妆容的化妆操作。用户的终端将拍摄的化妆视频以视频流的形式传输给服务器。服务器接收用户的终端传输的该化妆视频的每一帧图像。
266.在本技术实施例中,服务器将接收到的第一帧图像作为初始帧图像,以该初始帧图像作为参考来比对后续接收到的每一帧图像对应的特定妆容的当前化妆进度。由于对于后续每一帧图像的处理方式都相同,因此本技术实施例以当前时刻接收到的当前帧图像为例来阐述化妆进度检测的过程。
267.服务器通过本步骤获得特定妆容对应的至少一个目标上妆区域及用户化妆视频的初始帧图像和当前帧图像后,通过如下步骤202和203的操作来确定用户的当前化妆进度。
268.步骤202:根据目标上妆区域,从初始帧图像中获取特定妆容对应的第一目标区域图像,及从当前帧图像中获取特定妆容对应的第二目标区域图像。
269.服务器具体通过如下步骤s1-s3的操作来获取初始帧图像对应的第一目标区域图像,包括:
270.s1:检测初始帧图像对应的第一人脸关键点。
271.服务器中配置了预先训练好的用于检测人脸关键点的检测模型,通过该检测模型提供人脸关键点检测的接口服务。服务器获取到用户化妆视频的初始帧图像后,调用人脸关键点检测的接口服务,通过检测模型识别出初始帧图像中用户脸部的所有人脸关键点。为了与当前帧图像对应的人脸关键点进行区分,本技术实施例将初始帧图像对应的所有人脸关键点称为第一人脸关键点。将当前帧图像对应的所有人脸关键点称为第二人脸关键点。
272.其中,识别出的人脸关键点包括用户脸部轮廓上的关键点及嘴巴、鼻子、眼睛、眉毛等部位的关键点。识别出的人脸关键点的数目可以为106个。
273.s2:根据第一人脸关键点,获取初始帧图像对应的人脸区域图像。
274.服务器具体通过如下步骤s20-s22的操作来获取初始帧图像对应的人脸区域图像,包括:
275.s20:根据第一人脸关键点,对初始帧图像及第一人脸关键点进行旋转矫正。
276.由于用户在通过终端拍摄化妆视频时,不能保证每一帧图像中人脸的姿态角度均相同,为了提高当前帧图像与初始帧图像比对的准确性,需要对每一帧图像中的人脸进行旋转矫正,以使矫正后每一帧图像中人脸眼睛的连线都处在同一水平线上,从而确保每一帧图像中人脸的姿态角度相同,避免因姿态角度不同导致化妆进度检测误差较大的问题。
277.具体地,根据第一人脸关键点包括的左眼关键点和右眼关键点,分别确定左眼中心坐标和右眼中心坐标。从第一人脸关键点确定出左眼区域的全部左眼关键点及右眼区域的全部右眼关键点。对确定出的全部左眼关键点的横坐标取均值,以及对全部左眼关键点的纵坐标取均值,将左眼对应的横坐标的均值和纵坐标的均值组成一个坐标,将该坐标确定为左眼中心坐标。按照同样的方式确定出右眼中心坐标。
278.然后根据左眼中心坐标和右眼中心坐标,确定初始帧图像对应的旋转角度及旋转中心点坐标。如图4所示,根据左眼中心坐标和右眼中心坐标计算出两个坐标的水平差值dx
和竖直差值dy,以及计算出左眼中心坐标和右眼中心坐标的两眼连线长度d。依据两眼连线长度d、水平差值dx和竖直差值dy,计算出两眼连线与水平方向的夹角θ,该夹角θ即为初始帧图像对应的旋转角度。然后根据左眼中心坐标和右眼中心坐标计算出两眼连线的中心点坐标,该中点点坐标即为初始帧图像对应的旋转中心点坐标。
279.根据计算出的旋转角度和旋转中心点坐标,对初始帧图像及第一人脸关键点进行旋转矫正。具体将旋转角度和旋转中心点坐标输入用于计算图片的旋转矩阵的预设函数中,该预设函数可以为opencv中的函数cv2.getrotationmatrix2d()。通过调用该预设函数获得初始帧图像对应的旋转矩阵。然后计算初始帧图像和该旋转矩阵的乘积,得到矫正后的初始帧图像。利用旋转矩阵对初始帧图像进行矫正的操作,也可以通过调用opencv中的函数cv2.warpaffine()来完成。
280.对于第一人脸关键点,需要对每个第一人脸关键点逐一进行矫正,以与矫正后的初始帧图像相对应。在对第一人脸关键点逐一矫正时,需要进行两次坐标系的转换,第一次将以初始帧图像左上角为原点的坐标系转化为以左下角为原点的坐标系,第二次进一步将以左下角为原点的坐标系转化为以上述旋转中心点坐标为坐标原点的坐标系,如图5所示。经过两次坐标系转换后对每个第一人脸关键点进行如下公式(1)的转换,可完成对第一人脸关键点的旋转矫正。
[0281][0282]
在公式(1)中,x0、y0分别为旋转矫正前第一人脸关键点的横坐标和纵坐标, x、y分别为旋转矫正第一人脸关键点的横坐标和纵坐标,θ为上述旋转角度。
[0283]
经过矫正后的初始帧图像和第一人脸关键点是基于整张图像的,整张图像不仅包含用户的人脸信息,还包括其他多余的图像信息,因此需要通过如下步骤s21 对矫正后的图像进行人脸区域的裁剪。
[0284]
s21:根据矫正后的第一人脸关键点,从矫正后的初始帧图像中截取包含人脸区域的图像。
[0285]
首先从矫正后的第一人脸关键点中确定最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值。然后根据最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值,确定矫正后的初始帧图像中人脸区域对应的截取框。具体地,将最小横坐标值和最小纵坐标值组成一个坐标点,将该坐标点作为人脸区域对应的截取框的左上角顶点。将最大横坐标值和最大纵坐标值组成另一个坐标点,将该坐标点作为人脸区域对应的截取框的右下角顶点。根据上述左上角顶点和右下角顶点在矫正后的初始帧图像中确定截取框的位置,从矫正后的初始帧图像中截取出位于该截取框内的图像,即截取出包含人脸区域的图像。
[0286]
在本技术的另一些实施例中,为了确保将用户的全部的人脸区域截取出来,避免截取不完整导致后续化妆进度检测误差很大的情况发生,还可以将上述截取框放大预设倍数,该预设倍数可以为1.15或1.25等。本技术实施例并不限制预设倍数的具体取值,实际应用中可根据需求来设定该预设倍数。将上述截取框向周围放大预设倍数之后,从矫正后的初始帧图像中截取出位于放大后的截取框中的图像,从而截取出包含用户的完整人脸区域的图像。
[0287]
s22:将包含人脸区域的图像缩放至预设尺寸,得到初始帧图像对应的人脸区域图
像。
[0288]
通过上述方式从初始帧图像中截取出包含用户的人脸区域的图像后,将包含人脸区域的图像缩放至预设尺寸,得到初始帧图像对应的人脸区域图像。该预设尺寸可以为390
×
390或400
×
400等。本技术实施例并不限制预设尺寸的具体取值,实际应用中可根据需求进行设定。
[0289]
为了使第一人脸关键点与缩放后的人脸区域图像相适应,将截取的包含人脸区域的图像缩放至预设尺寸后,还需根据缩放前包含人脸区域的图像的尺寸及该预设尺寸,对上述矫正后的第一人脸关键点进行缩放平移处理。具体地,依据缩放前包含人脸区域的图像的尺寸及图像所需缩放至的预设尺寸,确定每个第一人脸关键点的平移方向及平移距离,进而根据每个第一人脸关键点对应的平移方向和平移距离,分别对每个第一人脸关键点进行平移操作,并记录平移后的每个第一人脸关键点的坐标。
[0290]
通过上述方式从初始帧图像中获得人脸区域图像,并通过旋转矫正和平移缩放等操作使第一人脸关键点与获得的人脸区域图像相适应,之后通过如下步骤s3 的方式从人脸区域图像中提取出目标上妆区域对应的图像区域。
[0291]
在本技术的另一些实施例中,执行步骤s3之前,还可以先对人脸区域图像进行高斯滤波处理,用于去除人脸区域图像中的噪声。具体地,根据预设尺寸的高斯核,对初始帧图像对应的人脸区域图像进行高斯滤波处理。
[0292]
高斯滤波的高斯核是高斯滤波处理的关键参数,高斯核选取过小,则不能达到很好的滤波效果,高斯核选取过大,虽然能过滤掉图像中的噪声信息,但同时会平滑掉图像中有用的信息。本技术实施例选取预设尺寸的高斯核,预设尺寸可以为9
×
9。此外高斯滤波函数的另一组参数sigmax、sigmay均设置为0,经过高斯滤波后,图像信息更加平滑,进而提高后续获取化妆进度的准确性。
[0293]
通过上述方式获得人脸区域图像,或者对人脸区域图像进行高斯滤波处理之后,通过步骤s3从人脸区域图像中提取特定妆容对应的目标区域图像。
[0294]
s3:根据第一人脸关键点和目标上妆区域,从人脸区域图像中提取特定妆容对应的第一目标区域图像。
[0295]
高光妆容或修容妆容等特定妆容是对面部的固定区域进行上妆的一种化妆方式,如高光妆容或修容妆容通常是对额头区域、左侧脸颊区域、右侧脸颊区域、鼻梁区域、鼻尖区域或下巴区域等特定区域进行高光或修容。因此可以直接从人脸区域图像中抠取出需要进行特定妆容的这些特定区域,进而避免无效区域对特定妆容的化妆进度检测的干扰,提高化妆进度检测的准确性。
[0296]
服务器具体通过如下步骤s30-s32的操作来获得第一目标区域图像,包括:
[0297]
s30:从第一人脸关键点中确定出位于人脸区域图像中目标上妆区域对应的区域轮廓上的一个或多个目标关键点。
[0298]
首先从人脸区域图像中确定出目标上妆区域对应的区域位置,然后从第一人脸关键点中确定出位于该区域位置的一个或多个第一人脸关键点。将确定出的一个或多个第一人脸关键点确定为该目标上妆区域对应的区域轮廓上的一个或多个目标关键点。
[0299]
对于步骤201中获取的特定妆容对应的每个目标上妆区域,都按照上述方式分别确定出每个目标上妆区域对应的目标关键点。
[0300]
s31:根据目标上妆区域对应的目标关键点,生成人脸区域图像对应的掩膜图像。
[0301]
由于步骤201中获得了特定妆容对应的一个或多个目标上妆区域,对于不同的目标上妆区域,在生成人脸区域图像对应的掩膜图像时的具体操作不同。对于特定妆容对应的每个目标上妆区域,首先判断该目标上妆区域对应的目标关键点的数目是否为多个,通常额头区域、左侧脸颊区域、右侧脸颊区域、鼻梁区域、下巴区域等目标上妆区域对应的目标关键点的数目为多个。对于这些目标上妆区域,根据目标上妆区域对应的每个目标关键点,确定该目标上妆区域在人脸区域图像中的每个边缘坐标。具体按照预设偏移规则将目标关键点的坐标适当地向左、右或上、下偏移部分像素,从而获得该目标上妆区域对应的边缘坐标。
[0302]
本技术实施例预先在服务器中配置了不同目标上妆区域对应的预设偏移规则,预设偏移规则中规定了目标上妆区域对应的目标关键点的偏移方向及偏移的像素数目。
[0303]
例如,对于额头区域,其对应的目标关键点包括脸部轮廓在额头两侧处的人脸关键点以及发际线处的人脸关键点,额头区域对应的预设偏移规则可以规定发际线处的目标关键点向下偏移,额头左侧的目标关键点向右偏移,额头右侧的目标关键点向左偏移,且规定目标关键点偏移的像素数目为4个像素。按照该预设偏移规则对额头区域对应的每个目标关键点进行偏移,每个目标关键点偏移之后的坐标点即为额头区域对应的边缘坐标。
[0304]
再如,对于鼻梁区域,其对应的目标关键点可以包括鼻梁上竖直排列的多个人脸关键点,鼻梁区域对应的预设偏移规则可以规定竖直排列的每个目标关键点分别向右偏移和向左偏移一定的像素数目,可以规定目标关键点偏移的像素数目为3个像素或4个像素等。按照该预设偏移规则对鼻梁区域对应的每个目标关键点进行偏移,每个目标关键点偏移之后的坐标点即为鼻梁区域对应的边缘坐标。
[0305]
通过上述方式获得包括多个目标关键点的目标上妆区域对应的边缘坐标后,通过区域填充函数将每个边缘坐标围成的区域内的所有像素点的像素值均修改为预设值,得到该目标上妆区域对应的掩膜区域。其中,预设值可以为255。
[0306]
若判断出某个目标上妆区域对应的目标关键点的数目为一个,通常鼻尖区域等目标上妆区域对应的目标关键点的数目为一个。对于只有一个目标关键点的目标上妆区域,以该目标关键点为中心,绘制预设大小的椭圆区域。将该椭圆区域内的所有像素点的像素值均修改为预设值,得到该目标上妆区域对应的掩膜区域。
[0307]
通过上述方式获得特定妆容对应的每个目标上妆区域对应的掩膜区域后,将所有掩膜区域之外的所有像素点的像素值均修改为零,即得到人脸区域图像对应的掩膜图像。
[0308]
s32:对掩膜图像和人脸区域图像进行与运算,获得特定妆容对应的第一目标区域图像。
[0309]
获得人脸区域图像对于的掩膜图像后,对掩膜图像和人脸区域图像进行与运算,即分别将掩膜图像和人脸区域图像中坐标相同的像素点的像素值进行与运算。由于掩膜图像中只有特定妆容对应的目标上妆区域中像素点的像素值为预设值,其他位置的像素点的像素值均为零。因此进行与运算后,得到的第一目标区域图像中仅目标上妆区域对应的位置处的像素点的像素值不为零,其他位置的像素点的像素值均为零。
[0310]
本技术实施例中掩膜图像中目标上妆区域中的像素点的像素值取255,则对掩膜图像与人脸区域图像进行与运算之后,得到的第一目标区域图像中目标上妆区域中的像素
点的像素值即为人脸区域图像中目标上妆区域中的像素点的像素值。相当于从人脸区域图像中抠取出了特定妆容对应的目标上妆区域的图像。
[0311]
通过上述方式获得的初始帧图像对应的第一目标区域图像的颜色空间为rgb 颜色空间,对于高光妆容主要是提亮肤色,而修容妆容主要是调暗肤色以形成阴影,使得五官更加立体。对于高光妆容、修容妆容等特定妆容,主要是亮度的变化。而rgb颜色空间是日常最为常用的颜色空间,采用红、绿、蓝颜色分量的线性组合来表示颜色,自然环境下获取的图像信息对亮度比较敏感,同一张图片经过更改其亮度信息后,rgb三个分量都会随之相应地改变。而hsv颜色空间是由hue(色调)、saturation(饱和度)和value(亮度)三个分量组成,如果图片亮度信息发生变化,此时仅亮度分量发生改变,而色调和饱和度分量值不会发生明显的变化,相比rgb颜色空间,hsv颜色空间可以分离出亮度信息。
[0312]
因此本技术实施例获得初始帧图像对应的第一目标区域图像之后,还将第一目标区域图像的颜色空间由rgb颜色空间转换到hsv颜色空间。然后从转换后的第一目标区域图像的hsv颜色空间中分离出特定妆容对应的通道分量,得到仅包含该通道分量的单通道的第一目标区域图像。
[0313]
例如,高光妆容、修容妆容等特定妆容对应的通道分量为亮度分量,而其他改变面部颜色的特定妆容对应的通道分量为色调分量等。
[0314]
将第一目标区域图像转换到hsv颜色空间转换,并通过通道分离,分离出特定妆容对应的通道分量,便于后续对目标上妆区域是否完成了特定妆容的化妆过程的判断。
[0315]
对于当前帧图像,与上述初始帧图像的处理过程相同,检测出当前帧图像对应的第二人脸关键点,依据第二人脸关键点,截取出当前帧图像对应的人脸区域图像,根据第二人脸关键点图像生成当前帧图像对应的掩膜图像。根据该掩膜图像从当前帧图像对应的人脸区域图像中抠取出特定妆容对应的第二目标区域图像。并将第二目标区域图像转换至hsv颜色空间,且分离出特定妆容对应的通道分量。对于当前帧图像的处理操作的细节,均与上述对初始帧图像的处理细节相同,在此不再赘述。
[0316]
通过上述方式获得初始帧图像对应的第一目标区域图像和当前帧图像对应的第二目标区域图像之后,通过如下方式确定当前帧图像对应的化妆进度。
[0317]
步骤203:根据第一目标区域图像和第二目标区域图像,确定当前帧图像对应的当前化妆进度。
[0318]
具体地,分别计算第一目标区域图像和第二目标区域图像中位置相同的像素点对应的上述通道分量的差值绝对值。例如,若特定妆容为高光妆容或修容妆容,则计算第一目标区域图像和第二目标区域图像中坐标相同的像素点之间的亮度分量的差值绝对值。
[0319]
根据每个像素点对应的差值绝对值,确定已完成特定妆容的区域面积。具体地,统计对应的差值绝对值满足特定妆容对应的预设化妆完成条件的像素点数目。其中,特定妆容为高光妆容时,预设化妆完成条件为像素点对应的差值绝对值大于第一预设阈值,第一预设阈值可以为11或12等。特定妆容为修容妆容时,预设化妆完成条件为像素点对应的差值绝对值小于第二预设阈值,第二预设阈值可以为7或8等。
[0320]
将统计的满足预设化妆完成条件的像素点数目确定为已完成特定妆容的区域面积。统计第一目标区域图像或第二目标区域图像中所有目标上妆区域中的所有像素点的总数,将该总数确定为所有目标上妆区域对应的总区域面积。然后计算已完成特定妆容的区
域面积与目标上妆区域对应的总区域面积之间的比值,将该比值确定为用户对应的特定妆容的当前化妆进度。
[0321]
在本技术的另一些实施例中,为了进一步提高化妆进度检测的准确性,还对上述第一目标区域图像和第二目标区域图像中的目标上妆区域进行进一步对齐。具体地,分别对仅包含上述通道分量的单通道的第一目标区域图像和第二目标区域图像进行二值化处理,即将第一目标区域图像和第二目标区域图像中目标上妆区域中的像素点对应的上述通道分量的值均修改为1,将其余位置处的像素点的上述通道分量的值均修改为0。通过二值化处理得到第一目标区域图像对应的第一二值化掩膜图像和第二目标区域图像对应的第二二值化掩膜图像。
[0322]
然后对第一二值化掩膜图像和第二二值化掩膜图像进行与运算,即分别将第一二值化掩膜图像和第二二值化掩膜图像中相同位置处的像素点进行与运算,得到相交区域掩膜图像。该相交区域掩膜图像中像素点的上述通道分量不为零的区域,即为第一目标区域图像和第二目标区域中重合的目标上妆区域。
[0323]
通过步骤202的操作获得初始帧图像对应的人脸区域图像及当前帧图像对应的人脸区域图像。对相交区域掩膜图像和初始帧图像对应的人脸区域图像进行与运算,得到初始帧图像对应的新的第一目标区域图像;对相交区域掩膜图像和当前帧图像对应的人脸区域图像进行与运算,得到当前帧图像对应的新的第二目标区域图像。
[0324]
由于相交区域掩膜图像中包含初始帧图像和当前帧图像中重合的目标上妆区域,因此通过相交区域掩膜图像按照上述方式从初始帧图像和当前帧图像中分别抠取出新的第一目标区域图像和新的第二目标区域图像,使得新的第一目标区域图像和新的第二目标区域图像中目标上妆区域的位置是完全一致的,如此后续比对当前帧图像中目标上妆区域与初始帧图像中目标上妆区域的变化来确定化妆进度,确保了进行比对的区域是完全一致的,大大提高了化妆进度检测的准确性。
[0325]
通过上述方式对初始帧图像和当前帧图像中的目标上妆区域进行对齐,得到新的第一目标区域图像和新的第二目标区域图像后,再次通过上述步骤203的操作来确定当前帧图像对应的当前化妆进度。
[0326]
通过上述任一方式确定出当前化妆进度后,服务器发送该当前化妆进度给用户的终端。用户的终端接收到当前化妆进度后,显示该当前化妆进度。当前化妆进度可以为比值或百分数。终端可以通过进度条的形式来显示当前化妆进度。
[0327]
在用户化妆的过程中,通过本技术实施例提供的化妆进度检测方法,实时检测第一帧图像之后的每帧图像相对于第一帧图像的化妆进度,并将检测的化妆进度显示给用户,使用户能够直观地看到自己的化妆进度,提高化妆效率。
[0328]
为了便于理解本技术实施例提供的方法,下面结合附图进行说明。如图6所示,服务器可以主要包含人脸矫正和裁剪、高斯滤波、目标上妆区域抠取、hsv 颜色空间转换、目标上妆区域对齐、化妆进度计算等六个模块。人脸矫正和裁剪模块是对服务器获取到的初始帧图像和当前帧图像进行人脸区域的矫正和裁剪,得到初始帧图像对应的人脸区域图像和当前帧图像对应人脸区域图像。高斯滤波模块是对人脸矫正和裁剪模块获得的人脸区域图像进行高斯平滑,用于去除图像中的噪声。目标上妆区域抠取模块是根据初始帧图像对应的第一人脸关键点信息,对经过高斯滤波后的初始帧图像对应的人脸区域图像,进行目
标上妆区域的抠取,得到对应的第一目标区域图像。同样地,目标上妆区域抠取模块还抠取当前帧图像对应的第二目标区域图像。hsv颜色空间转换模块是对目标上妆区域抠取模块获得的第一目标区域图像和第二目标区域图像的rgb颜色空间转换为hsv颜色空间。目标上妆区域对齐模块是将经过hsv颜色空间后的仅包含特定妆容对应的通道分量的单通道的第一目标区域图像和第二目标区域图像进行像素对齐操作。化妆进度计算模块是对经过目标上妆区域对齐模块对齐后的单通道的第一目标区域图像和第二目标区域图像进行作差计算,得到化妆进度百分比。
[0329]
在本技术实施例中,利用人脸关键点,对视频帧中用户的人脸区域进行矫正和裁剪,提高了识别视频帧中人脸区域的准确性。且基于人脸关键点,从人脸区域图像中确定出了目标上妆区域,并对初始帧图像中的目标上妆区域和当前帧图像中的目标上妆区域进行了像素对齐,提高了对每一帧图像中用户脸部的目标上妆区域识别的准确性。通过采用高斯平滑和hsv颜色空间转换,使得后续能够清晰获取初始帧图像与当前帧图像中目标上妆区域在特定妆容对应的通道分量上的差异,提高了化妆进度检测的精度。且本技术没有采用深度学习的方式,无需预先收集大量数据,本技术通过对用户化妆的实时画面的捕获,经过服务器端的计算,将检测结果返回给用户。相比深度学习的模型推理方案,本技术在算法处理环节耗费更少的计算成本,减少了服务器的处理压力。
[0330]
实施例二
[0331]
本技术实施例提供一种化妆进度检测方法,该方法用于检测腮红妆容或者京剧等特殊领域的彩色妆容对应的化妆进度。参见图7,该实施例具体包括以下步骤:
[0332]
步骤301:获取至少一个目标上妆区域,以及获取用户当前进行特定妆容的实时化妆视频中的初始帧图像和当前帧图像。
[0333]
本技术实施例的执行主体为服务器。用户的手机或电脑等终端上安装有与服务器提供的化妆进度检测服务相适配的客户端。当用户需要使用化妆进度检测服务时,用户打开终端上的该客户端,客户端显示预设类型的化妆对应的多个目标上妆区域,如显示腮红对应的多个目标上妆区域。显示的目标上妆区域可以按照脸部区域进行分类,如可以分为鼻头区域、两侧脸颊区域、下巴区域等。每个区域分类下可以包括多个形状和/或尺寸不同的目标上妆区域的轮廓。用户从显示的多个目标上妆区域中选择自己需要化妆的一个或多个目标上妆区域。客户端将用户选择的目标上妆区域发送给服务器。
[0334]
作为一种示例,如图8所示的显示界面,该显示界面中包括鼻头区域、两侧脸颊区域和下巴区域各自对应的目标上妆区域的轮廓,用户可以在各区域对应的多个轮廓中选择自己需要上妆的脸部区域以及在选择的脸部区域上妆的轮廓,选择之后点击确认按键提交自己选择的目标上妆区域的轮廓。客户端检测到用户提交的一个或多个目标上妆区域,并发送给服务器。
[0335]
作为另一种示例,本技术实施例还可以基于预设标准人脸图像制作多个美妆样式图,美妆样式图中包括一个或多个目标上妆区域的轮廓。预设标准人脸图像为脸部无遮挡、五官清晰且两眼连线与水平线平行的人脸图像。客户端显示的界面中可以同时显示多个美妆样式图,用户从显示的多个美妆样式图中选择一个美妆样式图。客户端将用户选择的美妆样式图发送给服务器。服务器接收客户端发送的美妆样式图,从该美妆样式图中获取该用户选择的一个或多个目标上妆区域。
[0336]
通过上述任一方式由用户自定义选择自己需要化妆的目标上妆区域,能够满足不同用户对腮红等预设类型的妆容的个性化上妆需求。
[0337]
在本技术的另一些实施例中,也可以不由用户选择目标上妆区域,而是在服务器中预先设置固定的目标上妆区域,设置好目标上妆区域的位置和形状。用户打开客户端后,客户端提示用户在服务器设置的这些目标上妆区域对应的部位进行上妆。服务器在接收到用户检测化妆进度的请求时,直接从本地配置文件中获取预先设置的一个或多个目标上妆区域。
[0338]
预先在服务器中配置好目标上妆区域,在用户需要检测化妆进度时,无需从用户的终端获取目标上妆区域,节省带宽,同时简化了用户操作,缩短了处理时间。
[0339]
上述客户端的显示界面中还设置有视频上传接口,当检测到用户点击该视频上传接口时,调用终端的摄像装置拍摄用户的化妆视频,在拍摄过程中用户在自己脸部的上述目标上妆区域中进行腮红等预设类型的化妆操作。用户的终端将拍摄的化妆视频以视频流的形式传输给服务器。服务器接收用户的终端传输的该化妆视频的每一帧图像。
[0340]
在本技术的另一些实施例中,服务器获得用户的化妆视频的初始帧图像和当前帧图像后,还检测初始帧图像和当前帧图像中是否均仅包含同一个用户的人脸图像。首先检测初始帧图像和当前帧图像中是否均仅包含一个人脸图像,若初始帧图像和/或当前帧图像中包含多个人脸图,或者,初始帧图像和/或当前帧图像中不包含人脸图像,则发送提示信息给用户的终端。用户的终端接收并显示该提示信息,以提示用户保持化妆视频中仅出现同一个用户的人脸。例如,提示信息可以为“请保持镜头内仅出现同一个人的人脸”。
[0341]
若检测出初始帧图像和当前帧图像中均仅包含一个人脸图像,则进一步判断初始帧图像中的人脸图像与当前帧图像中的人脸图像是否属于同一个用户。具体地,可以通过人脸识别技术提取初始帧图像中人脸图像对应的人脸特征信息,以及提取当前帧图像中人脸图像对应的人脸特征信息,计算这两帧图像中提取的人脸特征信息的相似度,若计算的相似度大于或等于设定值,则确定初始帧图像和当前帧图像中的人脸属于同一用户,后续通过下述步骤302和303的操作来确定当前帧图像对应的当前化妆进度。若计算的相似度小于设定值,则确定初始帧图像和当前帧图像中的人脸属于不同用户,则发送提示信息给用户的终端。用户的终端接收并显示该提示信息,以提示用户保持化妆视频中仅出现同一个用户的人脸。
[0342]
在本技术实施例中,服务器将接收到的第一帧图像作为初始帧图像,以该初始帧图像作为参考来比对后续接收到的每一帧图像对应的特定妆容的当前化妆进度。由于对于后续每一帧图像的处理方式都相同,因此本技术实施例以当前时刻接收到的当前帧图像为例来阐述化妆进度检测的过程。
[0343]
服务器通过本步骤获得至少一个目标上妆区域及用户化妆视频的初始帧图像和当前帧图像后,通过如下步骤302和303的操作来确定用户的当前化妆进度。
[0344]
步骤302:根据获得的目标上妆区域,生成美妆掩码图。
[0345]
具体地,根据每个目标上妆区域的位置和形状,在预设空白人脸图像中绘制每个目标上妆区域的轮廓。预设空白人脸图像可以是去除上述预设标准人脸图像中的像素而形成的。在预设空白人脸图像中绘制出每个目标上妆区域的轮廓之后,在绘制的每个轮廓内进行像素填充,同一个目标上妆区域的轮廓内填充像素值相同的像素点,不同的目标上妆
区域之间填充的像素点的像素值互不相同。将填充操作后的图像作为美妆掩码图。
[0346]
步骤303:根据美妆掩码图、初始帧图像和当前帧图像,确定当前帧图像对应的当前化妆进度。
[0347]
首先以美妆掩码图为参照,分别从初始帧图像中获取上妆的第一目标区域图像,以及从当前帧图像中获取上妆的第二目标区域图像。即以美妆掩码图为掩码,分别从初始帧图像和当前帧图像中截取出用户需要化妆的目标上妆区域的图像。然后根据截取出的第一目标区域图像和第二目标区域图像,确定当前帧图像对应的当前化妆进度。
[0348]
其中,从初始帧图像中获取第一目标区域图像的过程,与上述实施例一中步骤102的操作相似,先通过步骤s1检测初始帧图像对应的第一人脸关键点。通过步骤s2的操作根据第一人脸关键点,获取初始帧图像对应的人脸区域图像。获得初始帧图像对应的人脸区域图像的具体操作过程可以参考实施例一中的相关说明,在此不再赘述。从当前帧图像中获取第二目标区域图像的过程,与从初始帧图像中获取第一目标区域图像的过程相同。
[0349]
然后以步骤302生成的美妆掩码图为参照,从初始帧图像对应的人脸区域图像中获取上妆的第一目标区域图像。腮红等妆容是对面部的固定区域进行上妆的一种化妆方式,如在鼻头区域、两侧脸颊区域、下巴区域等特定区域进行腮红上妆。因此可以直接从人脸区域图像中抠取出需要进行上妆的这些特定区域,进而避免无效区域对化妆进度检测的干扰,提高化妆进度检测的准确性。
[0350]
服务器具体通过如下步骤s40-s42的操作来获得第一目标区域图像,包括:
[0351]
s40:分别将美妆掩码图和人脸区域图像转换为二值化图像。
[0352]
s41:对美妆掩码图对应的二值化图像和人脸区域图像对应的二值化图像进行与运算,获得美妆掩码图与该人脸区域图像的相交区域对应的第一掩膜图像。
[0353]
分别将美妆掩码图对应的二值化图像和该人脸区域图像对应的二值化图像中坐标相同的像素点的像素值进行与运算。由于美妆掩码图中只有目标上妆区域中的像素点的像素值不为零,其他区域的像素点均为零。因此与运算得到的第一掩膜图像相当于从初始帧图像对应的人脸区域图像中截取出了各个目标上妆区域。
[0354]
在本技术的另一些实施例中,由于美妆掩码图是基于预设标准人脸图像生成的,因此美妆掩码图中的目标上妆区域很可能无法与初始帧图像中用户实际上妆的区域完全重合,从而影响化妆进度检测的准确性。因此在将美妆掩码图对应的二值化图像和人脸区域图像对应的二值化图像进行与运算之前,还可以先对美妆掩码图中的目标上妆区域与初始帧图像中的对应区域进行对齐操作。
[0355]
具体地,根据美妆掩码图对应的标准人脸关键点,确定美妆掩码图中位于每个目标上妆区域的轮廓上的一个或多个第一定位点。美妆掩码图对应的标准人脸关键点即为预设标准人脸图像对应的标准人脸关键点。对于美妆掩码图中的任一目标上妆区域,首先确定该目标上妆区域的轮廓上是否包含标准人脸关键点,若包含,则将位于轮廓上的标准人脸关键点确定为该目标上妆区域对应的第一定位点。若不包含,则利用该目标上妆区域周围的标准人脸关键点,通过线性变换的方式生成位于该目标上妆区域的轮廓上的第一定位点。具体可以将周围的标准人脸关键点上移、下移、左移或右移等平移操作获得第一定位点。
[0356]
例如,对于鼻头区域,可以将位于鼻头的关键点往左移动一定的像素距离,得到位
于左侧鼻翼上的一个点。以及将鼻头的关键点往右移动一定的像素距离,得到位于右侧鼻翼上的一个点。将鼻头的关键点、左侧鼻翼上的这个点和右侧鼻翼上的该点作为鼻头区域对应的三个第一定位点。
[0357]
在本技术实施例中,每个目标上妆区域对应的第一定位点的数目可以为预设数目个,预设数目可以为3或4等。
[0358]
通过上述方式获得美妆掩码图中每个目标上妆区域对应的第一定位点后,根据初始帧图像对应的第一人脸关键点,从初始帧图像中确定出与每个第一定位点对应的第二定位点。由于美妆掩码图对应的标准人脸关键点和初始帧图像对应的第一人脸关键点都是通过相同的检测模型获得的,不同位置的关键点都具有各自的编号。因此对于属于标准人脸关键点的第一定位点,从初始帧图像对应的第一人脸关键点中确定出与该第一定位点对应的标准人脸关键点的编号相同的第一人脸关键点,将确定出的第一人脸关键点作为该第一定位点对应的第二定位点。对于利用标准人脸关键点进行线性变换得到的第一定位点,则从初始帧图像对应的第一人脸关键点中确定出该第一定位点对应的第一人脸关键点,将对该第一人脸关键点进行相同的线性变换得到的点确定为该第一定位点对应的第二定位点。
[0359]
通过上述方式确定每个第一定位点对应的第二定位点之后,对美妆掩码图进行拉伸处理,将每个第一定位点拉伸至对应的每个第二定位点对应的位置处,即使得拉伸后美妆掩码图中每个第一定位点的位置都与其对应的第二定位点的位置相同。
[0360]
通过上述方式能够将美妆掩码图中的目标上妆区域与初始帧图像中用户实际上妆的区域对齐,从而确保通过美妆掩码图能够精确地从初始帧图像中提取出上妆的第一目标区域图像,进而提高化妆进度检测的准确性。
[0361]
将美妆掩码图与初始帧图像对齐之后,再通过步骤s41的操作获得美妆掩码图与初始帧图像的人脸区域图像之间相交区域对应的第一掩膜图像,然后通过步骤s42的方式来扣取初始帧图像对应的第一目标区域图像。
[0362]
s42:对第一掩膜图像与初始帧图像对应的人脸区域图像进行与运算,获得初始帧图像对应的第一目标区域图像。
[0363]
由于第一掩膜图像为二值化图像,因此对第一掩膜图像和初始帧图像对应的人脸区域图像进行与运算,从初始帧图像对应的人脸区域图像中截取出彩色的各个目标上妆区域的图像,即得到了初始帧图像对应的第一目标区域图像。
[0364]
在本技术的另一些实施例中,由于美妆掩码图中各个目标上妆区域是不连贯的,因此还可以将美妆掩码图拆成多个子掩码图,每个子掩码图中包含的目标上妆区域均不相同。然后利用拆分出的子掩码图来从初始帧图像对应的人脸区域图像中获取第一目标区域图像。具体可以通过如下步骤s43-s47的操作来实现,包括:
[0365]
s43:将美妆掩码图拆分为多个子掩码图,每个子掩码图中包括至少一个目标上妆区域。
[0366]
美妆掩码图中包括多个互不连贯的目标上妆区域,对互不连贯的目标上妆区域进行拆分,得到多个子掩码图中,每个子掩码图中可以仅包括一个目标上妆区域,也可以包括一个以上的目标上妆区域。各子掩码图包括的目标上妆区域互不相同,且子掩码图中除目标上妆区域内的像素点的像素值不为零外,其他区域的像素点的像素值均为零。
[0367]
s44:分别将每个子掩码图及人脸区域图像转换为二值化图像。
[0368]
s45:分别对每个子掩码图对应的二值化图像与人脸区域图像对应的二值化图像进行与运算,获得每个子掩码图各自对应的子掩膜图像。
[0369]
对于任意一个子掩码图,将该子掩码图的二值化图像和该人脸区域图像对应的二值化图像中坐标相同的像素点的像素值进行与运算。由于子妆掩码图中只有目标上妆区域中的像素点的像素值不为零,其他区域的像素点均为零。因此与运算得到的子掩膜图像相当于从初始帧图像对应的人脸区域图像中截取出了该子掩膜图像对应的目标上妆区域。
[0370]
在本技术的另一些实施例中,由于美妆掩码图是基于预设标准人脸图像生成的,子掩码图是从美妆掩码图中拆分出来的,因此子掩码图中的目标上妆区域很可能无法与初始帧图像中用户实际上妆的区域完全重合,从而影响化妆进度检测的准确性。因此在将子掩码图对应的二值化图像和人脸区域图像对应的二值化图像进行与运算之前,还可以先对子掩码图中的目标上妆区域与初始帧图像中的对应区域进行对齐操作。
[0371]
具体地,根据美妆掩码图对应的标准人脸关键点,确定子掩码图中位于目标上妆区域的轮廓上的一个或多个第一定位点。根据初始帧图像对应的第一人脸关键点,从初始帧图像中确定出与每个第一定位点对应的第二定位点。对子掩码图进行拉伸处理,将每个第一定位点拉伸至对应的每个第二定位点对应的位置处,即使得拉伸后子掩码图中每个第一定位点的位置都与其对应的第二定位点的位置相同。
[0372]
通过上述方式能够将子掩码图中的目标上妆区域与初始帧图像中用户实际上妆的区域对齐,从而确保通过各子掩码图能够精确地从初始帧图像中提取出上妆的第一目标图像,进而提高化妆进度检测的准确性。通过将美妆掩码图拆分成多个子掩码图,分别通过上述方式将每个子掩码图与初始帧图像对齐,相对于直接将美妆掩码图像与初始帧图像对齐的方式,拆分之后分别进行对齐的准确性更高。
[0373]
s46:分别对每个子掩膜图像与初始帧图像进行与运算,获得初始帧图像对应的多个子目标区域图像。
[0374]
s47:将多个子目标区域图像合并为初始帧图像对应的第一目标区域图像。
[0375]
对于当前帧图像,可以采用相同地方式,来获得当前帧图像对应的第二目标区域图像。即将当前帧图像对应的人脸区域图像转换为二值化图像,然后对美妆掩码图对应的二值化图像和当前帧图像的人脸区域图像对应的二值化图像进行与运算,获得美妆掩码图与当前帧图像的人脸区域图像之间相交区域对应的第二掩膜图像。对第二掩膜图像与当前帧图像对应的人脸区域图像进行与运算,获得当前帧图像对应的第二目标区域图像。或者,将上述各子掩码图对应的二值化图像和当前帧图像的人脸区域图像对于的二值化图像进行与运算,获得各子掩码图与当前帧图像的人脸区域图像之间相交区域对应的各子掩膜图像。对各子掩膜图像与当前帧图像对应的人脸区域图像进行与运算,将得到的各子目标区域图像合并为当前帧图像对应的第二目标区域图像。
[0376]
在本技术的另一些实施例中,考虑到实际化妆场景中目标上妆区域的边缘可能不会有很清晰的轮廓线,如腮红场景中越靠近边缘颜色越浅,从而使腮红妆容更自然,不会显得很突兀。因此通过上述实施例获得第一目标区域图像和第二目标区域图像之后,还分别对第一目标区域图像和第二目标区域图像中的目标上妆区域进行边界腐蚀处理,使目标上妆区域的边界模糊,使得第一目标区域图像和第二目标区域图像中的目标上妆区域更贴近真实上妆范围,进而提高化妆进度检测的准确性。
[0377]
通过上述方式获得的初始帧图像对应的第一目标区域图像和当前帧图像对应的第二目标区域图像的颜色空间均为rgb颜色空间。本技术实施例预先通过大量试验确定腮红等预设类型的妆容对颜色空间的各通道分量的影响,发现对rgb颜色空间中各颜色通道的影响差别不大。而hsv颜色空间是由hue(色调)、saturation (饱和度)和value(亮度)三个分量组成,其中一个分量发生变化时,另外两个分量值不会发生明显的变化,相比rgb颜色空间,hsv颜色空间可以分离出其中一个通道分量。且通过试验确定了预设类型的妆容对亮度、色调和饱和度中哪个通道分量的影响最大,并在服务器中配置影响最大的通道分量为预设类型的妆容对应的预设单通道分量。对于腮红等预设类型的妆容,其对应的预设单通道分量可以为亮度分量。
[0378]
通过上述任一方式获得初始帧图像对应的第一目标区域图像和当前帧图像对应的第二目标区域图像后,还将第一目标区域图像和第二目标区域图像均由rgb 颜色空间转换为hsv颜色空间下。并从转换后的第一目标区域图像的hsv颜色空间中分离出预设单通道分量,得到仅包含预设单通道分量的第一目标区域图像。以及,从转换后的第二目标区域图像的hsv颜色空间中分离出预设单通道分量,得到仅包含预设单通道分量的第二目标区域图像。
[0379]
然后根据转换后的第一目标区域图像和第二目标区域图像,确定当前帧图像对应的当前化妆进度。
[0380]
具体地,分别计算第一目标区域图像和第二目标区域图像中位置相同的像素点对应的上述通道分量的差值绝对值。例如,若预设类型的妆容为腮红,则计算转换后的第一目标区域图像和第二目标区域图像中坐标相同的像素点之间的亮度分量的差值绝对值。
[0381]
根据每个像素点对应的差值绝对值,确定已完成特定妆容的区域面积。具体地,统计对应的差值绝对值满足预设化妆完成条件的像素点数目。其中,预设化妆完成条件为像素点对应的差值绝对值大于第一预设阈值,第一预设阈值可以为7 或8等。
[0382]
将统计的满足预设化妆完成条件的像素点数目确定为已完成特定妆容的区域面积。统计第一目标区域图像或第二目标区域图像中所有目标上妆区域中的所有像素点的总数,将像素点总数目确定为所有目标上妆区域对应的总区域面积。然后计算已完成特定妆容的区域面积与目标上妆区域对应的总区域面积之间的比值,将该比值确定为用户对应的特定妆容的当前化妆进度。即计算统计的像素点数目与第一目标区域图像中所有目标上妆区域中的像素点总数目之间的比值,得到当前帧图像对应的当前化妆进度。
[0383]
在本技术的另一些实施例中,为了进一步提高化妆进度检测的准确性,还对上述第一目标区域图像和第二目标区域图像中的目标上妆区域进行进一步对齐。具体地,分别对仅包含上述预设单通道分量的第一目标区域图像和第二目标区域图像进行二值化处理,即将第一目标区域图像和第二目标区域图像目标上妆区域中的像素点对应的上述预设单通道分量的值均修改为1,将其余位置处的像素点的上述预设单通道分量的值均修改为0。通过二值化处理得到第一目标区域图像对应的第一二值化掩膜图像和第二目标区域图像对应的第二二值化掩膜图像。
[0384]
然后对第一二值化掩膜图像和第二二值化掩膜图像进行与运算,即分别将第一二值化掩膜图像和第二二值化掩膜图像中相同位置处的像素点进行与运算,得到第一目标区域图像与第二目标区域图像的相交区域对应的第二掩膜图像。该第二掩膜图像中像素点的
预设单通道分量不为零的区域,即为第一目标区域图像和第二目标区域中重合的目标上妆区域。
[0385]
通过步骤303的操作获得初始帧图像对应的人脸区域图像及当前帧图像对应的人脸区域图像。对第二掩膜图像和初始帧图像对应的人脸区域图像进行与运算,得到初始帧图像对应的新的第一目标区域图像;对第二掩膜图像和当前帧图像对应的人脸区域图像进行与运算,得到当前帧图像对应的新的第二目标区域图像。
[0386]
由于第二掩膜图像中包含初始帧图像和当前帧图像中重合的目标上妆区域,因此通过第二掩膜图像按照上述方式从初始帧图像和当前帧图像中分别抠取出新的第一目标区域图像和新的第二目标区域图像,使得新的第一目标区域图像和新的第二目标区域图像中目标上妆区域的位置是完全一致的,如此后续比对当前帧图像中目标上妆区域与初始帧图像中目标上妆区域的变化来确定化妆进度,确保了进行比对的区域是完全一致的,大大提高了化妆进度检测的准确性。
[0387]
通过上述方式对初始帧图像和当前帧图像中的目标上妆区域进行对齐,得到新的第一目标区域图像和新的第二目标区域图像后,再次通过上述步骤303的操作来确定当前帧图像对应的当前化妆进度。
[0388]
通过上述任一方式确定出当前化妆进度后,服务器发送该当前化妆进度给用户的终端。用户的终端接收到当前化妆进度后,显示该当前化妆进度。当前化妆进度可以为比值或百分数。终端可以通过进度条的形式来显示当前化妆进度。
[0389]
在用户化妆的过程中,通过本技术实施例提供的化妆进度检测方法,实时检测第一帧图像之后的每帧图像相对于第一帧图像的化妆进度,并将检测的化妆进度显示给用户,使用户能够直观地看到自己的化妆进度,提高化妆效率。
[0390]
为了便于理解本技术实施例提供的方法,下面结合附图进行说明。如图9所示,根据初始帧图像及其对应的第一人脸关键点,以及当前帧图像及其对应的第二人脸关键点,分别对初始帧图像和当前帧图像中的人脸进行对齐和裁剪,然后通过拉普拉斯算法对裁剪出的两个人脸区域图像进行平滑和去噪。然后将美妆掩码图分别与两个人脸区域图像进行对齐,根据美妆掩码图分别从两个人脸区域图像中扣取出第一目标区域图像和第二目标区域图像。对第一目标区域图像和第二目标区域图像进行边界腐蚀处理。然后将第一目标区域图像和第二目标区域图像转换为hsv颜色空间下仅包含预设单通道分量的图像。再次对第一目标区域图像和第二目标区域图像进行对齐处理,之后依据二者计算当前化妆进度。
[0391]
在本技术实施例中,利用人脸关键点,对视频帧中用户的人脸区域进行矫正和裁剪,提高了识别人脸区域的准确性。基于人脸关键点从人脸区域图像中确定出目标上妆区域,并对初始帧图像和当前帧图像中的目标上妆区域进行像素对齐,提高了目标上妆区域识别的准确性。对初始帧图像和当前帧图像中的目标上妆区域对齐,减少因目标上妆区域的位置差别引入的误差。在对抠取目标上妆区域时可以将不连贯的目标上妆区域分开计算,增加获取目标上妆区域的准确率。还将美妆掩码图中的目标上妆区域与人脸区域图像中的目标上妆区域对齐,保证了抠取的目标上妆区域都在人脸区域图像中,不会超出面部边界。且本技术没有采用深度学习的方式,无需预先收集大量数据,本技术通过对用户化妆的实时画面的捕获,经过服务器端的计算,将检测结果返回给用户。相比深度学习的模型推理方案,本技术在算法处理环节耗费更少的计算成本,减少了服务器的处理压力。
[0392]
实施例三
[0393]
本技术实施例提供一种化妆进度检测方法,该方法用于眼线妆容对应的化妆进度。参见图10,该实施例具体包括以下步骤:
[0394]
步骤401:获取用户当前进行特定妆容的实时化妆视频中的初始帧图像和当前帧图像,以及获取初始帧图像和当前帧图像对应的美妆掩码图。
[0395]
本技术实施例的执行主体为服务器。用户的手机或电脑等终端上安装有与服务器提供的化妆进度检测服务相适配的客户端。当用户需要使用化妆进度检测服务时,用户打开终端上的该客户端,客户端显示多个眼线样式图,眼线样式图是基于预设标准人脸图像制作的,预设标准人脸图像为脸部无遮挡、五官清晰且两眼连线与水平线平行的人脸图像。每个眼线样式图分别对应于不同眼线形状的眼线效果,如有的眼线样式图对应于圆眼形状的眼线效果,有的眼线样式图对应于下垂眼的眼线效果,有的眼线样式图对应于上挑眼的眼线效果,等等。考虑到用户在眼线上妆过程中大部分时间是睁着眼睛的,因此预设标准人脸图像中人脸的眼部状态为睁眼状态,以睁眼状态的预设标准人脸图像来制作眼线样式图。
[0396]
客户端显示的界面中可以同时显示多个眼线样式图,用户从显示的多个眼线样式图中选择一个眼线样式图。客户端将用户选择的眼线样式图发送给服务器,服务器接收客户端发送的眼线样式图。
[0397]
上述客户端的显示界面中还设置有视频上传接口,当检测到用户点击该视频上传接口时,调用终端的摄像装置拍摄用户的化妆视频,在拍摄过程中用户在自己脸部进行眼线上妆操作。用户的终端将拍摄的化妆视频以视频流的形式传输给服务器。服务器接收用户的终端传输的该化妆视频的每一帧图像。
[0398]
在本技术实施例中,服务器将接收到的第一帧图像作为初始帧图像,以该初始帧图像作为参考来比对后续接收到的每一帧图像对应的特定妆容的当前化妆进度。由于对于后续每一帧图像的处理方式都相同,因此本技术实施例以当前时刻接收到的当前帧图像为例来阐述化妆进度检测的过程。
[0399]
在本技术的另一些实施例中,服务器获得用户的化妆视频的初始帧图像和当前帧图像后,还检测初始帧图像和当前帧图像中是否均仅包含同一个用户的人脸图像。首先检测初始帧图像和当前帧图像中是否均仅包含一个人脸图像,若初始帧图像和/或当前帧图像中包含多个人脸图,或者,初始帧图像和/或当前帧图像中不包含人脸图像,则发送提示信息给用户的终端。用户的终端接收并显示该提示信息,以提示用户保持化妆视频中仅出现同一个用户的人脸。例如,提示信息可以为“请保持镜头内仅出现同一个人的人脸”。
[0400]
若检测出初始帧图像和当前帧图像中均仅包含一个人脸图像,则进一步判断初始帧图像中的人脸图像与当前帧图像中的人脸图像是否属于同一个用户。具体地,可以通过人脸识别技术提取初始帧图像中人脸图像对应的人脸特征信息,以及提取当前帧图像中人脸图像对应的人脸特征信息,计算这两帧图像中提取的人脸特征信息的相似度,若计算的相似度大于或等于设定值,则确定初始帧图像和当前帧图像中的人脸属于同一用户。若计算的相似度小于设定值,则确定初始帧图像和当前帧图像中的人脸属于不同用户,则发送提示信息给用户的终端。用户的终端接收并显示该提示信息,以提示用户保持化妆视频中仅出现同一个用户的人脸。
[0401]
服务器通过上述方式获得用户选择的眼线样式图,以及获得用户化妆过程中的初始帧图像和当前帧图像后,服务器可以直接将用户选择的眼线样式图确定为初始帧图像和当前帧图像对应的美妆掩码图。
[0402]
或者,在另一些实施例中,在制作眼线样式图时,对于每一种眼线形状的眼线效果,都制作了睁眼状态对应的睁眼样式图,以及制作了避免状态对应的闭眼样式图,并在服务器中预先配置了每种眼线样式对应的睁眼样式图和闭眼样式图。客户端显示的界面中显示的眼线样式图可以都为睁眼样式图,也可以都为闭眼样式图。用户从显示的多个眼线样式图中选择自己需要的眼线样式图后,客户端将用户选择的眼线样式图发送给服务器。服务器根据用户选择的眼线样式图以及上述初始帧图像和当前帧图像中用户的眼部状态,分别确定初始帧图像对应的美妆掩码图及当前帧图像对应的美妆掩码图。
[0403]
对于初始帧图像,首先通过图像处理分析初始帧图像中人脸的眼部区域的纹理特征,确定初始帧图像中用户的眼部状态是否为睁眼状态。如果是,则根据用户选择的眼线样式图,从预先配置的多组睁眼样式图和闭眼样式图中,获取用户选择的该眼线样式图对应的睁眼样式图,将该睁眼样式图确定为初始帧图像对应的美妆掩码图。如果确定出初始帧图像中用户的眼部状态为闭眼状态,则根据用户选择的眼线样式图,从预先配置的多组睁眼样式图和闭眼样式图中,获取用户选择的该眼线样式图对应的闭眼样式图,将该闭眼样式图确定为初始帧图像对应的美妆掩码图。
[0404]
对于当前帧图像,与上述初始帧图像的操作相同,按照上述方式确定出当前帧图像对应的美妆掩码图。
[0405]
依据初始帧图像和当前帧图像中用户的眼部状态,来分别确定初始帧图像对应的美妆掩码图及当前帧图像对应的美妆掩码图。如此使得初始帧图像与其对应的美妆掩码图对应的眼部状态一致,以及使当前帧图像与其对应的美妆掩码图对应的眼部状态一致。进而使后续依据美妆掩码图扣取眼线上妆区域时准确性更高,消除初始帧图像和当前帧图像中眼部状态不一致带来的误差,提高眼线化妆进度检测的准确性。
[0406]
服务器通过本步骤获得用户化妆的初始帧图像及其对应的美妆掩码图,以及获得用户化妆的当前帧图像及其对应的美妆掩码图后,通过如下步骤402和403 的操作来确定用户的当前化妆进度。
[0407]
步骤402:根据初始帧图像,模拟生成眼线上妆完成后的结果图像。
[0408]
利用3d渲染技术在初始帧图像上渲染完成眼线上妆的效果,得到结果图像。
[0409]
步骤403:根据美妆掩码图、结果图像、初始帧图像和当前帧图像,确定当前帧图像对应的当前化妆进度。
[0410]
眼线上妆区域通常包括上眼睑、下眼睑、眼尾处等区域。因此可以直接从人脸区域图像中抠取出需要进行上妆的这些特定区域,进而避免无效区域对眼线化妆进度检测的干扰,提高眼线化妆进度检测的准确性。
[0411]
首先根据初始帧图像对应的美妆掩码图,从初始帧图像中获取眼线上妆的第一目标区域图像。根据当前帧图像对应的美妆掩码图,从当前帧图像中获取眼线上妆的第二目标区域图像。由于结果图像是在初始帧图像的基础上生成的,因此可以采用初始帧图像对应的美妆掩码图来扣取结果图像中的眼线上妆区域。即根据初始帧图像对应的美妆掩码图,从结果图像中获取眼线上妆的第三目标区域图像。然后根据截取出的第一目标区域图
像、第二目标区域图像和第三目标区域图像,确定当前帧图像对应的当前化妆进度。
[0412]
其中,从初始帧图像中获取第一目标区域图像的过程,与上述实施例一中步骤102的操作相似,先通过步骤s1检测初始帧图像对应的第一人脸关键点。通过步骤s2的操作根据第一人脸关键点,获取初始帧图像对应的人脸区域图像。获得初始帧图像对应的人脸区域图像的具体操作过程可以参考实施例一中的相关说明,在此不再赘述。然后根据初始帧图像对应的美妆掩码图,从初始帧图像对应的人脸区域图像中获取眼线上妆的第一目标区域图像,具体过程可以采用实施例二中步骤s30-s32的操作来获取第一目标区域图像,或者,也可以采用实施例二中步骤s33-s37的操作来获取第一目标区域图像,在此不再赘述。
[0413]
对于结果图像和当前帧图像,可以采用与初始帧相同地方式,分别获得当前帧图像对应的第二目标区域图像和结果图像对应的第三目标区域图像。
[0414]
通过上述方式获得的初始帧图像对应的第一目标区域图像、当前帧图像对应的第二目标区域图像和结果图像对应的第三目标区域图像,这些图像的颜色空间均为rgb颜色空间。本技术实施例预先通过大量试验确定了眼线上妆对颜色空间的各通道分量的影响,发现对rgb颜色空间中各颜色通道的影响差别不大。而hls颜色空间是由hue(色调)、saturation(饱和度)和light(亮度)三个分量组成,通过试验发现眼线上妆能够引起hls颜色空间的饱和度分量发生明显的变化。
[0415]
通过上述任一方式获得初始帧图像对应的第一目标区域图像、当前帧图像对应的第二目标区域图像和结果图像对应的第三目标区域图像后,还将第一目标区域图像、第二目标区域图像和第三目标区域图像均由rgb颜色空间转换为hls 颜色空间下。并从转换后的第一目标区域图像的hls颜色空间中分离出饱和度通道,得到仅包含饱和度通道的第一目标区域图像。从转换后的第二目标区域图像的hls颜色空间中分离出饱和度通道,得到仅包含饱和度通道的第二目标区域图像。以及,从转换后的第三目标区域图像的hls颜色空间中分离出饱和度通道,得到仅包含饱和度通道的第三目标区域图像。
[0416]
然后根据转换后的第一目标区域图像、第二目标区域图像和第三目标区域图像,确定当前帧图像对应的当前化妆进度。
[0417]
具体地,分别计算转换后的第一目标区域图像对应的第一平均像素值、第二目标区域图像对应的第二平均像素值和第三目标区域图像对应的第三平均像素值。其中,平均像素值即为图像中眼线上妆区域中所有像素点的饱和度分量的平均值。
[0418]
计算第二平均像素值与第一平均像素值之间的第一差值,第一差值能够表示眼线上妆区域从当前帧图像到初始帧图像的饱和度变化,该饱和度变化是由当前帧图像对应的当前已进行的眼线上妆操作而形成的。
[0419]
计算第三平均像素值与第一平均像素值之间的第二差值,第二差值能够表示眼线上妆区域从结果图像到初始帧图像的饱和度变化,该饱和度变化是由完成眼线上妆而形成的。
[0420]
计算第一差值与第二差值之间的比值,得到当前帧图像对应的当前化妆进度。即将当前已进行的眼线上妆所引起的饱和度变化与完成眼线上妆所引起的饱和度变化之间的比值,作为当前化妆进度。
[0421]
在本技术的另一些实施例中,为了进一步提高眼线化妆进度检测的准确性,还对初始帧图像对应的第一目标区域图像和当前帧图像对应的第二目标区域图像进行对齐处
理;以及,对初始帧图像对应的第一目标区域图像和结果图像对应的第三目标区域图像进行对齐处理。
[0422]
由于对第一目标区域图像和第二目标区域图像对齐的操作,与对第一目标区域图像和第三目标区域图像对齐的操作相同。因此本技术实施例仅以第一目标区域图像和第二目标区域图像对齐进行详细说明。
[0423]
具体地,分别对仅包含饱和度通道的第一目标区域图像和第二目标区域图像进行二值化处理,即将第一目标区域图像和第二目标区域图像眼线上妆区域中的像素点对应的饱和度分量的值均修改为1,将其余位置处的像素点的饱和度分量的值均修改为0。通过二值化处理得到第一目标区域图像对应的第一二值化掩膜图像和第二目标区域图像对应的第二二值化掩膜图像。
[0424]
然后对第一二值化掩膜图像和第二二值化掩膜图像进行与运算,即分别将第一二值化掩膜图像和第二二值化掩膜图像中相同位置处的像素点进行与运算,得到第一目标区域图像与第二目标区域图像的相交区域对应的第二掩膜图像。该第二掩膜图像中像素点的饱和度分量不为零的区域,即为第一目标区域图像和第二目标区域中重合的眼线上妆区域。
[0425]
通过步骤403的操作获得初始帧图像对应的人脸区域图像及当前帧图像对应的人脸区域图像。对第二掩膜图像和初始帧图像对应的人脸区域图像进行与运算,得到初始帧图像对应的新的第一目标区域图像;对第二掩膜图像和当前帧图像对应的人脸区域图像进行与运算,得到当前帧图像对应的新的第二目标区域图像。
[0426]
由于第二掩膜图像中包含初始帧图像和当前帧图像中重合的眼线上妆区域,因此通过第二掩膜图像按照上述方式从初始帧图像和当前帧图像中分别抠取出新的第一目标区域图像和新的第二目标区域图像,使得新的第一目标区域图像和新的第二目标区域图像中眼线上妆区域的位置是完全一致的,即对齐了初始帧图像和结果图像中的眼线上妆区域,能够提高眼线化妆进度检测的准确性。
[0427]
同样按照上述方式对第一目标区域图像和第三目标区域图像进行对齐,使得新的第一目标区域图像和新的第三目标区域图像中眼线上妆区域的位置是完全一致的,即对齐了初始帧图像和当前帧图像中的眼线上妆区域,能够提高眼线化妆进度检测的准确性。
[0428]
通过上述方式得到新的第一目标区域图像、新的第二目标区域图像和新的第三目标区域图像后,再次通过上述步骤403的操作来确定当前帧图像对应的当前化妆进度。
[0429]
通过上述任一方式确定出当前化妆进度后,服务器发送该当前化妆进度给用户的终端。用户的终端接收到当前化妆进度后,显示该当前化妆进度。当前化妆进度可以为比值或百分数。终端可以通过进度条的形式来显示当前化妆进度。
[0430]
在用户化妆的过程中,通过本技术实施例提供的化妆进度检测方法,实时检测第一帧图像之后的每帧图像相对于第一帧图像的化妆进度,并将检测的化妆进度显示给用户,使用户能够直观地看到自己的眼线化妆进度,提高化妆效率。
[0431]
为了便于理解本技术实施例提供的方法,下面结合附图进行说明。如图11所示,根据初始帧图像及其对应的第一人脸关键点,当前帧图像及其对应的第二人脸关键点,以及结果图像及其对应的第三人脸关键点,分别对初始帧图像、结果图像和当前帧图像中的人脸进行矫正和裁剪,然后通过拉普拉斯算法对裁剪出的三个人脸区域图像进行平滑去噪。
然后将美妆掩码图分别与三个人脸区域图像进行对齐,根据美妆掩码图分别扣取出初始帧图像对应的第一目标区域图像、当前帧图像对应的第二目标区域图像和结果图像对应的第三目标区域图像。然后将第一目标区域图像、第二目标区域图像和第三目标区域图像转换为hls颜色空间下仅包含饱和度通道的图像。计算转换后第一目标区域图像、第二目标区域图像和第三目标区域图像各自对应的第一平均像素值、第二平均像素值和第三平均像素值,计算第二平均像素值与第一平均像素值之间的第一差值和第三平均像素值与第一平均像素值之间的第二差值,计算第一差值与第二差值之间的比值得到当前化妆进度。
[0432]
在本技术实施例中,获取用户化妆过程的当前帧图像与初始帧图像,在初始帧图像的基础上渲染出完成眼线上妆的结果图像。确定出眼线上妆区域从当前帧图像到初始帧图像的饱和度变化值,以及确定出眼线上妆区域从结果图像到初始帧图像的饱和度变化值,计算当前帧图像对应的饱和度变化值与结果图像对应的饱和度变化值之间的比值,即得到了眼线上妆的当前化妆进度。无需采用深度学习模型,仅通过图像处理即可准确地检测出眼线的化妆进度,运算量小,成本低,减少了服务器的处理压力,提高了眼线化妆进度检测的效率,能够满足眼线化妆进度检测的实时性要求。
[0433]
进一步地,利用人脸关键点,对视频帧中用户的人脸区域进行矫正和裁剪,提高了识别人脸区域的准确性。对初始帧图像和当前帧图像以及对初始帧图像和结果图像中的眼线上妆区域对齐,减少因眼线上妆区域的位置差别引入的误差。在对扣取眼线上妆区域时可以将不连贯的眼线上妆区域分开计算,增加获取眼线上妆区域的准确率。还将美妆掩码图中的眼线上妆区域与人脸区域图像中的眼线上妆区域对齐,保证了扣取的眼线上妆区域的精确性。
[0434]
实施例四
[0435]
1、一种化妆进度检测方法,包括:
[0436]
获取眼影掩码图以及用户当前进行特定妆容的实时化妆视频中的初始帧图像和当前帧图像;
[0437]
根据眼影上妆的每个目标上妆区域,分别从所述眼影掩码图中拆分出每个所述目标上妆区域对应的美妆掩码图;
[0438]
根据所述初始帧图像、所述当前帧图像及每个所述目标上妆区域对应的美妆掩码图,确定所述当前帧图像对应的当前化妆进度。
[0439]
2、根据1,所述根据所述初始帧图像、所述当前帧图像及每个所述目标上妆区域对应的美妆掩码图,确定所述当前帧图像对应的当前化妆进度,包括:
[0440]
分别以每个所述目标上妆区域对应的美妆掩码图为参照,从所述初始帧图像中获取每个所述目标上妆区域对应的第一目标区域图像;
[0441]
分别以每个所述目标上妆区域对应的美妆掩码图为参照,从所述当前帧图像中获取每个所述目标上妆区域对应的第二目标区域图像;
[0442]
根据每个所述目标上妆区域对应的第一目标区域图像及第二目标区域图像,确定所述当前帧图像对应的当前化妆进度。
[0443]
3、根据2,所述根据每个所述目标上妆区域对应的第一目标区域图像及第二目标区域图像,确定所述当前帧图像对应的当前化妆进度,包括:
[0444]
分别将每个所述目标上妆区域对应的第一目标区域图像和第二目标区域图像转
换为hls颜色空间下包含预设单通道分量的图像;
[0445]
根据转换后的每个所述目标上妆区域对应的第一目标区域图像和第二目标区域图像,确定所述当前帧图像对应的当前化妆进度。
[0446]
4、根据3,所述根据转换后的每个所述目标上妆区域对应的第一目标区域图像和第二目标区域图像,确定所述当前帧图像对应的当前化妆进度,包括:
[0447]
分别计算转换后同一目标上妆区域对应的第一目标区域图像和第二目标区域图像中位置相同的像素点对应的所述预设单通道分量的差值绝对值;
[0448]
统计每个目标上妆区域对应的差值绝对值满足预设化妆完成条件的像素点数目;
[0449]
分别计算每个目标上妆区域对应的所述像素点数目与对应目标上妆区域中的像素点总数目之间的比值,得到每个目标上妆区域对应的化妆进度;
[0450]
根据每个目标上妆区域对应的化妆进度及每个目标上妆区域对应的预设权重,计算所述当前帧图像对应的当前化妆进度。
[0451]
5、根据2,分别以每个所述目标上妆区域对应的美妆掩码图为参照,从所述初始帧图像中获取每个所述目标上妆区域对应的第一目标区域图像,包括:
[0452]
检测所述初始帧图像对应的第一人脸关键点;
[0453]
根据所述第一人脸关键点,获取所述初始帧图像对应的人脸区域图像;
[0454]
分别以每个所述目标上妆区域对应的美妆掩码图为参照,从所述人脸区域图像中分别获取每个所述目标上妆区域对应的的第一目标区域图像。
[0455]
6、根据5,所述分别以每个所述目标上妆区域对应的美妆掩码图为参照,从所述人脸区域图像中分别获取每个所述目标上妆区域对应的的第一目标区域图像,包括:
[0456]
分别将第一目标上妆区域对应的美妆掩码图和所述人脸区域图像转换为二值化图像;所述第一目标上妆区域为每个所述目标上妆区域中的任一目标上妆区域;
[0457]
对所述美妆掩码图对应的二值化图像和所述人脸区域图像对应的二值化图像进行与运算,获得所述美妆掩码图与所述人脸区域图像的相交区域对应的第一掩膜图像;
[0458]
对所述第一掩膜图像与所述初始帧图像对应的人脸区域图像进行与运算,获得第一目标区域图像。
[0459]
7、根据6,所述对所述美妆掩码图对应的二值化图像和所述人脸区域图像对应的二值化图像进行与运算之前,还包括:
[0460]
根据所述美妆掩码图对应的标准人脸关键点,确定所述美妆掩码图中位于所述美妆掩码图包括的目标上妆区域的轮廓上的一个或多个第一定位点;
[0461]
根据所述第一人脸关键点,从所述人脸区域图像中确定出与每个所述第一定位点对应的第二定位点;
[0462]
对所述美妆掩码图进行拉伸处理,将每个所述第一定位点拉伸至对应的每个所述第二定位点对应的位置处。
[0463]
8、根据1,所述根据眼影上妆的每个目标上妆区域,分别从所述眼影掩码图中拆分出每个所述目标上妆区域对应的美妆掩码图之前,还包括:
[0464]
根据所述眼影掩码图对应的标准人脸关键点,确定所述眼影掩码图中位于每个上妆区域的轮廓上的一个或多个第一定位点;
[0465]
根据所述第一人脸关键点,从所述人脸区域图像中确定出与每个所述第一定位点
对应的第二定位点;
[0466]
对所述眼影掩码图进行拉伸处理,将每个所述第一定位点拉伸至对应的每个所述第二定位点对应的位置处。
[0467]
9、根据5,所述根据所述第一人脸关键点,获取所述初始帧图像对应的人脸区域图像,包括:
[0468]
根据所述初始帧图像对应的第一人脸关键点,对所述初始帧图像及所述第一人脸关键点进行旋转矫正;
[0469]
根据矫正后的所述第一人脸关键点,从矫正后的所述初始帧图像中截取包含人脸区域的图像;
[0470]
将所述包含人脸区域的图像缩放至预设尺寸,得到所述初始帧图像对应的人脸区域图像。
[0471]
10、根据9,所述根据所述第一人脸关键点,对所述初始帧图像及所述第一人脸关键点进行旋转矫正,包括:
[0472]
根据所述第一人脸关键点包括的左眼关键点和右眼关键点,分别确定左眼中心坐标和右眼中心坐标;
[0473]
根据所述左眼中心坐标和所述右眼中心坐标,确定所述初始帧图像对应的旋转角度及旋转中心点坐标;
[0474]
根据所述旋转角度和所述旋转中心点坐标,对所述初始帧图像及所述第一人脸关键点进行旋转矫正。
[0475]
11、根据9,所述根据矫正后的所述第一人脸关键点,从矫正后的所述初始帧图像中截取包含人脸区域的图像,包括:
[0476]
根据矫正后的所述第一人脸关键点,对矫正后的所述初始帧图像中包含的人脸区域进行图像截取。
[0477]
12、根据11,所述根据矫正后的所述第一人脸关键点,对矫正后的所述初始帧图像中包含的人脸区域进行图像截取,包括:
[0478]
从矫正后的所述第一人脸关键点中确定最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值;
[0479]
根据所述最小横坐标值、所述最小纵坐标值、最大横坐标值和最大纵坐标值,确定矫正后的所述初始帧图像中人脸区域对应的截取框;
[0480]
根据所述截取框,从矫正后的所述初始帧图像中截取出包含所述人脸区域的图像。
[0481]
13、根据12,所述方法还包括:
[0482]
将所述截取框放大预设倍数;
[0483]
根据放大后的所述截取框,从矫正后的所述初始帧图像中截取出包含所述人脸区域的图像。
[0484]
14、根据9,所述方法还包括:
[0485]
根据所述包含人脸区域的图像的尺寸及所述预设尺寸,对矫正后的所述第一人脸关键点进行缩放平移处理。
[0486]
15、根据1,所述方法还包括:
[0487]
检测所述初始帧图像和所述当前帧图像中是否均仅包含同一个用户的人脸图像;
[0488]
如果是,则执行所述确定所述用户进行所述特定妆容的当前化妆进度的操作;
[0489]
如果否,则发送提示信息给所述用户的终端,所述提示信息用于提示所述用户保持所述实时化妆视频中仅出现同一个用户的人脸。
[0490]
16、一种化妆进度检测装置,包括:
[0491]
获取模块,用于获取眼影掩码图以及用户当前进行特定妆容的实时化妆视频中的初始帧图像和当前帧图像;
[0492]
拆分模块,用于根据眼影上妆的每个目标上妆区域,分别从所述眼影掩码图中拆分出每个所述目标上妆区域对应的美妆掩码图;
[0493]
化妆进度确定模块,用于根据所述初始帧图像、所述当前帧图像及每个所述目标上妆区域对应的美妆掩码图,确定所述当前帧图像对应的当前化妆进度。
[0494]
17、一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序以实现如权利要求 1-15任一项所述的方法。
[0495]
18、一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行实现如权利要求1-15中任一项所述的方法。
[0496]
本技术实施例提供一种化妆进度检测方法,该方法用于眼影妆容对应的化妆进度。参见图12,该实施例具体包括以下步骤:
[0497]
步骤501:获取眼影掩码图以及用户当前进行特定妆容的实时化妆视频中的初始帧图像和当前帧图像。
[0498]
本技术实施例的执行主体为服务器。用户的手机或电脑等终端上安装有与服务器提供的化妆进度检测服务相适配的客户端。当用户需要使用化妆进度检测服务时,用户打开终端上的该客户端,客户端显示多个眼影掩码图,眼影掩码图是基于预设标准人脸图像制作的,预设标准人脸图像为脸部无遮挡、五官清晰且两眼连线与水平线平行的人脸图像。每个眼影掩码图分别对应于不同的眼影妆效。
[0499]
客户端显示的界面中可以同时显示多个眼影掩码图,用户从显示的多个眼影掩码图中选择一个。客户端将用户选择的眼影掩码图发送给服务器,服务器接收客户端发送的眼影掩码图。
[0500]
上述客户端的显示界面中还设置有视频上传接口,当检测到用户点击该视频上传接口时,调用终端的摄像装置拍摄用户的实时化妆视频,在拍摄过程中用户在自己脸部进行眼影上妆操作。用户的终端将拍摄的实时化妆视频以视频流的形式传输给服务器。服务器接收用户的终端传输的该实时化妆视频的每一帧图像。
[0501]
在本技术实施例中,服务器将接收到的第一帧图像作为初始帧图像,以该初始帧图像作为参考来比对后续接收到的每一帧图像对应的特定妆容的当前化妆进度。由于对于后续每一帧图像的处理方式都相同,因此本技术实施例以当前时刻接收到的当前帧图像为例来阐述化妆进度检测的过程。
[0502]
在本技术的另一些实施例中,服务器获得用户的实时化妆视频的初始帧图像和当前帧图像后,还检测初始帧图像和当前帧图像中是否均仅包含同一个用户的人脸图像。首先检测初始帧图像和当前帧图像中是否均仅包含一个人脸图像,若初始帧图像和/或当前
帧图像中包含多个人脸图,或者,初始帧图像和/或当前帧图像中不包含人脸图像,则发送提示信息给用户的终端。用户的终端接收并显示该提示信息,以提示用户保持实时化妆视频中仅出现同一个用户的人脸。例如,提示信息可以为“请保持镜头内仅出现同一个人的人脸”。
[0503]
若检测出初始帧图像和当前帧图像中均仅包含一个人脸图像,则进一步判断初始帧图像中的人脸图像与当前帧图像中的人脸图像是否属于同一个用户。具体地,可以通过人脸识别技术提取初始帧图像中人脸图像对应的人脸特征信息,以及提取当前帧图像中人脸图像对应的人脸特征信息,计算这两帧图像中提取的人脸特征信息的相似度,若计算的相似度大于或等于设定值,则确定初始帧图像和当前帧图像中的人脸属于同一用户。若计算的相似度小于设定值,则确定初始帧图像和当前帧图像中的人脸属于不同用户,则发送提示信息给用户的终端。用户的终端接收并显示该提示信息,以提示用户保持实时化妆视频中仅出现同一个用户的人脸。
[0504]
服务器通过本步骤获得用户化妆的初始帧图像、当前帧图像及眼影掩码图后,通过如下步骤502和503的操作来确定用户的当前化妆进度。
[0505]
步骤502:根据眼影上妆的每个目标上妆区域,分别从眼影掩码图中拆分出每个目标上妆区域对应的美妆掩码图。
[0506]
眼影化妆主要涉及上眼皮大面积晕染、上眼皮中间部分提亮、下眼皮卧蚕及眼头提亮等操作。其中,上眼皮大面积晕染和上眼皮中间部分提亮均是在上眼皮上操作,存在叠涂区域。而只有在所有区域都完成上妆之后才算是完成眼影上妆。因此需要将步骤501获得的眼影掩码图按照眼影上妆的每个目标上妆区域,拆分出每个目标上妆区域对应的美妆掩码图。如拆分出眼皮大面积晕染对应的目标上妆区域对应的美妆掩码图,上眼皮中间部分对应的目标上妆区域对应的美妆掩码图,下眼皮卧蚕部位对应的美妆掩码图以及眼头部位对应的美妆掩码图,等等。
[0507]
步骤503:根据初始帧图像、当前帧图像及每个目标上妆区域对应的美妆掩码图,确定当前帧图像对应的当前化妆进度。
[0508]
首先分别以每个目标上妆区域对应的美妆掩码图为参照,从初始帧图像中获取每个目标上妆区域对应的第一目标区域图像。以及,分别以每个目标上妆区域对应的美妆掩码图为参照,从当前帧图像中获取每个目标上妆区域对应的第二目标区域图像。然后根据每个目标上妆区域对应的第一目标区域图像及第二目标区域图像,确定当前帧图像对应的当前化妆进度。
[0509]
每个目标上妆区域对应的第一目标区域图像和第二目标区域图像的获取过程均相同。本技术实施例以一个目标上妆区域对应的第一目标区域图像的获取过程为例进行详细说明。服务器具体通过如下步骤s1-s3的操作来获取该目标上妆区域对应的第一目标区域图像,包括:
[0510]
s1:检测初始帧图像对应的第一人脸关键点。
[0511]
服务器中配置了预先训练好的用于检测人脸关键点的检测模型,通过该检测模型提供人脸关键点检测的接口服务。服务器获取到用户化妆视频的初始帧图像后,调用人脸关键点检测的接口服务,通过检测模型识别出初始帧图像中用户脸部的所有人脸关键点。为了与当前帧图像对应的人脸关键点进行区分,本技术实施例将初始帧图像对应的所有人
脸关键点称为第一人脸关键点。将当前帧图像对应的所有人脸关键点称为第二人脸关键点。
[0512]
其中,识别出的人脸关键点包括用户脸部轮廓上的关键点及嘴巴、鼻子、眼睛、眉毛等部位的关键点。识别出的人脸关键点的数目可以为106个。
[0513]
s2:根据第一人脸关键点,获取初始帧图像对应的人脸区域图像。
[0514]
服务器具体通过如下步骤s20-s22的操作来获取初始帧图像对应的人脸区域图像,包括:
[0515]
s20:根据第一人脸关键点,对初始帧图像及第一人脸关键点进行旋转矫正。
[0516]
由于用户在通过终端拍摄化妆视频时,不能保证每一帧图像中人脸的姿态角度均相同,为了提高当前帧图像与初始帧图像比对的准确性,需要对每一帧图像中的人脸进行旋转矫正,以使矫正后每一帧图像中人脸眼睛的连线都处在同一水平线上,从而确保每一帧图像中人脸的姿态角度相同,避免因姿态角度不同导致化妆进度检测误差较大的问题。
[0517]
具体地,根据第一人脸关键点包括的左眼关键点和右眼关键点,分别确定左眼中心坐标和右眼中心坐标。从第一人脸关键点确定出左眼区域的全部左眼关键点及右眼区域的全部右眼关键点。对确定出的全部左眼关键点的横坐标取均值,以及对全部左眼关键点的纵坐标取均值,将左眼对应的横坐标的均值和纵坐标的均值组成一个坐标,将该坐标确定为左眼中心坐标。按照同样的方式确定出右眼中心坐标。
[0518]
然后根据左眼中心坐标和右眼中心坐标,确定初始帧图像对应的旋转角度及旋转中心点坐标。如图4所示,根据左眼中心坐标和右眼中心坐标计算出两个坐标的水平差值dx和竖直差值dy,以及计算出左眼中心坐标和右眼中心坐标的两眼连线长度d。依据两眼连线长度d、水平差值dx和竖直差值dy,计算出两眼连线与水平方向的夹角θ,该夹角θ即为初始帧图像对应的旋转角度。然后根据左眼中心坐标和右眼中心坐标计算出两眼连线的中心点坐标,该中点点坐标即为初始帧图像对应的旋转中心点坐标。
[0519]
根据计算出的旋转角度和旋转中心点坐标,对初始帧图像及第一人脸关键点进行旋转矫正。具体将旋转角度和旋转中心点坐标输入用于计算图片的旋转矩阵的预设函数中,该预设函数可以为opencv中的函数cv2.getrotationmatrix2d()。通过调用该预设函数获得初始帧图像对应的旋转矩阵。然后计算初始帧图像和该旋转矩阵的乘积,得到矫正后的初始帧图像。利用旋转矩阵对初始帧图像进行矫正的操作,也可以通过调用opencv中的函数cv2.warpaffine()来完成。
[0520]
对于第一人脸关键点,需要对每个第一人脸关键点逐一进行矫正,以与矫正后的初始帧图像相对应。在对第一人脸关键点逐一矫正时,需要进行两次坐标系的转换,第一次将以初始帧图像左上角为原点的坐标系转化为以左下角为原点的坐标系,第二次进一步将以左下角为原点的坐标系转化为以上述旋转中心点坐标为坐标原点的坐标系,如图5所示。经过两次坐标系转换后对每个第一人脸关键点进行如下公式(1)的转换,可完成对第一人脸关键点的旋转矫正。
[0521][0522]
在公式(1)中,x0、y0分别为旋转矫正前第一人脸关键点的横坐标和纵坐标, x、y分别为旋转矫正第一人脸关键点的横坐标和纵坐标,θ为上述旋转角度。
[0523]
经过矫正后的初始帧图像和第一人脸关键点是基于整张图像的,整张图像不仅包含用户的人脸信息,还包括其他多余的图像信息,因此需要通过如下步骤s21 对矫正后的图像进行人脸区域的裁剪。
[0524]
s21:根据矫正后的第一人脸关键点,从矫正后的初始帧图像中截取包含人脸区域的图像。
[0525]
首先从矫正后的第一人脸关键点中确定最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值。然后根据最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值,确定矫正后的初始帧图像中人脸区域对应的截取框。具体地,将最小横坐标值和最小纵坐标值组成一个坐标点,将该坐标点作为人脸区域对应的截取框的左上角顶点。将最大横坐标值和最大纵坐标值组成另一个坐标点,将该坐标点作为人脸区域对应的截取框的右下角顶点。根据上述左上角顶点和右下角顶点在矫正后的初始帧图像中确定截取框的位置,从矫正后的初始帧图像中截取出位于该截取框内的图像,即截取出包含人脸区域的图像。
[0526]
在本技术的另一些实施例中,为了确保将用户的全部的人脸区域截取出来,避免截取不完整导致后续化妆进度检测误差很大的情况发生,还可以将上述截取框放大预设倍数,该预设倍数可以为1.15或1.25等。本技术实施例并不限制预设倍数的具体取值,实际应用中可根据需求来设定该预设倍数。将上述截取框向周围放大预设倍数之后,从矫正后的初始帧图像中截取出位于放大后的截取框中的图像,从而截取出包含用户的完整人脸区域的图像。
[0527]
s22:将包含人脸区域的图像缩放至预设尺寸,得到初始帧图像对应的人脸区域图像。
[0528]
通过上述方式从初始帧图像中截取出包含用户的人脸区域的图像后,将包含人脸区域的图像缩放至预设尺寸,得到初始帧图像对应的人脸区域图像。该预设尺寸可以为390
×
390或400
×
400等。本技术实施例并不限制预设尺寸的具体取值,实际应用中可根据需求进行设定。
[0529]
为了使第一人脸关键点与缩放后的人脸区域图像相适应,将截取的包含人脸区域的图像缩放至预设尺寸后,还需根据缩放前包含人脸区域的图像的尺寸及该预设尺寸,对上述矫正后的第一人脸关键点进行缩放平移处理。具体地,依据缩放前包含人脸区域的图像的尺寸及图像所需缩放至的预设尺寸,确定每个第一人脸关键点的平移方向及平移距离,进而根据每个第一人脸关键点对应的平移方向和平移距离,分别对每个第一人脸关键点进行平移操作,并记录平移后的每个第一人脸关键点的坐标。
[0530]
通过上述方式从初始帧图像中获得人脸区域图像,并通过旋转矫正和平移缩放等操作使第一人脸关键点与获得的人脸区域图像相适应,之后通过如下步骤s3 的方式从人脸区域图像中提取出目标上妆区域对应的图像区域。
[0531]
在本技术的另一些实施例中,执行步骤s3之前,还可以先对人脸区域图像进行高斯滤波处理,用于去除人脸区域图像中的噪声。具体地,根据预设尺寸的高斯核,对初始帧图像对应的人脸区域图像进行高斯滤波处理。
[0532]
高斯滤波的高斯核是高斯滤波处理的关键参数,高斯核选取过小,则不能达到很好的滤波效果,高斯核选取过大,虽然能过滤掉图像中的噪声信息,但同时会平滑掉图像中有用的信息。本技术实施例选取预设尺寸的高斯核,预设尺寸可以为9
×
9。此外高斯滤波函
数的另一组参数sigmax、sigmay均设置为0,经过高斯滤波后,图像信息更加平滑,进而提高后续获取化妆进度的准确性。
[0533]
通过上述方式获得人脸区域图像,或者对人脸区域图像进行高斯滤波处理之后,通过步骤s3从人脸区域图像中提取该目标上妆区域对应的第一目标区域图像。
[0534]
s3:以该目标上妆区域对应的美妆掩码图为参照,从该人脸区域图像中提取该目标上妆区域对应的第一目标区域图像。
[0535]
直接从人脸区域图像中抠取出该目标上妆区域对应的第一目标区域图像,能够避免其他区域对该目标上妆区域的化妆进度检测的干扰。尤其是能够避免重叠的目标上妆区域之间的相互干扰,提高眼影化妆进度检测的准确性。
[0536]
服务器具体通过如下步骤s40-s42的操作来获得第一目标区域图像,包括:
[0537]
s40:分别将该目标上妆区域对应的美妆掩码图和人脸区域图像转换为二值化图像。
[0538]
s41:对美妆掩码图对应的二值化图像和人脸区域图像对应的二值化图像进行与运算,获得美妆掩码图与该人脸区域图像的相交区域对应的第一掩膜图像。
[0539]
分别将美妆掩码图对应的二值化图像和该人脸区域图像对应的二值化图像中坐标相同的像素点的像素值进行与运算。由于美妆掩码图中只有目标上妆区域中的像素点的像素值不为零,其他区域的像素点均为零。因此与运算得到的第一掩膜图像相当于从初始帧图像对应的人脸区域图像中截取出了各个目标上妆区域。
[0540]
在本技术的另一些实施例中,由于美妆掩码图是基于预设标准人脸图像生成的,因此美妆掩码图中的目标上妆区域很可能无法与初始帧图像中用户实际上妆的区域完全重合,从而影响化妆进度检测的准确性。因此在将美妆掩码图对应的二值化图像和人脸区域图像对应的二值化图像进行与运算之前,还可以先对美妆掩码图中的目标上妆区域与初始帧图像中的对应区域进行对齐操作。
[0541]
具体地,根据美妆掩码图对应的标准人脸关键点,确定美妆掩码图中位于该目标上妆区域的轮廓上的一个或多个第一定位点。美妆掩码图对应的标准人脸关键点即为预设标准人脸图像对应的标准人脸关键点。首先确定该目标上妆区域的轮廓上是否包含标准人脸关键点,若包含,则将位于轮廓上的标准人脸关键点确定为该目标上妆区域对应的第一定位点。若不包含,则利用该目标上妆区域周围的标准人脸关键点,通过线性变换的方式生成位于该目标上妆区域的轮廓上的第一定位点。具体可以将周围的标准人脸关键点上移、下移、左移或右移等平移操作获得第一定位点。
[0542]
在本技术实施例中,目标上妆区域对应的第一定位点的数目可以为预设数目个,预设数目可以为3或4等。
[0543]
通过上述方式获得美妆掩码图中该目标上妆区域对应的第一定位点后,根据初始帧图像对应的第一人脸关键点,从初始帧图像中确定出与每个第一定位点对应的第二定位点。由于美妆掩码图对应的标准人脸关键点和初始帧图像对应的第一人脸关键点都是通过相同的检测模型获得的,不同位置的关键点都具有各自的编号。因此对于属于标准人脸关键点的第一定位点,从初始帧图像对应的第一人脸关键点中确定出与该第一定位点对应的标准人脸关键点的编号相同的第一人脸关键点,将确定出的第一人脸关键点作为该第一定位点对应的第二定位点。对于利用标准人脸关键点进行线性变换得到的第一定位点,则从
初始帧图像对应的第一人脸关键点中确定出该第一定位点对应的第一人脸关键点,将对该第一人脸关键点进行相同的线性变换得到的点确定为该第一定位点对应的第二定位点。
[0544]
通过上述方式确定每个第一定位点对应的第二定位点之后,对美妆掩码图进行拉伸处理,将每个第一定位点拉伸至对应的每个第二定位点对应的位置处,即使得拉伸后美妆掩码图中每个第一定位点的位置都与其对应的第二定位点的位置相同。
[0545]
通过上述方式能够将美妆掩码图中的目标上妆区域与初始帧图像中用户实际上妆的区域对齐,从而确保通过美妆掩码图能够精确地从初始帧图像中提取出该目标上妆区域对应的第一目标区域图像,进而提高化妆进度检测的准确性。
[0546]
将该目标上妆区域对应的美妆掩码图与初始帧图像对齐之后,再通过步骤s41 的操作获得美妆掩码图与初始帧图像的人脸区域图像之间相交区域对应的第一掩膜图像,然后通过步骤s42的方式来扣取该目标上妆区域对应的第一目标区域图像。
[0547]
s42:对第一掩膜图像与初始帧图像对应的人脸区域图像进行与运算,获得该目标上妆区域对应的第一目标区域图像。
[0548]
由于第一掩膜图像为二值化图像,因此对第一掩膜图像和初始帧图像对应的人脸区域图像进行与运算,从初始帧图像对应的人脸区域图像中截取出该目标上妆区域的图像,即得到了该目标上妆区域对应的第一目标区域图像。
[0549]
对于每个目标上妆区域对应的第一目标区域图像和第二目标区域图像,均可通过上述步骤s40-s42的操作来获得。
[0550]
在本技术的另一些实施例中,考虑到实际化妆场景中目标上妆区域的边缘可能不会有很清晰的轮廓线,如眼影化妆场景中越靠近边缘颜色越浅,从而使眼影妆容更自然,不会显得很突兀。因此通过上述实施例获得第一目标区域图像和第二目标区域图像之后,还分别对第一目标区域图像和第二目标区域图像中的目标上妆区域进行边界腐蚀处理,使目标上妆区域的边界模糊,使得第一目标区域图像和第二目标区域图像中的目标上妆区域更贴近真实上妆范围,进而提供化妆进度检测的准确性。
[0551]
通过上述方式获得的各目标上妆区域对应的第一目标区域图像和第二目标区域图像,这些图像的颜色空间均为rgb颜色空间。本技术实施例预先通过大量试验确定了眼影上妆对颜色空间的各通道分量的影响,发现对rgb颜色空间中各颜色通道的影响差别不大。而hls颜色空间是由hue(色调)、saturation(饱和度) 和light(亮度)三个分量组成,通过试验发现眼影上妆能够引起hls颜色空间的亮度分量发生明显的变化。
[0552]
因此通过上述任一方式获得各目标上妆区域对应的第一目标区域图像和第二目标区域图像后,还将每个目标上妆区域对应的第一目标区域图像和第二目标区域图像均由rgb颜色空间转换为hls颜色空间下。并从转换后的各个第一目标区域图像和各个第二目标区域图中的hls颜色空间中分离出预设单通道分量,得到每个目标上妆区域对应的hls颜色空间下仅包含预设单通道分量的第一目标区域图像和第二目标区域图像。预设单通道分量可以为亮度分量。
[0553]
然后根据转换后每个目标上妆区域对应的第一目标区域图像和第二目标区域图像,确定当前帧图像对应的当前化妆进度。
[0554]
具体地,分别计算转换后同一个目标上妆区域对应的第一目标区域图像和第二目标区域图像中位置相同的像素点对应的上述预设单通道分量的差值绝对值。例如,假设该
目标上妆区域为卧蚕区域,则计算初始帧图像中卧蚕区域对应的第一目标区域图像和当前帧图像中卧蚕区域对应的第二目标区域图像中坐标相同的像素点之间的亮度分量的差值绝对值。
[0555]
统计每个目标上妆区域对应的差值绝对值满足眼影化妆对应的预设化妆完成条件的像素点数目。其中,预设化妆完成条件为像素点对应的差值绝对值大于眼影化妆对应的第一预设阈值,第一预设阈值可以为11或12等。
[0556]
统计每个目标上妆区域对应的第一目标区域图像或第二目标区域图像中所有像素点的总数。然后对于每个目标上妆区域,均分别计算统计的差值绝对值满足预设化妆完成条件的像素点数目与该目标上妆区域中的像素点总数目之间的比值,分别得到每个目标上妆区域对应的化妆进度。然后根据每个目标上妆区域对应的化妆进度及每个目标上妆区域对应的预设权重,计算当前帧图像对应的当前化妆进度。
[0557]
其中,每个目标上妆区域对应的预设权重之和为1,各个目标上妆区域对应的预设权重可以相同,也可以不相同。例如,假设有上眼皮、上眼皮中间部位、卧蚕部位和眼头部位共4个目标上妆区域,则这4个目标上妆区域对应的预设权重可以均为0.25。本技术实施例并不限制每个目标上妆区域的预设权重的取值,实际应用中可根据需求进行限定。
[0558]
在本技术的另一些实施例中,为了进一步提高化妆进度检测的准确性,还对同一目标上妆区域对应的第一目标区域图像和第二目标区域图像中的该目标上妆区域进行进一步对齐。
[0559]
具体地,分别对同一个目标上妆区域对应的仅包含上述预设单通道分量的第一目标区域图像和第二目标区域图像进行二值化处理,即将第一目标区域图像和第二目标区域图像中该目标上妆区域中的像素点对应的上述预设单通道分量的值均修改为1,将其余位置处的像素点的预设单通道分量的值均修改为0。通过二值化处理得到第一目标区域图像对应的第一二值化掩膜图像和第二目标区域图像对应的第二二值化掩膜图像。
[0560]
然后对第一二值化掩膜图像和第二二值化掩膜图像进行与运算,得到该目标上妆区域对应的第一目标区域图像和第二目标区域图像的相交区域对应的第二掩膜图像。即分别将第一二值化掩膜图像和第二二值化掩膜图像中相同位置处的像素点进行与运算,得到相交区域的第二掩膜图像。该第二掩膜图像中像素点的预设单通道分量不为零的区域,即为第一目标区域图像和第二目标区域中重合的目标上妆区域。
[0561]
通过前述步骤的操作获得初始帧图像对应的人脸区域图像及当前帧图像对应的人脸区域图像。对第二掩膜图像和初始帧图像对应的人脸区域图像进行与运算,得到该目标上妆区域对应的新第一目标区域图像;对第二掩膜图像和当前帧图像对应的人脸区域图像进行与运算,得到该目标上妆区域对应的新第二目标区域图像。
[0562]
在本技术的另一些实施例中,也可以利用上述第二掩膜图像和前文得到的边界腐蚀后该目标上妆区域对应的第一目标区域图像进行与运算,得到该目标上妆区域对应的新第一目标区域图像。以及对第二掩膜图像和前文得到的边界腐蚀后该目标上妆区域对应的第二目标区域图像进行与运算,得到该目标上妆区域对应的新第二目标区域图像。
[0563]
由于第二掩膜图像中包含该目标上妆区域对应的第一目标区域图像和第二目标区域图像中重合的区域,因此通过第二掩膜图像按照上述方式获得新第一目标区域图像和新第二目标区域图像,使得新第一目标区域图像和新第二目标区域图像中目标上妆区域的
位置是完全一致的,如此后续依据完全对齐的目标上妆区域在预设单通道分量上的变化来确定化妆进度,确保了进行比对的区域是完全一致的,大大提高了化妆进度检测的准确性。
[0564]
通过上述任一方式对初始帧图像和当前帧图像中的该目标上妆区域进行对齐,得到新第一目标区域图像和新第二目标区域图像后,再次通过上述步骤503的操作来确定该目标上妆区域对应的化妆进度。对于其他每个目标上妆区域,均按照上述方式对初始帧图像和当前帧图像中的其他每个目标上妆区域进行对齐,分别得到其他每个目标上妆区域对应的化妆进度。进而根据得到的每个目标上妆区域的化妆进度,计算当前帧图像对应的当前化妆进度。
[0565]
通过上述任一方式确定出当前化妆进度后,服务器发送该当前化妆进度给用户的终端。用户的终端接收到当前化妆进度后,显示该当前化妆进度。当前化妆进度可以为比值或百分数。终端可以通过进度条的形式来显示当前化妆进度。
[0566]
在用户化妆的过程中,通过本技术实施例提供的化妆进度检测方法,实时检测第一帧图像之后的每帧图像相对于第一帧图像的化妆进度,并将检测的化妆进度显示给用户,使用户能够直观地看到自己的化妆进度,提高化妆效率。
[0567]
为了便于理解本技术实施例提供的方法,下面结合附图进行说明。如图13所示,根据初始帧图像及其对应的第一人脸关键点,当前帧图像及其对应的第二人脸关键点,分别对初始帧图像和当前帧图像中的人脸进行矫正和裁剪。将眼影掩码图拆分为每个目标上妆区域对应的美妆掩码图。然后将每个目标上妆区域对应的美妆掩码图分别与初始帧图像及当前帧图像各自对应的人脸区域图像进行对齐。以每个目标上妆区域对应的美妆掩码图为参照从初始帧图像中扣取出每个目标上妆区域对应的第一目标区域图像,以及以每个目标上妆区域对应的美妆掩码图为参照从当前帧图像中扣取出每个目标上妆区域对应的第二目标区域图像。然后将每个目标上妆区域对应的第一目标区域图像和第二目标区域图像转换为hls颜色空间下仅包含预设单通道分量的图像。计算转换后同一目标上妆区域对应的第一目标区域图像和第二目标区域图像中位置相同的像素点对应的预设单通道分量的差值绝对值。统计每个目标上妆区域对应的差值绝对值满足预设化妆完成条件的像素点数目。分别计算每个目标上妆区域对应的像素点数目与对应目标上妆区域中的像素点总数目之间的比值,得到每个目标上妆区域对应的化妆进度。根据每个目标上妆区域对应的化妆进度及每个目标上妆区域对应的预设权重,计算当前帧图像对应的当前化妆进度。
[0568]
在本技术实施例中,利用人脸关键点,对视频帧中用户的人脸区域进行矫正和裁剪,提高了识别人脸区域的准确性。依据眼影化妆上妆区域存在重叠的特点,将眼影掩码图拆分成每个目标上妆区域对应的美妆掩码图,对每个目标上妆区域分别进行化妆进度检测,提高了化妆进度检测的准确性。将每个美妆掩码图中的目标上妆区域分别与视频帧中人脸区域图像中的目标上妆区域对齐,确保每个美妆掩码图均与初始帧图像及当前帧图像中对应的目标上妆区域的位置一致。通过对齐后的美妆掩码图分别从初始帧图像和当前帧图像中扣取出每个目标上妆区域对应的第一目标区域图像和第二目标区域图像。进一步地,还对同一目标上妆区域对应的第一目标区域图像和第二目标区域图像进行再次对齐,减少了比较时因位置信息引入的误差。还且本技术没有采用深度学习的方式,无需预先收集大量数据,通过对用户化妆的实时画面的捕获,经过服务器端的计算,将检测结果返回给用户。相比深度学习的模型推理方案,本技术在算法处理环节耗费更少的计算成本,减少了
服务器的处理压力。
[0569]
本技术实施例还提供一种化妆进度检测装置,该装置用于执行上述化妆进度检测方法来实时检测眼影化妆的进度。参见图14,该装置具体包括:
[0570]
获取模块1401,用于获取眼影掩码图以及用户当前进行特定妆容的实时化妆视频中的初始帧图像和当前帧图像;
[0571]
拆分模块1402,用于根据眼影上妆的每个目标上妆区域,分别从眼影掩码图中拆分出每个目标上妆区域对应的美妆掩码图;
[0572]
化妆进度确定模块1403,用于根据初始帧图像、当前帧图像及每个目标上妆区域对应的美妆掩码图,确定当前帧图像对应的当前化妆进度。
[0573]
化妆进度确定模块1403,用于分别以每个目标上妆区域对应的美妆掩码图为参照,从初始帧图像中获取每个目标上妆区域对应的第一目标区域图像;分别以每个目标上妆区域对应的美妆掩码图为参照,从当前帧图像中获取每个目标上妆区域对应的第二目标区域图像;根据每个目标上妆区域对应的第一目标区域图像及第二目标区域图像,确定当前帧图像对应的当前化妆进度。
[0574]
化妆进度确定模块1403,用于分别将每个目标上妆区域对应的第一目标区域图像和第二目标区域图像转换为hls颜色空间下包含预设单通道分量的图像;根据转换后的每个目标上妆区域对应的第一目标区域图像和第二目标区域图像,确定当前帧图像对应的当前化妆进度。
[0575]
化妆进度确定模块1403,用于分别计算转换后同一目标上妆区域对应的第一目标区域图像和第二目标区域图像中位置相同的像素点对应的预设单通道分量的差值绝对值;统计每个目标上妆区域对应的差值绝对值满足预设化妆完成条件的像素点数目;分别计算每个目标上妆区域对应的像素点数目与对应目标上妆区域中的像素点总数目之间的比值,得到每个目标上妆区域对应的化妆进度;根据每个目标上妆区域对应的化妆进度及每个目标上妆区域对应的预设权重,计算当前帧图像对应的当前化妆进度。
[0576]
化妆进度确定模块1403,用于检测初始帧图像对应的第一人脸关键点;根据第一人脸关键点,获取初始帧图像对应的人脸区域图像;分别以每个目标上妆区域对应的美妆掩码图为参照,从人脸区域图像中分别获取每个目标上妆区域对应的的第一目标区域图像。
[0577]
化妆进度确定模块1403,用于分别将第一目标上妆区域对应的美妆掩码图和人脸区域图像转换为二值化图像;第一目标上妆区域为每个目标上妆区域中的任一目标上妆区域;对美妆掩码图对应的二值化图像和人脸区域图像对应的二值化图像进行与运算,获得美妆掩码图与人脸区域图像的相交区域对应的第一掩膜图像;对第一掩膜图像与初始帧图像对应的人脸区域图像进行与运算,获得第一目标区域图像。
[0578]
化妆进度确定模块1403,还用于根据美妆掩码图对应的标准人脸关键点,确定美妆掩码图中位于美妆掩码图包括的目标上妆区域的轮廓上的一个或多个第一定位点;根据第一人脸关键点,从人脸区域图像中确定出与每个第一定位点对应的第二定位点;对美妆掩码图进行拉伸处理,将每个第一定位点拉伸至对应的每个第二定位点对应的位置处。
[0579]
化妆进度确定模块1403,还用于根据眼影掩码图对应的标准人脸关键点,确定眼影掩码图中位于每个上妆区域的轮廓上的一个或多个第一定位点;根据第一人脸关键点,
从人脸区域图像中确定出与每个第一定位点对应的第二定位点;对眼影掩码图进行拉伸处理,将每个第一定位点拉伸至对应的每个第二定位点对应的位置处。
[0580]
化妆进度确定模块1403,用于根据初始帧图像对应的第一人脸关键点,对初始帧图像及第一人脸关键点进行旋转矫正;根据矫正后的第一人脸关键点,从矫正后的初始帧图像中截取包含人脸区域的图像;将包含人脸区域的图像缩放至预设尺寸,得到初始帧图像对应的人脸区域图像。
[0581]
化妆进度确定模块1403,用于根据第一人脸关键点包括的左眼关键点和右眼关键点,分别确定左眼中心坐标和右眼中心坐标;根据左眼中心坐标和右眼中心坐标,确定初始帧图像对应的旋转角度及旋转中心点坐标;根据旋转角度和旋转中心点坐标,对初始帧图像及第一人脸关键点进行旋转矫正。
[0582]
化妆进度确定模块1403,用于根据矫正后的第一人脸关键点,对矫正后的初始帧图像中包含的人脸区域进行图像截取。
[0583]
化妆进度确定模块1403,用于从矫正后的第一人脸关键点中确定最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值;根据最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值,确定矫正后的初始帧图像中人脸区域对应的截取框;根据截取框,从矫正后的初始帧图像中截取出包含人脸区域的图像。
[0584]
化妆进度确定模块1403,还用于将截取框放大预设倍数;根据放大后的截取框,从矫正后的初始帧图像中截取出包含人脸区域的图像。
[0585]
化妆进度确定模块1403,还用于根据包含人脸区域的图像的尺寸及预设尺寸,对矫正后的第一人脸关键点进行缩放平移处理。
[0586]
该装置还包括:人脸检测模块,用于检测初始帧图像和当前帧图像中是否均仅包含同一个用户的人脸图像;如果是,则执行确定用户进行特定妆容的当前化妆进度的操作;如果否,则发送提示信息给用户的终端,提示信息用于提示用户保持实时化妆视频中仅出现同一个用户的人脸。
[0587]
本技术的上述实施例提供的化妆进度检测装置与本技术实施例提供的化妆进度检测方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
[0588]
实施例五
[0589]
1、一种化妆进度检测方法,包括:
[0590]
获取用户当前进行特定妆容的实时化妆视频中的初始帧图像和当前帧图像;
[0591]
从所述初始帧图像中获取眉毛对应的第一目标区域图像,及从所述当前帧图像中获取眉毛对应的第二目标区域图像;
[0592]
根据所述第一目标区域图像和所述第二目标区域图像,确定所述当前帧图像对应的当前化妆进度。
[0593]
2、根据1,所述从所述初始帧图像中获取眉毛对应的第一目标区域图像,包括:
[0594]
检测所述初始帧图像对应的第一人脸关键点;
[0595]
根据所述第一人脸关键点,获取所述初始帧图像对应的人脸区域图像;
[0596]
根据所述第一人脸关键点中包括的眉毛关键点,从所述人脸区域图像中获取眉毛对应的第一目标区域图像。
[0597]
3、根据2,所述根据所述第一人脸关键点中包括的眉毛关键点,从所述人脸区域图像中截取眉毛对应的第一目标区域图像,包括:
[0598]
对所述第一人脸关键点包括的眉头至眉峰之间的眉毛关键点进行插值,得到多个插值点;
[0599]
从所述人脸区域图像中截取出眉头至眉峰之间所有眉毛关键点及所述多个插值点连接而成的闭合区域,得到眉头至眉峰之间的部分眉毛图像;
[0600]
从所述人脸区域图像中截取出眉峰至眉尾之间的所有眉毛关键点连接而成的闭合区域,得到眉峰至眉尾之间的部分眉毛图像;
[0601]
将所述眉头至眉峰之间的部分眉毛图像与所述眉峰至眉尾之间的部分眉毛图像拼接为眉毛对应的第一目标区域图像。
[0602]
4、根据1,所述根据所述第一目标区域图像和所述第二目标区域图像,确定所述当前帧图像对应的当前化妆进度,包括:
[0603]
分别将所述第一目标区域图像和所述第二目标区域图像转换为hsv颜色空间下包含预设单通道分量的图像;
[0604]
根据转换后的所述第一目标区域图像和所述第二目标区域图像,确定所述当前帧图像对应的当前化妆进度。
[0605]
5、根据4,所述根据转换后的所述第一目标区域图像和所述第二目标区域图像,确定所述当前帧图像对应的当前化妆进度,包括:
[0606]
分别计算转换后的所述第一目标区域图像和所述第二目标区域图像中位置相同的像素点对应的所述预设单通道分量的差值绝对值;
[0607]
统计对应的差值绝对值满足预设化妆完成条件的像素点数目;
[0608]
计算统计的所述像素点数目与所述第一目标区域图像中所有目标上妆区域中的像素点总数目之间的比值,得到所述当前帧图像对应的当前化妆进度。
[0609]
6、根据1,所述根据所述第一目标区域图像和所述第二目标区域图像,确定所述当前帧图像对应的当前化妆进度之前,还包括:
[0610]
分别对所述第一目标区域图像和所述第二目标区域图像进行二值化处理,得到所述第一目标区域图像对应的第一二值化掩膜图像和所述第二目标区域图像对应的第二二值化掩膜图像;
[0611]
对所述第一二值化掩膜图像和所述第二二值化掩膜图像进行与运算,得到所述第一目标区域图像与所述第二目标区域图像的相交区域对应的第二掩膜图像;
[0612]
获取所述初始帧图像对应的人脸区域图像及所述当前帧图像对应的人脸区域图像;
[0613]
对所述第二掩膜图像和所述初始帧图像对应的人脸区域图像进行与运算,得到所述初始帧图像对应的新第一目标区域图像;
[0614]
对所述第二掩膜图像和所述当前帧图像对应的人脸区域图像进行与运算,得到所述当前帧图像对应的新第二目标区域图像。
[0615]
7、根据1,所述确定所述当前帧图像对应的当前化妆进度之前,还包括:
[0616]
分别对所述第一目标区域图像和所述第二目标区域图像中的上妆区域进行边界腐蚀处理。
[0617]
8、根据2,所述根据所述第一人脸关键点,获取所述初始帧图像对应的人脸区域图像,包括:
[0618]
根据所述初始帧图像对应的第一人脸关键点,对所述初始帧图像及所述第一人脸关键点进行旋转矫正;
[0619]
根据矫正后的所述第一人脸关键点,从矫正后的所述初始帧图像中截取包含人脸区域的图像;
[0620]
将所述包含人脸区域的图像缩放至预设尺寸,得到所述初始帧图像对应的人脸区域图像。
[0621]
9、根据8,所述根据所述第一人脸关键点,对所述初始帧图像及所述第一人脸关键点进行旋转矫正,包括:
[0622]
根据所述第一人脸关键点包括的左眼关键点和右眼关键点,分别确定左眼中心坐标和右眼中心坐标;
[0623]
根据所述左眼中心坐标和所述右眼中心坐标,确定所述初始帧图像对应的旋转角度及旋转中心点坐标;
[0624]
根据所述旋转角度和所述旋转中心点坐标,对所述初始帧图像及所述第一人脸关键点进行旋转矫正。
[0625]
10、根据8,所述根据矫正后的所述第一人脸关键点,从矫正后的所述初始帧图像中截取包含人脸区域的图像,包括:
[0626]
根据矫正后的所述第一人脸关键点,对矫正后的所述初始帧图像中包含的人脸区域进行图像截取。
[0627]
11、根据10,所述根据矫正后的所述第一人脸关键点,对矫正后的所述初始帧图像中包含的人脸区域进行图像截取,包括:
[0628]
从矫正后的所述第一人脸关键点中确定最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值;
[0629]
根据所述最小横坐标值、所述最小纵坐标值、最大横坐标值和最大纵坐标值,确定矫正后的所述初始帧图像中人脸区域对应的截取框;
[0630]
根据所述截取框,从矫正后的所述初始帧图像中截取出包含所述人脸区域的图像。
[0631]
12、根据11,所述方法还包括:
[0632]
将所述截取框放大预设倍数;
[0633]
根据放大后的所述截取框,从矫正后的所述初始帧图像中截取出包含所述人脸区域的图像。
[0634]
13、根据8,所述方法还包括:
[0635]
根据所述包含人脸区域的图像的尺寸及所述预设尺寸,对矫正后的所述第一人脸关键点进行缩放平移处理。
[0636]
14、根据1-13任一项,所述方法还包括:
[0637]
检测所述初始帧图像和所述当前帧图像中是否均仅包含同一个用户的人脸图像;
[0638]
如果是,则执行所述确定所述用户进行所述特定妆容的当前化妆进度的操作;
[0639]
如果否,则发送提示信息给所述用户的终端,所述提示信息用于提示所述用户保
持所述实时化妆视频中仅出现同一个用户的人脸。
[0640]
15、一种化妆进度检测装置,包括:
[0641]
视频获取模块,用于获取用户当前进行特定妆容的实时化妆视频中的初始帧图像和当前帧图像;
[0642]
目标区域获取模块,用于从所述初始帧图像中获取眉毛对应的第一目标区域图像,及从所述当前帧图像中获取眉毛对应的第二目标区域图像;
[0643]
进度确定模块,用于根据所述第一目标区域图像和所述第二目标区域图像,确定所述当前帧图像对应的当前化妆进度。
[0644]
16、一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序以实现如权利要求 1-14任一项所述的方法。
[0645]
17、一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行实现如权利要求1-14中任一项所述的方法。
[0646]
本技术实施例提供一种化妆进度检测方法,该方法用于眉毛妆容对应的化妆进度。参见图15,该实施例具体包括以下步骤:
[0647]
步骤601:获取用户当前进行特定妆容的实时化妆视频中的初始帧图像和当前帧图像。
[0648]
本技术实施例的执行主体为服务器。用户的手机或电脑等终端上安装有与服务器提供的化妆进度检测服务相适配的客户端。当用户需要使用化妆进度检测服务时,用户打开终端上的该客户端,客户端的显示界面中设置有视频上传接口,当检测到用户点击该视频上传接口时,调用终端的摄像装置拍摄用户的化妆视频,在拍摄过程中用户在自己脸部进行眉毛上妆操作。用户的终端将拍摄的化妆视频以视频流的形式传输给服务器。服务器接收用户的终端传输的该化妆视频的每一帧图像。
[0649]
在本技术实施例中,服务器将接收到的第一帧图像作为初始帧图像,以该初始帧图像作为参考来比对后续接收到的每一帧图像对应的特定妆容的当前化妆进度。由于对于后续每一帧图像的处理方式都相同,因此本技术实施例以当前时刻接收到的当前帧图像为例来阐述化妆进度检测的过程。
[0650]
在本技术的另一些实施例中,服务器获得用户的化妆视频的初始帧图像和当前帧图像后,还检测初始帧图像和当前帧图像中是否均仅包含同一个用户的人脸图像。首先检测初始帧图像和当前帧图像中是否均仅包含一个人脸图像,若初始帧图像和/或当前帧图像中包含多个人脸图,或者,初始帧图像和/或当前帧图像中不包含人脸图像,则发送提示信息给用户的终端。用户的终端接收并显示该提示信息,以提示用户保持化妆视频中仅出现同一个用户的人脸。例如,提示信息可以为“请保持镜头内仅出现同一个人的人脸”。
[0651]
若检测出初始帧图像和当前帧图像中均仅包含一个人脸图像,则进一步判断初始帧图像中的人脸图像与当前帧图像中的人脸图像是否属于同一个用户。具体地,可以通过人脸识别技术提取初始帧图像中人脸图像对应的人脸特征信息,以及提取当前帧图像中人脸图像对应的人脸特征信息,计算这两帧图像中提取的人脸特征信息的相似度,若计算的相似度大于或等于设定值,则确定初始帧图像和当前帧图像中的人脸属于同一用户。若计算的相似度小于设定值,则确定初始帧图像和当前帧图像中的人脸属于不同用户,则发送
提示信息给用户的终端。用户的终端接收并显示该提示信息,以提示用户保持化妆视频中仅出现同一个用户的人脸。
[0652]
服务器通过本步骤获得用户化妆的初始帧图像及当前帧图像后,通过如下步骤602和603的操作来确定用户的当前化妆进度。
[0653]
步骤602:从初始帧图像中获取眉毛对应的第一目标区域图像,及从当前帧图像中获取眉毛对应的第二目标区域图像。
[0654]
其中,第一目标区域图像的获取过程,与第二目标区域图像的获取过程相同。本技术实施例以第一目标区域图像的获取过程为例进行详细说明。服务器具体通过以下步骤s5-s7的操作来从初始帧图像中获得第一目标区域图像。
[0655]
s5:检测初始帧图像对应的第一人脸关键点。
[0656]
服务器中配置了预先训练好的用于检测人脸关键点的检测模型,通过该检测模型提供人脸关键点检测的接口服务。服务器获取到用户化妆视频的初始帧图像后,调用人脸关键点检测的接口服务,通过检测模型识别出初始帧图像中用户脸部的所有人脸关键点。为了与当前帧图像对应的人脸关键点进行区分,本技术实施例将初始帧图像对应的所有人脸关键点称为第一人脸关键点。将当前帧图像对应的所有人脸关键点称为第二人脸关键点。
[0657]
其中,识别出的人脸关键点包括用户脸部轮廓上的关键点及嘴巴、鼻子、眼睛、眉毛等部位的关键点。识别出的人脸关键点的数目可以为106个。
[0658]
s6:根据第一人脸关键点,获取初始帧图像对应的人脸区域图像。
[0659]
服务器具体通过如下步骤s60-s62的操作来获取初始帧图像对应的人脸区域图像,包括:
[0660]
s60:根据第一人脸关键点,对初始帧图像及第一人脸关键点进行旋转矫正。
[0661]
由于用户在通过终端拍摄化妆视频时,不能保证每一帧图像中人脸的姿态角度均相同,为了提高当前帧图像与初始帧图像比对的准确性,需要对每一帧图像中的人脸进行旋转矫正,以使矫正后每一帧图像中人脸眼睛的连线都处在同一水平线上,从而确保每一帧图像中人脸的姿态角度相同,避免因姿态角度不同导致化妆进度检测误差较大的问题。
[0662]
具体地,根据第一人脸关键点包括的左眼关键点和右眼关键点,分别确定左眼中心坐标和右眼中心坐标。从第一人脸关键点确定出左眼区域的全部左眼关键点及右眼区域的全部右眼关键点。对确定出的全部左眼关键点的横坐标取均值,以及对全部左眼关键点的纵坐标取均值,将左眼对应的横坐标的均值和纵坐标的均值组成一个坐标,将该坐标确定为左眼中心坐标。按照同样的方式确定出右眼中心坐标。
[0663]
然后根据左眼中心坐标和右眼中心坐标,确定初始帧图像对应的旋转角度及旋转中心点坐标。如图4所示,根据左眼中心坐标和右眼中心坐标计算出两个坐标的水平差值dx和竖直差值dy,以及计算出左眼中心坐标和右眼中心坐标的两眼连线长度d。依据两眼连线长度d、水平差值dx和竖直差值dy,计算出两眼连线与水平方向的夹角θ,该夹角θ即为初始帧图像对应的旋转角度。然后根据左眼中心坐标和右眼中心坐标计算出两眼连线的中心点坐标,该中点点坐标即为初始帧图像对应的旋转中心点坐标。
[0664]
根据计算出的旋转角度和旋转中心点坐标,对初始帧图像及第一人脸关键点进行旋转矫正。具体将旋转角度和旋转中心点坐标输入用于计算图片的旋转矩阵的预设函数
中,该预设函数可以为opencv中的函数cv2.getrotationmatrix2d()。通过调用该预设函数获得初始帧图像对应的旋转矩阵。然后计算初始帧图像和该旋转矩阵的乘积,得到矫正后的初始帧图像。利用旋转矩阵对初始帧图像进行矫正的操作,也可以通过调用opencv中的函数cv2.warpaffine()来完成。
[0665]
对于第一人脸关键点,需要对每个第一人脸关键点逐一进行矫正,以与矫正后的初始帧图像相对应。在对第一人脸关键点逐一矫正时,需要进行两次坐标系的转换,第一次将以初始帧图像左上角为原点的坐标系转化为以左下角为原点的坐标系,第二次进一步将以左下角为原点的坐标系转化为以上述旋转中心点坐标为坐标原点的坐标系,如图5所示。经过两次坐标系转换后对每个第一人脸关键点进行如下公式(1)的转换,可完成对第一人脸关键点的旋转矫正。
[0666][0667]
在公式(1)中,x0、y0分别为旋转矫正前第一人脸关键点的横坐标和纵坐标, x、y分别为旋转矫正第一人脸关键点的横坐标和纵坐标,θ为上述旋转角度。
[0668]
经过矫正后的初始帧图像和第一人脸关键点是基于整张图像的,整张图像不仅包含用户的人脸信息,还包括其他多余的图像信息,因此需要通过如下步骤s61 对矫正后的图像进行人脸区域的裁剪。
[0669]
s61:根据矫正后的第一人脸关键点,从矫正后的初始帧图像中截取包含人脸区域的图像。
[0670]
首先从矫正后的第一人脸关键点中确定最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值。然后根据最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值,确定矫正后的初始帧图像中人脸区域对应的截取框。具体地,将最小横坐标值和最小纵坐标值组成一个坐标点,将该坐标点作为人脸区域对应的截取框的左上角顶点。将最大横坐标值和最大纵坐标值组成另一个坐标点,将该坐标点作为人脸区域对应的截取框的右下角顶点。根据上述左上角顶点和右下角顶点在矫正后的初始帧图像中确定截取框的位置,从矫正后的初始帧图像中截取出位于该截取框内的图像,即截取出包含人脸区域的图像。
[0671]
在本技术的另一些实施例中,为了确保将用户的全部的人脸区域截取出来,避免截取不完整导致后续化妆进度检测误差很大的情况发生,还可以将上述截取框放大预设倍数,该预设倍数可以为1.15或1.25等。本技术实施例并不限制预设倍数的具体取值,实际应用中可根据需求来设定该预设倍数。将上述截取框向周围放大预设倍数之后,从矫正后的初始帧图像中截取出位于放大后的截取框中的图像,从而截取出包含用户的完整人脸区域的图像。
[0672]
s62:将包含人脸区域的图像缩放至预设尺寸,得到初始帧图像对应的人脸区域图像。
[0673]
通过上述方式从初始帧图像中截取出包含用户的人脸区域的图像后,将包含人脸区域的图像缩放至预设尺寸,得到初始帧图像对应的人脸区域图像。该预设尺寸可以为390
×
390或400
×
400等。本技术实施例并不限制预设尺寸的具体取值,实际应用中可根据需求进行设定。
[0674]
为了使第一人脸关键点与缩放后的人脸区域图像相适应,将截取的包含人脸区域
的图像缩放至预设尺寸后,还需根据缩放前包含人脸区域的图像的尺寸及该预设尺寸,对上述矫正后的第一人脸关键点进行缩放平移处理。具体地,依据缩放前包含人脸区域的图像的尺寸及图像所需缩放至的预设尺寸,确定每个第一人脸关键点的平移方向及平移距离,进而根据每个第一人脸关键点对应的平移方向和平移距离,分别对每个第一人脸关键点进行平移操作,并记录平移后的每个第一人脸关键点的坐标。
[0675]
通过上述方式从初始帧图像中获得人脸区域图像,并通过旋转矫正和平移缩放等操作使第一人脸关键点与获得的人脸区域图像相适应,之后通过如下步骤s7 的方式从人脸区域图像中提取出眉毛对应的第一目标区域图像。
[0676]
在本技术的另一些实施例中,执行步骤s7之前,还可以先对人脸区域图像进行高斯滤波处理,用于去除人脸区域图像中的噪声。具体地,根据预设尺寸的高斯核,对初始帧图像对应的人脸区域图像进行高斯滤波处理。
[0677]
高斯滤波的高斯核是高斯滤波处理的关键参数,高斯核选取过小,则不能达到很好的滤波效果,高斯核选取过大,虽然能过滤掉图像中的噪声信息,但同时会平滑掉图像中有用的信息。本技术实施例选取预设尺寸的高斯核,预设尺寸可以为9
×
9。此外高斯滤波函数的另一组参数sigmax、sigmay均设置为0,经过高斯滤波后,图像信息更加平滑,进而提高后续获取化妆进度的准确性。
[0678]
通过上述方式获得人脸区域图像,或者对人脸区域图像进行高斯滤波处理之后,通过步骤s7从初始帧图像对应的人脸区域图像中提取眉毛对应的第一目标区域图像。
[0679]
s7:根据第一人脸关键点中包括的眉毛关键点,从初始帧图像对应的人脸区域图像中提取眉毛对应的第一目标区域图像。
[0680]
对眉毛化妆进行进度检测时需要将眉毛所在区域的图像扣取出来,以避免其他区域对眉毛化妆进度检测的影响,而且扣取出眉毛区域,后续仅对眉毛区域进行运算,减小了运算量,同时提高了准确性。
[0681]
上述获得的第一人脸关键点中包括多个眉毛关键点,如可以包括18个眉毛关键点。这多个眉毛关键点分布于眉毛轮廓上眉头至眉尾的不同位置处。为了提高扣取眉毛对应的第一目标区域图像的准确性,本技术实施例通过线性插值的方式来获得更多位于眉毛轮廓上的点,从而依据更多的点来扣取图像。由于眉尾呈尖角状,不便于进行线性插值运算。因此本技术实施例将提取眉毛对应的第一目标区域图像的过程划分为两部分。一部分为眉头至眉峰段,以线性差值的方式获得更多点进而扣取图像。另一部分为眉峰至眉尾段,以当前获得的眉峰至眉尾段的眉毛关键点来扣取图像。
[0682]
具体地,对第一人脸关键点包括的眉头至眉峰之间的眉毛关键点进行线性插值,得到多个插值点。将初始帧图像对应的人脸区域图像中眉头至眉峰之间所有眉毛关键点及得到的多个插值点沿眉毛轮廓线顺次连接,得到一个闭合区域,该闭合区域圈出了眉头至眉峰段的部分眉毛区域。从初始帧图像对应的人脸区域图像中截取出该闭合区域的图像,得到眉头至眉峰之间的部分眉毛图像。
[0683]
将初始帧图像对应的人脸区域图像中眉峰至眉尾之间的所有眉毛关键点沿眉毛轮廓线顺次连接,得到一个闭合区域,该闭合区域圈出了眉峰至眉尾段的部分眉毛区域。从初始帧图像对应的人脸区域图像中截取出该闭合区域的图像,得到眉峰至眉尾之间的部分眉毛图像。
[0684]
将眉头至眉峰之间的部分眉毛图像与眉峰至眉尾之间的部分眉毛图像拼接为眉毛对应的第一目标区域图像。
[0685]
对于当前帧图像,同样按照上述步骤s5-s7的操作从当前帧图像中获取眉毛对应的第二目标区域图像。
[0686]
在本技术的另一些实施例中,考虑到实际化妆场景中眉毛上妆的边缘可能不会有很清晰的轮廓线,边界通常比较模糊,才不会显得很突兀。因此通过上述实施例获得第一目标区域图像和第二目标区域图像之后,还分别对第一目标区域图像和第二目标区域图像中的眉毛区域进行边界腐蚀处理,使眉毛上妆的目标上妆区域的边界模糊,进而提高化妆进度检测的准确性。
[0687]
步骤603:根据第一目标区域图像和第二目标区域图像,确定当前帧图像对应的当前化妆进度。
[0688]
通过上述方式获得的初始帧图像中眉毛对应的第一目标区域图像和当前帧图像中眉毛对应的第二目标区域图像的颜色空间均为rgb颜色空间。本技术实施例预先通过大量试验确定眉毛妆容对颜色空间的各通道分量的影响,发现对rgb颜色空间中各颜色通道的影响差别不大。而hsv颜色空间是由hue(色调)、saturation (饱和度)和value(亮度)三个分量组成,其中一个分量发生变化时,另外两个分量值不会发生明显的变化,相比rgb颜色空间,hsv颜色空间可以分离出其中一个通道分量。且通过试验确定了眉毛妆容对亮度、色调和饱和度中哪个通道分量的影响最大,并在服务器中配置影响最大的通道分量为预设类型的妆容对应的预设单通道分量。对于眉毛妆容,其对应的预设单通道分量可以为亮度分量。
[0689]
通过上述方式获得初始帧图像中眉毛对应的第一目标区域图像和当前帧图像中眉毛对应的第二目标区域图像后,还将第一目标区域图像和第二目标区域图像均由rgb颜色空间转换为hsv颜色空间下。并从转换后的第一目标区域图像的 hsv颜色空间中分离出预设单通道分量,得到仅包含预设单通道分量的第一目标区域图像。以及,从转换后的第二目标区域图像的hsv颜色空间中分离出预设单通道分量,得到仅包含预设单通道分量的第二目标区域图像。
[0690]
然后根据转换后的第一目标区域图像和第二目标区域图像,确定当前帧图像对应的当前化妆进度。
[0691]
具体地,分别计算转换后第一目标区域图像和第二目标区域图像中位置相同的像素点对应的上述通道分量的差值绝对值。例如,计算转换后的第一目标区域图像和第二目标区域图像中坐标相同的像素点之间的亮度分量的差值绝对值。统计对应的差值绝对值满足预设化妆完成条件的像素点数目。其中,预设化妆完成条件为像素点对应的差值绝对值大于第一预设阈值,第一预设阈值可以为7或8 等。
[0692]
统计第一目标区域图像或第二目标区域图像中眉毛区域中的所有像素点的总数。然后计算满足预设化妆完成条件的像素点数目与眉毛区域的像素点总数目之间的比值,将该比值确定为当前化妆进度。
[0693]
在本技术的另一些实施例中,为了进一步提高化妆进度检测的准确性,还对上述第一目标区域图像和第二目标区域图像中的眉毛区域进行进一步对齐。具体地,分别对仅包含上述预设单通道分量的第一目标区域图像和第二目标区域图像进行二值化处理,即将
第一目标区域图像和第二目标区域图像目标上妆区域中的像素点对应的上述预设单通道分量的值均修改为1,将其余位置处的像素点的上述预设单通道分量的值均修改为0。通过二值化处理得到第一目标区域图像对应的第一二值化掩膜图像和第二目标区域图像对应的第二二值化掩膜图像。
[0694]
然后对第一二值化掩膜图像和第二二值化掩膜图像进行与运算,即分别将第一二值化掩膜图像和第二二值化掩膜图像中相同位置处的像素点进行与运算,得到第一目标区域图像与第二目标区域图像的相交区域对应的第二掩膜图像。该第二掩膜图像中像素点的预设单通道分量不为零的区域,即为第一目标区域图像和第二目标区域中重合的目标上妆区域。
[0695]
通过前述步骤的操作获得初始帧图像对应的人脸区域图像及当前帧图像对应的人脸区域图像。对第二掩膜图像和初始帧图像对应的人脸区域图像进行与运算,得到初始帧图像中眉毛对应的新第一目标区域图像;对第二掩膜图像和当前帧图像对应的人脸区域图像进行与运算,得到当前帧图像中眉毛对应的新第二目标区域图像。
[0696]
在本技术的另一些实施例中,还可以对第二掩膜图像和边界腐蚀处理后的眉毛对应的第一目标区域图像进行与运算,得到眉毛对应的新第一目标区域图像。以及,对第二掩膜图像和边界腐蚀处理后的眉毛对应的第二目标区域图像进行与运算,得到眉毛对应的新第二目标区域图像。
[0697]
由于第二掩膜图像中包含初始帧图像和当前帧图像中重合的目标上妆区域,因此通过第二掩膜图像按照上述方式分别抠取出新第一目标区域图像和新第二目标区域图像,使得新第一目标区域图像和新第二目标区域图像中目标上妆区域的位置是完全一致的,如此后续比对当前帧图像中目标上妆区域与初始帧图像中目标上妆区域的变化来确定化妆进度,确保了进行比对的区域是完全一致的,大大提高了化妆进度检测的准确性。
[0698]
通过上述方式对初始帧图像和当前帧图像中的目标上妆区域进行对齐,得到新第一目标区域图像和新第二目标区域图像后,再次通过上述步骤603的操作来确定当前帧图像对应的当前化妆进度。
[0699]
通过上述任一方式确定出当前化妆进度后,服务器发送该当前化妆进度给用户的终端。用户的终端接收到当前化妆进度后,显示该当前化妆进度。当前化妆进度可以为比值或百分数。终端可以通过进度条的形式来显示当前化妆进度。
[0700]
在用户化妆的过程中,通过本技术实施例提供的化妆进度检测方法,实时检测第一帧图像之后的每帧图像相对于第一帧图像的化妆进度,并将检测的化妆进度显示给用户,使用户能够直观地看到自己的化妆进度,提高化妆效率。
[0701]
为了便于理解本技术实施例提供的方法,下面结合附图进行说明。如图16所示,根据初始帧图像及其对应的第一人脸关键点,以及当前帧图像及其对应的第二人脸关键点,分别对初始帧图像和当前帧图像中的人脸进行对齐和裁剪,然后通过拉普拉斯算法对裁剪出的两个人脸区域图像进行平滑和去噪。然后分别从两个人脸区域图像中扣取出眉毛对应的第一目标区域图像和第二目标区域图像。对第一目标区域图像和第二目标区域图像进行边界腐蚀处理。然后将第一目标区域图像和第二目标区域图像转换为hsv颜色空间下仅包含预设单通道分量的图像。再次对第一目标区域图像和第二目标区域图像进行对齐处理,之后依据二者计算当前化妆进度。
[0702]
在本技术实施例中,利用人脸关键点,对视频帧中用户的人脸区域进行矫正和裁剪,提高了识别人脸区域的准确性。基于人脸关键点从人脸区域图像中扣取出眉毛对应的目标区域图像,并对初始帧图像和当前帧图像各自对应的目标区域图像进行像素对齐,提高了眉毛对应的目标区域图像的准确性。对初始帧图像和当前帧图像中的目标上妆区域对齐,减少因目标上妆区域的位置差别引入的误差。在抠取眉毛区域时引入分段插值算法,使得扣取的眉毛区域更加连贯准确。且本技术没有采用深度学习的方式,无需预先收集大量数据,本技术通过对用户化妆的实时画面的捕获,经过服务器端的计算,将检测结果返回给用户。相比深度学习的模型推理方案,本技术在算法处理环节耗费更少的计算成本,减少了服务器的处理压力。
[0703]
本技术实施例还提供一种化妆进度检测装置,该装置用于执行上述检测眉毛的化妆进度的化妆进度检测方法。参见图17,该装置具体包括:
[0704]
视频获取模块1601,用于获取用户当前进行特定妆容的实时化妆视频中的初始帧图像和当前帧图像;
[0705]
目标区域获取模块1602,用于从初始帧图像中获取眉毛对应的第一目标区域图像,及从当前帧图像中获取眉毛对应的第二目标区域图像;
[0706]
进度确定模块1603,用于根据第一目标区域图像和第二目标区域图像,确定当前帧图像对应的当前化妆进度。
[0707]
目标区域获取模块1602,用于检测初始帧图像对应的第一人脸关键点;根据第一人脸关键点,获取初始帧图像对应的人脸区域图像;根据第一人脸关键点中包括的眉毛关键点,从人脸区域图像中获取眉毛对应的第一目标区域图像。
[0708]
目标区域获取模块1602,用于对第一人脸关键点包括的眉头至眉峰之间的眉毛关键点进行插值,得到多个插值点;从人脸区域图像中截取出眉头至眉峰之间所有眉毛关键点及多个插值点连接而成的闭合区域,得到眉头至眉峰之间的部分眉毛图像;从人脸区域图像中截取出眉峰至眉尾之间的所有眉毛关键点连接而成的闭合区域,得到眉峰至眉尾之间的部分眉毛图像;将眉头至眉峰之间的部分眉毛图像与眉峰至眉尾之间的部分眉毛图像拼接为眉毛对应的第一目标区域图像。
[0709]
进度确定模块1603,用于分别将第一目标区域图像和第二目标区域图像转换为hsv颜色空间下包含预设单通道分量的图像;根据转换后的第一目标区域图像和第二目标区域图像,确定当前帧图像对应的当前化妆进度。
[0710]
进度确定模块1603,用于分别计算转换后的第一目标区域图像和第二目标区域图像中位置相同的像素点对应的预设单通道分量的差值绝对值;统计对应的差值绝对值满足预设化妆完成条件的像素点数目;计算统计的像素点数目与第一目标区域图像中所有目标上妆区域中的像素点总数目之间的比值,得到当前帧图像对应的当前化妆进度。
[0711]
进度确定模块1603,还用于分别对第一目标区域图像和第二目标区域图像进行二值化处理,得到第一目标区域图像对应的第一二值化掩膜图像和第二目标区域图像对应的第二二值化掩膜图像;对第一二值化掩膜图像和第二二值化掩膜图像进行与运算,得到第一目标区域图像与第二目标区域图像的相交区域对应的第二掩膜图像;获取初始帧图像对应的人脸区域图像及当前帧图像对应的人脸区域图像;对第二掩膜图像和初始帧图像对应的人脸区域图像进行与运算,得到初始帧图像对应的新第一目标区域图像;对第二掩膜图
像和当前帧图像对应的人脸区域图像进行与运算,得到当前帧图像对应的新第二目标区域图像。
[0712]
该装置还包括:边界腐蚀模块,用于分别对第一目标区域图像和第二目标区域图像中的上妆区域进行边界腐蚀处理。
[0713]
目标区域获取模块1602,用于根据初始帧图像对应的第一人脸关键点,对初始帧图像及第一人脸关键点进行旋转矫正;根据矫正后的第一人脸关键点,从矫正后的初始帧图像中截取包含人脸区域的图像;将包含人脸区域的图像缩放至预设尺寸,得到初始帧图像对应的人脸区域图像。
[0714]
目标区域获取模块1602,用于根据第一人脸关键点包括的左眼关键点和右眼关键点,分别确定左眼中心坐标和右眼中心坐标;根据左眼中心坐标和右眼中心坐标,确定初始帧图像对应的旋转角度及旋转中心点坐标;根据旋转角度和旋转中心点坐标,对初始帧图像及第一人脸关键点进行旋转矫正。
[0715]
目标区域获取模块1602,用于根据矫正后的第一人脸关键点,对矫正后的初始帧图像中包含的人脸区域进行图像截取。
[0716]
目标区域获取模块1602,用于从矫正后的第一人脸关键点中确定最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值;根据最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值,确定矫正后的初始帧图像中人脸区域对应的截取框;根据截取框,从矫正后的初始帧图像中截取出包含人脸区域的图像。
[0717]
目标区域获取模块1602,还用于将截取框放大预设倍数;根据放大后的截取框,从矫正后的初始帧图像中截取出包含人脸区域的图像。
[0718]
目标区域获取模块1602,还用于根据包含人脸区域的图像的尺寸及预设尺寸,对矫正后的第一人脸关键点进行缩放平移处理。
[0719]
该装置还包括:人脸检测模块,用于检测初始帧图像和当前帧图像中是否均仅包含同一个用户的人脸图像;如果是,则执行确定用户进行特定妆容的当前化妆进度的操作;如果否,则发送提示信息给用户的终端,提示信息用于提示用户保持实时化妆视频中仅出现同一个用户的人脸。
[0720]
本技术的上述实施例提供的化妆进度检测装置与本技术实施例提供的化妆进度检测方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
[0721]
实施例六
[0722]
本技术实施例提供一种化妆进度检测方法,该方法用于粉底、散粉等可以全脸涂抹的妆容对应的化妆进度。参见图18,该实施例具体包括以下步骤:
[0723]
步骤701:获取用户当前进行特定妆容的实时化妆视频中的初始帧图像和当前帧图像。
[0724]
步骤701的操作与上述实施例五中步骤601的操作相同,在此不再赘述。
[0725]
步骤702:根据初始帧图像,模拟生成完成特定妆容后的结果图像。
[0726]
利用3d渲染技术在初始帧图像上渲染完成特定妆容的效果,得到结果图像。例如,通过3d渲染技术在初始帧图像上渲染出完成粉底上妆后的结果图像。
[0727]
步骤703:根据初始帧图像、结果图像和当前帧图像,确定当前帧图像对应的当前
化妆进度。
[0728]
服务器具体通过如下步骤s8-s10的操作来确定当前化妆进度,包括:
[0729]
s8:分别获取初始帧图像、结果图像和当前帧图像对应的整体图像亮度。
[0730]
对于初始帧图像,首先将初始帧图像转换为灰度图像,然后计算转换后初始帧图像对应的灰度图像中所有像素点的灰度平均值,将计算的灰度平均值确定为初始帧图像对应的整体图像亮度。
[0731]
对于结果图像和当前帧图像,按照同样地方式计算结果图像对应的灰度图像中所有像素点的灰度平均值,得到结果图像对应的整体图像亮度。以及计算当前帧图像对应的灰度图像中所有像素点的灰度平均值,得到当前帧图像对应的整体图像亮度。
[0732]
其中,整体图像亮度包含了图像中人脸区域的亮度及人脸所处背景的环境亮度。
[0733]
s9:分别获取初始帧图像、结果图像和当前帧图像对应的人脸区域亮度。
[0734]
服务器具体通过如下步骤s91-s93的操作来获取各图像对应的人脸区域亮度,具体包括:
[0735]
s91:分别获取初始帧图像、结果图像和当前帧图像各自对应的人脸区域图像。
[0736]
获取初始帧图像、结果图像和当前帧图像各自对应的人脸区域图像的具体操作过程相同,均可参考上述实施例五中步骤s5-s6的过程,在此不再赘述。
[0737]
s92:分别将初始帧图像、结果图像和当前帧图像各自对应的人脸区域图像转换为人脸灰度图像。
[0738]
s93:分别计算初始帧图像、结果图像和当前帧图像各自对应的人脸灰度图像中像素点的灰度平均值,得到初始帧图像、结果图像和当前帧图像各自对应的人脸区域亮度。
[0739]
将初始帧图像对应的人脸区域图像转换为人脸灰度图像,计算该人脸灰度图像中所有像素点的灰度平均值,将该灰度平均值确定为初始帧图像对应的人脸区域亮度。按照同样的方式,分别计算出结果图像对应的人脸区域亮度和当前帧图像对应的人脸区域亮度。
[0740]
上述步骤s8和s9可以并行执行,也可以串行执行,本技术实施例并不限制步骤s8和s9的执行顺序。通过上述步骤s8和s9分别获得初始帧图像对应的整体图像亮度和人脸区域亮度、结果图像对应的整体图像亮度和人脸区域亮度、当前帧图像对应的整体图像亮度和人脸区域亮度,之后通过如下步骤s10的操作来确定当前化妆进度。
[0741]
s10:根据初始帧图像、结果图像和当前帧图像各自对应的整体图像亮度和人脸区域亮度,确定当前帧图像对应的当前化妆进度。
[0742]
由于用户在一定的亮度环境下进行目标类型的上妆,用户脸部的亮度叠加了上妆效果和环境光线两方面的影响,所以在确定当前化妆进度时需要消除环境光线的影响,只考虑人脸图像中因上妆效果造成的亮度变化,确保获得的当前化妆进度的准确性。
[0743]
对于当前帧图像与初始帧图像之间的环境变化,根据初始帧图像对应的整体图像亮度和人脸区域亮度以及当前帧图像对应的整体图像亮度和人脸区域亮度,确定当前帧图像对应的第一环境变化亮度。具体地,计算初始帧图像对应的整体图像亮度与初始帧图像对应的人脸区域亮度之间的差值,该差值即为初始帧图像中所有背景部分的亮度,称为初始帧图像的环境亮度。以及计算当前帧图像对应的整体图像亮度与当前帧图像对应的人脸区域亮度之间的差值,该差值即为当前帧图像中所有背景部分的亮度,称为当前帧图像的
环境亮度。计算当前帧图像的环境亮度与初始帧图像的环境亮度之间的差值绝对值,将该差值绝对值确定为当前帧图像对应的第一环境变化亮度。第一环境变化亮度体现了当前帧图像与初始帧图像之间环境亮度的变化情况。
[0744]
由于结果图像是在初始帧图像的基础上渲染目标类型的上妆效果而得到的,因此可能受渲染操作的影响,使得结果图像中背景部分的亮度与初始帧图像中背景部分的亮度不一致,即结果图像和初始帧图像之间也可能存在环境亮度变化。因此本技术实施例还根据初始帧图像对应的整体图像亮度和人脸区域亮度以及结果图像对应的整体图像亮度和人脸区域亮度,确定结果图像对应的第二环境变化亮度。具体地,计算结果图像对应的整体图像亮度与当前帧图像对应的人脸区域亮度之间的差值,该差值即为结果图像中所有背景部分的亮度,称为结果图像的环境亮度。计算结果图像的环境亮度与上述初始帧图像的环境亮度之间的差值绝对值,将该差值绝对值确定为结果图像对应的第二环境变化亮度。第二环境变化亮度体现了结果图像与初始帧图像之间环境亮度的变化情况。
[0745]
通过上述方式获得第一环境变化亮度和第二环境变化亮度后,根据第一环境变化亮度、第二环境变化亮度、初始帧图像对应的人脸区域亮度、当前帧图像对应的人脸区域亮度、结果图像对应的人脸区域亮度,确定当前帧图像对应的当前化妆进度。
[0746]
首先根据第一环境变化亮度、初始帧图像对应的人脸区域亮度、当前帧图像对应的人脸区域亮度,确定当前帧图像对应的上妆亮度变化值。具体地,计算当前帧图像对应的人脸区域亮度与初始帧图像对应的人脸区域亮度之间的差值,得到当前帧图像对应的总亮度变化值,该总亮度变化值中包含上妆效果带来的亮度变化及环境光线变化带来的亮度变化。计算该总亮度变化值与第一环境变化亮度之间的差值,得到当前帧图像对应的上妆亮度变化值。
[0747]
通过上述方式计算出当前帧图像到参考帧图像人脸区域的总亮度变化值,并从总亮度变化值中扣除了当前帧图像到参考帧图像的环境亮度变化,得到的上妆亮度变化值更贴近于通过目标类型的上妆操作形成的实际亮度变化值,准确性很高。
[0748]
然后根据第二环境变化亮度、初始帧图像对应的人脸区域亮度、结果图像对应的人脸区域亮度,确定结果图像对应的上妆亮度变化值。具体地,计算结果图像对应的人脸区域亮度与初始帧图像对应的人脸区域亮度之间的差值,得到结果图像对应的总亮度变化值,该总亮度变化值中包含完成目标类型的上妆所带来的亮度变化及生成结果图像所采用的渲染操作对背景部分形成的亮度变化。计算该总亮度变化值与第二环境变化亮度之间的差值,得到结果图像对应的上妆亮度变化值。
[0749]
通过上述方式计算出结果图像到参考帧图像人脸区域的总亮度变化值,并从总亮度变化值中扣除了渲染操作对结果图像的背景部分造成的环境亮度变化,得到的上妆亮度变化值更贴近于完成目标类型的上妆操作形成的实际亮度变化值,准确性很高。
[0750]
最后计算当前帧图像对应的上妆亮度变化值与结果图像对应的上妆亮度变化值的比值,得到当前帧图像对应的当前化妆进度。
[0751]
通过计算当前帧图像中因上妆造成的上妆亮度变化值与结果图像中上妆完成造成的上妆亮度变化值之间的比值,能够准确得到当前帧图像对应的当前化妆进度。在该过程中剔除了环境亮度变化的影响,大大提高了检测化妆进度的准确性。
[0752]
在本技术的另一些实施例中,用户上妆过程中环境亮度可能会出现较大变化,如
突然变亮或突然变暗等情况。环境亮度变化较大时对人脸区域亮度的变化有很大影响,使得化妆进度检测的准确性降低。因此本技术实施例通过上述方式获得当前帧图像到参考帧图像的第一环境变化亮度之后,还将第一环境变化亮度与预设阈值进行比较,预设阈值可以为50或60等,本技术实施例并不限制预设阈值的具体取值,实际应用中可根据需求进行设定。
[0753]
若比较出第一环境变化亮度小于或等于预设阈值,则确定当前帧图像与参考帧图像之间环境亮度变化不大,按照上述方式继续确定当前帧图像对应的当前化妆进度。
[0754]
若比较出第一环境变化亮度大于预设阈值,则表明当前帧图像与参考帧图像之间环境亮度变化很大,则直接将上一帧图像对应的化妆进度确定为当前帧图像对应的当前化妆进度。并发送第一提示信息给用户的终端,用户的终端接收并显示第一提示信息,以提示用户回到初始帧图像对应的亮度环境下上妆。
[0755]
如此能够在环境亮度变化很大的情况下,直接以上一帧图像对应的化妆进度作为当前化妆进度,节省运算资源。且避免检测的化妆进度突然大幅增加或减少的情况,提高化妆进度检测的稳定性和准确性。
[0756]
通过上述任一方式确定出当前化妆进度后,服务器发送该当前化妆进度给用户的终端。用户的终端接收到当前化妆进度后,显示该当前化妆进度。当前化妆进度可以为比值或百分数。终端可以通过进度条的形式来显示当前化妆进度。
[0757]
在用户化妆的过程中,通过本技术实施例提供的化妆进度检测方法,实时检测第一帧图像之后的每帧图像相对于第一帧图像的化妆进度,并将检测的化妆进度显示给用户,使用户能够直观地看到自己的化妆进度,提高化妆效率。
[0758]
为了便于理解本技术实施例提供的方法,下面结合附图进行说明。如图19所示,a1:获取用户实时化妆视频中的初始帧图像和当前帧图像。a2:在初始帧图像上渲染完成目标类型的上妆的效果,得到结果图像。a3:分别获取初始帧图像、结果图像和当前帧图像对应的整体图像亮度,然后并行执行步骤a6和a7。a4:分别获取初始帧图像、结果图像和当前帧图像各自对应的人脸区域图像。a5:分别获取初始帧图像、结果图像和当前帧图像各自对应的人脸区域图像的人脸区域亮度,然后并行执行步骤a6和a7。a6:根据初始帧图像对应的整体图像亮度和人脸区域亮度以及当前帧图像对应的整体图像亮度和人脸区域亮度,确定当前帧图像对应的第一环境变化亮度,然后并行执行步骤a8和a9。a7:根据初始帧图像对应的整体图像亮度和人脸区域亮度以及结果图像对应的整体图像亮度和人脸区域亮度,确定结果图像对应的第二环境变化亮度,然后并行执行步骤a8和a9。 a8:根据第一环境变化亮度、初始帧图像对应的人脸区域亮度、当前帧图像对应的人脸区域亮度,确定当前帧图像对应的上妆亮度变化值,然后执行步骤a10。 a9:根据第二环境变化亮度、初始帧图像对应的人脸区域亮度、结果图像对应的人脸区域亮度,确定结果图像对应的上妆亮度变化值。a10:计算当前帧图像对应的上妆亮度变化值与结果图像对应的上妆亮度变化值的比值,得到当前帧图像对应的当前化妆进度。
[0759]
如图20所示,根据参考帧图像及其对应的第一人脸关键点、当前帧图像及其对应的第二人脸关键点以及结果图像及其对应的第三人脸关键点,分别计算出三张图像各自对应的整体图像亮度。然后根据各个图像对应的人脸关键点信息分别对三张图像中的人脸进行校正和裁剪,分别得到参考帧图像、当前帧图像和结果图像各自对应的人脸区域图像。分
别计算裁剪得到的三个人脸区域图像对应的人脸区域亮度。依据各图像对应的整体图像亮度和人脸区域亮度,计算当前帧图像对应的第一环境变化亮度。若第一环境变化亮度大于预设阈值,则提示用户回到初始帧图像对应的亮度环境下上妆。若第一环境变化亮度小于或等于预设阈值,则计算当前帧图像的人脸区域亮度与初始帧图像的人脸区域亮度之间的亮度差,计算该亮度差与第一环境变化亮度之间的差值。以及计算结果图像的人脸区域亮度与初始帧图像的人脸区域亮度之间的亮度差,计算该亮度差与第二环境变化亮度之间的差值。计算当前帧图像对应的上述差值与结果图像对应的上述差值之间的比值,即得到当前化妆进度。
[0760]
在本技术实施例中,在用户化妆过程的初始帧图像的基础上,模拟生成完成上妆后的结果图像。依据当前帧图像、初始帧图像和该结果图像中人脸区域的亮度变化来确定当前化妆进度,且从人脸区域的亮度变化中扣除了环境亮度变化的影响,大大提高了化妆进度检测的准确性,且未采用深度学习模型,无需预先收集大量数据,运算量小,成本低,减少了服务器的处理压力,提高了化妆进度检测的效率,能够满足化妆进度检测的实时性要求。
[0761]
实施例七
[0762]
本技术实施例提供一种化妆进度检测方法,该方法用于遮瑕妆容对应的化妆进度。参见图21,该实施例具体包括以下步骤:
[0763]
步骤801:获取用户当前进行特定妆容的实时化妆视频中的初始帧图像和当前帧图像。
[0764]
步骤801的操作与上述实施例五中步骤601的操作相同,在此不再赘述。
[0765]
步骤802:分别获取初始帧图像和当前帧图像各自对应的脸部瑕疵信息。
[0766]
首先分别获取初始帧图像和当前帧图像各自对应的人脸区域图像。获取初始帧图像和当前帧图像各自对应的人脸区域图像的具体操作过程相同,均可参考上述实施例五中步骤s5-s6的过程,在此不再赘述。
[0767]
然后通过预设的皮肤检测模型检测初始帧图像对应的人脸区域图像中各瑕疵类别对应的瑕疵数目,将检测出的每种瑕疵类别及其对应的瑕疵数目作为初始帧图像对应的脸部瑕疵信息。同样地,通过预设的皮肤检测模型检测出当前帧图像对应的人脸区域图像中各瑕疵类别对应的瑕疵数目,得到当前帧图像对应的脸部瑕疵信息。
[0768]
其中,预设的皮肤检测模型是预先通过大量人脸图像对神经网络模型进行训练得到的,能够对人脸图像中脸部的痘痘、斑点、皱纹等瑕疵进行识别并分类。上述瑕疵类别包括痘痘、斑点、皱纹等瑕疵中的一种或多种。通过预设的皮肤检测模型识别出初始帧图像及当前帧图像各自对应的人脸区域图像中的痘痘数目、斑点数目、皱纹数目等等。
[0769]
步骤803:根据初始帧图像和当前帧图像及其各自对应的脸部瑕疵信息,确定当前帧图像对应的当前化妆进度。
[0770]
服务器具体通过如下步骤b1-b3的操作来确定当前化妆进度,包括:
[0771]
b1:根据初始帧图像对应的脸部瑕疵信息和当前帧图像对应的脸部瑕疵信息,计算当前帧图像与初始帧图像之间的脸部瑕疵差异值。
[0772]
脸部瑕疵信息中包括瑕疵类别及其对应的瑕疵数目,瑕疵类别包括痘痘、斑点、皱纹等瑕疵中的一种或多种。分别计算每种瑕疵类别下初始帧图像对应的瑕疵数目与当前帧
图像对应的瑕疵数目之间的差值,然后计算每种瑕疵类别对应的差值之和,将得到的和值作为当前帧图像与初始帧图像之间的脸部瑕疵差异值。
[0773]
例如,假设瑕疵类别包括痘痘和斑点两种类别,初始帧图像对应的脸部瑕疵信息中包括痘痘的数目为5,斑点的数目为4。当前帧图像对应的脸部瑕疵信息中包括的痘痘的数目为3,斑点的数目为1。则初始帧图像与当前帧图像之间的痘痘的差值为2,斑点的差值为3。计算痘痘的差值与斑点的差值之间的和值为5,则当前帧图像与初始帧图像之间的脸部瑕疵差异值即为5。
[0774]
脸部瑕疵差异值能够体现当前帧图像与初始帧图像之间在光滑细致方面的差异,这种差异是由遮瑕化妆、光线变化、拍摄角度变化等多种因素造成的。本技术实施例通过大量试验测得当脸部瑕疵差异值大于一定值时可以确定该差异主要是由遮瑕化妆引起的,将该一定值作为预设阈值配置在服务器中,该预设阈值可以为4或5等。
[0775]
通过上述方式计算出脸部瑕疵差异值之后,将该脸部瑕疵差异值与预设阈值进行比较,若脸部瑕疵差异值大于预设阈值,则表明当前由遮瑕化妆引起的面部变化比较明显,后续通过步骤b2的操作来确定当前化妆进度。若脸部瑕疵差异值小于或等于预设阈值,则表明当前由遮瑕化妆引起的面部变化很小,后续通过步骤b3的操作来确定当前化妆进度。
[0776]
b2:若脸部瑕疵差异值大于预设阈值,则根据脸部瑕疵差异值和初始帧图像对应的脸部瑕疵信息,计算当前帧图像对应的当前化妆进度。
[0777]
计算初始帧图像对应的脸部瑕疵信息中各瑕疵类别对应的瑕疵数目之和,得到总瑕疵数。计算上述脸部瑕疵差异值与总瑕疵数之间的比值,将该比值作为当前帧图像对应的当前化妆进度。
[0778]
例如,假设初始帧图像对应的脸部瑕疵信息中包括痘痘的数目为5,斑点的数目为4。当前帧图像对应的脸部瑕疵信息中包括的痘痘的数目为3,斑点的数目为 1。则当前帧图像与初始帧图像之间的脸部瑕疵差异值为5,初始帧图像对应的总瑕疵数为9,则当前帧图像对应的当前化妆进度即为5/9。
[0779]
在当前帧图像与初始帧图像之间的脸部现场差异值大于预设阈值,即脸部差异主要由遮瑕化妆引起时,直接将脸部瑕疵差异值与初始帧图像对应的总瑕疵数之间的比值作为当前化妆进度,化妆进度确定过程简单,计算量小,能够快速确定出当前化妆进度,效率很高,能够满足遮瑕化妆进度检测的实时性要求。
[0780]
通过上述方式确定出当前化妆进度后,服务器发送该当前化妆进度给用户的终端。用户的终端接收到当前化妆进度后,显示该当前化妆进度。当前化妆进度可以为比值或百分数。终端可以通过进度条的形式来显示当前化妆进度。
[0781]
b3:若脸部瑕疵差异值小于或等于预设阈值,则获取用户完成遮瑕上妆后的结果图像,根据初始帧图像、结果图像和当前帧图像,确定当前帧图像对应的当前化妆进度。
[0782]
当判断出上述脸部瑕疵差异值小于或等于预设阈值时,认为当前帧图像与初始帧图像之间的差异较小,若直接利用脸部瑕疵差异值与初始帧图像的总瑕疵数来确定当前化妆进度,则会误差很大。因此本技术实施例在这种情况下不采用脸部瑕疵差异值与初始帧图像的总瑕疵数来确定当前化妆进度,而是先获取用户完成遮瑕上妆后的结果图像,然后根据初始帧图像、结果图像和当前帧图像,确定当前帧图像对应的当前化妆进度。
[0783]
首先利用3d渲染技术在初始帧图像上渲染完成遮瑕上妆的效果,得到结果图像。
在本技术实施例中生成结果图像之前,可以先对初始帧图像进行旋转矫正,使图像中两眼连线与水平线平行之后,再在旋转矫正后的初始帧图像的基础上渲染出完成遮瑕上妆后的结果图像,从而使结果图像中人脸两眼连线也与水平线平行,如此无需再对结果图像进行旋转矫正,节省运算量。
[0784]
获得完成遮瑕上妆后的结果图像后,通过用于检测人脸关键点的检测模型检测出结果图像对应的第三人脸关键点,根据第三人脸关键点,通过实施例五中步骤s5-s6的方式从结果图像中截取出人脸区域图像,具体截取过程在此不再赘述。
[0785]
获得初始帧图像对应的人脸区域图像、当前帧图像对应的人脸区域图像以及结果图像对应的人脸区域图像,之后依据三者各自对应的人脸区域图像来确定当前化妆进度。
[0786]
上述获得的初始帧图像对应的人脸区域图像、当前帧图像对应的人脸区域图像以及结果图像对应的人脸区域图像,这些图像的颜色空间均为rgb颜色空间。本技术实施例预先通过大量试验确定了遮瑕上妆对颜色空间的各通道分量的影响,发现对rgb颜色空间中各颜色通道的影响差别不大。而hls颜色空间是由hue (色调)、saturation(饱和度)和light(亮度)三个分量组成,通过试验发现遮瑕上妆能够引起hls颜色空间的饱和度分量发生明显的变化。因此首先分别将初始帧图像、结果图像和当前帧图像各自对应的人脸区域图像均由rgb颜色空间转换至hls颜色空间下。然后从转换后的图像的hls颜色空间中分离出饱和度通道,分别得到初始帧图像、结果图像和当前帧图像各自对应的人脸区域图像在hls颜色空间下仅包含饱和度通道的图像。
[0787]
通过上述转换之后,通过预设滤波算法分别计算转换后初始帧图像、结果图像和当前帧图像各自的人脸区域图像对应的平滑因子。其中,预设滤波算法可以为拉普拉斯算法或高斯滤波算法等。以高斯滤波算法为例,可以根据预设尺寸的高斯核,来计算各人脸区域图像对应的平滑因子。预设尺寸可以为7*7,预设尺寸也可以为其他值,本技术实施例并不限定预设尺寸的具体取值。
[0788]
获得初始帧图像、结果图像和当前帧图像各自对应的平滑因子之后,据此确定当前帧图像对应的当前化妆进度。具体地,计算当前帧图像对应的平滑因子与初始帧图像对应的平滑因子之间的第一差值,计算结果图像对应的平滑因子与初始帧图像对应的平滑因子之间的第二差值。计算第一差值与第二差值之间的比值,将该比值作为当前帧图像对应的当前化妆进度。
[0789]
通过上述方式确定出当前化妆进度后,服务器发送该当前化妆进度给用户的终端。用户的终端接收到当前化妆进度后,显示该当前化妆进度。当前化妆进度可以为比值或百分数。终端可以通过进度条的形式来显示当前化妆进度。
[0790]
在用户化妆的过程中,通过本技术实施例提供的化妆进度检测方法,实时检测初始帧图像之后的每帧图像相对于初始帧图像的化妆进度,并将检测的化妆进度显示给用户,使用户能够直观地看到自己的遮瑕化妆进度,提高化妆效率。
[0791]
为了便于理解本技术实施例提供的方法,下面结合附图进行说明。如图22所示,根据初始帧图像及其对应的第一人脸关键点,当前帧图像及其对应的第二人脸关键点,分别对初始帧图像和当前帧图像中的人脸进行矫正和裁剪,然后调用皮肤检测模型分别检测初始帧图像和当前帧图像各自对应的脸部瑕疵信息。基于二者的脸部瑕疵信息计算当前帧图像与初始帧图像之间的脸部瑕疵差异值。若该脸部瑕疵差异值大于预设阈值,则计算脸部
瑕疵差异值与初始帧图像对应的瑕疵总数之间的比值,得到当前化妆进度。若该脸部瑕疵差异值小于或等于预设阈值,则在初始帧图像上渲染生成遮瑕上妆后的结果图像,检测该结果图像对应的第三人脸关键点,根据第三人脸关键点对结果图像中的人脸进行矫正和裁剪。将初始帧图像、当前帧图像和结果图像各自对应的人脸区域图像转换为hls颜色空间下仅包含饱和度通道的图像。通过预设滤波算法分别计算转换后的三个人脸区域图像各自对应的平滑因子。计算当前帧图像对应的平滑因子与初始帧图像对应的平滑因子之间的第一差值。计算结果图像对应的平滑因子与初始帧图像对应的平滑因子之间的第二差值。计算第一差值与第二差值之间的比值,将该比值作为当前帧图像对应的当前化妆进度。
[0792]
在本技术实施例中,获取用户化妆过程的当前帧图像与初始帧图像,确定出从当前帧图像到初始帧图像的脸部瑕疵差异值,在脸部瑕疵差异值大于预设阈值时,计算该脸部瑕疵差异值与初始帧图像对应的总瑕疵数之间的比值,即得到了遮瑕上妆的当前化妆进度。在脸部瑕疵差异值小于或等于预设阈值时,在初始帧图像的基础上模拟出完成遮瑕上妆的结果图像,分别确定出初始帧图像、结果图像和当前帧图像各自对应的平滑因子,计算当前帧图像与初始帧图像之间的平滑因子的差值,以及计算出结果图像与初始帧图像之间的平滑因子的差值,两个差值之间的比值即为当前化妆进度。
[0793]
如此在当前帧图像与初始帧图像之间的脸部瑕疵差异值大于预设阈值时,化妆进度的确定过程简单,运算量小,能够快速确定出当前化妆进度,效率很高,能够满足遮瑕化妆进度检测的实时性要求。而在脸部瑕疵差异值小于或等于预设阈值时,引入滤波算法计算各图像对应的平滑因子,依据平滑因子的变化情况来确定化妆进度,可以对更细微的变化进行更精确的计算,避免了化妆进度出现短时间突增的情况发生。
[0794]
进一步地,本技术实施例利用人脸关键点,对视频帧中用户的人脸区域进行矫正和裁剪,提高了识别人脸区域的准确性。
[0795]
本技术实施例仅通过图像处理即可准确地检测出遮瑕的化妆进度,运算量小,成本低,减少了服务器的处理压力,提高了遮瑕化妆进度检测的效率,能够满足遮瑕化妆进度检测的实时性要求,减少了算法对硬件资源的依赖以及人力的投入成本。
[0796]
实施例八
[0797]
1、一种妆容颜色识别方法,该方法包括:
[0798]
获取用户的化妆图像;
[0799]
识别所述化妆图像中所述用户面部预设部位的颜色所属的色调类别;
[0800]
根据所述预设部位对应的所述色调类别,确定所述用户的妆容色调。
[0801]
2、根据1,识别所述化妆图像中所述用户面部预设部位的颜色所属的色调类别,包括:
[0802]
检测所述化妆图像对应的人脸关键点;
[0803]
根据所述人脸关键点,获取所述化妆图像对应的人脸区域图像;
[0804]
识别所述人脸区域图像中所述用户面部预设部位的颜色所属的色调类别。
[0805]
3、根据2,识别所述人脸区域图像中所述用户面部预设部位的颜色所属的色调类别,包括:
[0806]
根据所述人脸关键点,从所述人脸区域图像中截取出预设部位对应的目标区域图像;
[0807]
获取所述目标区域图像的像素主色;
[0808]
根据所述像素主色,确定所述预设部位的颜色所属的色调类别。
[0809]
4、根据3,所述预设部位包括面部皮肤;根据所述人脸关键点,从所述人脸区域图像中截取出预设部位对应的目标区域图像,包括:
[0810]
根据所述人脸关键点,从所述人脸区域图像中截取出面部图像;
[0811]
根据所述人脸关键点,从所述面部图像中抠除眉毛区域、眼睛区域和嘴部区域,得到面部皮肤对应的目标区域图像。
[0812]
5、根据3,所述预设部位包括眼影部位;根据所述人脸关键点,从所述人脸区域图像中截取出预设部位对应的目标区域图像,包括:
[0813]
根据所述人脸关键点包括的眼部关键点,从所述人脸区域图像中截取出眼部图像;
[0814]
对所述眼部图像进行预设次数的图像膨胀处理;
[0815]
根据所述眼部关键点包括的眼睛关键点,从膨胀处理后的所述眼部区域中抠除眼睛区域,得到眼影部位对应的目标区域图像。
[0816]
6、根据3,所述预设部位包括嘴部;根据所述人脸关键点,从所述人脸区域图像中截取出预设部位对应的目标区域图像,包括:
[0817]
分别对所述人脸关键点包括的上嘴唇上沿关键点、上嘴唇下沿关键点、下嘴唇上沿关键点和下嘴唇下沿关键点进行插值,得到上嘴唇上沿插值点、上嘴唇下沿插值点、下嘴唇上沿插值点及下嘴唇下沿插值点;
[0818]
根据所述上嘴唇上沿关键点、所述上嘴唇上沿插值点、所述上嘴唇下沿关键点和所述上嘴唇下沿插值点,从所述人脸区域图像中截取出上嘴唇图像;
[0819]
根据所述下嘴唇上沿关键点、所述下嘴唇上沿插值点、所述下嘴唇下沿关键点和所述下嘴唇下沿插值点,从所述人脸区域图像中截取出下嘴唇图像;
[0820]
将所述上嘴唇图像和所述下嘴唇图像拼接为嘴部对应的目标区域图像。
[0821]
7、根据3,根据所述像素主色,确定所述预设部位的颜色所属的色调类别,包括:
[0822]
将所述像素主色的颜色空间转换到所述预设部位对应的预设颜色空间;
[0823]
根据所述预设颜色空间下所述像素主色的各颜色通道值,确定所述各颜色通道值所属的色调区间;
[0824]
将所述色调区间对应的色调类别确定为所述预设部位的颜色所属的色调类别。
[0825]
8、根据7,所述预设部位包括面部皮肤、眼影部位、嘴部中的至少之一;面部皮肤对应的预设颜色空间包括lab颜色空间,眼影部位和嘴部对应的预设颜色空间包括hsv颜色空间。
[0826]
9、根据1-8任一,所述预设部位包括面部皮肤、眼影部位和嘴部中的一个或多个部位,根据所述预设部位对应的所述色调类别,确定所述用户的妆容色调,包括:
[0827]
确定每个预设部位的所述色调类别对应的颜色系数;
[0828]
根据每个预设部位对应的预设权重和所述颜色系数,计算所述用户的妆容颜色系数;
[0829]
将所述妆容颜色系数对应的色调类别确定为所述用户的妆容色调。
[0830]
10、根据2-8任一,根据所述人脸关键点,获取所述化妆图像对应的人脸区域图像,
包括:
[0831]
根据所述人脸关键点,对所述化妆图像及所述人脸关键点进行旋转矫正;
[0832]
根据矫正后的所述人脸关键点,从矫正后的所述化妆图像中截取包含人脸区域的图像;
[0833]
将所述包含人脸区域的图像缩放至预设尺寸,得到所述化妆图像对应的人脸区域图像。
[0834]
11、根据10,根据所述人脸关键点,对所述化妆图像及所述人脸关键点进行旋转矫正,包括:
[0835]
根据所述人脸关键点包括的左眼关键点和右眼关键点,分别确定左眼中心坐标和右眼中心坐标;
[0836]
根据所述左眼中心坐标和所述右眼中心坐标,确定所述化妆图像对应的旋转角度及旋转中心点坐标;
[0837]
根据所述旋转角度和所述旋转中心点坐标,对所述化妆图像及所述人脸关键点进行旋转矫正。
[0838]
12、根据10,所述根据矫正后的所述人脸关键点,从矫正后的所述化妆图像中截取包含人脸区域的图像,包括:
[0839]
根据矫正后的所述人脸关键点,对矫正后的所述化妆图像中包含的人脸区域进行图像截取。
[0840]
13、根据12,根据矫正后的所述人脸关键点,对矫正后的所述化妆图像中包含的人脸区域进行图像截取,包括:
[0841]
从矫正后的所述人脸关键点中确定最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值;
[0842]
根据所述最小横坐标值、所述最小纵坐标值、最大横坐标值和最大纵坐标值,确定矫正后的所述化妆图像中人脸区域对应的截取框;
[0843]
根据所述截取框,从矫正后的所述化妆图像中截取出包含所述人脸区域的图像。
[0844]
14、根据13,还包括:
[0845]
将所述截取框放大预设倍数;
[0846]
根据放大后的所述截取框,从矫正后的所述化妆图像中截取出包含所述人脸区域的图像。
[0847]
15、根据10,还包括:
[0848]
根据所述包含人脸区域的图像的尺寸及所述预设尺寸,对矫正后的所述人脸关键点进行缩放平移处理。
[0849]
16、根据1-8任一项,还包括:
[0850]
检测所述化妆图像中是否至少包含一个完整人脸图像;
[0851]
如果是,则执行所述识别所述化妆图像中所述用户面部预设部位的颜色所属的色调类别的操作;
[0852]
如果否,则发送提示信息给所述用户的终端,所述提示信息用于提示所述用户提供至少包含一个完整人脸图像的化妆图像。
[0853]
17、一种妆容颜色识别装置,该装置包括:
[0854]
获取模块,用于获取用户的化妆图像;
[0855]
识别模块,用于识别所述化妆图像中所述用户面部预设部位的颜色所属的色调类别;
[0856]
确定模块,用于根据所述预设部位对应的所述色调类别,确定所述用户的妆容色调。
[0857]
18、一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序以实现1-16任一项所述的方法。
[0858]
19、一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行实现1-16任一项所述的方法。
[0859]
本技术实施例提供一种妆容颜色识别方法,该方法识别化妆图像中用户预设部位的颜色所属的色调类别,进而依据预设部位对应的色调类别,确定用户的妆容色调。仅通过图像处理就能准确地识别出用户的妆容色调,无需采用深度学习模型进行处理,运算量小,成本低,减少了服务器的处理压力。
[0860]
参见图23,该方法具体包括以下步骤:
[0861]
步骤901:获取用户的化妆图像。
[0862]
用户的化妆图像中包括至少一个人脸图像。该化妆图像可以为单独一张图像,也可以为用户的化妆视频中的任意一个视频帧。本技术实施例的执行主体为服务器。用户的手机或电脑等用户终端上安装有与服务器提供的识别妆容颜色的服务相匹配的客户端。该客户端中设置有用于提交化妆图像的接口。当用户需要识别某个妆容对应的妆容色调时,用户通过该接口来提交化妆图像。
[0863]
具体地,当客户端检测到用户点击该接口时显示一个妆容颜色识别界面,该界面中可以包括拍摄按钮和/或本地文件上传接口。若客户端检测到用户点击拍摄按钮,则调用用户终端上的摄像头来拍摄化妆图像或化妆视频。将拍摄的化妆图像或化妆视频发送给服务器。若客户端检测用户点击本地文件上传接口,则显示本地文件夹列表,以使用户从中选择需要的化妆图像或化妆视频。客户端将用户选择的化妆图像或化妆视频发送给服务器。
[0864]
服务器接收用户终端发送的化妆图像或化妆视频。若服务器接收到用户终端发送的化妆视频,则将当前接收到的当前帧图像作为待识别的化妆图像。
[0865]
在本技术的另一些实施例中,服务器获得用户的化妆图像后,还检测该化妆图像中是否至少包含一个完整人脸图像。若该化妆图像中包含一个或多个完整人脸图像,则按照本实施例提供的方法来识别该化妆图像中每个完整人脸图像对应的妆容色调。若检测出该化妆图像中不包含人脸图像,或者包含的所有人脸图像都不完整,则发送提示信息给用户的终端。用户的终端接收并显示该提示信息,以提示用户提供至少包含一个完整人脸图像的化妆图像。例如,提示信息可以为“请保持化妆图像中至少包括一个完整人脸”。
[0866]
服务器通过本步骤获得用户的化妆图像后,通过如下步骤902和903的操作来确定识别该化妆图像中用户脸部的妆容色调。
[0867]
步骤902:识别化妆图像中用户面部预设部位的颜色所属的色调类别。
[0868]
化妆图像中包括至少一个完整人脸图像,由于识别每个完整人脸图像的妆容色调的过程均相同,因此本技术实施例以识别一个完整人脸图像的妆容色调的过程为例进行说明。对于化妆图像包括的至少一个完整人脸图像,从中选择任意一个完整人脸图像作为当
前待处理的用户人脸。
[0869]
服务器具体通过如下步骤s1-s3的操作来识别该用户人脸面部预设部位的颜色所属的色调类别,包括:
[0870]
s1:检测化妆图像对应的人脸关键点。
[0871]
服务器中配置了预先训练好的用于检测人脸关键点的检测模型,通过该检测模型提供人脸关键点检测的接口服务。服务器获取到用户的化妆图像后,调用人脸关键点检测的接口服务,通过检测模型识别出该化妆图像中用户人脸的所有人脸关键点。
[0872]
其中,识别出的人脸关键点包括用户脸部轮廓上的关键点及嘴巴、鼻子、眼睛、眉毛等部位的关键点。识别出的人脸关键点的数目可以为106个。
[0873]
s2:根据人脸关键点,获取化妆图像对应的人脸区域图像。
[0874]
服务器具体通过如下步骤s20-s22的操作来获取当前用户人脸对应的人脸区域图像,包括:
[0875]
s20:根据人脸关键点,对化妆图像及人脸关键点进行旋转矫正。
[0876]
具体地,根据该用户人脸对应的人脸关键点包括的左眼关键点和右眼关键点,分别确定左眼中心坐标和右眼中心坐标。从人脸关键点确定出左眼区域的全部左眼关键点及右眼区域的全部右眼关键点。对确定出的全部左眼关键点的横坐标取均值,以及对全部左眼关键点的纵坐标取均值,将左眼对应的横坐标的均值和纵坐标的均值组成一个坐标,将该坐标确定为左眼中心坐标。按照同样的方式确定出右眼中心坐标。
[0877]
然后根据左眼中心坐标和右眼中心坐标,确定化妆图像对应的旋转角度及旋转中心点坐标。如图4所示,根据左眼中心坐标和右眼中心坐标计算出两个坐标的水平差值dx和竖直差值dy,以及计算出左眼中心坐标和右眼中心坐标的两眼连线长度d。依据两眼连线长度d、水平差值dx和竖直差值dy,计算出两眼连线与水平方向的夹角θ,该夹角θ即为化妆图像对应的旋转角度。然后根据左眼中心坐标和右眼中心坐标计算出两眼连线的中心点坐标,该中点点坐标即为化妆图像对应的旋转中心点坐标。
[0878]
根据计算出的旋转角度和旋转中心点坐标,对化妆图像及人脸关键点进行旋转矫正。具体将旋转角度和旋转中心点坐标输入用于计算图片的旋转矩阵的预设函数中,该预设函数可以为opencv中的函数cv2.getrotationmatrix2d()。通过调用该预设函数获得化妆图像对应的旋转矩阵。然后计算化妆图像和该旋转矩阵的乘积,得到矫正后的化妆图像。利用旋转矩阵对化妆图像进行矫正的操作,也可以通过调用opencv中的函数cv2.warpaffine()来完成。
[0879]
对于人脸关键点,需要对每个人脸关键点逐一进行矫正,以与矫正后的化妆图像相对应。在对人脸关键点逐一矫正时,需要进行两次坐标系的转换,第一次将以化妆图像左上角为原点的坐标系转化为以左下角为原点的坐标系,第二次进一步将以左下角为原点的坐标系转化为以上述旋转中心点坐标为坐标原点的坐标系,如图5所示。经过两次坐标系转换后对每个人脸关键点进行如下公式(1)的转换,可完成对人脸关键点的旋转矫正。
[0880][0881]
在公式(1)中,x0、y0分别为旋转矫正前人脸关键点的横坐标和纵坐标,x、 y分别为旋转矫正人脸关键点的横坐标和纵坐标,θ为上述旋转角度。
[0882]
经过矫正后的化妆图像和人脸关键点是基于整张图像的,整张图像不仅包含用户的人脸信息,还包括其他多余的图像信息,因此需要通过如下步骤s21对矫正后的图像进行人脸区域的裁剪。
[0883]
s21:根据矫正后的人脸关键点,从矫正后的化妆图像中截取包含人脸区域的图像。
[0884]
根据矫正后的人脸关键点,对矫正后的化妆图像中包含该用户人脸的区域进行图像截取。首先从矫正后的人脸关键点中确定最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值。然后根据最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值,确定矫正后的化妆图像中人脸区域对应的截取框。具体地,将最小横坐标值和最小纵坐标值组成一个坐标点,将该坐标点作为人脸区域对应的截取框的左上角顶点。将最大横坐标值和最大纵坐标值组成另一个坐标点,将该坐标点作为人脸区域对应的截取框的右下角顶点。根据上述左上角顶点和右下角顶点在矫正后的化妆图像中确定截取框的位置,从矫正后的化妆图像中截取出位于该截取框内的图像,即截取出包含该用户人脸的图像。
[0885]
在本技术的另一些实施例中,为了确保将用户的全部的人脸区域截取出来,避免截取不完整导致后续化妆进度检测误差很大的情况发生,还可以将上述截取框放大预设倍数,该预设倍数可以为1.15或1.25等。本技术实施例并不限制预设倍数的具体取值,实际应用中可根据需求来设定该预设倍数。将上述截取框向周围放大预设倍数之后,从矫正后的化妆图像中截取出位于放大后的截取框中的图像,从而截取出包含用户的完整人脸区域的图像。
[0886]
s22:将包含人脸区域的图像缩放至预设尺寸,得到化妆图像对应的人脸区域图像。
[0887]
通过上述方式从化妆图像中截取出包含用户的人脸区域的图像后,将包含人脸区域的图像缩放至预设尺寸,得到化妆图像对应的人脸区域图像。该预设尺寸可以为390
×
390或400
×
400等。本技术实施例并不限制预设尺寸的具体取值,实际应用中可根据需求进行设定。
[0888]
为了使人脸关键点与缩放后的人脸区域图像相适应,将截取的包含人脸区域的图像缩放至预设尺寸后,还需根据缩放前包含人脸区域的图像的尺寸及该预设尺寸,对上述矫正后的人脸关键点进行缩放平移处理。具体地,依据缩放前包含人脸区域的图像的尺寸及图像所需缩放至的预设尺寸,确定每个人脸关键点的平移方向及平移距离,进而根据每个人脸关键点对应的平移方向和平移距离,分别对每个人脸关键点进行平移操作,并记录平移后的每个人脸关键点的坐标。
[0889]
通过上述方式从化妆图像中获得人脸区域图像,并通过旋转矫正和平移缩放等操作使人脸关键点与获得的人脸区域图像相适应。之后通过步骤s3的操作来识别用户面部预设部位的颜色所属的色调类别。
[0890]
s3:识别该人脸区域图像中用户面部预设部位的颜色所属的色调类别。
[0891]
具体通过如下步骤s30-s32的操作来识别预设部位对应的色调类别,包括:
[0892]
s30:根据人脸关键点,从人脸区域图像中截取出预设部位对应的目标区域图像。
[0893]
在本技术实施例中,预设部位可以包括面部皮肤、眼影部位、嘴部等部位的一个或多个。
[0894]
对于面部皮肤,首先根据该用户人脸的所有人脸关键点,从人脸区域图像中截取出面部图像,以去除头发及背景区域。然后根据人脸关键点包括的所有眉毛关键点,从面部图像中抠除眉毛区域。根据人脸关键点包括的所有眼睛关键点,从面部图像中抠除眼睛区域。以及根据人脸关键点包括的所有嘴部关键点,从面部图像中抠除嘴部区域。从而得到了仅包括面部皮肤的目标区域图像,如此后续便于识别面部皮肤的色调,排除其他部位的颜色对识别面部皮肤的色调的干扰,提高识别面部皮肤的色调的准确性。
[0895]
对于眼影部位,首先根据人脸关键点包括的眼部关键点,从人脸区域图像中截取出眼部图像,该眼部图像包括上下眼皮区域及眼睛区域。眼影化妆是位于上下眼皮区域的,眼睛区域中眼白和眼球的颜色会干扰对眼影部位的颜色识别。因此需要将眼睛区域去除。首先对获得的眼部图像进行预设次数的图像膨胀处理,以确保膨胀处理后的眼部图像中包括带眼妆的眼影部位。预设次数可以为3次或4 次等。然后根据眼部关键点包括的眼睛关键点,从膨胀处理后的眼部区域中抠除眼睛区域,得到眼影部位对应的目标区域图像。如此后续便于识别眼影的色调,排除眼睛的颜色对识别眼影色调的干扰,提高识别眼影色调的准确性。
[0896]
对于嘴部,首先从该用户人脸对应的人脸关键点中确定出上嘴唇上沿关键点、上嘴唇下沿关键点、下嘴唇上沿关键点和下嘴唇下沿关键点。对上嘴唇上沿关键点进行线性插值,得到多个上嘴唇上沿插值点。对上嘴唇下沿关键点进行插值,得到多个上嘴唇下沿插值点。根据上嘴唇上沿关键点、上嘴唇上沿插值点、上嘴唇下沿关键点和上嘴唇下沿插值点,从人脸区域图像中截取出上嘴唇图像。
[0897]
具体地,多个上嘴唇上沿关键点与多个上嘴唇上沿插值点顺次连线能够得到更加平滑的曲线,该曲线即为上嘴唇上缘的边界线。多个上嘴唇下沿关键点与多个上嘴唇下沿插值点顺次连线能够得到更加平滑的曲线,该曲线即为上嘴唇下缘的边界线。上嘴唇上缘的边界线与上嘴唇下缘的边界线围成的区域即为上嘴唇区域。从人脸区域图像中截取出该上嘴唇区域,得到上嘴唇图像。
[0898]
对下嘴唇上沿关键点进行线性插值,得到多个下嘴唇上沿插值点。对下嘴唇下沿关键点进行线性插值,得到多个下嘴唇下沿插值点。根据下嘴唇上沿关键点、下嘴唇上沿插值点、下嘴唇下沿关键点和下嘴唇下沿插值点,从人脸区域图像中截取出下嘴唇图像。
[0899]
具体地,多个下嘴唇上沿关键点与多个下嘴唇上沿插值点顺次连线能够得到更加平滑的曲线,该曲线即为下嘴唇上缘的边界线。多个下嘴唇下沿关键点与多个下嘴唇下沿插值点顺次连线能够得到更加平滑的曲线,该曲线即为下嘴唇下缘的边界线。下嘴唇上缘的边界线与下嘴唇下缘的边界线围成的区域即为下嘴唇区域。从人脸区域图像中截取出该下嘴唇区域,得到下嘴唇图像。
[0900]
将得到的上嘴唇图像和下嘴唇图像拼接为嘴部对应的目标区域图像。如此能够去除上嘴唇与下嘴唇之间的区域,尤其在张嘴的情况下能够去除口腔内部区域的图像,避免上嘴唇与下嘴唇之间的区域影响对嘴部色调的识别,提高识别嘴部口红色调的准确性。
[0901]
本技术实施例对预设部位不进行特殊限定,预设部位也可以为其他部位,并依据人脸关键点,从人脸区域图像中扣取出预设部位对应的目标区域图像,以便从目标区域图像中识别出预设部位的颜色。
[0902]
s31:获取目标区域图像的像素主色。
[0903]
通过上述步骤s30获得预设部位对应的目标区域图像之后,对目标区域图像进行主色调提取,确定目标区域图像的像素主色。具体地,将由opencv读出的目标区域图像由bgra颜色空间转换成符合pil读取格式的rgba颜色空间,然后调用get_palette(image)函数建立一个调色板,使用中值切割算法来聚集相似的颜色,获取目标区域图像的像素主色。
[0904]
s32:根据目标区域图像的像素主色,确定预设部位的颜色所属的色调类别。
[0905]
目标区域图像的像素主色包括r、g、b三个颜色通道的值,对于不同的预设部位妆容色调有各自的特点,如面部皮肤的妆容色调可能包括粉红、白皙、自然、小麦、古铜、黝黑等不同色调,对于粉红、白皙、自然等颜色较浅的色调很难通过rgb颜色空间来判断该像素主色对应的色调类别。而对于嘴部的口红色调可能包括粉裸色、红色、橘色、红棕色等色调,像粉红、红色等差异较小的色调很难通过rgb颜色空间进行区分。因此本技术实施例预先配置好了不同预设部位对应的预设颜色空间,通过预设部位对应的预设颜色空间能够更容易地区分该预设部位的不同妆容色调。而且本技术实施例还预先配置了不同预设部位对应的多个色调类别,以及配置了每种色调类别对应的色调区间。色调类别对应的色调区间中包括属于该色调类别的颜色在对应的预设颜色空间下各颜色通道的取值区间。
[0906]
通过步骤s31获得目标区域图像的像素主色之后,将目标区域图像的像素主色的颜色空间又rgb转换到预设部位对应的预设颜色空间。然后根据该预设颜色空间下像素主色的各颜色通道值,确定各颜色通道值所属的色调区间。将该色调区间对应的色调类别确定为预设部位的颜色所属的色调类别。
[0907]
在本技术实施例中,预设部位包括面部皮肤、眼影部位、嘴部中是至少之一;面部皮肤对应的预设颜色空间可以包括lab颜色空间,lab颜色空间是由一个亮度通道和两个颜色通道组成的,每个颜色用l、a、b三个值表示。其中,l表示亮度,a表示从绿色到红色的分量,b表示从蓝色到黄色的分量。lab颜色空间下较浅的颜色也能够准确地区分开。眼影部位和嘴部对应的预设颜色空间可以包括hsv颜色空间,hsv颜色空间下对于色调相差较小的颜色也能够准确地区分开。
[0908]
因此在本步骤中,对于面部皮肤部位,将面部皮肤对应的目标区域图像的像素主色由rgb颜色空间转换到lab颜色空间。根据lab颜色空间下面部皮肤对应的像素主色的l、a、b三个通道值,确定l、a、b三个通道值所属的色调区间。将该色调区间对应的色调类别确定为该用户人脸的肤色所属的色调类别。
[0909]
对于眼影部位,将眼影部位对应的目标区域图像的像素主色由rgb颜色空间转换到hsv颜色空间。根据hsv颜色空间下眼影部位对应的像素主色的h、s、 v三个通道值,确定h、s、v三个通道值所属的色调区间。将该色调区间对应的色调类别确定为该用户人脸的眼影颜色所属的色调类别。
[0910]
对于嘴部,将嘴部对应的目标区域图像的像素主色由rgb颜色空间转换到 hsv颜色空间。根据hsv颜色空间下嘴部对应的像素主色的h、s、v三个通道值,确定h、s、v三个通道值所属的色调区间。将该色调区间对应的色调类别确定为该用户人脸的口红颜色所属的色调类别。
[0911]
步骤903:根据预设部位对应的色调类别,确定用户的妆容色调。
[0912]
本技术实施例中预设部位为一个或多个部位,预先配置了每种色调类别对应的颜色系数,如白皙色调对应的颜色系数可以为0.2,棕橘色调对应的颜色系数可以为0.3,等
等。通过上述步骤识别出每个预设部位对应的色调类别后,分别确定每个预设部位的色调类别对应的颜色系数。根据每个预设部位对应的预设权重和颜色系数,计算用户的妆容颜色系数。具体地,分别计算每个预设部位对应的预设权重与颜色系数的乘积,然后对每个预设部位对应的乘积进行求和,将得到的和值作为用户的妆容颜色系数。
[0913]
本技术实施例还预先配置了不同妆容的色调类别对应的颜色系数区间。通过上述方式确定出用户的妆容颜色系数之后,确定该妆容颜色系数所属的颜色系数区间,将该颜色系数区间对应的色调类别确定为用户的妆容色调。该妆容色调可以认为是该用户人脸面部妆容的主色调。
[0914]
作为一种示例,预设部位包括面部皮肤、眼影部位和嘴部。识别出面部皮肤的肤色色调、眼影部位的眼影色调以及嘴部的口红色调之后,分别确定肤色色调对应的颜色系数、眼影色调对应的颜色系数以及口红色调对应的颜色系数。假设肤色色调为“白皙”对应的颜色系数为0.2,眼影色调“棕橘”对应的颜色系数为 0.3,口红色调“裸粉”对应的颜色系数为0.5,且面部皮肤、眼影部位和嘴部的预设权重均为0.33,则计算0.33*0.2+0.33*0.3+0.33*0.5=0.33,即计算出该用户的妆容颜色系数为0.33。假设裸粉色调对应的颜色系数区间为0-10,则确定出该用户的妆容色调为裸粉色调。
[0915]
作为另一些示例,本技术实施例中预设部位也可以只包括面部皮肤和嘴部,结合面部肤色和口红颜色来识别用户的妆容色调。或者,预设部位也可以只包括面部皮肤和眼影部位,结合面部肤色和眼影颜色来识别用户的妆容色调。或者,预设部位也可以只包括眼影部位和嘴部,结合口红颜色和眼影颜色来识别用户的妆容色调。或者,预设部位也可以只包括面部皮肤,通过面部肤色来识别用户的妆容色调。或者,预设部位也可以只包括眼影部位,通过眼影颜色来识别用户的妆容色调。或者,预设部位也可以只包括嘴部,通过口红颜色来识别用户的妆容色调。
[0916]
在本技术实施例中,识别化妆图像中用户预设部位的颜色所属的色调类别,进而依据预设部位对应的色调类别,确定用户的妆容色调。对用户的面部进行至少一个部位的色调提取,利用提取的色调自动识别用户的妆容色调。进一步地,通过对肤色、眼影、口红等一个或多个维度的妆面组合,仅提取对妆容颜色影响较大的部位的颜色信息,排除其他妆效对妆容色调的影响,增加了对妆容色调识别的统一性和准确性。且仅通过图像处理就能准确地识别出用户的妆容色调,无需采用深度学习模型进行处理,运算量小,成本低,减少了服务器的处理压力,减少了算法对硬件资源的依赖以及人力的投入成本。
[0917]
本技术实施例还提供一种妆容颜色识别装置,该装置用于执行上述任一实施例提供的妆容颜色识别方法。如图24所示,该装置包括:
[0918]
获取模块100,用于获取用户的化妆图像;
[0919]
识别模块200,用于识别化妆图像中用户面部预设部位的颜色所属的色调类别;
[0920]
确定模块300,用于根据预设部位对应的色调类别,确定用户的妆容色调。
[0921]
识别模块200,用于检测化妆图像对应的人脸关键点;根据人脸关键点,获取化妆图像对应的人脸区域图像;识别人脸区域图像中用户面部预设部位的颜色所属的色调类别。
[0922]
识别模块200,用于根据人脸关键点,从人脸区域图像中截取出预设部位对应的目标区域图像;获取目标区域图像的像素主色;根据像素主色,确定预设部位的颜色所属的色
调类别。
[0923]
预设部位包括面部皮肤;识别模块200,用于根据人脸关键点,从人脸区域图像中截取出面部图像;根据人脸关键点,从面部图像中抠除眉毛区域、眼睛区域和嘴部区域,得到面部皮肤对应的目标区域图像。
[0924]
预设部位包括眼影部位;识别模块200,用于根据人脸关键点包括的眼部关键点,从人脸区域图像中截取出眼部图像;对眼部图像进行预设次数的图像膨胀处理;根据眼部关键点包括的眼睛关键点,从膨胀处理后的眼部区域中抠除眼睛区域,得到眼影部位对应的目标区域图像。
[0925]
预设部位包括嘴部;识别模块200,用于分别对人脸关键点包括的上嘴唇上沿关键点、上嘴唇下沿关键点、下嘴唇上沿关键点和下嘴唇下沿关键点进行插值,得到上嘴唇上沿插值点、上嘴唇下沿插值点、下嘴唇上沿插值点及下嘴唇下沿插值点;根据上嘴唇上沿关键点、上嘴唇上沿插值点、上嘴唇下沿关键点和上嘴唇下沿插值点,从人脸区域图像中截取出上嘴唇图像;根据下嘴唇上沿关键点、下嘴唇上沿插值点、下嘴唇下沿关键点和下嘴唇下沿插值点,从人脸区域图像中截取出下嘴唇图像;将上嘴唇图像和下嘴唇图像拼接为嘴部对应的目标区域图像。
[0926]
确定模块300,用于将像素主色的颜色空间转换到预设部位对应的预设颜色空间;根据预设颜色空间下像素主色的各颜色通道值,确定各颜色通道值所属的色调区间;将色调区间对应的色调类别确定为预设部位的颜色所属的色调类别。
[0927]
预设部位包括面部皮肤、眼影部位、嘴部中是至少之一;面部皮肤对应的预设颜色空间包括lab颜色空间,眼影部位和嘴部对应的预设颜色空间包括hsv 颜色空间。
[0928]
预设部位包括面部皮肤、眼影部位和嘴部中的一个或多个部位,确定模块300,用于确定每个预设部位的色调类别对应的颜色系数;根据每个预设部位对应的预设权重和颜色系数,计算用户的妆容颜色系数;将妆容颜色系数对应的色调类别确定为用户的妆容色调。
[0929]
识别模块200,用于根据人脸关键点,对化妆图像及人脸关键点进行旋转矫正;根据矫正后的人脸关键点,从矫正后的化妆图像中截取包含人脸区域的图像;将包含人脸区域的图像缩放至预设尺寸,得到化妆图像对应的人脸区域图像。
[0930]
识别模块200,用于根据人脸关键点包括的左眼关键点和右眼关键点,分别确定左眼中心坐标和右眼中心坐标;根据左眼中心坐标和右眼中心坐标,确定化妆图像对应的旋转角度及旋转中心点坐标;根据旋转角度和旋转中心点坐标,对化妆图像及人脸关键点进行旋转矫正。
[0931]
识别模块200,用于根据矫正后的人脸关键点,对矫正后的化妆图像中包含的人脸区域进行图像截取。
[0932]
识别模块200,用于从矫正后的人脸关键点中确定最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值;根据最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值,确定矫正后的化妆图像中人脸区域对应的截取框;根据截取框,从矫正后的化妆图像中截取出包含人脸区域的图像。
[0933]
识别模块200,还用于将截取框放大预设倍数;根据放大后的截取框,从矫正后的化妆图像中截取出包含人脸区域的图像。
[0934]
识别模块200,还用于根据包含人脸区域的图像的尺寸及预设尺寸,对矫正后的人脸关键点进行缩放平移处理。
[0935]
该装置还包括:完整人脸检测模块,用于检测化妆图像中是否至少包含一个完整人脸图像;如果是,则执行识别化妆图像中用户面部预设部位的颜色所属的色调类别的操作;如果否,则发送提示信息给用户的终端,提示信息用于提示用户提供至少包含一个完整人脸图像的化妆图像。
[0936]
本技术的上述实施例提供的妆容颜色识别装置与本技术实施例提供的妆容颜色识别方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
[0937]
本技术实施方式还提供一种电子设备,以执行上述妆容颜色识别方法。其示出了本技术的一些实施方式所提供的一种电子设备的示意图。电子设备包括:处理器,存储器,总线和通信接口,所述处理器、通信接口和存储器通过总线连接;所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行本技术前述任一实施方式所提供的妆容颜色识别方法。
[0938]
其中,存储器可能包含高速随机存取存储器(ram:random access memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口(可以是有线或者无线)实现该装置网元与至少一个其他网元之间的通信连接,可以使用互联网、广域网、本地网、城域网等。
[0939]
总线可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。其中,存储器用于存储程序,所述处理器在接收到执行指令后,执行所述程序,前述本技术实施例任一实施方式揭示的所述妆容颜色识别方法可以应用于处理器中,或者由处理器实现。
[0940]
处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器 (dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
[0941]
本技术实施例提供的电子设备与本技术实施例提供的妆容颜色识别方法出于相同的发明构思,具有与其采用、运行或实现的方法相同的有益效果。
[0942]
本技术实施方式还提供一种与前述实施方式所提供的妆容颜色识别方法对应的计算机可读存储介质,其示出的计算机可读存储介质为光盘,其上存储有计算机程序(即程序产品),所述计算机程序在被处理器运行时,会执行前述任意实施方式所提供的妆容颜色识别方法。
[0943]
需要说明的是,所述计算机可读存储介质的例子还可以包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
[0944]
本技术的上述实施例提供的计算机可读存储介质与本技术实施例提供的妆容颜色识别方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
[0945]
实施例九
[0946]
1、一种图像处理方法,包括:
[0947]
检测用户的人脸图像中面部瑕疵对应的关键点坐标;
[0948]
根据所述面部瑕疵对应的关键点坐标和预设素材图像,生成瑕疵纹理贴图;
[0949]
根据所述人脸图像和所述瑕疵纹理贴图,生成所述人脸图像对应的遮瑕人脸图像。
[0950]
2、根据1,所述根据所述面部瑕疵对应的关键点坐标和预设素材图像,生成瑕疵纹理贴图,包括:
[0951]
获取所述人脸图像对应的空白纹理图像;
[0952]
根据所述面部瑕疵对应的关键点坐标,在所述空白纹理图像上定位出所述面部瑕疵对应的位置;
[0953]
在所述空白纹理图像上所述面部瑕疵对应的位置处对所述预设素材图像进行贴图,得到瑕疵纹理贴图。
[0954]
3、根据1,所述根据所述人脸图像和所述瑕疵纹理贴图,生成所述人脸图像对应的遮瑕人脸图像,包括:
[0955]
对所述人脸图像进行模糊处理,得到所述人脸图像对应的磨皮图像;
[0956]
根据所述瑕疵纹理贴图,对所述人脸图像中的瑕疵区域与所述磨皮图像中位置相同的瑕疵区域进行图像融合,得到所述人脸图像对应的遮瑕人脸图像。
[0957]
4、根据3,根据所述瑕疵纹理贴图,对所述人脸图像中的瑕疵区域与所述磨皮图像中位置相同的瑕疵区域进行图像融合,包括:
[0958]
从所述瑕疵纹理贴图中获取第一关键点坐标处的像素点的透明度a值;所述第一关键点坐标为所述面部瑕疵对应的关键点坐标中的任一关键点坐标;
[0959]
根据所述透明度a值,对所述人脸图像中所述第一关键点坐标处的像素点与所述磨皮图像中所述第一关键点坐标处的像素点进行融合处理。
[0960]
5、根据4,所述根据所述透明度a值,对所述人脸图像中所述第一关键点坐标处的像素点与所述磨皮图像中所述第一关键点坐标处的像素点进行融合处理,包括:
[0961]
从所述人脸图像中获取所述第一关键点坐标处的像素点的第一rgb颜色值,以及从所述磨皮图像中获取所述第一关键点坐标处的像素点的第二rgb颜色值;
[0962]
根据所述第一rgb颜色值、所述第二rgb颜色值和所述透明度a值,计算所述人脸图像中所述第一关键点坐标处的像素点与所述磨皮图像中所述第一关键点坐标处的像素点融合后的融合像素值;
[0963]
将所述人脸图像中所述第一关键点坐标处的像素点当前的像素值重置为所述融
合像素值。
[0964]
6、根据5,根据所述第一rgb颜色值、所述第二rgb颜色值和所述透明度 a值,计算所述人脸图像中所述第一关键点坐标处的像素点与所述磨皮图像中所述第一关键点坐标处的像素点融合后的融合像素值,包括:
[0965]
计算所述第一rgb颜色值与所述透明度a值之间的第一乘积以及所述第二rgb颜色值与所述透明度a值之间的第二乘积;计算所述第一乘积和所述第二乘积的平均值;
[0966]
将所述平均值确定为所述人脸图像中所述第一关键点坐标处的像素点与所述磨皮图像中所述第一关键点坐标处的像素点融合后的融合像素值。
[0967]
7、根据1-6任一项,所述预设素材图像为透明度渐变的图像,像素点的透明度由所述预设素材图像的边缘向所述预设素材图像的中心递减。
[0968]
8、根据1-6任一项,还包括:
[0969]
检测所述人脸图像中是否包含人脸区域;
[0970]
如果是,则执行所述检测用户的人脸图像中面部瑕疵对应的关键点坐标的操作;
[0971]
如果否,则发送提示信息给所述用户的终端,所述提示信息用于提示所述用户所述人脸图像中需包含人脸区域。
[0972]
9、一种图像处理装置,包括:
[0973]
检测模块,用于检测用户的人脸图像中面部瑕疵对应的关键点坐标;
[0974]
第一生成模块,用于根据所述面部瑕疵对应的关键点坐标和预设素材图像,生成瑕疵纹理贴图;
[0975]
第二生成模块,用于根据所述人脸图像和所述瑕疵纹理贴图,生成所述人脸图像对应的遮瑕人脸图像。
[0976]
10、一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序以实现1-8任一项所述的方法。
[0977]
11、一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行实现1-8任一项所述的方法。
[0978]
目前,人们对修图功能的需求越来越多,例如对于人脸的痘痘、色斑等瑕疵,用户拍照之后通常想要通过修图功能将这些瑕疵去除。相关技术中通常需要用户对人脸图像中的瑕疵区域针对每个像素进行模糊处理,如此需要用户自己确定图像中的瑕疵位置,并手动触发模糊处理,准确性差,且效率很低。
[0979]
基于此本技术实施例提供一种图像处理方法,该方法自动识别人脸图像中的痘痘、斑点等面部瑕疵,在人脸图像对应的空白纹理图像中针对面部瑕疵进行素材贴图得到瑕疵纹理贴图。基于该瑕疵纹理贴图,自动生成具有遮瑕效果的遮瑕人脸图像。如此无需用户人工针对每个像素进行优化,大大提升了处理性能,能够获得实时对人脸图像进行遮瑕的效果。
[0980]
参见图25,该方法具体包括以下步骤:
[0981]
步骤1001:检测用户的人脸图像中面部瑕疵对应的关键点坐标。
[0982]
本技术实施例的执行主体为服务器或其他任意能够提供遮瑕修图功能的终端,本技术实施例以执行主体为服务器为例进行说明。
[0983]
当用户需要使用遮瑕修图功能时,用户将需要修图的人脸图像发送给服务器。具
体地,用户的手机或电脑等用户终端上可以设置有与服务器提供的遮瑕修图功能相匹配的客户端,该客户端中设置有用于提交待处理图像的接口。当客户端检测到用户点击该接口时显示修图界面,该修图界面中可以包括拍摄按钮和/或本地文件上传接口。当客户端检测到用户点击该拍摄按钮时,调用用户终端上的摄像头拍摄用户的人脸图像。当客户端检测到用户点击本地文件上传接口时,显示本地文件夹目录,以使用户从中选择需要上传的人脸图像。
[0984]
客户端通过摄像头拍摄到用户的人脸图像,或者接收到用户上传的人脸图像,之后发送该人脸图像给服务器。服务器接收用户的人脸图像。
[0985]
在本技术的另一些实施例中,服务器获得用户的人脸图像后,还检测该人脸图像中是否包含人脸区域。若该人脸图像中包含人脸区域,则按照本实施例提供的方法来对人脸区域中存在的面部瑕疵进行遮瑕处理。若检测出该人脸图像中不包含人脸区域,则发送提示信息给用户的终端。用户的终端接收并显示该提示信息,以提示用户该人脸图像中需包含人脸区域。例如,提示信息可以为“请提供包含人脸区域的人脸图像”。
[0986]
通过上述方式获得包含人脸区域的人脸图像之后,通过预设的皮肤检测模型检测该人脸图像中是否存在痘痘或斑点等面部瑕疵,若检测出该人脸图像中不包含面部瑕疵,则直接返回该人脸图像给用户终端,或者,返回用于提示不存在面部瑕疵的信息给用户终端。
[0987]
若通过预设的皮肤检测模型检测到该人脸图像中包括至少一处面部瑕疵,则识别并记录每一处面部瑕疵对应的关键点坐标,面部瑕疵对应的关键点坐标包括面部瑕疵的顶点坐标和纹理坐标。
[0988]
步骤1002:根据面部瑕疵对应的关键点坐标和预设素材图像,生成瑕疵纹理贴图。
[0989]
首先获取用户的人脸图像对应的空白纹理图像。可以将人脸图像中带有颜色的纹理修改为空白纹理得到空白纹理图像。即该空白纹理图中人脸对应的位置处是空白的。
[0990]
然后根据检测到的面部瑕疵对应的关键点坐标,在空白纹理图像上定位出面部瑕疵对应的位置。利用gpu(graphics processing unit,图形处理器)的渲染技术,在空白纹理图像上面部瑕疵对应的位置处对预设素材图像进行贴图,得到瑕疵纹理贴图。
[0991]
其中,预设素材图像的颜色可以为红色、黄色、绿色等任意颜色。预设素材图像为透明度渐变的图像,像素点的透明度由预设素材图像的边缘向预设素材图像的中心递减。预设素材图像是仿照痘痘、色斑等瑕疵的特点制作的,面部瑕疵大多呈圆形或椭圆形等形状,边缘颜色较浅,越往中心颜色越深。因此本技术实施例中预设素材图像设置为圆形或椭圆形图像,且由边缘向中心透明度是递减的,即越靠近边缘越透明,越靠近中心位置越不透明。如此使得预设素材图像更加贴合真实的面部瑕疵的特点,后续利用该预设素材图像来对人脸图像中的面部瑕疵进行遮瑕处理,准确性更高,遮瑕效果更好。
[0992]
将预设素材图像贴在空白纹理图中用户的面部瑕疵对应的关键点坐标所在的位置处,得到瑕疵纹理贴图。则该瑕疵纹理贴图中既包含了面部瑕疵的位置信息,又包含了预设素材图像的透明度分布信息。
[0993]
如图26所示,(a)图为用户的人脸图像,(b)图为(a)图所示人脸图像对应的瑕疵纹理贴图。(b)图中的圆形斑点图像即为预设素材图像,从图中可以看出预设素材图像的边缘颜色较淡,透明度较高,越往中心颜色越深,透明度越低。
[0994]
步骤1003:根据人脸图像和瑕疵纹理贴图,生成人脸图像对应的遮瑕人脸图像。
[0995]
服务器具体通过如下步骤s1和s2的操作来生成遮瑕人脸图像,具体包括:
[0996]
s1:对人脸图像进行模糊处理,得到人脸图像对应的磨皮图像。
[0997]
通过预设模糊算法对人脸图像进行模糊处理,该预设模糊算法可以为均值模糊算法、高斯模糊算法等。本技术实施例可以仅对人脸图像中的人脸区域进行模糊处理,首先从人脸图像中识别出人脸区域,然后通过预设模糊算法对该人脸区域进行全脸磨皮处理,得到对应的磨皮图像。
[0998]
s2:根据瑕疵纹理贴图,对人脸图像中的瑕疵区域与磨皮图像中位置相同的瑕疵区域进行图像融合,得到人脸图像对应的遮瑕人脸图像。
[0999]
本技术实施例仅针对人脸图像中检测出的面部瑕疵所在的瑕疵区域,将人脸图像中的瑕疵区域与磨皮图像中位置相同的瑕疵区域进行图像融合,对人脸图像中的非瑕疵区域不进行处理,保留人脸图像中非瑕疵区域的原始图像不变。且对于瑕疵区域进行融合时,基于瑕疵纹理贴图中提供的面部瑕疵的位置及预设素材图像的透明度分布情况进行图像融合。
[1000]
由于对于瑕疵区域的每个像素点对应的融合过程都是相同的,因此本技术实施例仅以一个像素点为例进行详细说明。
[1001]
具体地,将面部瑕疵对应的关键点坐标中的任一关键点坐标称为第一关键点坐标。在本技术实施例中各图像的颜色空间均为rgba,其中a也称为alpha,是透明度参数。从瑕疵纹理贴图中获取第一关键点坐标处的像素点的透明度a值。然后根据该透明度a值,对人脸图像中第一关键点坐标处的像素点与磨皮图像中第一关键点坐标处的像素点进行融合处理。
[1002]
具体地,从人脸图像中获取第一关键点坐标处的像素点的第一rgb颜色值,以及从磨皮图像中获取第一关键点坐标处的像素点的第二rgb颜色值。根据第一 rgb颜色值、第二rgb颜色值和透明度a值,计算人脸图像中第一关键点坐标处的像素点与磨皮图像中第一关键点坐标处的像素点融合后的融合像素值。将人脸图像中第一关键点坐标处的像素点当前的像素值重置为融合像素值。
[1003]
在计算第一关键点坐标对应的融合像素值的过程中,计算第一rgb颜色值与透明度a值之间的第一乘积以及第二rgb颜色值与透明度a值之间的第二乘积;计算第一乘积和第二乘积的平均值。将该平均值确定为人脸图像中第一关键点坐标处的像素点与磨皮图像中第一关键点坐标处的像素点融合后的融合像素值。
[1004]
对于检测出的面部瑕疵对应的每个关键点坐标,都按照上述方式分别计算每个关键点坐标对应的人脸图像中的像素点与磨皮图像中的像素点进行融合后的融合像素值。然后将人脸图像中每个关键点坐标处像素点当前的像素值分别替换为对应的融合像素值,从而在人脸图像中完成了人脸图像中的瑕疵区域与磨皮图像中对应位置处的瑕疵区域之间的融合。
[1005]
在本技术的另一些实施例中,人脸图像中可以包括多个用户的人脸区域,可以通过本技术实施例提供的遮瑕处理方式并行或串行的对每个人脸区域进行遮瑕处理。
[1006]
通过上述方式对人脸图像中的人脸区域进行遮瑕处理得到人脸图像对应的遮瑕人脸图像之后,还可以将该遮瑕人脸图像返回给用户终端。用户终端接收并显示该遮瑕人
脸图像。
[1007]
在本技术实施例中,自动识别人脸图像中的面部瑕疵,在人脸图像对应的空白纹理图像中针对面部瑕疵进行素材贴图得到瑕疵纹理贴图。对人脸图像进行全脸磨皮得到磨皮图像。基于瑕疵纹理贴图,将人脸图像中的瑕疵区域与磨皮图像中位置相同的瑕疵区域进行图像融合,自动生成具有遮瑕效果的遮瑕人脸图像。无需用户人工针对每个像素进行优化,在人脸图像对应的空白纹理图中面部瑕疵对应的位置处贴上预设素材图像,预设素材图像的透明度是由边缘向中心递减的,符合痘痘、斑点等面部瑕疵的实际特点。基于瑕疵纹理贴图对人脸图像与磨皮图像中的瑕疵区域进行融合,能够获得更加自然的祛除瑕疵的效果。而且整个过程自动进行,无需人工干预,大大提升了处理性能,能够获得实时对人脸图像进行遮瑕的效果。
[1008]
本技术实施例还提供一种图像处理装置,该装置用于执行上述任一实施例提供的图像处理方法。如图27所示,该装置包括:
[1009]
检测模块400,用于检测用户的人脸图像中面部瑕疵对应的关键点坐标;
[1010]
第一生成模块500,用于根据面部瑕疵对应的关键点坐标和预设素材图像,生成瑕疵纹理贴图;
[1011]
第二生成模块600,用于根据人脸图像和瑕疵纹理贴图,生成人脸图像对应的遮瑕人脸图像。
[1012]
第一生成模块500,用于获取人脸图像对应的空白纹理图像;根据面部瑕疵对应的关键点坐标,在空白纹理图像上定位出面部瑕疵对应的位置;在空白纹理图像上面部瑕疵对应的位置处对预设素材图像进行贴图,得到瑕疵纹理贴图。
[1013]
第二生成模块600,用于对人脸图像进行模糊处理,得到人脸图像对应的磨皮图像;根据瑕疵纹理贴图,对人脸图像中的瑕疵区域与磨皮图像中位置相同的瑕疵区域进行图像融合,得到人脸图像对应的遮瑕人脸图像。
[1014]
第二生成模块600,用于从瑕疵纹理贴图中获取第一关键点坐标处的像素点的透明度a值;第一关键点坐标为面部瑕疵对应的关键点坐标中的任一关键点坐标;根据透明度a值,对人脸图像中第一关键点坐标处的像素点与磨皮图像中第一关键点坐标处的像素点进行融合处理。
[1015]
第二生成模块600,用于从人脸图像中获取第一关键点坐标处的像素点的第一 rgb颜色值,以及从磨皮图像中获取第一关键点坐标处的像素点的第二rgb颜色值;根据第一rgb颜色值、第二rgb颜色值和透明度a值,计算人脸图像中第一关键点坐标处的像素点与磨皮图像中第一关键点坐标处的像素点融合后的融合像素值;将人脸图像中第一关键点坐标处的像素点当前的像素值重置为融合像素值。
[1016]
第二生成模块600,用于计算第一rgb颜色值与透明度a值之间的第一乘积以及第二rgb颜色值与透明度a值之间的第二乘积;计算第一乘积和第二乘积的平均值;将平均值确定为人脸图像中第一关键点坐标处的像素点与磨皮图像中第一关键点坐标处的像素点融合后的融合像素值。
[1017]
预设素材图像为透明度渐变的图像,像素点的透明度由预设素材图像的边缘向预设素材图像的中心递减。
[1018]
该装置包括:人脸检测模块,用于检测人脸图像中是否包含人脸区域;如果是,则
执行检测用户的人脸图像中面部瑕疵对应的关键点坐标的操作;如果否,则发送提示信息给用户的终端,提示信息用于提示用户人脸图像中需包含人脸区域。
[1019]
本技术的上述实施例提供的图像处理装置与本技术实施例提供的图像处理方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
[1020]
本技术实施方式还提供一种电子设备,以执行上述图像处理方法。其示出了本技术的一些实施方式所提供的一种电子设备的示意图。电子设备包括:处理器,存储器,总线和通信接口,所述处理器、通信接口和存储器通过总线连接;所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行本技术前述任一实施方式所提供的图像处理方法。
[1021]
其中,存储器可能包含高速随机存取存储器(ram:random access memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口(可以是有线或者无线)实现该装置网元与至少一个其他网元之间的通信连接,可以使用互联网、广域网、本地网、城域网等。
[1022]
总线可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。其中,存储器用于存储程序,所述处理器在接收到执行指令后,执行所述程序,前述本技术实施例任一实施方式揭示的所述图像处理方法可以应用于处理器中,或者由处理器实现。
[1023]
处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器 (dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
[1024]
本技术实施例提供的电子设备与本技术实施例提供的图像处理方法出于相同的发明构思,具有与其采用、运行或实现的方法相同的有益效果。
[1025]
本技术实施方式还提供一种与前述实施方式所提供的图像处理方法对应的计算机可读存储介质,其示出的计算机可读存储介质为光盘,其上存储有计算机程序(即程序产品),所述计算机程序在被处理器运行时,会执行前述任意实施方式所提供的图像处理方法。
[1026]
需要说明的是,所述计算机可读存储介质的例子还可以包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
[1027]
本技术的上述实施例提供的计算机可读存储介质与本技术实施例提供的图像处理方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
[1028]
实施例十
[1029]
本技术实施例还提供一种化妆进度检测装置,该装置用于执行上述任一实施例提供的化妆进度检测方法。如图28所示,该装置包括:
[1030]
视频获取模块700,用于获取用户当前进行特定妆容的实时化妆视频;
[1031]
化妆进度确定模块800,用于根据实时化妆视频的初始帧图像和当前帧图像,确定用户进行特定妆容的当前化妆进度。
[1032]
特定妆容包括高光妆容、或修容妆容;化妆进度确定模块800,用于获取特定妆容对应的至少一个目标上妆区域;根据目标上妆区域,从初始帧图像中获取特定妆容对应的第一目标区域图像,及从当前帧图像中获取特定妆容对应的第二目标区域图像;根据第一目标区域图像和第二目标区域图像,确定当前帧图像对应的当前化妆进度。
[1033]
化妆进度确定模块800,用于检测初始帧图像对应的第一人脸关键点;根据第一人脸关键点,获取初始帧图像对应的人脸区域图像;根据第一人脸关键点和目标上妆区域,从人脸区域图像中获取特定妆容对应的第一目标区域图像。
[1034]
化妆进度确定模块800,用于从第一人脸关键点中确定出位于人脸区域图像中目标上妆区域对应的区域轮廓上的一个或多个目标关键点;根据目标上妆区域对应的目标关键点,生成人脸区域图像对应的掩膜图像;对掩膜图像和人脸区域图像进行与运算,获得特定妆容对应的第一目标区域图像。
[1035]
化妆进度确定模块800,用于若存在目标上妆区域对应的目标关键点的数目为多个,则根据目标关键点,确定目标上妆区域在人脸区域图像中的每个边缘坐标;将每个边缘坐标围成的区域内的所有像素点的像素值均修改为预设值,得到目标上妆区域对应的掩膜区域;若存在目标上妆区域对应的目标关键点的数目为一个,则以目标关键点为中心,绘制预设大小的椭圆区域,将椭圆区域内的所有像素点的像素值均修改为预设值,得到目标上妆区域对应的掩膜区域;将掩膜区域之外的所有像素点的像素值均修改为零,得到人脸区域图像对应的掩膜图像。
[1036]
特定妆容包括腮红妆容;化妆进度确定模块800,用于获取特定妆容对应的至少一个目标上妆区域;根据目标上妆区域,生成美妆掩码图;根据美妆掩码图、初始帧图像和当前帧图像,确定当前帧图像对应的当前化妆进度。
[1037]
化妆进度确定模块800,用于以美妆掩码图为参照,从初始帧图像中获取上妆的第一目标区域图像,以及从当前帧图像中获取上妆的第二目标区域图像;根据第一目标区域图像和第二目标区域图像,确定当前帧图像对应的当前化妆进度。
[1038]
特定妆容包括眼线妆容;化妆进度确定模块800,用于获取初始帧图像和当前帧图像对应的美妆掩码图;根据初始帧图像,模拟生成眼线上妆完成后的结果图像;根据美妆掩码图、结果图像、初始帧图像和当前帧图像,确定当前帧图像对应的当前化妆进度。
[1039]
化妆进度确定模块800,用于以初始帧图像对应的美妆掩码图为参照,从初始帧图像中获取上妆的第一目标区域图像;根据当前帧图像对应的美妆掩码图,从当前帧图像中获取上妆的第二目标区域图像;根据结果图像获取眼线上妆的第三目标区域图像;根据第
一目标区域图像、第二目标区域图像和第三目标区域图像,确定当前帧图像对应的当前化妆进度。
[1040]
化妆进度确定模块800,用于分别将第一目标区域图像、第二目标区域图像和第三目标区域图像转换为hls颜色空间下包含饱和度通道的图像;根据转换后的第一目标区域图像、第二目标区域图像和第三目标区域图像,确定当前帧图像对应的当前化妆进度。
[1041]
化妆进度确定模块800,用于分别计算转换后的第一目标区域图像对应的第一平均像素值、第二目标区域图像对应的第二平均像素值和第三目标区域图像对应的第三平均像素值;计算第二平均像素值与第一平均像素值之间的第一差值,以及计算第三平均像素值与第一平均像素值之间的第二差值;计算第一差值与第二差值之间的比值,得到当前帧图像对应的当前化妆进度。
[1042]
化妆进度确定模块800,用于对第一目标区域图像和第二目标区域图像进行对齐处理;对第一目标区域图像和第三目标区域图像进行对齐处理。
[1043]
化妆进度确定模块800,用于分别对第一目标区域图像和第二目标区域图像进行二值化处理,得到第一目标区域图像对应的第一二值化掩膜图像及第二目标区域图像对应的第二二值化掩膜图像;对第一二值化掩膜图像和第二二值化掩膜图像进行与运算,得到第一目标区域图像与第二目标区域图像的相交区域对应的第二掩膜图像。
[1044]
化妆进度确定模块800,用于获取初始帧图像对应的人脸区域图像及结果图像对应的人脸区域图像;对第二掩膜图像和初始帧图像对应的人脸区域图像进行与运算,得到初始帧图像对应的新的第一目标区域图像;对第二掩膜图像和结果图像对应的人脸区域图像进行与运算,得到结果图像对应的新的第二目标区域图像。
[1045]
化妆进度确定模块800,用于获取用户选择的眼线样式图;若初始帧图像中用户的眼部状态为睁眼状态,则获取眼线样式图对应的睁眼样式图;将睁眼样式图确定为初始帧图像对应的美妆掩码图;若初始帧图像中用户的眼部状态为闭眼状态,则获取眼线样式图对应的闭眼样式图,并将闭眼样式图确定为初始帧图像对应的美妆掩码图。
[1046]
特定妆容包括眼影妆容;化妆进度确定模块800,用于获取眼影掩码图;根据眼影上妆的每个目标上妆区域,分别从眼影掩码图中拆分出每个目标上妆区域对应的美妆掩码图;根据初始帧图像、当前帧图像及每个目标上妆区域对应的美妆掩码图,确定当前帧图像对应的当前化妆进度。
[1047]
化妆进度确定模块800,用于分别以每个目标上妆区域对应的美妆掩码图为参照,从初始帧图像中获取每个目标上妆区域对应的第一目标区域图像;分别以每个目标上妆区域对应的美妆掩码图为参照,从当前帧图像中获取每个目标上妆区域对应的第二目标区域图像;根据每个目标上妆区域对应的第一目标区域图像及第二目标区域图像,确定当前帧图像对应的当前化妆进度。
[1048]
化妆进度确定模块800,用于分别将每个目标上妆区域对应的第一目标区域图像和第二目标区域图像转换为hls颜色空间下包含预设单通道分量的图像;根据转换后的每个目标上妆区域对应的第一目标区域图像和第二目标区域图像,确定当前帧图像对应的当前化妆进度。
[1049]
化妆进度确定模块800,用于分别计算转换后同一目标上妆区域对应的第一目标区域图像和第二目标区域图像中位置相同的像素点对应的预设单通道分量的差值绝对值;
统计每个目标上妆区域对应的差值绝对值满足预设化妆完成条件的像素点数目;分别计算每个目标上妆区域对应的像素点数目与对应目标上妆区域中的像素点总数目之间的比值,得到每个目标上妆区域对应的化妆进度;根据每个目标上妆区域对应的化妆进度及每个目标上妆区域对应的预设权重,计算当前帧图像对应的当前化妆进度。
[1050]
化妆进度确定模块800,用于检测初始帧图像对应的第一人脸关键点;根据第一人脸关键点,获取初始帧图像对应的人脸区域图像;以美妆掩码图为参照,从人脸区域图像中获取上妆的第一目标区域图像。
[1051]
化妆进度确定模块800,用于分别将美妆掩码图和人脸区域图像转换为二值化图像;对美妆掩码图对应的二值化图像和人脸区域图像对应的二值化图像进行与运算,获得美妆掩码图与人脸区域图像的相交区域对应的第一掩膜图像;对第一掩膜图像与初始帧图像对应的人脸区域图像进行与运算,获得第一目标区域图像。
[1052]
化妆进度确定模块800,用于根据美妆掩码图对应的标准人脸关键点,确定美妆掩码图中位于每个上妆区域的轮廓上的一个或多个第一定位点;根据第一人脸关键点,从人脸区域图像中确定出与每个第一定位点对应的第二定位点;对美妆掩码图进行拉伸处理,将每个第一定位点拉伸至对应的每个第二定位点对应的位置处。
[1053]
化妆进度确定模块800,用于将美妆掩码图拆分为多个子掩码图,每个子掩码图中包括至少一个目标上妆区域;分别将每个子掩码图及人脸区域图像转换为二值化图像;分别对每个子掩码图对应的二值化图像与人脸区域图像对应的二值化图像进行与运算,获得每个子掩码图各自对应的子掩膜图像;分别对每个子掩膜图像与初始帧图像对应的人脸区域图像进行与运算,获得初始帧图像对应的多个子目标区域图像;将多个子目标区域图像合并为初始帧图像对应的第一目标区域图像。
[1054]
化妆进度确定模块800,用于根据美妆掩码图对应的标准人脸关键点,确定第一子掩码图中位于目标上妆区域的轮廓上的一个或多个第一定位点,第一子掩码图为多个子掩码图中的任一子掩码图;根据第一人脸关键点,从人脸区域图像中确定出与每个第一定位点对应的第二定位点;对第一子掩码图进行拉伸处理,将每个第一定位点拉伸至对应的每个第二定位点对应的位置处。
[1055]
特定妆容包括眉毛妆容;化妆进度确定模块800,用于从初始帧图像中获取眉毛对应的第一目标区域图像,及从当前帧图像中获取眉毛对应的第二目标区域图像;根据第一目标区域图像和第二目标区域图像,确定当前帧图像对应的当前化妆进度。
[1056]
化妆进度确定模块800,用于检测初始帧图像对应的第一人脸关键点;根据第一人脸关键点,获取初始帧图像对应的人脸区域图像;根据第一人脸关键点中包括的眉毛关键点,从人脸区域图像中获取眉毛对应的第一目标区域图像。
[1057]
化妆进度确定模块800,用于对第一人脸关键点包括的眉头至眉峰之间的眉毛关键点进行插值,得到多个插值点;从人脸区域图像中截取出眉头至眉峰之间所有眉毛关键点及多个插值点连接而成的闭合区域,得到眉头至眉峰之间的部分眉毛图像;从人脸区域图像中截取出眉峰至眉尾之间的所有眉毛关键点连接而成的闭合区域,得到眉峰至眉尾之间的部分眉毛图像;将眉头至眉峰之间的部分眉毛图像与眉峰至眉尾之间的部分眉毛图像拼接为眉毛对应的第一目标区域图像。
[1058]
化妆进度确定模块800,用于分别将第一目标区域图像和第二目标区域图像转换
为hsv颜色空间下包含预设单通道分量的图像;根据转换后的第一目标区域图像和第二目标区域图像,确定当前帧图像对应的当前化妆进度。
[1059]
化妆进度确定模块800,用于分别计算转换后的第一目标区域图像和第二目标区域图像中位置相同的像素点对应的预设单通道分量的差值绝对值;统计对应的差值绝对值满足预设化妆完成条件的像素点数目;计算统计的像素点数目与第一目标区域图像中所有目标上妆区域中的像素点总数目之间的比值,得到当前帧图像对应的当前化妆进度。
[1060]
化妆进度确定模块800,用于分别对第一目标区域图像和第二目标区域图像进行二值化处理,得到第一目标区域图像对应的第一二值化掩膜图像和第二目标区域图像对应的第二二值化掩膜图像;对第一二值化掩膜图像和第二二值化掩膜图像进行与运算,得到第一目标区域图像与第二目标区域图像的相交区域对应的第二掩膜图像;获取初始帧图像对应的人脸区域图像及当前帧图像对应的人脸区域图像;对第二掩膜图像和初始帧图像对应的人脸区域图像进行与运算,得到初始帧图像对应的新第一目标区域图像;对第二掩膜图像和当前帧图像对应的人脸区域图像进行与运算,得到当前帧图像对应的新第二目标区域图像。
[1061]
化妆进度确定模块800,用于分别对第一目标区域图像和第二目标区域图像中的上妆区域进行边界腐蚀处理。
[1062]
特定妆容包括粉底妆容;化妆进度确定模块800,用于根据初始帧图像,模拟生成完成特定妆容后的结果图像;分别获取初始帧图像、结果图像和当前帧图像对应的整体图像亮度;分别获取初始帧图像、结果图像和当前帧图像对应的人脸区域亮度;根据初始帧图像、结果图像和当前帧图像各自对应的整体图像亮度和人脸区域亮度,确定当前帧图像对应的当前化妆进度。
[1063]
化妆进度确定模块800,用于分别将初始帧图像、结果图像和当前帧图像转换为灰度图像;分别计算转换后初始帧图像、结果图像和当前帧图像各自对应的灰度图像中像素点的灰度平均值;将初始帧图像、结果图像和当前帧图像各自对应的灰度平均值分别确定为初始帧图像、结果图像和当前帧图像各自对应的整体图像亮度。
[1064]
化妆进度确定模块800,用于分别获取初始帧图像、结果图像和当前帧图像各自对应的人脸区域图像;分别将初始帧图像、结果图像和当前帧图像各自对应的人脸区域图像转换为人脸灰度图像;分别计算初始帧图像、结果图像和当前帧图像各自对应的人脸灰度图像中像素点的灰度平均值,得到初始帧图像、结果图像和当前帧图像各自对应的人脸区域亮度。
[1065]
化妆进度确定模块800,用于根据初始帧图像对应的整体图像亮度和人脸区域亮度以及当前帧图像对应的整体图像亮度和人脸区域亮度,确定当前帧图像对应的第一环境变化亮度;根据初始帧图像对应的整体图像亮度和人脸区域亮度以及结果图像对应的整体图像亮度和人脸区域亮度,确定结果图像对应的第二环境变化亮度;根据第一环境变化亮度、第二环境变化亮度、初始帧图像对应的人脸区域亮度、当前帧图像对应的人脸区域亮度、结果图像对应的人脸区域亮度,确定当前帧图像对应的当前化妆进度。
[1066]
化妆进度确定模块800,用于计算初始帧图像对应的整体图像亮度与其对应的人脸区域亮度之间的差值,得到初始帧图像的环境亮度;计算当前帧图像对应的整体图像亮度与其对应的人脸区域亮度之间的差值,得到当前帧图像的环境亮度;将当前帧图像的环
境亮度与初始帧图像的环境亮度之间的差值绝对值确定为当前帧图像对应的第一环境变化亮度。
[1067]
化妆进度确定模块800,用于根据第一环境变化亮度、初始帧图像对应的人脸区域亮度、当前帧图像对应的人脸区域亮度,确定当前帧图像对应的上妆亮度变化值;根据第二环境变化亮度、初始帧图像对应的人脸区域亮度、结果图像对应的人脸区域亮度,确定结果图像对应的上妆亮度变化值;计算当前帧图像对应的上妆亮度变化值与结果图像对应的上妆亮度变化值的比值,得到当前帧图像对应的当前化妆进度。
[1068]
化妆进度确定模块800,用于计算当前帧图像对应的人脸区域亮度与初始帧图像对应的人脸区域亮度之间的差值,得到当前帧图像对应的总亮度变化值;计算总亮度变化值与第一环境变化亮度之间的差值,得到当前帧图像对应的上妆亮度变化值。
[1069]
化妆进度确定模块800,用于若第一环境变化亮度大于预设阈值,则将上一帧图像对应的化妆进度确定为当前帧图像对应的当前化妆进度;发送第一提示信息给用户的终端,第一提示信息用于提示用户回到初始帧图像对应的亮度环境下上妆。
[1070]
特定妆容包括遮瑕妆容;化妆进度确定模块800,用于分别获取初始帧图像和当前帧图像各自对应的脸部瑕疵信息;根据初始帧图像对应的脸部瑕疵信息和当前帧图像对应的脸部瑕疵信息,计算当前帧图像与初始帧图像之间的脸部瑕疵差异值;若脸部瑕疵差异值大于预设阈值,则根据脸部瑕疵差异值和初始帧图像对应的脸部瑕疵信息,计算当前帧图像对应的当前化妆进度;若脸部瑕疵差异值小于或等于预设阈值,则获取用户完成遮瑕上妆后的结果图像,根据初始帧图像、结果图像和当前帧图像,确定当前帧图像对应的当前化妆进度。
[1071]
化妆进度确定模块800,用于分别计算每种瑕疵类别下初始帧图像对应的瑕疵数目与当前帧图像对应的瑕疵数目之间的差值;计算每种瑕疵类别对应的差值之和,将得到的和值作为当前帧图像与初始帧图像之间的脸部瑕疵差异值。
[1072]
化妆进度确定模块800,用于计算初始帧图像对应的脸部瑕疵信息中各瑕疵类别对应的瑕疵数目之和,得到总瑕疵数;计算脸部瑕疵差异值与总瑕疵数之间的比值,将比值作为当前帧图像对应的当前化妆进度。
[1073]
化妆进度确定模块800,用于根据初始帧图像,模拟生成用户完成遮瑕上妆后的结果图像;分别获取初始帧图像、结果图像和当前帧图像各自对应的人脸区域图像;根据初始帧图像、结果图像和当前帧图像各自对应的人脸区域图像,确定当前帧图像对应的当前化妆进度。
[1074]
化妆进度确定模块800,用于分别将初始帧图像、结果图像和当前帧图像各自对应的人脸区域图像转换为hls颜色空间下包含饱和度通道的图像;通过预设滤波算法分别计算转换后初始帧图像、结果图像和当前帧图像各自的人脸区域图像对应的平滑因子;根据初始帧图像、结果图像和当前帧图像各自对应的平滑因子,确定当前帧图像对应的当前化妆进度。
[1075]
化妆进度确定模块800,用于计算当前帧图像对应的平滑因子与初始帧图像对应的平滑因子之间的第一差值;计算结果图像对应的平滑因子与初始帧图像对应的平滑因子之间的第二差值;计算第一差值与第二差值之间的比值,将比值作为当前帧图像对应的当前化妆进度。
[1076]
化妆进度确定模块800,用于分别获取初始帧图像和当前帧图像各自对应的人脸区域图像;通过预设的皮肤检测模型分别检测初始帧图像和当前帧图像各自对应的人脸区域图像中各瑕疵类别对应的瑕疵数目,得到初始帧图像和当前帧图像各自对应的脸部瑕疵信息。
[1077]
化妆进度确定模块800,用于根据初始帧图像对应的第一人脸关键点,对初始帧图像及第一人脸关键点进行旋转矫正;根据矫正后的第一人脸关键点,从矫正后的初始帧图像中截取包含人脸区域的图像;将包含人脸区域的图像缩放至预设尺寸,得到初始帧图像对应的人脸区域图像。
[1078]
化妆进度确定模块800,用于根据第一人脸关键点包括的左眼关键点和右眼关键点,分别确定左眼中心坐标和右眼中心坐标;根据左眼中心坐标和右眼中心坐标,确定初始帧图像对应的旋转角度及旋转中心点坐标;根据旋转角度和旋转中心点坐标,对初始帧图像及第一人脸关键点进行旋转矫正。
[1079]
化妆进度确定模块800,用于根据矫正后的第一人脸关键点,对矫正后的初始帧图像中包含的人脸区域进行图像截取。
[1080]
化妆进度确定模块800,用于从矫正后的第一人脸关键点中确定最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值;根据最小横坐标值、最小纵坐标值、最大横坐标值和最大纵坐标值,确定矫正后的初始帧图像中人脸区域对应的截取框;根据截取框,从矫正后的初始帧图像中截取出包含人脸区域的图像。
[1081]
化妆进度确定模块800,还用于将截取框放大预设倍数;根据放大后的截取框,从矫正后的初始帧图像中截取出包含人脸区域的图像。
[1082]
化妆进度确定模块800,还用于根据包含人脸区域的图像的尺寸及预设尺寸,对矫正后的第一人脸关键点进行缩放平移处理。
[1083]
该装置还包括:人脸检测模块,用于检测初始帧图像和当前帧图像中是否均仅包含同一个用户的人脸图像;如果是,则执行确定用户进行特定妆容的当前化妆进度的操作;如果否,则发送提示信息给用户的终端,提示信息用于提示用户保持实时化妆视频中仅出现同一个用户的人脸。
[1084]
本技术的上述实施例提供的化妆进度检测装置与本技术实施例提供的化妆进度检测方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
[1085]
本技术实施方式还提供一种电子设备,以执行上述化妆进度检测方法。请参考图29,其示出了本技术的一些实施方式所提供的一种电子设备的示意图。如图 29所示,电子设备11包括:处理器1100,存储器1101,总线1102和通信接口1103,所述处理器1100、通信接口1103和存储器1101通过总线1102连接;所述存储器 1101中存储有可在所述处理器1100上运行的计算机程序,所述处理器1100运行所述计算机程序时执行本技术前述任一实施方式所提供的化妆进度检测方法。
[1086]
其中,存储器1101可能包含高速随机存取存储器(ram:random accessmemory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口1103(可以是有线或者无线)实现该装置网元与至少一个其他网元之间的通信连接,可以使用互联网、广域网、本地网、城域网等。
[1087]
总线1102可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。其中,存储器1101用于存储程序,所述处理器 1100在接收到执行指令后,执行所述程序,前述本技术实施例任一实施方式揭示的所述化妆进度检测方法可以应用于处理器1100中,或者由处理器1100实现。
[1088]
处理器1100可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1100中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1100可以是通用处理器,包括中央处理器(centralprocessing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1101,处理器1100读取存储器1101中的信息,结合其硬件完成上述方法的步骤。
[1089]
本技术实施例提供的电子设备与本技术实施例提供的化妆进度检测方法出于相同的发明构思,具有与其采用、运行或实现的方法相同的有益效果。
[1090]
本技术实施方式还提供一种与前述实施方式所提供的化妆进度检测方法对应的计算机可读存储介质,请参考图30,其示出的计算机可读存储介质为光盘30,其上存储有计算机程序(即程序产品),所述计算机程序在被处理器运行时,会执行前述任意实施方式所提供的化妆进度检测方法。
[1091]
需要说明的是,所述计算机可读存储介质的例子还可以包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
[1092]
本技术的上述实施例提供的计算机可读存储介质与本技术实施例提供的化妆进度检测方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
[1093]
需要说明的是:
[1094]
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本技术的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的结构和技术,以便不模糊对本说明书的理解。
[1095]
类似地,应当理解,为了精简本技术并帮助理解各个发明方面中的一个或多个,在上面对本技术的示例性实施例的描述中,本技术的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下示意图:即所要求保护的本技术要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求
本身都作为本技术的单独实施例。
[1096]
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本技术的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[1097]
以上所述,仅为本技术较佳的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
技术特征:
1.一种化妆进度检测方法,其特征在于,包括:获取用户当前进行特定妆容的实时化妆视频;根据所述实时化妆视频的初始帧图像和当前帧图像,确定所述用户进行所述特定妆容的当前化妆进度。2.根据权利要求1所述的方法,其特征在于,所述特定妆容包括高光妆容、或修容妆容;所述根据所述实时化妆视频的初始帧图像和当前帧图像,确定所述用户进行所述特定妆容的当前化妆进度,包括:获取所述特定妆容对应的至少一个目标上妆区域;根据所述目标上妆区域,从所述初始帧图像中获取所述特定妆容对应的第一目标区域图像,及从所述当前帧图像中获取所述特定妆容对应的第二目标区域图像;根据所述第一目标区域图像和所述第二目标区域图像,确定所述当前帧图像对应的当前化妆进度。3.根据权利要求2所述的方法,其特征在于,所述根据所述目标上妆区域,从所述初始帧图像中获取所述特定妆容对应的第一目标区域图像,包括:检测所述初始帧图像对应的第一人脸关键点;根据所述第一人脸关键点,获取所述初始帧图像对应的人脸区域图像;根据所述第一人脸关键点和所述目标上妆区域,从所述人脸区域图像中获取所述特定妆容对应的第一目标区域图像。4.根据权利要求1所述的方法,其特征在于,所述特定妆容包括腮红妆容;所述根据所述实时化妆视频的初始帧图像和当前帧图像,确定所述用户进行所述特定妆容的当前化妆进度,包括:获取所述特定妆容对应的至少一个目标上妆区域;根据所述目标上妆区域,生成美妆掩码图;根据所述美妆掩码图、所述初始帧图像和所述当前帧图像,确定所述当前帧图像对应的当前化妆进度。5.根据权利要求4所述的方法,其特征在于,所述根据所述美妆掩码图、所述初始帧图像和所述当前帧图像,确定所述当前帧图像对应的当前化妆进度,包括:以所述美妆掩码图为参照,从所述初始帧图像中获取上妆的第一目标区域图像,以及从所述当前帧图像中获取上妆的第二目标区域图像;根据所述第一目标区域图像和所述第二目标区域图像,确定所述当前帧图像对应的当前化妆进度。6.根据权利要求1所述的方法,其特征在于,所述特定妆容包括眼线妆容;所述根据所述实时化妆视频的初始帧图像和当前帧图像,确定所述用户进行所述特定妆容的当前化妆进度,包括:获取所述初始帧图像和所述当前帧图像对应的美妆掩码图;根据所述初始帧图像,模拟生成眼线上妆完成后的结果图像;根据所述美妆掩码图、所述结果图像、所述初始帧图像和所述当前帧图像,确定所述当前帧图像对应的当前化妆进度。7.根据权利要求6所述的方法,其特征在于,所述根据所述美妆掩码图、所述结果图像、
所述初始帧图像和所述当前帧图像,确定所述当前帧图像对应的当前化妆进度,包括:以所述初始帧图像对应的美妆掩码图为参照,从所述初始帧图像中获取上妆的第一目标区域图像;根据所述当前帧图像对应的美妆掩码图,从所述当前帧图像中获取上妆的第二目标区域图像;根据所述结果图像获取眼线上妆的第三目标区域图像;根据所述第一目标区域图像、所述第二目标区域图像和所述第三目标区域图像,确定所述当前帧图像对应的当前化妆进度。8.根据权利要求1所述的方法,其特征在于,所述特定妆容包括眼影妆容;所述根据所述实时化妆视频的初始帧图像和当前帧图像,确定所述用户进行所述特定妆容的当前化妆进度,包括:获取眼影掩码图;根据眼影上妆的每个目标上妆区域,分别从所述眼影掩码图中拆分出每个所述目标上妆区域对应的美妆掩码图;根据所述初始帧图像、所述当前帧图像及每个所述目标上妆区域对应的美妆掩码图,确定所述当前帧图像对应的当前化妆进度。9.根据权利要求8所述的方法,其特征在于,所述根据所述初始帧图像、所述当前帧图像及每个所述目标上妆区域对应的美妆掩码图,确定所述当前帧图像对应的当前化妆进度,包括:分别以每个所述目标上妆区域对应的美妆掩码图为参照,从所述初始帧图像中获取每个所述目标上妆区域对应的第一目标区域图像;分别以每个所述目标上妆区域对应的美妆掩码图为参照,从所述当前帧图像中获取每个所述目标上妆区域对应的第二目标区域图像;根据每个所述目标上妆区域对应的第一目标区域图像及第二目标区域图像,确定所述当前帧图像对应的当前化妆进度。10.根据权利要求1所述的方法,其特征在于,所述特定妆容包括眉毛妆容;所述根据所述实时化妆视频的初始帧图像和当前帧图像,确定所述用户进行所述特定妆容的当前化妆进度,包括:从所述初始帧图像中获取眉毛对应的第一目标区域图像,及从所述当前帧图像中获取眉毛对应的第二目标区域图像;根据所述第一目标区域图像和所述第二目标区域图像,确定所述当前帧图像对应的当前化妆进度。11.根据权利要求10所述的方法,其特征在于,所述从所述初始帧图像中获取眉毛对应的第一目标区域图像,包括:检测所述初始帧图像对应的第一人脸关键点;根据所述第一人脸关键点,获取所述初始帧图像对应的人脸区域图像;根据所述第一人脸关键点中包括的眉毛关键点,从所述人脸区域图像中获取眉毛对应的第一目标区域图像。12.根据权利要求1所述的方法,其特征在于,所述特定妆容包括粉底妆容;所述根据所
述实时化妆视频的初始帧图像和当前帧图像,确定所述用户进行所述特定妆容的当前化妆进度,包括:根据所述初始帧图像,模拟生成完成所述特定妆容后的结果图像;分别获取所述初始帧图像、所述结果图像和所述当前帧图像对应的整体图像亮度;分别获取所述初始帧图像、所述结果图像和所述当前帧图像对应的人脸区域亮度;根据所述初始帧图像、所述结果图像和所述当前帧图像各自对应的整体图像亮度和人脸区域亮度,确定所述当前帧图像对应的当前化妆进度。13.根据权利要求12所述的方法,其特征在于,所述分别获取所述初始帧图像、所述结果图像和所述当前帧图像对应的整体图像亮度,包括:分别将所述初始帧图像、所述结果图像和所述当前帧图像转换为灰度图像;分别计算转换后所述初始帧图像、所述结果图像和所述当前帧图像各自对应的灰度图像中像素点的灰度平均值;将所述初始帧图像、所述结果图像和所述当前帧图像各自对应的灰度平均值分别确定为所述初始帧图像、所述结果图像和所述当前帧图像各自对应的整体图像亮度。14.根据权利要求12所述的方法,其特征在于,所述分别获取所述初始帧图像、所述结果图像和所述当前帧图像对应的人脸区域亮度,包括:分别获取所述初始帧图像、所述结果图像和所述当前帧图像各自对应的人脸区域图像;分别将所述初始帧图像、所述结果图像和所述当前帧图像各自对应的人脸区域图像转换为人脸灰度图像;分别计算所述初始帧图像、所述结果图像和所述当前帧图像各自对应的人脸灰度图像中像素点的灰度平均值,得到所述初始帧图像、所述结果图像和所述当前帧图像各自对应的人脸区域亮度。15.根据权利要求12-14任一项所述的方法,其特征在于,所述根据所述初始帧图像、所述结果图像和所述当前帧图像各自对应的整体图像亮度和人脸区域亮度,确定所述当前帧图像对应的当前化妆进度,包括:根据所述初始帧图像对应的整体图像亮度和人脸区域亮度以及所述当前帧图像对应的整体图像亮度和人脸区域亮度,确定所述当前帧图像对应的第一环境变化亮度;根据所述初始帧图像对应的整体图像亮度和人脸区域亮度以及所述结果图像对应的整体图像亮度和人脸区域亮度,确定所述结果图像对应的第二环境变化亮度;根据所述第一环境变化亮度、所述第二环境变化亮度、所述初始帧图像对应的人脸区域亮度、所述当前帧图像对应的人脸区域亮度、所述结果图像对应的人脸区域亮度,确定所述当前帧图像对应的当前化妆进度。16.根据权利要求1所述的方法,其特征在于,所述特定妆容包括遮瑕妆容;所述根据所述实时化妆视频的初始帧图像和当前帧图像,确定所述用户进行所述特定妆容的当前化妆进度,包括:分别获取所述初始帧图像和所述当前帧图像各自对应的脸部瑕疵信息;根据所述初始帧图像对应的脸部瑕疵信息和所述当前帧图像对应的脸部瑕疵信息,计算所述当前帧图像与所述初始帧图像之间的脸部瑕疵差异值;
若所述脸部瑕疵差异值大于预设阈值,则根据所述脸部瑕疵差异值和所述初始帧图像对应的脸部瑕疵信息,计算所述当前帧图像对应的当前化妆进度;若所述脸部瑕疵差异值小于或等于所述预设阈值,则获取所述用户完成遮瑕上妆后的结果图像,根据所述初始帧图像、所述结果图像和所述当前帧图像,确定所述当前帧图像对应的当前化妆进度。17.根据权利要求16所述的方法,其特征在于,所述获取所述用户完成遮瑕上妆后的结果图像,根据所述初始帧图像、所述结果图像和所述当前帧图像,确定所述当前帧图像对应的当前化妆进度,包括:根据所述初始帧图像,模拟生成所述用户完成遮瑕上妆后的结果图像;分别获取所述初始帧图像、所述结果图像和所述当前帧图像各自对应的人脸区域图像;根据所述初始帧图像、所述结果图像和所述当前帧图像各自对应的人脸区域图像,确定所述当前帧图像对应的当前化妆进度。18.根据权利要求17所述的方法,其特征在于,所述根据所述初始帧图像、所述结果图像和所述当前帧图像各自对应的人脸区域图像,确定所述当前帧图像对应的当前化妆进度,包括:分别将所述初始帧图像、所述结果图像和所述当前帧图像各自对应的人脸区域图像转换为hls颜色空间下包含饱和度通道的图像;通过预设滤波算法分别计算转换后所述初始帧图像、所述结果图像和所述当前帧图像各自的人脸区域图像对应的平滑因子;根据所述初始帧图像、所述结果图像和所述当前帧图像各自对应的平滑因子,确定所述当前帧图像对应的当前化妆进度。19.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器运行所述计算机程序以实现如权利要求1-18任一项所述的方法。20.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行实现如权利要求1-18中任一项所述的方法。
技术总结
本申请提出一种化妆进度检测方法、装置、设备及存储介质,该方法包括:获取用户当前进行特定妆容的实时化妆视频;根据实时化妆视频的初始帧图像和当前帧图像,确定用户进行特定妆容的当前化妆进度。本申请将用户化妆过程的当前帧图像与初始帧图像做对比来确定化妆进度。仅通过图像处理即可检测出化妆进度,化妆进度检测的准确性很高,对于高光、修容、腮红、粉底、遮瑕、眼影、眼线、眉毛等化妆过程均能实时检测用户的化妆进度。无需使用深度学习模型,运算量小,成本低,减少了服务器的处理压力,提高了化妆进度检测的效率,能够满足化妆进度检测的实时性要求。进度检测的实时性要求。进度检测的实时性要求。
技术研发人员:刘聪 苗锋 张梦洁
受保护的技术使用者:北京新氧科技有限公司
技术研发日:2021.08.31
技术公布日:2022/3/8